martes, 15 de marzo de 2016

Control del brillo de una bombilla a través de un Dimmer AC


Un Dimmer AC, también conocido como regulador o atenuador de intensidad, es un dispositivo de reducido tamaño cuya misión es la de regular el voltaje de entrada, 220 VAC en la mayoría de los casos,  para obtener a su salida otros voltajes menores o como mucho iguales. Este Dimmer AC puede funcionar sin necesidad de conectarle a un Arduino, gracias a que tiene integrado un microprocesador Atmel ATtiny85 configurable a través de programación ICSP,  aunque en este POST, le vamos a controlar a través de pulsos PWM enviados desde el monitor serie del IDE de Arduino.

 Dimmer AC

Gracias al MOC3023 (optoacoplador) del que dispone, se consigue separar la parte de control de la de potencia, para que no se queme ningún dispositivo debido a las corrientes transitorias que se puedan generar al manejar voltajes y corrientes elevados. El encargado de manipular la señal de entrada para adecuarla a la salida que nos interesa va a ser el TRIAC BTA316, es decir, va a ser el encargado de disminuir el valor eficaz del voltaje en la bombilla recortando la señal en el momento de subida en el punto que queramos, por lo que si cortamos la señal cuando la onda llega a 60 V la bombilla se encenderá muy poco, mientras que si la cortamos al llegar a 200 V se encenderá casi al máximo. Esto se consigue mandando pulsos PWM desde nuestro Arduino hacia el Dimmer AC, que hagan que el TRIAC conmute para que deje pasar o no la corriente y por lo tanto generar así una tensión AC regulada en su salida. Si aplicamos un pulso PWM al Dimmer AC, de un valor a partir de 15 (33VAC), la bombilla comenzará a brillar, hasta llegar al valor 90 (220VAC) con el que la bombilla tendrá el máximo brillo posible. Estos pulsos PWM se los vamos a enviar desde el monitor serie del IDE de Arduino.
Funcionamiento del Dimmer AC

Incluyendo Dimmers AC en las  instalaciones eléctricas de nuestro hogar o negocio,  mejoraremos la eficiencia energética del lugar, permitiendo un menor gasto en la factura eléctrica, aumentaremos la vida útil de las bombillas y cuidaremos de la vista de los usuarios adecuando la intensidad luminosa a la situación en la que nos encontremos (viendo la TV, leyendo, cocinando, trabajando con el PC…). A través del monitor serie se va a ir mostrando el porcentaje de la señal de entrada que le estamos diciendo al Dimmer que deje pasar hacia la salida a través del TRIAC, como se puede observar en la siguiente imagen.
Monitor serie


Lista de Materiales:


·         Arduino UNO Rev.3.

·         Cable USB tipo A-B.

·         Dimmer AC (50Hz/220V).

·         Casquillo portalámparas de PVC.

·         Bombilla de 60W/220VAC.

·         Protoboard.

·         Cables de conexión.


Código del programa:





Video:

viernes, 11 de marzo de 2016

Comunicación I²C entre dos Arduinos


Hoy vamos a conectar dos Arduinos UNO Rev.3 a través de comunicación I²C (Inter-Circuitos Integrados), que es un bus de comunicaciones serie síncrono, con 2 líneas para transmitir la información, es decir, el pin SDA para transmitir los datos y el pin SCL para el reloj que  sincroniza la comunicación.  Este tipo de comunicación utiliza un direccionamiento de 7 bits, con lo que podrían comunicarse  hasta 127 dispositivos simultáneamente a una velocidad de unos 100 Kbits por segundo, aunque es recomendable conectar resistencias PULL-UP de un valor comprendido entre 1 y 10KΩ tanto en el pin SDA como en el pin SCL para no perder potencia en la comunicación. Hoy en día es muy fácil de encontrar dispositivos ya sean sensores, pantallas LCD… etc. que se conecten por medio de comunicación I2C a nuestro Arduino, cada uno con una dirección diferente previamente asignada (0-126).
Esta vez nos vamos a ayudar de la librería   para poder trabajar con comunicación I²C y Arduino. Es necesario realizar dos montajes, el del “Arduino Maestro I²C”, que va a ser el que tiene conectado el pulsador (pin digital 4) y está alimentado a través del puerto USB de nuestro PC, y el del Arduino Esclavo I²C” que es el que tiene conectado el zumbador (pin digital 5) y que está alimentado directamente a través del pin Vin mediante los +5V que entrega el “Arduino Maestro I²C”. Las masas (GND) de ambos Arduinos deben estar conectadas entre sí.

Diagrama de conexión I²C entre los Arduinos

Para realizar una comunicación I²C unidireccional satisfactoria entre los dos Arduinos, simplemente tenemos que conectar los pines SDA y SCL de los dos Arduinos entre sí, para posteriormente cargar los correspondientes programas. Si todo está correcto el zumbador conectado al “Arduino Esclavo I²C” sonará mientras estemos presionando el pulsador conectado al “Arduino Maestro I²C”. Es un ejemplo muy sencillo al cual vosotros podéis ir añadiendo mayor número de componentes y que se ejecuten muchas más funciones (podéis intentar realizar una comunicación bidireccional I²C entre los dos Arduinos). Para mayor información consultar los comentarios del código del programa.

Lista de Materiales:


·         2 Arduinos UNO Rev.3.

·         Cable USB tipo A-B.

·         Zumbador piezoeléctrico (activo).

·         Pulsador.

·         Resistencia de 10KΩ.

·         Protoboard.

·         Cables de conexión.


Código del programa:

·         Maestro I²C:




·         Esclavo I²C:



Video:

jueves, 10 de marzo de 2016

Comunicación serie entre dos Arduinos


En este POST vamos a conectar dos Arduinos UNO Rev.3 a través de un puerto serie denominado “mySerial” que he creado mediante software, gracias a la librería  , en los pines digitales 10 (Recepción à RX) y 11 (Emisión à TX) de cada uno de los Arduinos. Es necesario realizar dos montajes, el del “Arduino Emisor”, que va a ser el que tiene conectado el pulsador (pin digital 4) y está alimentado a través del puerto USB de nuestro PC, y el del ”Arduino Receptor” que es el que tiene conectado el LED (pin digital 5) y que está alimentado directamente a través del pin Vin mediante los +5V que entrega el “Arduino Emisor”. Las masas (GND) de ambos Arduinos deben estar conectadas entre sí.
Diagrama de conexión serie RX/TX entre los Arduinos

Para realizar una comunicación serie unidireccional satisfactoria entre los dos Arduinos, simplemente tenemos que conectar el pin 11 (TX) del “Arduino Emisor” al pin 10 (RX) del “Arduino Receptor”, para posteriormente cargar los correspondientes programas. Si todo está correcto veremos que el LED conectado al “Arduino Receptor” permanecerá encendido mientras estemos presionamos el pulsador conectado al “Arduino Emisor”. Es un ejemplo muy sencillo al cual vosotros podéis ir añadiendo mayor número de componentes y que se ejecuten muchas más funciones (podéis intentar realizar una comunicación bidireccional entre los dos Arduinos). Para mayor información consultar los comentarios del código del programa.

Lista de Materiales:


·         2 Arduinos UNO Rev.3.

·         Cable USB tipo A-B.

·         Pulsador.

·         LED de 3mm (de cualquier color).

·         Resistencias de 220Ω y 10KΩ.

·         Protoboard.

·         Cables de conexión.


Código del programa:

·         Emisor serie (TX) :




·         Receptor serie (RX) :




Video:

miércoles, 9 de marzo de 2016

Enviando mensajes de texto mediante módulos RF a 433MHz


Para comunicar dos Arduinos de manera inalámbrica disponemos de varios métodos como pueden ser la comunicación Bluetooth, WIFI o radiofrecuencia. En este POST vamos a comunicar dos Arduinos a través de radiofrecuencia a 433MHz, por medio de un kit RF compuesto por un módulo emisor RF y un módulo receptor RF. Este kit de radiofrecuencia nos va a permitir conectar dos Arduinos entre sí y que estos puedan comunicarse de modo que el Arduino Emisor, que es al que conectamos el módulo emisor RF,  leerá mediante comunicación serie los caracteres introducidos por el monitor serie del IDE de Arduino y los enviara inalámbricamente al Arduino Receptor, que es al que conectamos el módulo receptor RF, para que muestre los caracteres recibidos en un display LCD 1602 que tiene conectado a través de comunicación I2C.

Kit de radiofrecuencia RF a 433MHz

Como existen infinidad de kits RF, yo me he decantado por el modelo que no usa el puerto serie,  si no que se utilizan únicamente el pin digital  11 (para el módulo receptor RF)  y el pin digital 12 (para el módulo emisor RF) para realizar la comunicación, y encima tan solo cuesta 2€ con envió incluido. Estos módulos RF trabajan a 433MHz, con modulación ASK (por desplazamiento de amplitud), el emisor puede funcionar con una tensión de entre 3-12V y el receptor funciona a 5V, el alcance máximo de la comunicación sin antenas es de unos 3 metros, llegando a los 5 metros si incorporamos una antena de resorte tanto al emisor como al receptor. Para que estos módulos RF funcionen junto con nuestro Arduino, necesitamos la librería  que está ya incluida dentro de las librerías que tenemos para descargar en uno de los POST iniciales de este mismo BLOG.

Ahora para poner en marcha el sistema cargaremos el programa “Emisor_RF_433.ino” al Arduino Emisor y el programa “Receptor_RF_433.ino” al Arduino Receptor para después alimentar con la batería de 9V al Arduino Receptor y esperar a que le lleguen los mensajes de texto, de un máximo de 32 caracteres, que enviaremos después de introducir los caracteres y pulsar “enter” desde el monitor serie del IDE de Arduino que tenemos instalado en  nuestro PC,  al que está conectado el Arduino Emisor a través del cable USB tipo A-B. Dentro del monitor serie quedarán reflejados todos los mensajes que vayamos enviando para comprobar que la comunicación se realiza correctamente.

Monitor serie


Lista de Materiales:


·         2 Arduinos UNO Rev.3.

·         Cable USB tipo A-B.

·         Módulo LCM 1602 I2C V1.

·         Display 16x2 LCD 1602.

·         Kit de radiofrecuencia RF a 433MHz:
o   Módulo Emisor RF  a 433MHz (FST-FS1000A).
o   Módulo Receptor RF a 433MHz (XD-RF-5V).

·         Batería de 9V.

·         Adaptador de batería con salida a conector Jack macho de 2,1mm.

·         Protoboard.

·         Cables de conexión.



Código del programa:

·         Emisor RF :


·         Receptor RF :



Video:

viernes, 4 de marzo de 2016

Robot Miniskybot 2.0 funcionando como siguelíneas


Hoy os voy a enseñar a construir uno de los proyectos más complejos que he realizado hasta el momento, en cuanto a montaje se refiere, debido a la cantidad de componentes que tenemos que integrar en un mismo proyecto, puesto que en este POST vamos a desarrollar un robot siguelíneas basándonos en el robot Miniskybot 2. Este robot es la segunda generación de la familia de robots imprimibles Miniskybot, siendo financiado y desarrollado dentro del grupo de Robótica y Cibernética de la Universidad Politécnica de Madrid. La estructura completa de este robot la podemos comprar directamente a través de la WEB o si tenemos la suerte de tener a mano una impresora 3D, podemos imprimir nosotros mismos las piezas del robot que nos interesen (que en nuestro caso son dos ruedas y el chasis) para posteriormente montarlas,  a partir de los completos planos y manuales que podemos obtener de manera gratuita en el siguiente enlace de descarga.


Robot Miniskybot 2.0 terminado

Este Robot obtiene su potencia y movimiento directamente de dos servomotores SM-S4306R, de rotación continua, que lleva integrados en su chasis y unidos a sus dos ruedas motrices. Estos servomotores les  vamos a controlar a través de la librería que ya conocemos de POST anteriores, pero con la peculiaridad de que no pueden ser movidos a posiciones concretas como ocurría con los servos de 180°.

Servo de rotación continua modelo SM-S4306R

Para ver cómo se comportan los servos de rotación continua, si aplicamos un pulso PWM de valor igual a 95 mediante programación en el pin de control del servo, este no se desplaza a la posición correspondiente a 95° como lo harían los servos de 180°, sino que se mantendrá girando en un sentido concreto durante todo el tiempo. Para controlar el giro en ambos sentidos y si queremos detener el movimiento de los servos tenemos que aplicar alguno de los siguientes pulsos PWM en su pin de control (cable blanco en este caso): PWM = 0 para que el servo gire en un sentido, PWM = 180 para que el servo gire en el sentido contrario y por último PWM = 90 para que el servo se detenga.

El control del accionamiento de los servomotores del robot se realiza mediante programación, teniendo en cuenta el comportamiento de los dos sensores siguelíneas, el derecho y el  izquierdo, que he acoplado en la parte frontal del robot. Estos sensores están compuestos tanto por un LED infrarrojo emisor como por uno receptor y nos entregan por su pin de salida (OUT) un nivel BAJO (LOW à “0” lógico) cuando apuntamos con los LEDS del sensor hacia superficies de color negro, puesto que el negro es un color que impide que se refleje el haz de luz infrarroja desde el emisor al receptor. En cambio sí apuntamos hacia una zona de otro color, en nuestro caso blanca, se reflejaría la luz infrarroja desde el emisor al receptor y por lo tanto la salida del sensor cambiaría a nivel ALTO (HIGH à “1” lógico).

Detalle de un sensor siguelíneas

Para la programación del robot he tenido en cuenta los cuatro estados siguientes:
  
•          El robot avanza cuando los dos sensores detectan línea.
•          El robot gira a la derecha cuando el sensor izquierdo no detecta línea.
•          El robot gira a la izquierda cuando el sensor derecho no detecta línea.
•          El robot se para cuándo ningún sensor detecta línea.

Combinación de estados posibles en los sensores siguelíneas

Las conexiones tanto de los servomotores como de los sensores siguelíneas  con nuestro Arduino, las vamos a realizar a través de una “Sensor Shield V4.0” que he añadido para simplificar la instalación de los componentes. Este Shield simplemente es uno de los muchos que son compatibles con Arduino UNO y nos ofrece una distribución de las entradas y salidas mucho más cómoda para poder conectar tanto sensores como actuadores de una manera eficaz. Cada terminal del shield consta de 3 pines G (GND), V (VCC) y S (Señal), es decir, tendrá pines independientes de alimentación y masa para cada entrada o salida, lo que nos facilita mucho el montaje de los componentes.
Sensor Shield V4.0
 
El programa simplemente hace que el robot Robot Miniskybot 2.0 siga la línea negra, sin salirse de la trayectoria dibujada en la pista de pruebas que he fabricado  y cuando lo saquemos sobre la superficie blanca, el robot permanecerá parado. La pista de pruebas la he realizado con una cartulina tamaño A2 de color blanco, diseñando un trazado simétrico con la cinta adhesiva de color negro como el que se muestra en la siguiente imagen, aunque vosotros lo podéis trazar con otras formas, pero teniendo en cuenta que el ancho del carril debe siempre superar la anchura de los dos sensores siguelíneas juntos y además si trazamos curvas excesivamente cerradas los dos sensores se pueden salir de la trayectoria marcada al mismo tiempo quedando el robot parado hasta que no lo metamos de nuevo sobre la superficie negra.

Pista de pruebas siguelíneas


Lista de Materiales:


·         Arduino UNO Rev.3.

·         Cable USB tipo A-B.

·         Arduino Sensor Shield V 4.0.

·         2 Servos de rotación continua (SM-S4306R).

·         2 Sensores siguelíneas infrarrojos.

·         Portapilas 6xAAA con conector Jack macho de 2,1mm.

·         6 pilas recargables AAA de 1000mAh con cargador.

·         Robot Miniskybot 2.0:
o   Chasis y dos ruedas impresos en plástico ABS.
o   4 tornillos de  M3x10mm  y 4 tuercas M3.
o   Canica de 16mm de diámetro.
o   2 Juntas tóricas de 50mm de diámetro y 3 mm de grosor.

·         Gomas elásticas para la sujeción de los elementos.

·         Pista de pruebas siguelíneas:
o   Cartulina blanca tamaño A2.
o   Cinta adhesiva de color negro.

·         Protoboard.

·         Cables de conexión.



Código del programa:



Video: