

Arduino (IoT): Tutorial para construir un voltmeter

Diseño
Podemos construir 2 tipos de voltímetros con un Arduino:
- Mayor a 5V
- Menor o igual a 5V
Debido a que la Arduino solo funciona con 5V máximo, el mejor tipo de voltímetro a construir con ella es el #2. Ese es en efecto el que construiremos.
Voltímetro >5V
El tipo #1 involucra tomar un voltaje mas grande a 5V y partirlo de manera que solo midamos 5V máximo. La diferencia se toma en cuenta al medir que % de 5V alcanzamos. Por ejemplo si queremos medir 12V, partimos los 12V con algo llamado un voltaje divider. Esto se asegura de partir en voltaje en 7V y 5V. Lo que tenemos que hacer entonces es medir que porcentaje de 5V alcanzamos. Si llegamos a 100% de 5V, estamos a 12V. Si solo alcanzamos 4.5V, entonces estamos a (4.5/5)*12V = 10.8V.
Un voltage divider se construye usando un par de resistores cuyo valor nos da la proporción deseada.

Si usamos 12V ocupamos partir el voltaje fisicamente como vimos arriba con el voltage divider y empleamos la formula:
Vout = Vin * ( R2/(R1+R2) )
Y la conexión sería:

#include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // según lcd float vin=0.0; float temp=0.0; float r1=100000.0; // Valor R1 float r2=10000.0; // Valor R2 void setup() { Serial.begin(9600); lcd.begin(16, 2); lcd.print("Santiapps.com"); // Bienvenida delay(1000); lcd.clear(); lcd.print("DC VoltiMetro"); } void loop() { int analog_val=analogRead(A0); // leer A0 y almacenar temp = (analog_val * 5.0)/1024.0; vin = temp vin = temp/(r2/(r1+r2)); if(vin<0.1){ vin=0.0; } lcd.setCursor(0, 1); // cursor en column 0 line 1 lcd.print("Voltage = "); // imprimir voltaje lcd.println(vin); delay(300); }
Voltimetro de <=5V
De otra forma solo ocupamos el código:
#include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // según lcd float vin=0.0; float temp=0.0; float r1=100000.0; // Valor R1 float r2=10000.0; // Valor R2 void setup() { Serial.begin(9600); lcd.begin(16, 2); lcd.print("Santiapps.com"); // Bienvenida delay(1000); lcd.clear(); lcd.print("DC VoltiMetro"); } void loop() { int analog_val=analogRead(A0); // leer A0 y almacenar temp = (analog_val * 5.0)/1024.0; vin = temp //vin = temp/(r2/(r1+r2)); if(vin<0.1){ vin=0.0; } lcd.setCursor(0, 1); // cursor en column 0 line 1 lcd.print("Voltage = "); // imprimir voltaje lcd.println(vin); delay(300); }
En nuestro caso el máximo sera de 5V así que no ocupamos el voltage divider. A continuación de hecho usamos una LCD para poder ver el voltaje que recibimos de un par de baterías de 3.7V. Es decir, estamos alimentando 7.4V, el cual regulamos usando un LM7805 el cual lo reduce exactamente a 5V. Es por eso que no ocupamos el voltage divider en este caso.
Video