viernes, 29 de abril de 2016

Control de una hélice con motor DC y driver L9110H


Hoy os voy a mostrar cómo controlar tanto la velocidad como el sentido de giro de una hélice motorizada mediante el uso del driver L9110H, utilizado habitualmente para el manejo de pequeños motores DC que estén alimentados con voltajes comprendidos entre 2.5 - 12V, que en nuestro caso es un motor DC de 5V, y con una corriente máxima de 800mA. Este tipo de hélice con motor DC y driver L9110H es del fabricante “KEYES”, pudiéndose adquirir en algunas de las tiendas de electrónica online existentes en el mercado bajo el nombre de “Fan motor” a un precio que ronda los 6€.


Fan Motor de “KEYES”

Este sistema viene ya montado y soldado en un PCB ofreciéndonos 4 pines de conexión, dos de ellos para la alimentación (+VCC y GND), y los otros dos para el control del motor DC de 5V (INA e INB). El pin INA se utiliza para variar la velocidad del motor DC mediante pulsos PWM, por lo que deberemos de conectarlo a un pin digital de Arduino que permita este tipo de salida digital pulsada (en el programa de control se utiliza el pin digital 9). Por otro lado el pin INB se utiliza para cambiar el sentido de giro del motor, es decir, cuando este pin esté a nivel BAJO (LOW) el motor girará en un sentido y cuando esté a nivel ALTO (HIGH) girará en el sentido contrario (en el programa de control se utiliza el pin digital 8). El programa de control lo que hace es desplegar un MENU a través del monitor serie del IDE de Arduino, para que nosotros a través del mismo, seleccionemos una opción como se puede observar en la siguiente imagen.


Monitor Serie


Lista de Materiales:


·         Arduino UNO Rev.3.

·         Cable USB tipo A-B.

·         Fan Motor (KEYES).

·         Protoboard.

·         Cables de conexión.



Código del programa:






Video:



viernes, 15 de abril de 2016

Caudalímetro con sensor de flujo YF-S201 y LCD 2004


En el POST de hoy os voy a enseñar cómo medir el caudal de agua en L/hora que atraviesa la alcachofa de nuestra ducha, así como la cantidad de agua que gastamos cada vez que nos duchamos, para ello, vamos a montar y programar un sencillo caudalímetro basado en el sensor de flujo YF-S201, un display LCD 2004 para poder visualizar los valores a tiempo real y una serie de elementos auxiliares necesarios para que le llegue el caudal de agua a nuestro sensor.


Sensor de flujo YF-S201

El sensor de flujo YF-S201 está constituido por una carcasa de plástico, un rotor de agua y un sensor de efecto Hall. El funcionamiento de este sensor es muy simple, es decir, en el rotor tiene un pequeño imán adherido para poder registrar una vuelta cada vez que pasa por el sensor magnético de efecto Hall que hay en el otro lado del tubo, generándose pulsos de salida a una velocidad proporcional a la del flujo. En la parte posterior del sensor hay una flecha para indicar la dirección del flujo. Cada pulso en la salida del sensor equivale aproximadamente a 2,25 mililitros. Una de las cosas a tener en cuenta es que no es un sensor de precisión, por lo que la frecuencia del pulso varía un poco dependiendo de la velocidad de flujo, la presión del fluido y la orientación del sensor,  necesitándose una cuidadosa calibración si se requiere más que un 10% de precisión. A continuación os muestro algunas de las características más relevantes de este sensor.

Tabla de características del sensor de flujo YF-S201

La salida del sensor (cable amarillo) la vamos a conectar a nuestro Arduino para que mediante una correcta programación podamos visualizar a través del LCD 2004 el caudal que sale por nuestra ducha en L/hora, además del consumo de agua en litros que hemos realizado en un determinado espacio de tiempo, por ejemplo, mientras nos duchamos (el cable rojo a +5V y el negro a GND de nuestro Arduino). Como la señal del pulso de salida es una simple onda cuadrada es muy fácil de registrar mediante interrupciones, para posteriormente convertir los pulsos en caudal. Según la hoja de datos del fabricante, por cada litro de agua que pasa por el sensor obtenemos aproximadamente 450 pulsos, entonces:


Esto quiere decir que si tenemos la frecuencia (pulsos por segundo), simplemente lo tenemos que dividir entre 7.5 para obtener el número de L/min. Para el caudal en L/hora tenemos que multiplicar la frecuencia por 60 minutos que tiene una hora.

  

La instalación del sensor a nuestra ducha es muy sencilla, lo primero que tenemos que hacer es dejar libre de conexiones el grifo de la ducha, para enroscar allí un extremo de la manguera con conexiones hembra de ½”, conectando el extremo libre de la manguera a la entrada del sensor. Por último en la salida del sensor conectaremos la manguera con la alcachofa que habíamos retirado anteriormente del grifo de la ducha. El sensor en ambos extremos tiene roscas macho estándar de ½”, lo que nos facilita la conexión. También es muy recomendable aplicar teflón en cada uno de los extremos del sensor para evitar posibles fugas de agua.


Caudalímetro con Arduino UNO


Lista de Materiales:


·         Arduino UNO Rev.3.

·         Cable USB tipo A-B.

·         Sensor de flujo YF-S201.

·         Manguera con conectores hembra de ½”.

·         Alcachofa de ducha con manguera y conector hembra de ½”.

·         Módulo LCM 2004 I2C V1.

·         Display 20x4 LCD 2004.

·         Teflón.

·         Batería de 12VDC/3000mAh (DC12300).

·         Protoboard.

·         Cables de conexión.



Código del programa:



Video:

martes, 12 de abril de 2016

Reloj en tiempo real Tiny RTC I²C con LCD 2004


El Tiny RTC I²C, es uno de los diferentes relojes en tiempo real con comunicación I²C que nos podemos encontrar en el mercado actual. Está compuesto por un RTC DS1307, una memoria EEPROM 24C32N y una batería CR2032 de 3V, gracias a ello es capaz de almacenar los datos y de seguir en funcionamiento aunque lo desconectemos de la alimentación de nuestro Arduino, y por lo tanto, cuando volvamos a conectarlo, mantendrá intacta tanto la hora como la fecha que le hayamos introducido mediante programación, aunque siempre que estemos trabajando con él es muy recomendable mantenerlo correctamente alimentado.

Tiny RTC I²C

Los valores tanto de hora como de fecha, les vamos a poder visualizar a través de un display LCD 2004, que no es más que un simple LCD que cuenta con cuatro líneas en las que se pueden mostrar hasta 20 caracteres en cada una de ellas. Tanto el LCD 2004 como el RTC van a compartir los pines SCL y SDA  para conectarse con nuestro Arduino mediante comunicación I²C, aunque podríamos incluir en nuestros proyectos hasta 128 dispositivos gracias a este protocolo de comunicación, siempre y cuando respetemos la dirección que tenga asignado cada uno de ellos. 

Otra cosa muy importante a recordar es que dentro de la programación, exactamente en la línea “LiquidCrystal_I2C lcd(0x20, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);”, donde pone 0x20, es justo la dirección que va a tener nuestro LCD 2004. Dicha dirección se obtiene midiendo el valor de los pines de dirección A0, A1 y A2, que están justo detrás del módulo LCM 2004 I2C V1 conectado al LCD 2004, con un potenciómetro, que en mi caso están todos conectados a GND (A0=0, A1=0 y A2=0) como se puede apreciar en la siguiente imagen.

Configuración de los pines A0, A1 y A2 (direcciones) en el LCD 2004

El programa simplemente cargará automáticamente la hora y la fecha que tengamos ajustada en nuestro PC al Tiny RTC I²C a través de la conexión serie USB de nuestro Arduino y gracias al uso de la librería "RTClib.h", una vez que comience la ejecución del programa, se mostrará los valores a través del LCD 2004. A parte de mostrarnos la hora y la fecha en tiempo real, este sistema nos permite poder crear diferentes alarmas y eventos en función del instante de tiempo que deseemos, siempre que se contemple dentro de la programación y tengamos correctamente conectado el hardware externo que necesitemos, por ejemplo, que a las 18:00:00h del día 14/04/2016 se encienda una bombilla a través de un Relé conectado a uno de los pines digitales de salida de los que nuestro Arduino dispone, para que posteriormente se apague a las 18:30:00h. Para más información debéis revisar el POST donde se explica detenidamente el manejo de los Relés.



Lista de Materiales:


·         Arduino UNO Rev.3.

·         Cable USB tipo A-B.

·         RTC DS1307.

·         Batería de 3V CR2032.

·         Módulo LCM 2004 I2C V1.

·         Display 20x4 LCD 2004.

·         Protoboard.

·         Cables de conexión.


Código del programa:



Video:


jueves, 7 de abril de 2016

Registrando temperatura ambiente con LM35 y lector de tarjetas micro SD


Hoy os traigo un simple y económico sistema para registrar los valores de temperatura que hay en un determinado lugar a lo largo del tiempo, para ello, vamos a utilizar un sensor de temperatura LM35 y un módulo lector de tarjetas micro SD, que junto con nuestro Arduino y una sencilla programación lograremos crear un robusto dispositivo para el registro climático. El LM35 es un sensor de temperatura de muy bajo coste con una precisión calibrada de 1 °C. Su tensión de salida es lineal y proporcional a la temperatura, por lo que cada grado Celsius equivale a 10 mV, abarcando un rango de medición desde -55 °C (-550mV) hasta 150 °C (1500mV). Debido a su baja corriente de alimentación (60 μA) se produce un efecto de auto calentamiento muy reducido, además se encuentra en el mercado en diferentes tipos de encapsulado, el más común es el TO-92, utilizado también por los transistores de baja potencia. El LM35 no requiere de circuitos adicionales para su correcto funcionamiento, la baja impedancia de salida y su precisa calibración interna hacen posible su fácil instalación a nuestro Arduino.

Sensor de temperatura LM35

Este dispositivo consta de tres pines de conexión, los dos de los extremos para la alimentación (+5V y GND) y el central para el voltaje de salida “Vout”, que será el pin que conectaremos a la entrada analógica A0 de nuestro Arduino para que a través de su conversor A/D de 10 bits de resolución podamos obtener ciertos valores con los que poder operar y de esta manera obtener la temperatura real que está detectando el sensor en cada momento. Partiendo de la premisa de que 1 °C equivale a 10mV en Vout, lo primero que hacemos es obtener el valor que nos entrega el conversor A/D tras la lectura del pin Vout del sensor, después multiplicamos este valor por la precisión para obtener el voltaje real y por último dividimos el voltaje entre los 10mV para obtener los grados centígrados (°C), quedando la siguiente fórmula matemática.



A partir de aquí lo que nos interesa conocer es que nuestro Arduino puede leer y escribir datos en tarjetas micro SD a través de un módulo específico, pero no formatearlas, debido a ciertas limitaciones de la librería  #include que utilizamos, aunque como siempre estas limitaciones o especificaciones pueden cambiar en el futuro, pero es importante que las tengáis en cuenta. Por ahora solo soporta tarjetas micro SD en formato FAT16 y FAT32, en principio si usas FAT32 deberías poder usar hasta una tarjeta de 32Gb, además los nombres y archivos quedan limitados al viejo formato 8.3, es decir,  nombre de 8 caracteres y extensiones de tres,  y nada de acentos en los nombres,  ni nuestra querida letra “Ñ”,  ni espacios en blanco, en definitiva  nada que no sean letras y números, sin signos raros. Si usas Windows en cualquier versión, puedes introducir la tarjeta micro SD en un adaptador SD o similar y formatearla desde el administrador de archivos, eligiendo la opción formatear y en sistema de archivos debes seleccionar FAT32 (predeterminado), manteniendo en las opciones de formato el rápido. También debéis de conocer que la librería puede no escribir inmediatamente los datos que le envías a la tarjeta micro SD, y para asegurarse de que es así, debes hacer una llamada a flush (Vaciar) o close (Guardar y cerrar).

Lector de tarjetas micro SD

Para finalizar os tengo que decir que el módulo lector de tarjetas micro SD se conecta a nuestro Arduino mediante comunicación SPI, que no es más que uno de los protocolos de comunicación serie que soporta, además tenemos que cargarle el programa para que se escriba en la tarjeta micro SD cada 5 segundos el valor de la temperatura ambiente en un archivo llamado “LM35.TXT” (Si este archivo no existe lo crea y si ya existe añade los datos a continuación de los anteriores), cuyo contenido tendrá el siguiente aspecto.

Monitor serie del IDE de Arduino

A través del monitor serie del IDE de  Arduino podremos ir visualizando la temperatura a tiempo real además de los distintos mensajes que irá enviando el programa en función del comportamiento del lector de tarjetas micro SD (Error al leer la tarjeta, valor almacenado correctamente, error al escribir en LM35.TXT…).



Lista de Materiales:


·         Arduino UNO Rev.3.

·         Cable USB tipo A-B.

·         Sensor de temperatura LM35.

·         Módulo lector de tarjetas micro SD.

·         Tarjeta micro SD genérica de 2GB.

·         Protoboard.

·         Cables de conexión.


Código del programa:



Video: