1. El Octavo Bit
  2. / Arduino
  3. / Proyectos para Arduino
  4. / Medir el voltaje de una pila con Arduino

Medir el voltaje de una pila con Arduino

| Actualizado:
Comentarios: 1

Medir el voltaje de una pila con Arduino
Medir el voltaje de una pila con Arduino

Es habitual que tengamos por casa un montón de pilas que, en ocasiones, no sabemos si están cargadas o se han gastado. Vamos a realizar un medidor de carga utilizando la placa de Arduino. El máximo que podemos medir es de 5V, si superamos esa tensión dañaremos el pin analógico de Arduino.

Medidor de carga con Arduino

Material necesario:

  • Placa Arduino o similar.
  • Cables.
  • Pilas para probar.

Esquema:

Esquema medidor de carga para una pila, realizado con Arduino

Código:

float lectura;
float volt;

void setup() {
  Serial.begin(9600);
  pinMode(A0,INPUT);
}

void loop() {
  lectura = analogRead(A0);
  volt = lectura /1023 * 5.0;
  Serial.println(volt);
}

Primero necesitamos una variable, lectura, de tipo float para guardar la lectura que haremos en el pin analógico A0 y que nos dará un valor entre 0 y 1023. La segunda variable volt, también de tipo float, es para guardar la conversión de la medida en voltios.

En la función setup() iniciamos el puerto serial con Serial.begin() e indicamos que el pin A0 de Arduino es un puerto de entrada.

En la función loop() realizamos la lectura desde el pin analógico A0, realizamos la conversión en voltios y, por último, hacemos que se vea por el monitor serial.

Para realizar una prueba rápida sin pila, subimos el programa a Arduino y si conectamos el cable que sale del pin A0 al de 5V de Arduino, debería marcar 5V y si lo ponemos en el de 3.3V, marcará 3.3V.

Captura del monitor serial, probando en el pin de 5 y 3,3V.

Ya podemos utilizarlo para nuestras pilas.

Medidor de carga con Leds

¿Y si colocamos unos led para indicarnos la carga? Rojo para pila descargada, amarillo para una pila a media carga y verde para una pila al máximo. Para construir un medidor de carga con indicadores luminosos añadimos 3 leds: uno de color rojo, otro amarillo y uno verde; 3 resistencias de 220 Ohms y cables para realizar el siguiente esquema:

Medidor de carga realizado con Arduino y Leds

A la hora de configurar el código, vamos a utilizar tres pines digitales de la placa como salida con la finalidad de encender o apagar el led que corresponda. Entonces, definimos al principio qué pines vamos a utilizar. El pin 2 para el verde, 3 para el amarillo y 4 para el rojo.

#define LedVerde 2
#define LedAmarillo 3
#define LedRojo 4

También tenemos que decidir entre que umbrales vamos a considerar que la pila está cargada al máximo, carga media y cuando está al mínimo. Por lo que tenemos que añadir 2 nuevas variables con el máximo y la carga media.

float maximo = 1.5;
float medio = 1.4;

En la función setup() indicamos que los pines 2, 3 y 4 de los leds son de salida.

pinMode(LedVerde, OUTPUT);
pinMode(LedAmarillo, OUTPUT);
pinMode(LedRojo, OUTPUT);

Y, por último, en la función loop() ponemos el código necesario para encender el led correspondiente.

  if (volt >= maximo){
    digitalWrite(LedVerde, HIGH);
    delay(800);
    digitalWrite(LedVerde, LOW);
  }else if (volt < maximo && volt >= medio){
    digitalWrite(LedAmarillo, HIGH);
    delay(800);
    digitalWrite(LedAmarillo, LOW);
  }else if (volt < medio){
    digitalWrite(LedRojo, HIGH);
    delay(800);
    digitalWrite(LedRojo, LOW);
  }
  digitalWrite(LedVerde, LOW);
  digitalWrite(LedAmarillo, LOW);
  digitalWrite(LedRojo, LOW);

Consiste en incorporar tres condicionales if() para cubrir todo el rango: en el primero, si el voltaje de la pila es igual o mayor a 1.5V es que la pila está al máximo; si la pila se encuentra entre 1.5 y 1.4V incluido, la pila está a medio y, por último, si es menor a 1.4 la pila se está agotando.

Código completo sería:

#define LedVerde 2
#define LedAmarillo 3
#define LedRojo 4

float lectura;
float volt;

// Umbrales
// > 1.5 nueva
// entre 1.5 y 1.4 media carga
// < 1.4 descargada
float maximo = 1.5;
float medio = 1.4;

void setup() {
  Serial.begin(9600);
  pinMode(A0,INPUT);
  pinMode(LedVerde, OUTPUT);
  pinMode(LedAmarillo, OUTPUT);
  pinMode(LedRojo, OUTPUT);
}

void loop() {
  lectura = analogRead(A0);
  volt = lectura /1023 * 5.0;
  Serial.println(volt);
  // Dependiendo del voltaje encender el Led?
  if (volt >= maximo){
    digitalWrite(LedVerde, HIGH);
    delay(800);
    digitalWrite(LedVerde, LOW);
  }else if (volt < maximo && volt >= medio){
    digitalWrite(LedAmarillo, HIGH);
    delay(800);
    digitalWrite(LedAmarillo, LOW);
  }else if (volt < medio){
    digitalWrite(LedRojo, HIGH);
    delay(800);
    digitalWrite(LedRojo, LOW);
  }
  // Apagamos todos los LEDs
  digitalWrite(LedVerde, LOW);
  digitalWrite(LedAmarillo, LOW);
  digitalWrite(LedRojo, LOW);
}

Artículos que te pueden interesar

Medir la inclinación con Arduino
Medir la inclinación con Arduino y el sensor SW-520D

Medir la inclinación con Arduino y el sensor SW-520D

| Actualizado:
Comentarios: 0

Realizamos un ejemplo básico, donde se puede apreciar que la lectura hecha por el sensor se recibe en un pin de entrada digital de la placa (hemos usado el nº 7). Material necesario: Arduino Uno o similar. Protoboard. Cables Sensor…

Motor paso a paso 28BYJ-48 con Arduino
Conexión del motor paso a paso 28BYJ-48 y el módulo ULN2003 con Arduino

Conexión del motor paso a paso 28BYJ-48 y el módulo ULN2003 con Arduino

| Actualizado:
Comentarios: 0

En este artículo veremos el motor paso a paso unipolar 28BYJ-48. Es un motor barato y que podemos utilizar en gran cantidad de proyectos como robots, impresoras 3D o fotocopiadoras. Nos vamos a centrar en la programación del motor con…

Conectar un display de 7 segmentos
Conexión de display de 7 segmentos al Arduino.

Conexión de display de 7 segmentos al Arduino.

| Actualizado:
Comentarios: 0

En este artículo te vamos a contar como utilizar un display de 7 segmentos con Arduino, haremos un pequeño contador de 0 a 9 y programaremos un dado con la pequeña pantalla y un pulsador. Los display de un solo…

Módulo controlador de motores L298N
Funcionamiento del módulo controlador de motores L298N

Funcionamiento del módulo controlador de motores L298N

| Actualizado:
Comentarios: 0

En este tutorial explicaremos cómo controlar dos motores de corriente continua con el módulo L298N, realizaremos un ejemplo básico, primero sin utilizar ninguna librería y después, con la biblioteca LEANTEC_ControlMotor.h El L298N es un módulo para controlar motores. Es fácil…

Comentarios - 1

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Brayan gonzalez
20 January, 2021

El ultimo ejercicio fue con 1.5 pero de 5 como lo cambiaria…