Medir las revoluciones R.P.M.

Medir las revoluciones de giro de un motor en un display LCD, utilizando un interruptor óptico ranurado como sensor. Posible librería y código para realizar este medidor con Arduino (FreqCount.h). Esquema del medidor de RPM, utilizando el micro-procesador de Atmel AT89C2051 y un display LCD de 2 líneas y 16 caracteres. Comprobación de funcionamiento y medidas RPM con diferentes motores.

En un video anterior (Medir con precisión las RPM de un motor, es muy fácil) mostraba cómo se podían medir con precisión la velocidad de giro de un motor, de una forma fácil y sencilla.

Interruptor óptico ranurado
Interruptor óptico ranurado

El captador utilizado era un interruptor óptico ranurado,  posteriormente se medía la frecuencia de giro del motor y se convertía en revoluciones por minuto (RPM). La frecuencia se puede medir con un frecuencímetro, un osciloscopio o mediante una aplicación gratuita utilizando un dispositivo móvil.

Medir RPM con el móvil
Medir RPM con el móvil

En esta ocasión vamos a realizar un medidor de RPM completo, mostrando las revoluciones por minuto en un display LCD. El controlador del medidor se podría hacer con ARDUINO, utilizando la librería FreqCount.hpero deberemos tener en cuenta las limitaciones que tiene esta librería, dependiendo del modelo de Arduino que estemos utilizando

Arduino UNO & FreqCount.h

  • Pin de entrada para realizar la medida: 5
  • Deshabilitación de la sentencia  analogWrite() en pines: 3, 9, 10 y 11.
Conexiones LCD Keypad Shield
Conexiones LCD Keypad Shield

Si queremos utilizar le módulo LCD Keypad Shield con nuestro Arduino UNO, tendremos que utilizarlo sin ensamblar ambos módulos mediante sus conectores, porque coincide el pin de medida (FreqCount.h) con una de las conexiones del módulo LCD. Será necesario modificar las conexiones del LCD, ensamblando ambos módulos con cables para mover la entrada/s ocupada/s.

Con el fin de mejorar la resolución de las medidas… y después de algunos incidentes que tuve con mi Arduino, decidí hacer todo el desarrollo partiendo desde cero, y utilizar el micro-controlador de Atmel: AT89C2051.  En esta primera versión (quizás haga alguna mejora) la resolución de las medidas las determina un temporizador de 0,1 milisegundos (100 uSeg). De esta manera, la medida máxima de revoluciones por minuto que podríamos medir serán 600.000 RPM. Sin embargo, al ser un tiempo fijo, el valor inmediatamente inferior que mediríamos sería 300.000 RPM. Es decir, un salto entre medidas excesivamente grande. Por este motivo limité el valor máximo a 65.535 RPM (16 bit), aunque la medida máxima que podremos ver en el display será 60.000 RPM. Por otra parte, la medida mínima empezará a partir de 12 RPM. Esta limitación queda determinada por el tiempo máximo de espera que fijé para actualizar el valor mostrado en el display, que son 5 segundos.

Medidor R.P.M.
Medidor R.P.M.

 

Tabla RPM
Tabla RPM

En la tabla de la izquierda (click para ampliar) podemos observar los valores de RPM que podrían aparecer en el display, cuando medimos valores entre 4.000 y 60.000 RPM. Como podemos comprobar, la resolución de las medidas empeora al subir la velocidad de giro, lógico porque partimos de un temporizador de valor fijo (100 uSeg). Como en los motores de uso más frecuente la velocidad de giro no suele superar las 4.000 RPM, la resolución que se mostrará con este medidor será bastante buena.

Capacidad real de una batería con ARDUINO

Medir la capacidad real de una batería con ARDUINO. Para que este sistema pueda funcionar de forma autónoma (sin PC), se utiliza el módulo ‘LCD Keypad Shield’ para mostrar la información en su display. Midiendo la capacidad real de una batería nueva, podremos saber la fiabilidad del fabricante y además calcular el tiempo de funcionamiento que tendrá cualquier dispositivo que utilicemos con dicha batería.

LCD Keypad Shield - Esquema
LCD Keypad Shield – Esquema

El módulo ‘LCD Keypad Shield’ está diseñado para poder insertarlo encima del módulo ARDUINO, sin la necesidad de realizar ninguna conexión adicional. Como podemos ver en el esquema anterior, este módulo LCD  transfiere las entradas/salidas de ARDUINO que no utiliza (incluso el conector ICSP y el pulsador RESET) hacia su circuito impreso, permitiendo la inserción de conectores para poder utilizar estas conexiones sin tener que soldar cables en el módulo ARDUINO. LCD Keypad Shield dispone de 6 pulsadores, el pulsador Reset y 5 más para realizar maniobras, así como un diodo Led para indicar cuando está alimentada la placa. Los 5 pulsadores de maniobras están conectados a una red de resistencias alimentadas con 5V, y la salida va conectada a la entrada analógica ‘0’ de ARDUINO. Dependiendo del pulsador que se accione, aparecerá una tensión diferente en esta entrada analógica. Si leemos el valor desde ARDUINO utilizando la sentencia: analogRead(0), obtendremos un valor diferente con cada pulsación. Añadiendo una simple rutina en el código, podremos detectar la posición de cualquier botón. En la imagen anterior se muestran los valores que he medido en mi ARDUINO -tus medidas pueden variar ligeramente-, así como la rutina que podrías utilizar para detectar la pulsación de los botones.

LCD Keypad Shield & ARDUINO
LCD Keypad Shield & ARDUINO

El módulo LCD utiliza su propia tabla de caracteres (ROM), pero también dispone de 8 caracteres programables (RAM). Los caracteres programables los podemos utilizar para generar cualquier carácter o símbolo que necesitemos mostrar en la pantalla y no se encuentre en la tabla de caracteres (ROM) del display. En la imagen anterior se muestran los detalles para programar estos caracteres, así como las sentencias que se deben utilizar con la librería: LiquidCrystal.h en ARDUINO.

Sistema de medida: Capacidad real de una batería
Sistema de medida: Capacidad real de una batería

Para medir la autonomía de la batería, vamos a utilizar ARDUINO como cronómetro de precisión. La conexión/desconexión del cronómetro se realiza de forma automática, utilizando una entrada digital como control. El sistema de detección del estado de la batería será el incluido dentro del módulo TP4056 (módulo de carga para 3,7V con protección). El módulo TP4056  además controlar la carga de la batería, mostrando su estado mediante dos indicadores LED, desconecta la batería de cualquier dispositivo que conectemos a su salida cuando la batería llega a umbral mínimo de tensión (<2,5V).  Entre la salida de tensión del módulo TP4056 y ARDUINO conectaremos un pequeño interface, consistente en un transistor NPN, 2 resistencias y un condensador (ver esquema). Para facilitar el cálculo y obtener precisión en la medida, utilizaremos una carga electrónica para conseguir que la corriente permanezca constante, independientemente de la tensión que tenga la batería.

El cronómetro incrementará el contador de tiempo, siempre que tengamos tensión a la salida del módulo TP5056. Cuando el cronómetro se detenga podremos calcular la capacidad real de la batería, convirtiendo el valor de tiempo medido en horas y multiplicándolo por la corriente que hayamos seleccionado en la carga (la corriente en amperios para Ah). Es importante destacar que al final del ciclo de descarga, cuando el cronómetro se detenga, la carga se desconectará de la batería… y esta empezará a recuperarse más rápido o despacio dependiendo de la carga que le hayamos desconectado. Al subir de nuevo la tensión de la batería, llegará un momento en el que se supere el umbral de reposición del módulo TP4056, se conectará de nuevo y el cronómetro seguirá incrementando el tiempo. Cuando esto suceda, se producirán ciclos intermitentes de cadencia cada vez más larga, y al final se detendrá por completo. Si queremos conocer la capacidad de la batería con bajo consumo, podemos esperar hasta el final. Pero si necesitamos comprobar la autonomía con el consumo que hemos seleccionado en la carga (porque es el consumo de nuestro dispositivo), tendremos que hacer el cálculo cuando se desconecte el cronómetro por primera vez.

En la siguiente imagen se muestran las medidas comparativas que he realizado con dos baterías de origen chino, rotuladas con una capacidad de 9800 mAh. Las dos baterías son nuevas y pertenecen al mismo lote. Las medidas las he realizado con una corriente constante de 500 mA, y el tiempo que se muestra es el de la primera desconexión. Al medir la capacidad de dos baterías iguales, nos aseguramos que la batería que hemos utilizado no está defectuosa (ambas medidas son parecidas). Al realizar dos medidas utilizando la misma batería, comprobamos la precisión del sistema de medida que estamos utilizando (valores casi idénticos).

Resumen de las medidas
Resumen de las medidas

En la última línea se muestra la capacidad que he medido en otra batería de tipo TR 14500, de una ‘supuesta’ capacidad de 1200 mAh.

Medidas con umbral de tensión ajustable

Si queremos medir la capacidad de otros tipos de batería, con tensiones diferentes, o simplemente necesitamos comprobar el tiempo de funcionamiento de cualquier batería hasta llegar a una tensión umbral determinada, podríamos montar el circuito que se muestra a continuación.

Sistema de medida opcional, con umbral de tensión ajustable
Sistema de medida opcional, con umbral de tensión ajustable

Como podemos ver, sólo tendremos que sustituir el módulo de carga TP4056 por el circuito de control que se muestra en la imagen. Mediante el potenciómetro de ajuste (22K), fijaremos el umbral mínimo de tensión a la que se debe desconectar de la carga electrónica,  y detener la cuenta del tiempo (cronómetro).

Descargar el código de ARDUINO : Crono_Battery