Vamos a programar #81 - Midiendo voltajes con arduino

Hola de nuevo a todos, el día de hoy vamos a ver cómo medir el nivel de una batería usando arduino. En el post anterior vimos cómo usar resistencias para poder limitar la cantidad de voltaje que estará ingresando al arduino, para lo ejemplos de hoy usaremos valores en múltiplos de 3.7v  que son los valores nominales para las baterías de litio hasta los 14.8v.




Para poder hacer las pruebas, voy a utilizar un arduino en conjunto a una pantalla LCD, por si quieres adaptar solo la parte que hace la medición, vendrá bien identificado que es lo que hace cada parte.

Para empezar vamos a recordar un par de cosas importantes: Primera. Nunca debemos de exceder los 5v que arduino usa, ingresar un voltaje mayor podría causar daños en tu circuito (en incluso a ti) por lo que hay que extremar las precauciones. Segunda. Cómo sabemos que el voltaje de una batería de iones de litio nunca va a pasar de los 4.2v, podemos hacer los cálculos para que en el divisor resistivo nos de un voltaje similar a este.

Los cálculos.

Primero vamos a empezar con los 14.8v (que serian 4 pilas en serie) y para calcular, tomemos la formula que sirve para calcular el voltaje y sustituyamos valores. Hay que tomar en cuenta que estamos usando el valor nominal por lo que deberiamos de usar resistencia que nos den un valor cercano a 3.7v
Para R2 voy a usar una resistencia de 100kΩ, el voltaje que esperamos es menor que 5v pero sabemos que tendremos una mejor medición si usamos múltiplos de 3.7v asi que ese será nuestro objetivo entonces R2 = 100kΩ, V2 = 3.7 y el voltaje de entrada sera 14.8v por lo que V1 = 14.8. Sustituyendo tenemos:
Al realizar los cálculos tenemos que debemos de poner dos resistencias en serie, la primera de ellas de 100kΩ y la segunda de ellas de 300kΩ. Podemos realizar los cálculos con los valores máximos de la pila que serán 4.2v*4 = 16.8 por lo que sustituyendo otra vez tenemos:
Y al realizar las mediciones podemos confirmar que son correctas.
El voltaje de entrada es 16.84v
Cómo no tengo resistencias de 300kΩ uso tres de 100kΩ, R1 es la  resistencia mas cercana a V+ (cable rojo)
Ahora podemos conectar de manera segura al arduino
Antes de pasar al código de arduino, hagamos los calculos para cuando el voltaje es de 12.6v y nuevamente queremos obtener los 4.2v maximos de la pila, tenemos:

Cómo neuvamente no hay resistencias de 200,003Ω redondeamos al valor decimal mas cercano 200,000Ω
Al realizar las mediciones tenemos:
Ahora tenemos 12.63v

Igual uso dos resistencias de 100kΩ
Y nuevamente tenemos un voltaje seguro.

El código.

El código que sirve para medir el voltaje en arduino es el siguiente:
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
//SCL - A5
//SDA - A4
LiquidCrystal_I2C lcd(0x27,20,4);

void setup() {
	lcd.init();     
	lcd.backlight();
}
float Volt = 0.0;
int InVolt = 0;

void loop() {
	//Conectamos el voltaje de entrada  al pin A0 del arduino
	//Recordatorio amable: NO DEBE DE EXCEDER LOS 5 Volts
	InVolt = analogRead(A0);
	Volt = InVolt * (5.0 / 1023.0);
	lcd.setCursor(0 , 0);
	lcd.print("Voltaje actual");
	lcd.setCursor(0 , 1);
	lcd.print(Volt);
	delay(1000);
}

Cómo podrás observar el código es realmente sencillo, simplemente conectamos el voltaje que queremos medir al pin A0 (v+ y v- a GND), luego cómo arduino cuenta con convertidor analogo-digital de 10 bits, bastara con leer el valor  y multiplicarlo por 5 y dividirlo entre 1023 (hay que recordar que 2^10 = 1023) y con esto tendremos un valor que sera el voltaje de la bateria.


Tras realizar varias mediciones, he detectado que el valor que se despliega en el arduino es bastante cercano al de las baterías por lo que ahora podremos revisar un poco el estado de éstas.

Y bien, por ahora es todo, en el siguiente post veremos cómo incorporar el código al velocímetro.

Los leo luego.

No hay comentarios.