¿Cómo crear una tarjeta con arduino (UNO) para controlar un lavarropas?
La idea es aportar conocimientos para crear una placa capaz de controlar una lavadora a capacitor con Arduino. Ya que sería de gran ayuda para mí y para futuros novatos curiosos como yo.
Ayuda sobre:
• Conexionado de capacitor y cableados en general
• Mejora en el diseño y optimización del sketch (a continuación)
• Tiempo transcurrido.
• Agregar nuevos tipos de lavados. (corto, largo yo hice el normal)
• Agregar botones de: inicio, seleccionar programas, pausa, etc.
PROGRAMA escrito por mi (sepan entender los errores que puede tener ya que hace 2 meses que descubrí todo esto del mundo de la programación :D )
[code:1]
#include <LiquidCrystal_I2C.h>
#include <Wire.h> // Usado por el chip I2C RTC, es el reloj
unsigned long cycleStart; // Se utiliza para hacer el seguimiento de cuánto tiempo ha estado lavando.
LiquidCrystal_I2C lcd(0x27,20,4);
#define Led 13 //pin led de encendido
#define CargarAgua 12 //pin electrovalvula
#define MotorD 11 //pin lavado a la derecha
#define MotorI 10 //pin ladavo a la izquierda
#define Bomba 9 //pin bomba de desagote
#define MotorC 8 //pin centrifugado rapido
#define Puerta 3 // pin puerta
#define NivelA 2 //pin entrada de hidronivel normal
void setup()
{
lcd.init(); // initialize the lcd
lcd.backlight();
pinMode (13,OUTPUT);
pinMode (12,OUTPUT);
pinMode (11,OUTPUT);
pinMode (10,OUTPUT);
pinMode (9,OUTPUT);
pinMode (8,OUTPUT);
pinMode (7,INPUT);
pinMode (6,INPUT);
pinMode (5,INPUT);
pinMode (4,OUTPUT);
pinMode (3,INPUT);
pinMode (2,INPUT);
//INICIALIZO LOS PINES A OFF O LOW
digitalWrite(Led, LOW);
digitalWrite(CargarAgua, LOW);
digitalWrite(MotorD, LOW);
digitalWrite(MotorI, LOW);
digitalWrite(MotorC, LOW);
digitalWrite(Bomba, LOW);
Inicio(); // inicia
lcd.clear(); // carga agua 1 paso 1
lcd.setCursor(3,0);
lcd.print("Cargando Agua");
lcd.setCursor(2,1);
lcd.print("Hasta hidronivel");
lcd.setCursor(3,2);
lcd.print("Paso 01 de 12");
lcd.setCursor(1,3);
lcd.print("TIEMPO REST:1:48:45");
Agua();
lcd.clear(); //lava paso 2
lcd.setCursor(4,0);
lcd.print("Lavando Ropa");
lcd.setCursor(3,1);
lcd.print("DURANTE 15 MIN");
lcd.setCursor(3,2);
lcd.print("Paso 02 de 12");
Lavar1();
Lavar1();
Lavar1();
Lavar1();
Lavar1();
Lavar1();
Lavar1();
Lavar1();
Lavar1();
Lavar1();
Lavar1();
Lavar1();
Lavar1();
Lavar1();
Lavar1();
lcd.clear(); //desagota lavado paso 3 de 9
lcd.setCursor(0,0);
lcd.print("Desagota Agua Lavado");
lcd.setCursor(3,1);
lcd.print("DURANTE 05:40");
lcd.setCursor(3,2);
lcd.print("Paso 03 de 12");
Desagote();
lcd.clear();
lcd.setCursor(0,0); // carga agua enjuague 1 paso 4 de 9
lcd.print("Car.AguaEnjuague 1/3");
lcd.setCursor(3,1);
lcd.print("DURANTE 1 MIN");
lcd.setCursor(3,2);
lcd.print("Paso 04 de 12");
Agua();
lcd.clear();
lcd.setCursor(4,0); //enjuaga 1 5 de 9
lcd.print("Enjuagado 1/3"); // ESTE CICLO DURA 20 SUGUNDOS
lcd.setCursor(3,1);
lcd.print("DURANTE 15 MIN");
lcd.setCursor(3,2);
lcd.print("Paso 05 de 12");
Lavar1();
Lavar1();
Lavar1();
Lavar1();
Lavar1();
Lavar1();
Lavar1();
Lavar1();
Lavar1();
Lavar1();
Lavar1();
Lavar1();
Lavar1();
Lavar1();
Lavar1();
lcd.clear();
lcd.setCursor(0,0); //desagote 1 paso 6 de 9
lcd.print("Desagotando Agua 1/3");
lcd.setCursor(3,1);
lcd.print("DURANTE 2 MIN");
lcd.setCursor(3,2);
lcd.print("Paso 06 de 12");
Desagote();
lcd.clear();
lcd.setCursor(0,0); //agua enj 2 paso 7 de 9
lcd.print("Car.AguaEnjuague 2/3");
lcd.setCursor(3,1);
lcd.print("DURANTE 1 MIN");
lcd.setCursor(3,2);
lcd.print("Paso 07 de 12");
Agua();
lcd.clear();
lcd.setCursor(4,0); //enjuaga 2 paso 8 de 9
lcd.print("Enjuagado 2/3");
lcd.setCursor(3,1);
lcd.print("DURANTE 15 MIN");
lcd.setCursor(3,2);
lcd.print("Paso 08 de 12");
Lavar1();
Lavar1();
Lavar1();
Lavar1();
Lavar1();
Lavar1();
Lavar1();
Lavar1();
Lavar1();
Lavar1();
Lavar1();
Lavar1();
Lavar1();
Lavar1();
Lavar1();
lcd.clear();
lcd.setCursor(0,0); // desagote 2 paso 9 de 9
lcd.print("Desagotando Agua 2/3");
lcd.setCursor(3,1);
lcd.print("DURANTE 2 MIN");
lcd.setCursor(3,2);
lcd.print("Paso 09 de 12");
Desagote();
lcd.clear();
lcd.setCursor(0,0); // agua enj 3 paso 10
lcd.print("Car.AguaEnjuague 3/3");
lcd.setCursor(3,1);
lcd.print("DURANTE 1 MIN");
lcd.setCursor(3,2);
lcd.print("Paso 10 de 12");
Agua();
lcd.clear();
lcd.setCursor(4,0); // enj 3 paso 11
lcd.print("Enjuagado 3/3"); // ESTE CICLO DURA 20 SUGUNDOS
lcd.setCursor(3,1);
lcd.print("DURANTE 15 MIN");
lcd.setCursor(3,2);
lcd.print("Paso 11 de 12");
Lavar1();
Lavar1();
Lavar1();
Lavar1();
Lavar1();
Lavar1();
Lavar1();
Lavar1();
Lavar1();
Lavar1();
Lavar1();
Lavar1();
Lavar1();
Lavar1();
Lavar1();
lcd.clear();
lcd.setCursor(0,0); // desagota 3 paso 11
lcd.print("Desagotando Agua 3/3");
lcd.setCursor(3,1);
lcd.print("DURANTE 2 MIN");
lcd.setCursor(3,2);
lcd.print("Paso 12 de 12");
Desagote();
} // fin de prog
void Inicio() //inicio de funciones
{
digitalWrite(Led,HIGH);
lcd.setCursor(1,0);
lcd.print("PROGRAMA DE LAVADO");
lcd.setCursor(1,1);
lcd.print("By: Matias Guerra");
lcd.setCursor(1,2);
lcd.print("Version Prueba 2.0");
delay(2000);
lcd.setCursor(0,3);
lcd.print("Duracion: 1:53");
delay(2000);
}
void Agua()
{
/* digitalWrite(CargarAgua,HIGH);
// tiempo regulado segun control de carga de agua 4MIN 15 SEG
digitalWrite(CargarAgua,LOW);*/
//nuevo cargar agua
while (digitalRead(NivelA) == LOW){
digitalWrite(CargarAgua,HIGH);
}
digitalWrite(CargarAgua,LOW);
delay(200);
}
void Lavar1 ()
{
int TiempoLav(2000);
int TiempoPausa(2000);
lcd.setCursor(0,3);
lcd.print("Girando a la DEREC");
digitalWrite(MotorD,HIGH); // tiempo regulado segun control con cronometro externo = ciclo de 1 min
delay(TiempoLav);
digitalWrite(MotorD,LOW);
delay(TiempoPausa);
lcd.setCursor(0,3);
lcd.print("Girando a la IZQ");
digitalWrite(MotorD,HIGH); // tiempo regulado segun control con cronometro externo = ciclo de 1 min
delay(TiempoLav);
digitalWrite(MotorD,LOW);
delay(TiempoPausa);
}
void Desagote()
{
digitalWrite(Bomba,HIGH); // desagota solo durante 2 min 50 SEG
delay(170000);
lcd.setCursor(3,3);
lcd.print("Centrifugando");
digitalWrite(MotorC,HIGH); // desagota con bomba 2 min 50 seg TOTAL 5:40
delay(170000);
digitalWrite(Bomba,LOW);
digitalWrite(MotorC,LOW);
}
void Fin(){
lcd.clear();
lcd.setCursor(2,0);
lcd.print("LAVADO DE PRUEBA");
lcd.setCursor(5,1);
lcd.print("EXITOSO !!!");
lcd.setCursor(0,2);
lcd.print("DEJAR PUERTA ABIERTA");
lcd.setCursor(0,3);
lcd.print("PARA PAGA APAGAR SIS ");
}
void loop()
{
//fin
digitalWrite(Led,LOW);
delay(1000);
digitalWrite(Led,HIGH);
delay(250);
Fin();
}
[/code:1]
1. ADJUNTO IMAGEN EL LA QUE MUESTRO COMO TENGO PENSADO CREAR EL MANEJO DE ALTAS POTENCIAS 220V CON 5V.
2. OTRA IMAGEN DE POSIBLE CONECCIONADO DE CAPACITOR. (ME SERVIRA ESE ESQUEMA?)
3. A DURAS PENAS ESTE PROGRAMA FUNCIONA, Y EN ESTE PUNTO EL PROBLEMA MAS IMPORTANTE ES COMO HACER CONECCIONADO PARA HACER GIRAR A DERECHA E IZQUIERDA ADEMAS DEL CENTRIFUGADO.
GRACIASSSS TOTALESSS!!
LOS SALUDA MATIAS DESDE SAN JUAN ARGENTINA.!