Arduíno

VOLTÍMETRO USANDO ARDUINO

 
Bom, vejo alguns projetos e dúvidas de pessoas que querem medir ou monitorar tensões maiores que 5V com qualquer Arduino, como todos devem saber, o conversor ADC do Arduino trabalha com tensão de no máximo 5V o que limita as medições a no máximo tal valor, logo, é preciso desenvolver algo para se trabalhar com tensões superiores.
 

MAS ANTES DE CONTINUARMOS, VAMOS A ALGUNS CONCEITOS:

VOLTÍMETRO

Aparelho utilizado para medir a diferença de potencial entre dois pontos; por esse motivo deve ser ligado sempre em paralelo com o trecho do circuito do qual se deseja obter a tensão elétrica. Para não atrapalhar o circuito, sua resistência interna deve ser muito alta, a maior possível.
Se sua resistência interna for muito alta, comparada às resistências do circuito, consideramos o aparelho como sendo ideal.
Os voltímetros podem medir tensões contínuas ou alternadas dependendo da qualidade do aparelho.
Voltímetro Ideal → Resistência interna infinita.
Fonte: InfoEscola

Sendo assim precisamos que nosso sistema de medição cause o menor impacto possível na fonte, ou origem, da tensão, para que este impacto seja o mínimo então precisaremos de uma alta resistência.

ENTÃO, COMO MEDIR?

Para este projeto definimos que queremos medir tensões de até 55V, além de ser um valor que facilita os cálculos normalmente é também uma tensão que atenderá aos mais variados projetos,  e para isso usaremos o método de Divisor de Tensão.
Como funciona um Divisor de Tensão:
O funcionamento do circuito é muito simples de compreender. Pela lei de Ohm a corrente total do circuito é definida por, onde Vo é tensão que irá para o Arduino, Vi a tensão da fonte e R1 e R2, os valores do primeiro e segundo resistor, respectivamente:

formula

Tenha sempre em mãos essa fórmula!

EXEMPLO:

Exemplo
Veja o circuito acima, temos que a entrada é 5V, R1 e R2 são resistores de 10kΩ, e na saída o valor é 2,5V, ou seja a metade da entrada, agora vamos provar que realmente a saída será a metade da entrada, o que no caso já dobraria a tensão máxima que o Arduino poderia ler, vamos aos cálculos:
Exemplo
Comprovamos que realmente teremos os 2.5V na saída se aplicarmos 5V na entrada, agora que vimos que o método realmente funciona, vamos a montagem final do circuito.

MONTAGEM

COMPONENTES NECESSÁRIOS:

1x – Arduino
1x – Display LCD 16×2 com módulo I2C
1x- Resistor de 100kΩ
1x – Resistor de 10kΩ
Protoboard e jumpers

FUNDAMENTO:

Lembra do conceito do voltímetro? Que ele deve possuir uma resistência alta para ter pouca influencia sobre a tensão a fim de se medir? Então, por isso temos que garantir que no circuito, mesmo na máxima tensão para que foi projetado, circule pouca corrente pelo Divisor, veja a seguir:
Circuito
Como pode ser visto, a corrente que irá circular quando funcionando na tensão máxima será de 500μA, tal corrente é tão pequena que não irá afetar a fonte de tensão a ser medida.

CIRCUITO

Os resistores são ligados em série, entre o resistor de 100kΩ e o de 10kΩ, o ligue ao pino A0 do Arduino.
Circuito
 

ATENÇÃO: OS NEGATIVOS SÃO COMUNS, NUNCA INVERTA A POLARIDADE!

PROGRAMANDO

O programa possui a mesma fórmula que usamos acima para calcular o valor de saída, porém de forma inversa para acharmos a tensão de entrada, assim temos:
Vi = Vo / (R2/(R1+R2))Vi = Vo / (R2/(R1+R2))
Já conhecida a formula bastou adaptá-la para tal função, onde o valor de entrada agora é o valor a ser achado em que ao se transpor a (R2/(R1+R2)) ele passa a dividir ao invés de multiplicar.

CÓDIGO

  1. //Display/
  2. #include <LiquidCrystal_I2C.h>
  3. #include “Wire.h”
  4. LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7,3, POSITIVE);
  5. //Sensor de tensão//
  6. int analogInput = A0;
  7. float Vo = 0.0, Vi = 0.0;
  8. float value_aux = 0, value = 0;
  9. //Valores dos Resistores//
  10. float R1 = 100000.0; //Resistência R1 (100K) -veja no texto!
  11. float R2 = 10000.0; //Resistência R2 (10K) – veja no texto!
  12. void setup(){
  13. pinMode(analogInput, INPUT);
  14. lcd.begin(16, 2);
  15. lcd.setBacklight(HIGH);
  16. lcd.setCursor(2,0);
  17. lcd.print(“Voltimetro DC”);
  18. lcd.setCursor(14,1);
  19. lcd.print(“V”);
  20. }void loop(){
  21. //Aquisição
  22. for(int i=60;i>0;i–){
  23. value_aux = analogRead(analogInput);
  24. value += pow(value_aux,2);
  25. }
  26. value = sqrt(value/60);
  27. Vo = (value * 5.0) / 1023.0;
  28. Vi = Vo / (R2/(R1+R2));
  29. if (Vi<0.09) {Vi=0.0;} //Filtrando medições errôneas!
  30. lcd.setCursor(5,1);
  31. lcd.print(” “);
  32. lcd.setCursor(5,1);
  33. lcd.print(Vi);
  34. delay(500);
  35. }
  1. //Display/
  2. #include <LiquidCrystal_I2C.h>
  3. #include “Wire.h”
  4. LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7,3, POSITIVE);
  5. //Sensor de tensão//
  6. int analogInput = A0;
  7. float Vo = 0.0, Vi = 0.0;
  8. float value_aux = 0, value = 0;
  9. //Valores dos Resistores//
  10. float R1 = 100000.0; //Resistência R1 (100K) -veja no texto!
  11. float R2 = 10000.0; //Resistência R2 (10K) – veja no texto!
  12. void setup(){
  13. pinMode(analogInput, INPUT);
  14. lcd.begin(16, 2);
  15. lcd.setBacklight(HIGH);
  16. lcd.setCursor(2,0);
  17. lcd.print(“Voltimetro DC”);
  18. lcd.setCursor(14,1);
  19. lcd.print(“V”);
  20. }void loop(){
  21. //Aquisição
  22. for(int i=60;i>0;i–){
  23. value_aux = analogRead(analogInput);
  24. value += pow(value_aux,2);
  25. }
  26. value = sqrt(value/60);
  27. Vo = (value * 5.0) / 1023.0;
  28. Vi = Vo / (R2/(R1+R2));
  29. if (Vi<0.09) {Vi=0.0;} //Filtrando medições errôneas!
  30. lcd.setCursor(5,1);
  31. lcd.print(” “);
  32. lcd.setCursor(5,1);
  33. lcd.print(Vi);
  34. delay(500);
  35. }

 

MELHORANDO SEUS RESULTADOS

Na eletrônica se sabe que os resistores sempre tem uma variação, ou seja, uma margem de erro e que seu valor real nem sempre é o valor nominal. Para melhorar seus resultados você pode fazer o seguinte procedimento:

1 – MEÇA SEUS RESISTORES


Ao medir seus resistores você irá trabalhar com valores (próximos aos) reais, fazendo com o que valor mostrado no resultado esteja ainda mais preciso.

2 – SIMULE COM OS NOVOS VALORES

1
Ao simular com os valores obtidos no passo anterior você garante que o medidor ainda pode ou não ir até o mesmo limite que foi projetado, de modo que a tensão na saída sempre seja de no máximo 5V, no meu caso, por exemplo, a máxima tensão que eu poderia medir era de 52V, como pode ser visto acima, caso aplicasse os 55V a tensão na saída seria ligeiramente superior a 5V.

3 – ALTERE O CÓDIGO

Agora que você já tem seus novos valores para as resistências basta trocar no código.

  1. //Valores dos Resistores//
  2. float R1 = 92700.0; //92700 Resistência R1 (100K)
  3. float R2 = 9600.0; //9600 Resistência R2 (10K)
  1. //Valores dos Resistores//
  2. float R1 = 92700.0; //92700 Resistência R1 (100K)
  3. float R2 = 9600.0; //9600 Resistência R2 (10K)

[Fonte] https://www.zonamaker.com.br/voltimetro-usando-arduino/

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *