/* 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
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");
}