MEDIDOR DE TENSÃO DE PILHAS COM O ARDUINO!

Vídeo deste Projeto no nosso canal do YouTube:

 

O multímetro… Talvez um dos equipamentos que consideramos como um “must have” para qualquer entusiasta de eletrónica. Seja para deteção de curto circuitos, medição da intensidade da corrente num circuito, medir a resistência de um componente, testar semicondutores, e até, em alguns casos, medir a temperatura de algum objeto. O multímetro, na sua função de voltímetro, pode também ser bastante útil para sabermos o estado das pilhas que utilizamos em comandos de televisão, comandos de garagem, relógios, brinquedos, etc. Para quem (ainda) não tem um multímetro (ao que podem clicar aqui para consultarem a nossa gama de multímetros), vamos, neste projeto, desenvolver um pequeno voltímetro para testar pilhas até 12V, suficiente para 99,9% das pilhas do mercado.

 

  • Material Necessário

Para este projeto, vamos precisar dos seguintes materiais:

Imagem Produto Comprar
  Arduino Nano V3
  Breadboard 830 Pinos
  Display LCD 20×4
  4 Resistências 1K
  1 Resistência 1,2K
  1 Resistência 2,2K
  Botão de Pressão
  Jumpers Macho-Fêmea
  Jumpers Macho-Macho

 

  • Montagem do Circuito

Seguindo o seguinte esquema, vamos conectar os botões de pressão em configuração pull-up resistor, e vamos ligar o LCD à comunicação I2C. Para a medição do valor da tensão das pilhas, iremos dividir em dois circuitos separados, para, não danificando o ADC da placa, conseguir efetuar medições de valores de tensão até 12V com precisão; assim:

    • Circuito 1: Constituído por uma resistência de 1K, para pilhas com tensão máxima de 5V
    • Circuito 2: Constituído por um divisor de tensão, para pilhas com tensão máxima compreendida entre 5V e 12V

 

 

Os nossos leitores mais atentos podem estar a pensar: “Porque não utilizar o circuito 2 para medir o valor da tensão em todas as pilhas?A resposta a essa pergunta é, simplesmente, precisão!
A utilização de um divisor de tensão ajustado a valores de tensão mais elevados leva a um erro de medição maior em valores de tensão mais baixos e, tratando-se de valores onde 0,2V podem fazer a diferença na interpretação do estado da pilha, optamos por utilizar dois circuitos complementares.

 

  • Código Arduino IDE

Com o circuito montado, vamos abrir o Arduino IDE e carregar para a nossa placa o seguinte programa:

 

/*Código para o Projeto: Voltímetro Testador de Pilhas
  - Material necessário:
    -> Placa Arduino
    -> Breadboard
    -> LCD I2C 20x4
    -> 4 Botões de Pressão com 4 Resistências de 1K em configuração Pull-Up Resistor
    -> Resistência de 1K
    -> Resistência de 1.2K e 2.2K
    -> Jumpers Macho-Fêmea
    -> Jumpers Macho-Macho
  Todo o material pode ser adquirido a partir do artigo do nosso blog deste projeto!
  *****************************************************LIGAÇÕES******************************************************
    -> Vamos utilizar a comunicação I2C entre o LCD e a placa Arduino.
    -> Montamos os botões de pressão em configuração pull-up resistor, ligando-os ao Arduino de forma organizada, assim, do botão da esquerda para a
   direita: ligamos aos pinos 4, 5 e 6.
    -> Vamos ligar entre o terminal A3 e o GND uma resistência de 1K, e, utilizando um jumper macho-macho, ligamos ao barramento da entrada analógica
   do Arduino, permitindo assim a medição do valor de tensão até 5V.
    -> Para pilhas até 12V, vamos utilizar um divisor de tensão com as resistências de 2.2K e 1.2K. O valor de referência irá ligar ao pino A2 do Arduino.
   Desse mesmo pino também será necessário ligar um jumper macho-macho.
  *******************************************************************************************************************
  Para mais informações sobre o projeto:
  
MEDIDOR DE TENSÃO DE PILHAS COM O ARDUINO!
Electrofun@2022 ---> www.electrofun.pt */ //Definição dos pinos #define pinoPilhas69e12V A2 //Analógicos #define pinoPilhas15Ve3V A3 #define pinoBotaoEsq 4 //Digitais #define pinoBotaoMeio 5 #define pinoBotaoDir 6 //Incluir livraria do LCD #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27, 20, 4); //Declaração do objeto lcd //Declaração de Variáveis int leituraPinoPilhas15Ve3V, leituraPinoPilhas69e12V, leituraPinoBotaoEsq, leituraPinoBotaoMeio, leituraPinoBotaoDir; int debouce = 200; float offsetTensaoPinoPilhas15Ve3V = 0.20; float tensaoPinoPilhas15Ve3V, tensaoPinoPilhas69e12V; bool modoPilhas15Ve3V, modoPilhas69e12V; void setup() { //Serial.begin(9600); pinMode(pinoPilhas69e12V, INPUT); pinMode(pinoPilhas15Ve3V, INPUT); pinMode(pinoBotaoEsq, INPUT); pinMode(pinoBotaoMeio, INPUT); pinMode(pinoBotaoDir, INPUT); lcd.init(); lcd.backlight(); selecionarTipoPilha(); } void loop() { leituraPinoBotaoMeio = digitalRead(pinoBotaoMeio); if (leituraPinoBotaoMeio) { delay(debouce); selecionarTipoPilha(); } if (modoPilhas15Ve3V) { leituraPinoPilhas15Ve3V = analogRead(pinoPilhas15Ve3V); tensaoPinoPilhas15Ve3V = leituraPinoPilhas15Ve3V * (5.0 / 1023) - offsetTensaoPinoPilhas15Ve3V; if (tensaoPinoPilhas15Ve3V < 0.5) { tensaoPinoPilhas15Ve3V = 0.00; } lcd.setCursor(7, 0); lcd.print(tensaoPinoPilhas15Ve3V); lcd.print("V"); } else if (modoPilhas69e12V) { leituraPinoPilhas69e12V = analogRead(pinoPilhas69e12V); tensaoPinoPilhas69e12V = leituraPinoPilhas69e12V * (12.33 / 1023); if (tensaoPinoPilhas69e12V < 6) { lcd.setCursor(0, 0); lcd.print(" "); lcd.setCursor(0, 1); lcd.print(" "); lcd.setCursor(3, 2); lcd.print("UTILIZAR PILHA"); lcd.setCursor(8, 3); lcd.print("<=5V"); } else { lcd.setCursor(7, 0); lcd.print(tensaoPinoPilhas69e12V); lcd.print("V"); lcd.setCursor(3, 2); lcd.print(" "); lcd.setCursor(8, 3); lcd.print(" "); } } delay(300); } void selecionarTipoPilha() { lcd.clear(); lcd.setCursor(2, 0); lcd.print("Selecionar Pilha"); lcd.setCursor(1, 2); lcd.print("<=5V"); lcd.setCursor(16, 2); lcd.print(">5V"); do { leituraPinoBotaoEsq = digitalRead(pinoBotaoEsq); leituraPinoBotaoDir = digitalRead(pinoBotaoDir); } while (leituraPinoBotaoEsq == 0 && leituraPinoBotaoDir == 0); if (leituraPinoBotaoEsq == 1) { delay(debouce); modoPilhas15Ve3V = true; modoPilhas69e12V = false; } else if (leituraPinoBotaoDir == 1) { delay(debouce); lcd.clear(); lcd.setCursor(6, 0); lcd.print("ATENCAO!"); lcd.setCursor(1, 2); lcd.print("TENSAO MAXIMA: 12V"); modoPilhas15Ve3V = false; modoPilhas69e12V = true; do { leituraPinoBotaoMeio = digitalRead(pinoBotaoMeio); } while (leituraPinoBotaoMeio == 0); } delay(debouce); lcd.clear(); }

 

  • Funcionamento do Programa

Uma vez carregado o programa, somos presentados com um menu para escolhermos qual o modo de medição a utilizar: com pilhas de tensão máxima inferior ou igual a 5V; ou pilhas com tensão máxima superior a 5V MAS SEMPRE INFERIOR A 12V. A MEDIÇÃO DE PILHAS DE VALOR SUPERIOR RESULTARÁ NA DESTRUIÇÃO DA PLACA ARDUINO!
Para selecionarmos, basta utilizar o botão da esquerda ou da direita, respetivamente. No caso de escolhermos o modo de medição para pilhas com tensão superior a 5V, somos presenteados com um aviso, ao qual precisamos de pressionar o botão central para confirmar.
Já no menu de medição, basta apenas colocar o terminal positivo da pilha junto do jumper ligado à entrada analógica pretendida, e o terminal negativo ao barramento negativo da breadboard ou Arduino.

 

 

Não se esqueçam de ver o nosso vídeo sobre este artigo no nosso canal do YouTube:

Para mais projetos, percorram o nosso blog, onde podem encontrar vários artigos interessantes relacionados com eletrónica, robótica e muito mais! Visitem também o nosso site, onde encontram tudo para eletrónica e robótica!