Ahora mismo es un momento muy oportuno para presentaros el módulo relé de 5VDC. Es el complemento ideal para Arduino en tareas que se requieran mayor voltaje de alimentación en corriente continua y en alterna. Como ejemplos desarrollados en este blog tenemos el control de un ventilador de 12VDC, como es el caso de este POST. También hemos visto el encendido de una bombilla a 220VAC, como ya vimos en un POST posterior, aunque no descarto utilizar el relé en alguna ocasión más.
Como ya deberíamos saber, Arduino solamente es capaz de suministrar 5VDC y unos pocos miliamperios (30-40 mA) a través de sus salidas digitales, lo que nos es suficiente para controlar el encendido de un pequeño diodo LED o un zumbador piezoeléctrico como hemos ido viendo en POST anteriores. Aquí es cuando nos surge el problema, por ejemplo, si queremos controlar un motor de 220VAC mediante Arduino, como puede ser el que incorpora una batidora o un secador de pelo (alrededor de 1000W de potencia).
Para ello necesitamos utilizar un relé de 5VDC que Arduino pueda controlar con sus salidas digitales como si de un interruptor se tratase, para manejar en la salida conmutada (normalmente abierta o cerrada) una tensión de 220VAC y 5A que pueda hacer moverse al motor y teniendo en cuenta que la alimentación del circuito de potencia (salida conmutada del relé) no proviene del Arduino, puesto que no podría, sino de una fuente externa como puede ser la que un enchufe de la red eléctrica de una vivienda nos suministra (mucho cuidado a la hora de trabajar con tensiones y corrientes elevadas).
Según la RAE (Real Academia Española) , un relé es un dispositivo electromagnético que, estimulado por una corriente eléctrica muy débil, abre o cierra un circuito en el cual se disipa una potencia mayor que en el circuito estimulador, es decir, que con poca corriente en su entrada, es capaz de conmutar una gran corriente en su salida.
El modelo SRD-05VDC-SL-C que nosotros vamos a utilizar se controla a 5VDC, es decir, cuando le llega una señal a NIVEL ALTO proveniente del Arduino, a su entrada de control, este conmuta sus salidas (NC y NA), pudiendo controlar una corriente máxima de 10A con tensiones de 250VAC o de 30VDC. En nuestro caso se alimentará el ventilador con una fuente de tensión de 12VDC cuando el relé conmute.
Con el siguiente programa seremos capaces de encender y apagar un ventilador de 12VDC a través de un relé de 5VDC, cada vez que presionemos un pulsador. A través del monitor serie podremos comprobar el estado tanto del RELÉ como del ventilador en cada momento. Es conveniente echar un pequeño vistazo al programa y a sus comentarios para poder comprender plenamente el funcionamiento del sistema.
Lista de Materiales
- Arduino UNO Rev.3
- Cable USB tipo A-B
- Módulo relé de 5VDC (SRD-05VDC-SL-C)
- Ventilador de 12VDC 0.15A (C5010B12M)
- Fuente de tensión de 12VDC
- Pulsador
- Resistencia de 10KΩ
- Protoboard
- Cables de conexión
Código del programa
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 |
/* TITULO: Como activar un ventilador de 12V a través de un relé de 5V. AUTOR: MARIANO DEL CAMPO GARCÍA (@2016) --> INGENIERO TÉCNICO INDUSTRIAL ESPECIALIDAD ELECTRÓNICA - FACEBOOK: https://www.facebook.com/mariano.delcampogarcia - TWITTER: https://twitter.com/MarianoCampoGa - CORREO: [email protected] DESCRIPCIÓN DEL PROGRAMA Con este programa controlamos el encendido y apagado de un ventilador de 12VDC, mediante un solo pulsador y un RELÉ de 5VDC, alimentando su salida NA con una fuente de tensión de 12VDC. ESQUEMA DE CONEXION +-----+ +----[PWR]-------------------| USB |--+ | +-----+ | | GND/RST2 [ ][ ] | | MOSI2/SCK2 [ ][ ] A5/SCL[ ] | | 5V/MISO2 [ ][ ] A4/SDA[ ] | | AREF[ ] | | GND[ ] | | [ ]N/C SCK/13[ ] | | [ ]IOREF MISO/12[ ] | | [ ]RST MOSI/11[ ]~| | [ ]3V3 +---+ 10[ ]~| | [ ]5v -| A |- 9[ ]~| Pin(S) del Relé | [ ]GND -| R |- 8[ ] | PA | [ ]GND -| D |- | | [ ]Vin -| U |- 7[ ] | | -| I |- 6[ ]~| | [ ]A0 -| N |- 5[ ]~| | [ ]A1 -| O |- 4[ ] | | [ ]A2 +---+ INT1/3[ ]~| | [ ]A3 INT0/2[ ] | | [ ]A4/SDA RST SCK MISO TX>1[ ] | | [ ]A5/SCL [ ] [ ] [ ] RX<0[ ] | | [ ] [ ] [ ] | | UNO_R3 GND MOSI 5V ____________/ \_______________________/ NOTAS: - Conexión de la parte de control (entrada) del Relé: - Pin(+) --> +5V. - Pin(-) --> GND. - Conexión de la parte de potencia (salida) del Relé: - COM del Relé --> Negativo de la fuente de tensión de 12VDC. - NA del Relé --> Cable negro(-) del ventilador de 12VDC. - Cable rojo(+) del ventilador de 12VDC --> Positivo de la fuente de tensión de 12VDC. - Los pulsadores suelen tener dos pines, que vamos a denominar PA y PB (si es de 4 sólo usamos 2 de ellos) - Conexión PULL-DOWN del pulsador. - PB conectado a VCC. - PA conectado a GND a través de una R=10K omhs. */ int Pulsador = 8; // Pin digital 8 para el pulsador int RELE = 9; // Pin digital 9 para la señal de entrada del Relé // Variables internas para el pulsador con enclavamiento int encender = 0; int anterior = 0; int estado = 0; void setup() { pinMode(Pulsador, INPUT); // Pin digital 8 como entrada pinMode(RELE, OUTPUT); // Pin digital 9 como salida Serial.begin(9600); // Comienzo de la comunicación serie } void loop() { estado = digitalRead(Pulsador); // Comprobamos el estado actual del pulsador // Si el pulsador está presionado y su estado anterior es desactivado if(estado && anterior == 0) { encender = 1 - encender; delay(30); // Evita los rebotes del pulsador } anterior = estado; // Se actualiza el estado anterior del pulsador // Si es la primera vez que presionamos el pulsador se activa el RELÉ y el ventilador if(encender) { digitalWrite(RELE, HIGH); Serial.println("VENTILADOR ACTIVADO!!!"); Serial.print("RELE = "); Serial.print(digitalRead(RELE)); Serial.print("\n"); } // Si es la segunda vez que presionamos el pulsador se desactiva el RELÉ y el ventilador // y se repite el proceso anterior. else { digitalWrite(RELE, LOW); Serial.println("VENTILADOR DESACTIVADO!!!"); Serial.print("RELE = "); Serial.print(digitalRead(RELE)); Serial.print("\n"); } Serial.print("\n"); } |