Arduino IoT: Tutorial para construir Voltmeter

Arduino IoT Arduino (IoT): Simple Tutorial de Infrarojo (IR) Receptor/Transmisor by Santiapps Marcio Valenzuela
Arduino IoT Arduino (IoT): Simple Tutorial de Infrarojo (IR) Receptor/Transmisor

Arduino (IoT): Tutorial para construir un voltmeter

 

Arduino IoT: Tutorial para construir Voltmeter by Santiapps Marcio Valenzuela
Arduino IoT: Tutorial para construir Voltmeter

Diseño

Podemos construir 2 tipos de voltímetros con un Arduino:

  1. Mayor a 5V
  2. 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.

Arduino IoT: Tutorial para construir Voltmeter by Santiapps Marcio Valenzuela
Arduino IoT: Tutorial para construir Voltmeter

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:

Arduino Tutorial IoT: Crear voltímetro con Arduino UNO by Santiapps.com Marcio Valenzuela
Arduino Tutorial IoT: Crear voltímetro con Arduino UNO
#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

Leave a Reply