Community project

Controle e Monitoramento de Bomba

Arduino
Photo of Controle e Monitoramento de Bomba
Generated with AI

Adelmar Silva

Published October 26, 2026

This project implements a control and monitoring system for a three-phase pump motor (10 CV at 220 V) using an Arduino Uno to track the contactor status and thermal relay state. The system displays real-time operational status on a 0.96" OLED display, showing whether the pump is running, stopped, or in thermal fault condition, while monitoring dry contacts from the motor protection circuit.

The guide provides a complete wiring diagram, parts list, and assembly instructions for integrating the Arduino with industrial-grade components including a Schneider contactor, thermal relay, and isolated power supplies. Builders will receive the firmware code, a reference ladder logic diagram, and a calculation guide to ensure proper installation before energizing the 220 V three-phase supply.

Wiring diagram

Wiring diagram for Controle e Monitoramento de Bomba

Gather all the parts

QtyComponent
1

0.96" OLED Display 128x64 I2C (Blue)

Monochrome 0.96 inch OLED display with 128 x 64 blue pixels, driven by an SSD1306 controller over I2C (address 0x3C). It runs from 3.3 to 5 V and connects through a four-pin VCC, GND, SCL, SDA header.

1

Proteção e seccionamento tripolar do motor

Proteção contra curto-circuito coordenada com LC1D32BD e LRD32; calibre e capacidade de interrupção a definir pelo responsável técnico segundo corrente de curto local. Não comprar apenas pelo calibre estimado.

1

Contator Schneider LC1D32BD 32 A AC-3 bobina 24 Vcc

7,5 kW em 220/230 V. 13-14 NA para selo; 21-22 NF exclusivamente contato seco de monitoramento; verificar corrente mínima de contato em 5 V.

1

Relé térmico Schneider LRD32 23–32 A

Rearme manual. Ajuste inicial calculado 24,95 A; prevalece corrente de placa. 95-96 NF interrompe bobina, 97-98 NA sinaliza falha por contato seco.

1

Motor trifásico 220 V 10 CV acoplado à bomba

Bomba sem especificação hidráulica. Confirmar ligação dos enrolamentos pela placa; não presumir delta sem placa. 91% rendimento e cos phi 0,85.

1

Fonte industrial isolada 220 Vca / 24 Vcc SELV 1 A

Entrada 220 V entre fases, sem usar neutro. Instalar junto do contator, em quadro local à bomba.

1

Proteção bipolar do comando e fonte

Dimensionar conforme fabricante da fonte, condutores e corrente de curto local.

1

Botão parar NF

Parada operacional, não é função de emergência certificada.

1

Botão partir NA momentâneo

Partida local; após falta de energia exige novo acionamento.

1

Fonte USB isolada certificada 5 V

Alimenta apenas Arduino pela porta USB. Nunca compartilhar 24 V com GPIO. Na programação usar USB do computador no lugar desta fonte.

1

Entrada da instalação 220 V trifásica

Ponto de alimentação existente. 120 m de percurso até o quadro local da bomba. Não representa geração de energia.

Assemble it in 6 steps

1. Revisão obrigatória antes de comprar ou energizar

Projeto preliminar para profissional habilitado NR-10: confirmar placa do motor, ligação 220 V, frequência, corrente de curto, aterramento, seletividade e permissão da concessionária para partida direta. Parar é apenas parada operacional; adequação NR-12 e emergência dependem de análise de risco.

  • 220 V trifásico pode matar e causar incêndio. Montar somente desenergizado, bloqueado e com ausência de tensão verificada. Não montar força em protoboard.

2. Instalar alimentação e força em quadro local

Levar três fases e PE por 120 m até o quadro junto à bomba. Proposta inicial: fases e PE de cobre 16 mm²; verificar capacidade de condução, agrupamento, temperatura, instalação e partida. Força: Q1 → K1 → RT → motor. Usar terminais compatíveis, torque do fabricante e invólucro fechado. PE nunca passa pelos contatos. Q1 e proteção de comando FC devem ser selecionados pelo responsável técnico, não há calibre definitivo sem curto-circuito e coordenação.

3. Montar comando 24 Vcc com selo

FC alimenta a fonte isolada entre duas fases 220 V. +24 V → PARAR NF → RT 95-96 NF → [PARTIR NA em paralelo com K1 13-14 NA] → A1. A2 → 0 V. Ajustar RT em rearme manual pela corrente de placa, inicialmente 25 A calculados. Após falta de energia, motor não deve religar sozinho.

4. Ligar tela e contatos secos

Arduino e OLED ficam juntos em compartimento de baixa tensão: OLED VCC → 5 V, GND → GND, SDA → A4 (dados), SCL → A5 (relógio). K1 21 → D2 e 22 → GND; RT 97 → D3 e 98 → GND. Estes contatos são exclusivos e secos: jamais recebem 24 V ou 220 V. Verificar adequação dos contatos à baixa corrente. Manter fios curtos, separados da força. Fonte USB isolada alimenta a placa pela porta USB (linha 5 V do desenho representa o cabo USB). Não ligar fonte USB e computador simultaneamente.

  • Tela não é dispositivo de proteção. Fio rompido no contato NF pode indicar ligado indevidamente; contato NA rompido pode ocultar falha.

5. Ensaiar antes de liberar a bomba

Profissional deve testar selo, botão parar, disparo do térmico, rearme manual e falta de alimentação; conferir sentido de giro e condições hidráulicas sem funcionamento a seco. Tela mostra posição do contator, não comprova rotação ou vazão. Não há proteção de nível, pressão ou falta de água neste escopo. Capacitor foi apenas calculado no memorial e NÃO deve ser ligado neste circuito.

6. Memorial de cálculo e ladder de referência

# Partida direta — bomba 10 CV / 220 V trifásico Projeto preliminar: não é autorização de montagem ou laudo NR-10/NR-12. ## Ladder físico, não programa de CLP ``` +24 --[/ S0 PARAR]--[/ RT 95-96]--+--[S1 PARTIR]--+--(K1 A1) | | +--[K1 13-14]---+ 0 V ------------------------------------------------- K1 A2 ``` [ ] = normalmente aberto; [/] = normalmente fechado. Força: rede → Q1 tripolar → K1 → RT → motor acoplado à bomba. Fonte 24 V e quadro de comando junto da bomba, evitando laço de comando de 240 m. OLED apenas monitora contatos secos; Arduino nunca aciona o contator. ## Potência e corrente 1 CV = 735,49875 W. P mecânica = 7,355 kW. P elétrica = 7,355 / 0,91 = 8,082 kW. I = 8082 / (sqrt(3) × 220 × 0,85) = 24,95 A. K1 LC1D32BD: 32 A AC-3, 7,5 kW em 220/230 V, bobina 24 Vcc. RT LRD32: 23–32 A, ajuste inicial 25 A, prevalecendo placa e fabricante. Q1: proteção contra curto e seccionamento; selecionar conjunto coordenado pelas tabelas do fabricante, corrente presumida de curto e condições locais. Não fixar disjuntor por múltiplo arbitrário da corrente. ## Queda em regime Hipóteses: 120 m de ida (não somar retorno na fórmula trifásica), cobre a quente, resistividade 0,0225 ohm·mm²/m, X = 0,08 ohm/km estimado. Queda não inclui rede a montante, conexões nem impedância do transformador. Delta V = sqrt(3) I L (R cos phi + X sen phi), L=0,120 km e R=22,5/S ohm/km. | Seção fases | Queda | Percentual de 220 V | |---|---:|---:| | 6 mm² | 16,75 V | 7,61% | | 10 mm² | 10,14 V | 4,61% | | 16 mm² | 6,42 V | 2,92% | Proposta inicial: 3 fases 16 mm² + PE 16 mm² em cobre. Validar ampacidade, proteção, método de instalação e orçamento de queda da instalação inteira pela NBR 5410. Os 2,92% não garantem atendimento global. Não se pode determinar a queda real de partida sem corrente e fator de potência de rotor bloqueado e impedância da alimentação. Partida direta pode exigir 6–8 vezes In; confirmar dados reais e aceitação da concessionária. Não multiplicar simplesmente a queda em regime: fator de potência muda. ## Capacitor para fator de potência (não capacitor de partida) Meta adotada 0,95. Qc = P [tan(acos 0,85) − tan(acos 0,95)] = 2,352 kvar. Em 60 Hz e ligação delta a 220 V: C = Qc/(3 × 2pi × f × V²) = 42,98 µF por ramo (três ramos). Em 50 Hz: 51,57 µF por ramo. Banco comercial de 2,5 kvar ENTREGUES EM 220 V daria aproximadamente FP 0,955 em plena carga. Verificar tensão nominal: 2,5 kvar a 380/440 V não entrega 2,5 kvar a 220 V; Q varia com V². CAPACITOR NÃO INSTALADO nesta lista ou esquema. Valor calculado não autoriza ligação em paralelo com o motor: risco de autoexcitação e sobretensão. Para futura instalação são necessários projeto separado, proteção específica, manobra adequada a capacitores, descarga, análise de harmônicas e corrente a vazio; manter corrente do motor no térmico sem compensação. Não ligar capacitor permanentemente aos terminais do motor. Não é necessário capacitor para partir este motor trifásico. ## Limites da indicação Ligado = contato auxiliar indica K1 energizado, não confirmação de rotação/vazão. Falha = RT disparou. Não detecta toda falha elétrica, falta de água ou defeito mecânico. D2 lê NF (aberto indica ligado); D3 lê NA (fechado indica térmico disparado). Falha térmica tem prioridade. Fiação rompida não é diagnosticada; não usar para segurança. ## Referências de terminais Schneider FA110040 (A1+, A2−; 13-14 NA, 21-22 NF). Schneider FA107663 e FA119404 (95-96 NF, 97-98 NA). Schneider BRU99865-01 (terminais de força LC1D32BD). Schneider: 3 safety measures for motors with individual power factor correction, 2017-12-06 (autoexcitação e proteção específica).

Review all connections

1. Connections between "tela" and "Arduino"

FunctiontelaArduino
powerVCC5V
groundGNDGND
i2cSDAGPIO 18
i2cSCLGPIO 19

2. Connections between "usb" and "Arduino"

FunctionusbArduino
powerOUT5V
groundGNDGND

3. Connections between "k1" and "Arduino"

Functionk1Arduino
data21GPIO 2
ground22GND
data2T1 → Relé térmico Schneider LRD32 23–32 A 1L1EXT
data4T2 → Relé térmico Schneider LRD32 23–32 A 3L2EXT
data6T3 → Relé térmico Schneider LRD32 23–32 A 5L3EXT
data14 → Contator Schneider LC1D32BD 32 A AC-3 bobina 24 Vcc A1EXT
dataA2 → Fonte industrial isolada 220 Vca / 24 Vcc SELV 1 A MINUSEXT

4. Connections between "rt" and "Arduino"

FunctionrtArduino
data97GPIO 3
ground98GND
data2T1 → Motor trifásico 220 V 10 CV acoplado à bomba UEXT
data4T2 → Motor trifásico 220 V 10 CV acoplado à bomba VEXT
data6T3 → Motor trifásico 220 V 10 CV acoplado à bomba WEXT
data96 → Botão partir NA momentâneo 13EXT
data96 → Contator Schneider LC1D32BD 32 A AC-3 bobina 24 Vcc 13EXT

5. Connections between "q1" and "Arduino"

Functionq1Arduino
dataL1 → Entrada da instalação 220 V trifásica REXT
dataL2 → Entrada da instalação 220 V trifásica SEXT
dataL3 → Entrada da instalação 220 V trifásica TEXT
dataT1 → Contator Schneider LC1D32BD 32 A AC-3 bobina 24 Vcc 1L1EXT
dataT2 → Contator Schneider LC1D32BD 32 A AC-3 bobina 24 Vcc 3L2EXT
dataT3 → Contator Schneider LC1D32BD 32 A AC-3 bobina 24 Vcc 5L3EXT
dataT1 → Proteção bipolar do comando e fonte L1EXT
dataT2 → Proteção bipolar do comando e fonte L2EXT

6. Connections between "motor" and "Arduino"

FunctionmotorArduino
dataPE → Entrada da instalação 220 V trifásica PEEXT

7. Connections between "fonte" and "Arduino"

FunctionfonteArduino
dataPE → Entrada da instalação 220 V trifásica PEEXT
dataPLUS → Botão parar NF 11EXT

8. Connections between "fc" and "Arduino"

FunctionfcArduino
dataT1 → Fonte industrial isolada 220 Vca / 24 Vcc SELV 1 A LEXT
dataT2 → Fonte industrial isolada 220 Vca / 24 Vcc SELV 1 A NEXT

9. Connections between "s0" and "Arduino"

Functions0Arduino
data12 → Relé térmico Schneider LRD32 23–32 A 95EXT

10. Connections between "s1" and "Arduino"

Functions1Arduino
data14 → Contator Schneider LC1D32BD 32 A AC-3 bobina 24 Vcc A1EXT

Deploy the firmware

#include <Arduino.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
Adafruit_SSD1306 tela(128,64,&Wire,-1);
const uint8_t CONTATOR=2, TERMICO=3;
uint8_t candidato=255, anterior=255;
unsigned long desde=0;
bool pronta=false;
void mostrar(uint8_t estado){
 tela.clearDisplay(); tela.setTextColor(SSD1306_WHITE); tela.setTextSize(1);
 tela.setCursor(0,0); tela.print(F("BOMBA 220V / 10CV"));
 tela.setCursor(0,18); tela.setTextSize(2);
 if(estado&2) tela.print(F("FALHA"));
 else if(estado&1) tela.print(F("LIGADO"));
 else tela.print(F("DESLIGADO"));
 tela.setTextSize(1); tela.setCursor(0,43);
 tela.print((estado&2)?F("Termico desarmado"):F("Estado do contator"));
 tela.setCursor(0,55); tela.print(F("Sem medir vazao")); tela.display();
}
void setup(){
 pinMode(CONTATOR,INPUT_PULLUP); pinMode(TERMICO,INPUT_PULLUP);
 Serial.begin(9600); Wire.begin(); Wire.setClock(100000);
 pronta=tela.begin(SSD1306_SWITCHCAPVCC,0x3C);
 if(!pronta) Serial.println(F("Falha na tela; comando independente"));
}
void loop(){
 // Contato NF abre com contator energizado. Termico NA fecha em falha.
 uint8_t estado=(digitalRead(CONTATOR)==HIGH?1:0)|(digitalRead(TERMICO)==LOW?2:0);
 if(estado!=candidato){candidato=estado;desde=millis();}
 if(candidato!=anterior && millis()-desde>=100){
  anterior=candidato;
  if(pronta) mostrar(anterior);
  Serial.println((anterior&2)?F("FALHA TERMICA"):(anterior&1)?F("CONTATOR LIGADO"):F("DESLIGADO"));
 }
}

Remix this project

Make it yours in one click

Open a full copy of this project in your own Schematik workspace — diagram, code, parts, and assembly steps included. Swap the sensor, add features, or redesign the whole thing with AI. The author's original stays untouched.

Open in Schematik