Capacímetro & ESR con Arduino (v2)

Hace unos meses monté un capacímetro con el fin de comprobar el funcionamiento de las librerías de Arduino: Capacitor.h y CapacitorLite.h. El resultado final no fue todo lo bueno que esperaba, porque el rango de medidas quedó bastante limitado, y no conseguí medir capacidades superiores a 100μF con precisión.

Capacímetro con Arduino

Ahora tengo un capacímetro que apenas utilizo, porque la mayoría de las veces lo necesito para comprobar el estado de condensadores electrolíticos en fuentes conmutadas. En estos casos, los condensadores superan el rango de medidas del capacímetro, y además necesitaría también comprobar su valor ESR para determinar si el condensador sospechoso está en buen estado o no.

Por todo esto, he decidido ampliar las prestaciones de este capacímetro de acuerdo a las necesidades de uso más habituales:

  • Medir capacidades entre 1pF y 10.000μF con precisión
  • Medir los valores ESR de los condensadores a partir de 10μF

Medida de un condensador variable

Detalles de funcionamiento del capacímetro

Después de analizar todas las posibles opciones de medida del capacímetro que monté, limitada por los 1024 umbrales del conversor ADC de Arduino, he decidido añadir una segunda toma de medida. Una entrada será para medir las capacidades entre 1pF y 1μF, y la otra será para medir valores entre 50nF y 10.000μF, incorporando la medida ESR a partir de 10μF.

Esquema: Capacímetro & ESR

Así con la primera entrada utilizaré la librería Capacitor.h para medir capacidades por debajo de 1uF, y la segunda entrada la utilizaré para medir las capacidades más altas, midiendo el tiempo que tarda el condensador bajo prueba en alcanzar el 63% de la tensión máxima del conversor ADC. Con esta segunda entrada del capacímetro, se podrán medir capacidades entre 50nF y 10.000μF.

Entrada 1: 1pF … 1μF (Capacitor.h)

La librería Capacitor.h toma como referencia la capacidad interna de un pin analógico de Arduino, y mide su voltaje después de 30nS. Luego toma como referencia el 1% de la tensión aplicada junto con la capacidad del pin de Arduino, para calcular la capacidad del condensador que se ha conectado.

Capacitor.h con capacidades

Partiendo de los 5 voltios máximos del ADC de Arduino y sus 1024 posibles valores, las lecturas del ADC que podemos esperar oscilarán aproximadamente entre un valor 33 para 1pF y 993 para 1nF (1000pF).

Si la capacidad medida es superior a 1nF, la librería Capacitor.h toma como referencia la resistencia interna PullUp del pin de Arduino, de aproximadamente 30KΩ, y mide el tiempo que tarda el condensador bajo prueba en alcanzar el 63% de la tensión aplicada. A partir de ese tiempo medido se calcula la capacidad aplicando la constante de tiempo RC, tomando como referencia el valor de la resistencia PullUp.

Medida de capacidades altas

Entrada 2: 50nF … 10.000μF (bornas)

Al conectar un condensador en la segunda entrada, el programa realizará un test de estado del condensador y luego realizará una medida rápida, conectando en serie una resistencia de bajo valor (240Ω), para medir el tiempo que tarda en alcanzar el 63% de la tensión máxima del ADC.

Test de los condensadores

  • Si la medida obtenida es superior a 80μF, medirá el valor ESR mostrando ambas medidas en el display. Haciendo la medida RC con una resistencia de bajo valor, se acelera el tiempo de medida de los condensadores de alta capacidad sin perder precisión.

Medida 1000uF

  • En caso de que la medida obtenida fuera inferior a 80μF, no se muestra el valor y se realiza una segunda medida conectando una resistencia 40 veces más alta (10KΩ), con el fin de obtener mayor precisión en la medida de condensadores más bajos. En este caso también se mide el valor ESR si la capacidad es >80μF, y se muestran los resultados en el display.

Calibración del capacímetro

El proceso de calibración de este capacímetro hay que hacerlo en 4 pasos. Dos de ellos son para calibrar los dos sistemas de medida de la librería Capacitor.h, y los otras dos para calibrar los dos rangos de medida de la segunda entrada del capacímetro.

Entrada 1: medidas entre 1pF y 1nF

Es imprescindible conocer el valor exacto de la capacidad interna del pin analógico de Arduino, junto con las capacidades parásitas externas del montaje. Por esto siempre es necesario realizar una calibración final, conectando un condensador de valor conocido y menor de 1000pF como referencia, para medir su valor con el capacímetro una vez montado y cerrado.  Si la medida que muestra el capacímetro fuera inferior a la capacidad real del condensador, subiremos ligeramente el valor de la capacidad interna en el programa, y volveremos a programar el microcontrolador con la nueva referencia. Y si midiera una capacidad superior a la real, bajaremos el valor de la capacidad de referencia. Este proceso habrá que hacerlo varias veces, hasta que consigamos que el capacímetro muestre el valor real del condensador que hemos elegido como referencia.

Entrada 1:  medidas entre 1nF y 1μF

Seguiremos el mismo proceso de antes, pero en este caso es mucho más sencillo porque podremos hacerlo sin cerrar la caja del capacímetro. Conectaremos un condensador algo inferior a 1μF de valor conocido, y retocaremos el valor de la resistencia PullUp que hemos puesto en el programa. Teniendo en cuenta que si aumentamos el valor de la resistencia PullUp, se reducirá el valor de la capacidad que muestre el capacímetro, y si reducimos el valor de la resistencia aumentará la capacidad medida.

Entrada 2:  medidas entre 50nF y 10.000μF

En la segunda entrada del capacímetro, los condensadores de capacidad más baja (<80μF) se miden conectando una resistencia en serie de 10KΩ, y se mide el tiempo que tarda el condensador en alcanzar el 63% de la tensión máxima del conversor ADC. Aunque pongamos una resistencia de precisión, como la tensión de 5V se conecta a través de un pin digital de Arduino, tendremos que sumar el valor de su resistencia interna para que la medida sea precisa.

Pin de medida del Capacímetro

Por otra parte, la conexión común de ambas entradas del capacímetro no es GND, es otro pin analógico de Arduino, y aunque lo configuremos como salida con valor bajo, se sumará una resistencia extra a la constante RC. El valor de esta resistencia extra se compensa de forma automática en el código del programa.

Pin de referencia del capacímetro

Cuando se miden condensadores >80μF, el capacímetro le conecta una resistencia en serie de 240Ω, con el fin de reducir el tiempo de la medida. En este caso sucede lo mismo que antes, y por eso también tendremos que compensar el valor de la resistencia interna del pin digital que conecta la tensión al circuito RC.

Ajuste automático de referencia

El capacímetro realiza un ajuste a cero de las dos entradas cada vez que se conecta la alimentación, compensando así las capacidades parásitas de las puntas de medida que hayamos conectado. Es importante conectar el capacímetro con las puntas libres, sin ningún condensador conectado entre ellas.

Auto ajuste inicial del capacímetro

Firmware

El código que necesitas para programar el ATMEGA-328P de Arduino, lo puedes descargar del repositorio GitHub:

https://github.com/J-RPM/Capacimeter/

Caja 3D del Capacímetro

La caja del Capacímetro la hice con 3 piezas, impresas en 3D con PLA de color negro. Para que destaque la serigrafía, se puede pintar con un pincel fino y pintura sintética, utilizando cualquier color que sea claro.

Caja 3D para el Capacímetro.

Caja del Capacímetro – Thingiverse: Capacimeter with Arduino

¿Necesitas fabricar un circuito impreso?

Actualmente hay muchas empresas que se dedican a fabricar circuitos impresos (PCB), pero no en todas podemos conseguir pequeñas tiradas a buen precio. Por suerte, ahora disponemos de Internet y es mucho más fácil que antes. Podemos buscar empresas en cualquier parte del mundo, y es más fácil encontrar un fabricante que haga nuestros prototipos (PCB) a buen precio. Una de las empresas más grandes del sector es PCBWay.

Logo: PCBWay

https://www.pcbway.es/

Capacímetro con Arduino

La plataforma de programación de Arduino es muy versátil. Al ser un sistema de código abierto, hay mucha gente que colabora y comparte sus programas. Con Arduino es muy sencillo diseñar y fabricar cualquier dispositivo electrónico a medida. Sólo hay que buscar las librerías del proyecto que tengamos en mente, y escribir unas pocas líneas de código para  hacer que todo funcione según lo hemos pensado. Hace unos días me preguntaron si conocía la librería Capacitor.h, y como la mejor forma de conocer una librería es trabajar con ella, hice este capacímetro con Arduino. Como en realidad son dos librerías, he utilizado las dos dentro del mismo código.

«Capacitor.h» permite medir capacidades comprendidas entre 1pF y 100μF.

https://wordpress.codewrite.co.uk/pic/2014/01/21/cap-meter-with-arduino-uno/

«CapacitorLite.h» utiliza menos almacenamiento de programa y funciona más rápido. Puede medir entre 0,2pF y 655pF, pero se aumenta su resolución porque entrega los valores en pFx100 (dos decimales).

https://wordpress.codewrite.co.uk/pic/2014/01/25/capacitance-meter-mk-ii/

Esquema del capacímetro

Este capacímetro está construido con un ATMEGA328P y sus componentes mínimos: el circuito oscilador y el del Reset.

Esquema del Capacímetro.

Para montar todo esto, utilicé un PCB de los que me sobraron cuando hice el Shield del programador ISP para Arduino.

Shield programador ATmega/ATtiny (ARDUINO)

El único problema es que tuve que hacer algunos puentes con cable por debajo.

Puentes a realizar en el PCB del Capacímetro-

Para alimentar el capacímetro utilicé una batería LiPo de 3,86V de tensión nominal, es un módulo recuperado de la batería de un PC. El largo y ancho del capacímetro lo hice en función del tamaño de la batería. La batería va alojada en la base de la caja, debajo de toda la electrónica. Para elevar la tensión de la batería a 5V, es necesario un circuito Step-Up Converter. El primer circuito Step-Up que utilicé interfería las lecturas del conversor ADC, y el capacímetro mostraba algunas medidas erróneas. Al final probé con un módulo MT-3608, previamente ajustado a 5V, y se acabaron los problemas. Para cargar la batería, utilicé el módulo de carga y protección TP-4056.

La  medida de la capacidad se muestra en un display LCD de 2×16 caracteres, utilizando la librería CapacitorLite si el condensador bajo prueba mide menos de 655 pF, o Capacitor.h para mostrar capacidades hasta 100μF. El rango de la medida de capacidad se podría aumentar un poco más, pero la precisión empeora rápidamente.

Código de programación

En los comentarios de inicio del programa están los detalles de funcionamiento, y los link de acceso a las dos publicaciones de Jonathan Nethercott, donde explica con más detalle el funcionamiento de las dos librerías y su calibración.

Código Arduino para el Capacímetro.

Al principio del código se definen los pines de conexión del display LCD y los dos pines donde las dos librerías medirán el condensador bajo prueba: el pin digital 12 y el analógico 2. Para realizar la medida, la librería genera un impulso de 5V de corta duración, alrededor de 100μSeg.

Impulso generado por el Capacímetro.

Posteriormente se realiza la media de tensión en el condensador entre los pines D12 y A2, en función de la capacidad interna y la resistencia PullUp del microprocesador que se utiliza. Estos valores los define de forma automática la librería, pero se pueden calibrar para aumentar la precisión.

En el void setup() se define la velocidad del puerto serie y se genera el mensaje de presentación en el LCD y el puerto serie. También se pueden modificar los valores de calibración de las dos librerías si fuera necesario.

En el void loop() se repite el ciclo de medida de capacidad cada segundo. Se empieza midiendo la capacidad con la librería CapacitorLite.h. El valor de esta medida es en pF x 100, por lo que habría que dividir el valor obtenido entre 100 para mostrar la medida en pF, pero primero se comprueba si el valor obtenido es menor de 65.500, ya que el contador es de 16 bits y se desborda al superar 65.535. A continuación se puede ver el impulso de 5V de corta duración, que genera el pin D12 para realizar la medida de capacidad.

Si el valor de la medida fuese mayor de 655pF, se repetiría la medida utilizando la librería Capacitor.h. A continuación se pueden ver los dos impulsos que genera el pin D12, uno a continuación del otro, para realizar otra medida de capacidad utilizando la segunda librería.

Doble impulso del capacímetro

Con Capacitor.h se obtienen directamente valores en pF. Mediante el código se ajustan los valores superiores a 1.000 para que se muestre en nF, y si la medida es superior a 1.000.000, se ajusta el valor a μF. Al principio de todo, se comprueba que el valor medido sea inferior a 101 μF, con el fin de no mostrar valores imprecisos en las medidas.

Al final del código se muestra la medida realizada en el LCD y a través del puerto serie, añadiendo una indicación de actividad en el display durante 300mSeg. Al final se realiza una pausa de 700mSeg. antes de repetir de nuevo el ciclo de medida.

Firmware

El código que necesitas para programar el ATMEGA-328P de Arduino, lo puedes descargar del repositorio GitHub:

https://github.com/J-RPM/Capacimeter/

Caja 3D del Capacímetro

La caja del Capacímetro la hice con 3 piezas, impresas en 3D con PLA de color negro. Para que destaque la serigrafía, se puede pintar con un pincel fino y pintura sintética, utilizando cualquier color que sea claro.

Caja 3D para el Capacímetro.

Caja del Capacímetro – Thingiverse: Capacimeter with Arduino

¿Necesitas fabricar un circuito impreso?

Actualmente hay muchas empresas que se dedican a fabricar circuitos impresos (PCB), pero no en todas podemos conseguir pequeñas tiradas a buen precio. Por suerte, ahora disponemos de Internet y es mucho más fácil que antes. Podemos buscar empresas en cualquier parte del mundo, y es más fácil encontrar un fabricante que haga nuestros prototipos (PCB) a buen precio. Una de las empresas más grandes del sector es PCBWay.

Logo: PCBWay

https://www.pcbway.es/

Analizador acústico con ARDUINO

Construcción de un analizador acústico con Arduino. La información se presenta de forma gráfica, en un display LCD de 16×2 caracteres. Como ecualizador gráfico se puede utilizar el circuito integrado MSGEQ7 o el MSGEQ5, dependiendo del número de bandas de audio que queramos mostrar. Este circuito se puede montar de forma independiente, previamente programando el ATMEGA328P con la placa de desarrollo de Arduino. Una vez programado, mediante la posición de un jumper se puede configurar para que muestre 5 o 7 bandas… montando previamente el circuito integrado ecualizador correspondiente.

Utilidad de un analizador acústico

Este analizador acústico no puede competir con un equipo profesional, pero podría ser muy útil para acondicionar la acústica de un salón de actos o sala de conciertos improvisada. Comprobando la respuesta en frecuencias y volumen de escucha en diferentes puntos, se podrían corregir los defectos reorientando los altavoces/bocinas, ecualizando la respuesta de los amplificadores, etc.   Por otra parte, como este analizador de audio es de bajo costo y no requiere de conocimientos especiales para montarlo, podría ser muy instructivo realizarlo como práctica en escuelas relacionadas con la formación en las ramas de electrónica y tecnología.

Ecualizador gráfico de 5/7 bandas

Este montaje está basado en el circuito integrado MSGEQ5 / MSEGQ7,  ecualizador gráfico de audio  de 5 y 7 bandas respectivamente.  Dentro de un pequeño encapsulado DIL de 8 pines, se encuentra todo lo necesario para obtener a su salida los valores de energía a diferentes frecuencias,  a partir de la señal de audio en su entrada (descomposición espectral).

MSGEQ5 - Analizador de 5 bandas

Como se puede ver en la imagen anterior,  el MSGEQ5  analiza los valores comprendidos entre 100 y 10.000 Hz. Este rango es más que suficiente para conocer la respuesta en frecuencias de cualquier entorno. Pero si queremos analizar con más detalle los extremos de la zona audible, graves más bajos y agudos más altos, sería mejor utilizar el MSGEQ7.

MSGEQ7 - Analizador de 7 bandas

Como se puede comprobar comparando los datos entre ambos componentes,  son compatibles tanto en conexiones como características técnicas. Lo único que cambia es la gestión de los datos,  pero el protocolo es el mismo.  Con el MSGEQ5 tendremos que tomar y asignar los valores leídos de 5 en 5, y con el  MSGEQ7 lo haremos en grupos de 7 (número de bandas). Aprovechando estas características, es muy fácil construir un circuito que permita trabajar con ambos componentes.

Analizador acústico de 5/7 bandas

 

Este montaje lo puedes hacer siguiendo el esquema anterior, o utilizando la placa de desarrollo de Arduino junto con el Shield LCD, desarrollado para Arduino UNO.

Escala gráfica

La escala de las barras gráficas que muestra el display no es logarítmica, como lo harían la mayoría de los analizadores de audio. Con el fin de obtener un efecto visual más pronunciado, la gráfica que muestra el display  traduce los valores de tensión en cada banda de forma lineal.

Escalado lineal de las medidas

Si prefieres cambiar la escala, sólo tienes que modificar los valores de la tabla (resaltadas en color  amarillo), editando el código antes de programar el microprocesador ATMEGA328P con Arduino.

Firmware

El código de programación de este analizador acústico,  se puede descargar desde el siguiente enlace: Analizador acústico

Medir la sensación térmica

Construcción de un medidor de humedad, temperatura real y la sensación térmica. Para este montaje voy a utilizar el sensor de temperatura y humedad DHT11, y como controlador utilizaré Arduino. La sensación térmica describe el grado de incomodidad que el ser humano percibe, como resultado de la combinación de la temperatura, humedad y el viento. La humedad, junto con la velocidad del aire hacen que la sensación de frío sea mayor en invierno, y la sensación de calor más intensa en verano.

Sensor DHT11

La temperatura y la sensación térmica

Es habitual que nos fijemos en la temperatura que muestra un termómetro, y rápidamente asociemos el valor que hemos leído con la sensación de frío o calor que vamos a sentir. Sin embargo, la sensación térmica varía en función de otros factores, como son la humedad relativa del aire y su velocidad.

Regulación térmica

El cuerpo humano intenta mantener su temperatura corporal a un valor constante, alrededor de los 37ºC y la piel es el principal órgano encargado de regular la temperatura:

  • Cuando aumenta la temperatura del cuerpo, se dilatan los vasos sanguíneos y aumenta el flujo de sangre por la piel, y la piel en contacto con el exterior hace de radiador y se reduce la temperatura. Si el calor es excesivo, se abren los poros y se comienza a sudar. El sudor es un método de enfriamiento muy efectivo, porque su evaporación provoca un enfriamiento mucho más rápido.

Sudor y humedad

  • Cuando el cuerpo se enfrí­a, los vasos sanguí­neos se contraen y el flujo sanguíneo se reduce. Los músculos son estimulados para generar más calor, pudiendo llegar a provocar temblores involuntarios. Así  el cuerpo puede aumentar su temperatura rápidamente en caso de necesidad.

En definitiva, la piel humana es el sensor que detecta las diferencias de temperatura entre el cuerpo y el ambiente, para reaccionar en consecuencia. Si tenemos en cuenta que la temperatura de la piel se mantiene alrededor de los 32ºC, la sensación térmica variará de forma más brusca, cuando más nos alejemos de dicho valor y dependerá de la humedad y velocidad del aire exterior.

Sensación térmica: Humedad/Temperatura

La sensación térmica describe el grado de incomodidad que el ser humano percibe, como resultado de la combinación de la temperatura, humedad  y el viento. La humedad, junto con la velocidad del aire hacen que la sensación de frío sea mayor en invierno, y la sensación de calor más intensa en verano.

Gráfica: sensación térmica

 

La humedad en verano y en invierno

  • En verano, con temperaturas altas, un exceso de humedad en el ambiente impide que el sudor se evapore de forma eficiente, provocando una sensación de calor más alta.
  • En invierno, con temperaturas bajas, un exceso de humedad en el ambiente provoca una hidratación mayor de la piel, condensando partículas de agua en la superficie como si fuera sudor, y su evaporación provoca una sensación de frío mayor que la que muestra el termómetro

Si queremos saber el grado de frío o calor, sobre todo en las regiones de climas húmedos, es mucho más útil conocer la sensación térmica que la temperatura. La humedad relativa del aire, representada con las siglas HR o la letra griega Φ (fi), es la concentración de vapor de agua en el aire.

Una vez corregido el valor de temperatura con la sensación térmica debido a la humedad, si además hay viento con una velocidad superior a 12,5 km/h, habría que aplicar al valor obtenido una nueva corrección.

Sensación térmica con viento

La corrección con el viento es mucho menor que la provocada por la humedad. Como se puede ver en la gráfica anterior,  la sensación de calor aumenta a partir de 34ºC  y también disminuye a partir de ese mismo valor.

Medir la sensación térmica

La construcción de un medidor que muestre el valor de la sensación térmica, es sencilla y de bajo costo. Con Arduino el código de programación es muy corto, y además las fórmulas de corrección ya están incluidas dentro de las librerías del sensor DHTxx. Para este montaje utilicé el sensor DHT11, pero si se requiere una mayor precisión, es mejor utilizar el DHT22. El controlador de este medidor está hecho con Arduino, y la presentación de los valores se muestra en un display LCD de 2×16 caracteres. Todo el conjunto se podría fabricar sin tener que soldar ningún componente, utilizando un Arduino UNO junto con su ‘Shield LCD‘. El sensor de temperatura/humedad se puede conectar con terminales de conexión en la tarjeta Arduino, porque el sensor DHT11 se puede comprar montado en una pequeña placa PCB, en la que lleva montada una resistencia Pull-Up y el condensador de desacoplo para la alimentación. La alimentación de todo el conjunto es de 5 VDC, por lo que se podría utilizar cualquier cargador USB que tengamos en casa.

También puedes optar por hacer un montaje independiente, sin la placa de desarrollo de Arduino.  Así  te saldrá todo más barato y su tamaño será menor:

Esquema del medidor de temperatura, humedad y sensación térmica

Firmware (v1)

El código de programación de este medidor, junto con la librería de control necesaria para el sensor DHTxx, se puede descargar desde el siguiente enlace: Temperatura y humedad

Descargar fichero .stl

Thermometer showing the thermal sensation

El medidor de temperatura y humedad lo puedes montar dentro de en una pequeña caja de plástico  (100 x 60 x 25 mm), incluyendo dentro su propia fuente conmutada de 5VDC. Los detalles de este montaje, los puedes ver en el siguiente video:

Sensación y conductividad térmica

¿Por qué tiene tan mala respuesta a la temperatura el sensor DHT11?. El problema es que el sensor de temperatura DHT11 está encerrado dentro de una jaula de plástico, por lo que su conductividad térmica entre el exterior y el sensor es mala, y esto provoca que su tiempo de respuesta sea lento. Para corregir este fallo, he montado un segundo sensor de temperatura en el termómetro. He utilizado el sensor DS18B20 con encapsulado metálico para medir la temperatura, dejando el sensor DHT11 para medir la humedad y calcular la sensación térmica.

Tiempo de respuesta de un sensor

La respuesta en el tiempo de un sensor de temperatura depende de la conductividad térmica del material utilizado entre el elemento a medir (aire, líquido) y el sensor de temperatura. Como norma general, los materiales mas conductivos eléctricamente, también lo son térmicamente.

Conductividad térmica de algunos materiales

Utilizar un sensor de temperatura con encapsulado metálico, es una buena elección cuando se necesita obtener una respuesta rápida en la medida.

Tabla: Conductividad eléctrica y térmica

Aunque esto no siempre es imprescindible y hay veces que es mejor utilizar un sensor de respuesta más lenta, con el fin de mostrar la temperatura ambiente y evitar que se muestren cambios bruscos debido a una corriente de aire frío o caliente  ocasional.

Conductividad térmica

El sensor de temperatura y humedad DHT11 es de respuesta lenta y muy válido para mostrar la temperatura en zonas abiertas, pero no es el más adecuado para medir valores en recintos pequeños (sauna, cámara frigorífica, caldera).

¿Es útil el montaje anterior?

Dependiendo del uso que le quieres dar al medidor de temperatura ambiente, tendrás que elegir el sensor de temperatura que mejor se adapte al entorno. Si quieres mostrar la temperatura en un espacio abierto, el montaje anterior te podría servir. Pero si lo quieres para hacer medidas rápidas, o para mostrar los valores dentro de en un recinto pequeño, es aconsejable añadir al esquema anterior un segundo sensor de temperatura con encapsulado metálico.

Temperatura, humedad y sensación térmica con dos sensores.

Firmware (v2)

El código de programación del medidor con doble sensor, se puede descargar desde el siguiente enlace: Temperatura y humedad (v2)

 

 

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.