Anda di halaman 1dari 7

3 Ms Siguiente blog Crear un blog Acceder

Electroduende

viernes, 13 de marzo de 2015 Datos personales

EElleeccttrroodduueennddee MMiill

Programador electrnico para lavadora con 6


Seguir

Ver todo mi perfil


Arduino
Archivo del blog
Esta historia podra comenzar as: Erase una vez una lavadora con cuatro

2016 (2)
aos de antigedad a la que se le estrope el programador digital.

2015 (2)
Es una lavadora de la marca Haier, de la gama barata, el motor es
marzo (2)
universal y absolutamente todo se controlaba a travs del programador Fabricacin de
digital de la lavadora. Estuve barajando la compra del programador, pero una estacin
de soldadura
no mereca realizar el gasto de 150 euros, cuando por 50 euros ms poda electrni...
adquirir otra, pero la consigna del reciclaje y no sucumbir a la
Programador
obsolescencia programada, me animaron a realizar un programador para electrnico
lavadora con Arduino. para lavadora
con Arduino
Comenzamos:
Primero desmont completamente la lavadora, dejando unicamente el chasis
de acero, con la finalidad de lijarlo y sanar las zonas con corrosin, Foro Arduino
los cables los etiquet antes de comenzar a desmontar. Proyecto Souliss
Txapuzas proyectos
interesantes
Yoreparo

Suscribirse a ElectroDuende

Entradas

Comentarios

Etiquetando los cables

Aqu con el chasis de la lavadora, pintando y reparando la corrosin.

Aqu la electrocerradura, normalmente te la vas a


encontrar igual o muy parecida, dispone de un
conector con tres conexiones, un cable de fase o
linea, un cable neutro y el de salida de
alimentacin a la mquina, ste cable normalmente
de alimentacin a la mquina ser compartido entre
el comn de las electrovlvulas, bomba de desage e
interruptor trmico de seguridad del motor. Cuando
se cierra la puerta y se le introduce carga entre
el L y N, la corriente atraviese una aleacin de
metal que ofrece una resistencia especfica y se
calienta, al calentarse se dobla y mueve unos
pequeos contactos, que cierran el circuito del
interruptor, si tienes avera con la
electrocerradura, bien puedes hacer un puente entre
L e interruptor, o bien lo desmontas y lijas los
contactos desgastados.

ste es el
programador
averiado de
la lavadora,
fotos de la
cara
anterior y posterior. Del circuito
desold los componentes que creo
reciclar. Una vez extrados los
componentes dej limpia la placa y lijada, con el fin de construir sobre
la misma placa el nuevo programador.

Aqu la
construccin
del
programador
con un LCD
de 4 x 20
para visualizar el desarrollo, es
ms resultn para la realizacin del
proyecto introducir una pantalla de
este tipo que una multitud de led y su correspondiente cableado, que al
fin y al cabo no ofrecer tanta informacin como la pantalla.
Al final, no caban todos los componentes en la placa antigua, por lo
que el frontal de la lavadora, unicamente dispone de los botones y
pantalla lcd.

Para el proyecto necesit una placa Arduino UNO, he utilizado una placa
compatible de las baratas, eso si,
me ha dado algunos dolores de
cabeza, algunos pines en esta placa
estn cambiados el HIGH con el LOW,
por lo tanto mi consejo es que si
puedes, te compres una original.

Para quien no conozca arduino,


decirle que es un proyecto GNU/GPL,
por lo tanto es una placa barata en
comparacin con otras del mercado,
adems puedes fabricarte el tuyo propio, ya que todas las fuentes,
datasheet, etc estn publicados.
Arduino controla puertas analgicas,
y digitales, en valores de 0 a 5v,
la propia placa de arduino, adems
de contener "su propio corazn" un
circuito integrado de ATMega,
dispone de un regulador de tensin,
una entrada usb que sirve de
alimentacin y un ic que "traduce"
lo que enva el ordenador al ATMega,
tambin dispone de una entrada de
alimentacin regulada por lo que podrs alimentar tu arduino desde 3
voltios hasta los 15, aunque lo recomendable es 5, as evitas hacer
trabajar al regulador y la correspondiente disipacin de calor que
generar.
Aqu os dejo la pgina oficial de Arduino http://www.arduino.cc/

Aqu la pgina del software para programar el Arduino, el lenguaje de


programacin ms ampliamente utilizado es el Lenguaje C o C++, un
lenguaje asequible al aprendizaje. Desde aqu quiero agradecer que
muchos de los conocimientos que tengo de este lenguaje son gracias a los
magnficos profesores que tuve en el Grado Superior de Informtica de
Desarrollo de Aplicaciones Informticas del Instituto Cristobal Monroy
de Alcal de Guadara, provincia de Sevilla, Andaluca.
http://arduino.cc/en/Main/Software

Arduino puede controlar o


interactuar a travs de sus pines (y
sus 5v), con una amplia gama de
sensores y dispositivos. Por ejemplo
unos rels alimentados con 5v, con
la finalidad de controlar las
electrovlvulas, bomba de desage,
electrocerradura y resistencia que
calienta el agua de lavado.
Es ms cmodo y barato comprar estos
mdulos que fabricarlos uno mismo,
cada entrada dispone un
optoacoplador que asla totalmente
la tensin de 220v de carga de los
rels con la circuitera de 5v de Arduino.
Tenemos que seguir controlando el resto de
la lavadora, por ejemplo el motor,
normalmente te vas a encontrar este tipo de
motor en la mayora de las lavadoras, es un
motor universal o motor de escobillas de
entre 200 a 400 watios aproximadamente.
Tambin existen lavadoras con motores Direct
Drive y las ms antiguas con un motor de
induccin.
En este caso solo hablaremos del motor
universal, para controlar la velocidad del Durante el proceso de fabricacin
motor me dispongo a realizar un dimmer que
soporte dicha carga, y para que funcione durante el lavado el giro
intermitente entre el sentido de las agujas de reloj y al contrario,
utilizar un rel.
Aqu tenis el proceso de fabricacin de la placa, en
la red encontrars mucha informacin de como
fabricarte tu propia placa, si bien te resumo
brevemente como lo hice, impresin en papel blanco
normal con impresora de toner del circuito, se coloca
contra la placa de cobre, con una plancha caliente
transfieres el toner al cobre, dejas unos minutos el
circuito con le papel en remojo con agua para que se
ablande y desprenda, vas retirando el papel con
cuidado y un cepillo de dientes hasta eliminar el
Disolviendo el cobre
papel, en una cubeta mezclar agua oxigenada y agua
fuerte (cido clohdrico) al 50%, introduces la placa
y mueves lentamente la cubeta hasta que desaparezca el cobre visible,
sacas la placa y la dejas en agua, secas y retiras el toner con una lija
muy fina, y voil!!! ya tienes tu circuito.

OOJJOO,, nnoo mmee hhaaggoo rreessppoonnssaabbllee ddee llooss ddaaooss qquuee ppuueeddaass
ooccaassiioonnaarr dduurraannttee eell mmaanneejjoo ddee pprroodduuccttooss,, ssii lloo hhaacceess eess
bbaajjoo ttuu rreessppoonnssaabbiilliiddaadd..

TTaammppooccoo mmee hhaaggoo rreessppoonnssaabbllee ddee llaass aavveerraass qquuee ppuuddiieerraass


ooccaassiioonnaarr aa ttuu llaavvaaddoorraa dduurraannttee ccuuaallqquuiieerr pprroocceessoo qquuee
ppuueeddaass lllleevvaarr aa ccaabboo ssoobbrree eellllaa,, ssii nnoo ssaabbeess lloo qquuee hhaacceess,,
nnoo lloo hhaaggaass,, aaddeemmss eexxiissttee rriieessggoo ddee eelleeccttrrooccuucciinn ssii nnoo
ttiieenneess llaass pprreeccaauucciioonneess nneecceessaarriiaass..
Placa finalizada

Una vez terminada la placa, nos disponemos a taladrar los


puntos por donde soldaremos los componentes electrnicos.

Aqu la adquisicin de los componentes electrnicos y


dispuesto al montaje del dimmer.
La idea sobre el Dimmer la tom de Txapuzas electrnicas,
me gust la idea de tener un dimmer con optoacopladores
(aisladores) y un Triac de gran amperaje que soportara la
carga del motor.

Bien, pues despus del montaje y prueba sobre el motor


sobre una bancada, iba de lujo, el problema (que ya me
imaginaba) es el torque del motor, que se reduce
drasticamente y aunque controlas la velocidad pierdes
practicamente el 95% de la potencia, con el fin de mejorarlo hice la
siguiente prueba, alimentar el motor con DC en vez de AC, para ello puse
un puente diodo e incluso con un condensador para mejorar el arranque, y
realmente mejor en aproximadamente un 30%, no obstante, no es
suficiente, me vi resignado a buscar otra alternativa.

Aqu una fotografa con el diagrama


de conexiones del motor universal,
ste en concreto dispone de tres
conexiones al estator (bobinado
fijo), dos a las escobillas (roto),
dos del interruptor trmico de
seguridad y dos del tacmetro (este
dispositivo est colocado al final
del eje, y es un pequeo alternador que ofrece de 0 a 30 voltios
dependiendo de las RPM.

En este pequeo diagrama puedes observar como se


conecta un motor universal.

Definitivamente y por la falta de


espacio, decid colocar una caja en
el lateral de la lavadora para
albergar los componentes del
programador.

Para la alimentacin de Arduino he


utilizado un cargador de los nokia
antiguos, pero cuando tuve que
utilizar dos placas de rels, no
dispona de suficientes amperaje, y
tuve que meter otro cargador nokia,
los puedes observar (sin la carcasa)
en el lateral izquierdo de la
fotografa.
En la parte central superior dos
modulos de 4 reles, debajo el dimmer (que no sirvi), en el inferior
derecho la placa Arduino Uno compatible, y arriba una pequea placa que
tiene las resistencias Pull-Down y conexiones al sensor de tempratura,
hidronivel, alimentaciones 5v y GNDs, tambin un buzzer para reproducir
una musiquilla cuando la lavadora ha terminado la colada.

Ahora seguiremos con el control de motor:


Googleando encontr un IC, el TDA1085C, de Motorola, que especialmente
est diseado para
controlar este tipo de motores. Informacin referente este componente:
Aqu el Datasheet
Un diagrama para fabricar la
pcb.
Lista de componentes para la pcb
Cara inferior de la pcb, al
imprimirlo debe tener un tamao
de 100 mm x 50 mm
Cara superior de distribucin de
componentes
Las resistencias de 0,1 y 5w
normalmente se emplean como
fusibles, una idea por si te resulta
difcil adquirirla.

Tambin he encontrado que algunas personas se lo han fabricado en una


placa perforada, aqu tenis las fotos del montaje y de las conexiones:

Ahora mismo me encuentro en la fabricacin del regulador y a la espera


de que lleguen algunos componentes .
La idea es sustituir el potenciometro lineal por un potenciometro
digital para controlarlo a travs del arduino.
Seguir actualizando la informacin de este post.
Aqu el cdigo en el que estoy trabajando:

// Cdigo C para Arduino, PROGRAMA UNIVERSAL DE LAVADORA


// Licencia Creative Commons
// Este cdigo se ejecuta a travs de mi lavadora, y pretende controlar los siguientes instrucciones:
// Control de electrovalvula de prelavado/suavizante
// Control de electrovalvula de lavado
// Supervisa el sensor de temperatura del agua termistor NTC, y por lo tanto control de su temperatura.
// Controlar la velocidad (rpm) del motor universal (de escobillas) con un PWM, y siete posibles velocidades
// Control de inversin de giro en lavado lento de ropa
// Control de velocidad a travs de tacometro de lavadora?
// Control de la bomba de vaciado
// Control del hidronivel
// Control de resistencia calentadora de agua
// Control de una pantalla de cristal liquido de 4 filas por 20 columnas, con control I2C
// Control de botonera: selector de temperatura, selector centrifugado(lento,rpido),selector tipo de ropa(tiempo de lavado)
// Futuras mejoras ====> inclusin de reloj para programar la hora de lavado (mejora de gasto energtico)
// Esta es la revisin de cdigo 1.0

#include <math.h> // Se necesita para el sensor de temperatura de termistor NTC logartmica


#include <LiquidCrystal_I2C.h>
#include "pitches.h"

#include <Wire.h> // Usado por el chip I2C RTC, es el reloj


#include "Chronodot.h" // Se utiliza para traer y decodificar los datos de RTC

Chronodot RTC; // Creando el objeto RTC


LiquidCrystal_I2C lcd(0x27,21,22);
uunnssiiggnneedd lloonngg cycleStart; // Se utiliza para hacer el seguimiento de cunto tiempo ha estado lavando.
// notas meloda:
iinntt melody[] = {
NOTE_C3, NOTE_C3, NOTE_C3, NOTE_GS2, NOTE_DS3, NOTE_C3, NOTE_GS2, NOTE_DS3, NOTE_C3, NOTE_G4, NOTE_G4, NOTE_G4, NOTE_GS4, NOTE_DS4, NOTE_C4, NOTE_GS2
// notas duracin: 4 = quarter note, 8 = eighth note, etc.:
iinntt noteDurations[] = {
4,4,4,4,8,4,4,8,4,4,4,4,4,8,4,4,8,4};

//Designando pines
#define OFF HIGH //no encuentro explicacin porque me funcionan al contrario (@####@@#@#@#aaaaaarrrrrrgggggggg)
#define ON LOW
#define PinSinUtilizar0 0 //PIN SIN UTILIZAR
#define MotorVelocidad1 1 //pin lavado lento
#define MotorVelocidad2 2 //pin centrifugado lento
#define MotorVelocidad3 3 //pin centrifugado rapido
// BOTONES
#define BotonTemperatura 4 //pin boton de temperatura
#define BotonCentrifugado 5 // pin boton de seleccin velocidad centrifugado
#define BotonInicio 6 //pin boton de inicio
//#define PinBuzzer 7 //BUZZER MUSICA FINAL
#define CalentadorAgua 8 // pin enciende resistencia
#define VaciadoPin 9 //pin bomba desague
#define AguaIn1 11 //pin electrovalcula prelavado o suavizante
#define AguaIn2 10 //pin electrovalcula lavado o jabn
#define Hidronivel 12 // pin hidronivel
//#define PinPuerta 13 //PIN PUERTA
// Analgicos
#define tempSensor A4 //pin thermistor
//#define botonGO A1
//#define botonStop A2
//#define PinSinUtilizarA3 A3 //PIN SIN UTILIZAR
//#define PinSinUtilizarA4 A4 //PIN SIN UTILIZAR
//#define PinPuerta A5 //PIN PUERTA

vvooiidd setup () {
Wire.begin(); // Usado por el RTC
RTC.begin(); // Igualmente
lcd.begin(20,4); // 20x4 LCD Panel

//declarando posicin de las entradas de los pines


pinMode(Hidronivel, INPUT);
pinMode(tempSensor, INPUT);
pinMode(AguaIn1, OUTPUT);
pinMode(AguaIn2, OUTPUT);
pinMode(VaciadoPin, OUTPUT);
pinMode(CalentadorAgua, OUTPUT);
pinMode(MotorVelocidad1, OUTPUT);
pinMode(MotorVelocidad2, OUTPUT);
pinMode(MotorVelocidad3, OUTPUT);
//pinMode(MotorReverse, OUTPUT);
// pinMode(PinPuerta, OUTPUT);
//pinMode(botonGO, INPUT);
//digitalWrite(botonGO, ON); // activar resistencia de actuacin interna para este pin de entrada
//pinMode(botonStop, INPUT);

//INICIALIZO LOS PINES A OFF O LOW


digitalWrite(AguaIn1, OFF);
digitalWrite(AguaIn2, OFF);
digitalWrite(VaciadoPin, OFF);
digitalWrite(CalentadorAgua, OFF);
digitalWrite(MotorVelocidad1, LOW);
digitalWrite(MotorVelocidad2, LOW);
digitalWrite(MotorVelocidad3, LOW);
//digitalWrite(MotorReverse, OFF);
//===========================esto estaba en el loop===============================================//
lcd.backlight();
lcd.setCursor(0,0);
lcd.print(F("Iniciando..."));
//digitalWrite(PinPuerta, ON); //cierra la puerta
//delay (3000);
// Ir botn fue presionado, ejecute a travs de los ciclos
//OJO CONTROLAR CUANDO PASA DE UNA FUNCIN A OTRA
cycleStart = millis();
//VaciandoLavadora(15000,0);//un poco de vaciado antes de comenzar 15 sec
delay(100);
//llenarAgua(120000,1);//CUBETA PRELAVADO: valvula prelavado/suavizante 1, valvula jabon 2
delay(100);
MotorLavado(600000, 4, 40);//PRELAVADO 10 MINUTOS(600000) parametro1= tiempo de lavado, parametro2= pantalla "Lavando/Prelavado", parametro3= temperatura
delay(100);
VaciandoLavadora(120000,2);
delay(100);
//llenarAgua(120000,2);//JABN: valvula prelavado/suavizante 1, valvula jabon 2
delay(100);
//MotorLavado(1200000, 3, 10);//LAVADO parametro1= tiempo de lavado, parametro2= pantalla "Lavando", parametro3= temperatura
delay(100);
//VaciandoLavadora(120000,2);//VACIA PARA COGER SUAVIZANTE
delay(100);
//llenarAgua(120000,1);//SUAVIZANTE: valvula prelavado/suavizante 1, valvula jabon 2
delay(100);
//MotorLavado(300000,5,0);//SUAVIZANTE parametro1= tiempo, parametro2= pantalla "Suavizante", parametro3= temperatura
delay(100);
//VaciandoLavadora(120000,2);
delay(1000);
//CentrifugadoSuave(120000);//SUAVE parametro1 = tiempo 1,5 minutos = 90000 ms
//CentrifugadoFuerte(60000);//FUERTE parametro1 = tiempo
delay(1000);
lcd.clear();
lcd.setCursor(0,3);
lcd.print(F("Lavado finalizado"));
//digitalWrite(PinPuerta, LOW);
delay(10000);
musica();
musica();
lcd.clear();
//lcd.noBacklight();

//===========================fin esto estaba en el loop===============================================//


}
//==================================================================================================
//==================================COMIENZO FUNCIONES DEPURADAS======================================
//==================================================================================================
ddoouubbllee Termistor(iinntt RawADC) {
ccoonnsstt ffllooaatt resistor = 9800; //El valor en ohmnios de la resistencia del termistor a 25C
ccoonnsstt ffllooaatt voltage = 4.76; // El voltaje real en el punto 5Vcc de tu placa Arduino
//Para ahorrar clculos lo definimos como constante en esta parte del programa
ccoonnsstt ffllooaatt K= 273.15; //Para pasar a grados Kelvin
ccoonnsstt ffllooaatt e = 2.718281828459045; //Constante matemtica
ccoonnsstt ffllooaatt B = 3760; //Valor Beta de tu termistor, lo consegui en esta pagina, sino tendras que calcularlo http://www.amwei.com/views.asp?hw_id=61
ccoonnsstt ffllooaatt unodivr = 1/(resistor * pow(e,(-B/298.15))); //Con pow elevamos e al resultado
ffllooaatt T = 0; //Declaramos la variable Temperatura
ffllooaatt tmedia; //Variable para calcular media
iinntt cnt; //temperatura media y contador
iinntt grados, decimas; //Para ponerle coma al resultado (en espaol)
iinntt sensorPin = A4; // Selecciona la entrada para el termistor
iinntt sensorValue = 0; // Aqu almacenamos el valor del sensor
// Parte 1: Leemos el puerto analgico 0 y convertimos el valor en voltios.
sensorValue = analogRead(sensorPin); //Leemos analgico 0
ffllooaatt v2 = (voltage*ffllooaatt(sensorValue))/1024.0f;
// Parte 2: Calcular la resistencia con el valor de los voltios mediante la ecuacin del divisor de voltaje
//voltage = 4.83
//R2 = 10000
//R1 = Thermistor resistance
//V2= v2
//so V2=(R2*V)/(R1+R2)
//and r1=((r2*v)/v2)-r2 <--final
ffllooaatt r1a = (voltage*ffllooaatt(resistor))/v2;
ffllooaatt r1 =r1a - resistor;
//Parte 3: Calcular la temperatura basandose en la ecuacin Steinhart-Hart y la ecuacin del valor Beta.
// T=B/ln(r1/rinfinit)
T = B/log(r1*unodivr);
T=T-273.15; //Convertimos de Kelvin a C y ya tenemos la temperatura
// ahora obtenemos la parte entera
grados=(iinntt)T;
grados=(grados-24);//chapuza mia
rreettuurrnn grados;
}
vvooiidd llenarAgua(uunnssiiggnneedd lloonngg tiempo,iinntt valvula) { //DOBLE SISTEMA DE SEGURIDAD, POR TIEMPO Y POR HIDRONIVEL
lcd.begin(20,4);
lcd.clear();
muestraPantalla(1);
uunnssiiggnneedd lloonngg tiempollenado = millis();
iinntt hidronivelestado = 0;
hidronivelestado = digitalRead(Hidronivel); //lectura del pin hidronivel
//while (((millis() - tiempollenado) < tiempo) && (hidronivelestado == 0)) {
wwhhiillee (((millis() - tiempollenado) < tiempo)) {
//while (hidronivelestado == HIGH) {
iiff(valvula == 1){digitalWrite(AguaIn1, ON);}eellssee{digitalWrite(AguaIn2, ON);}
hidronivelestado = digitalRead(Hidronivel);
}
digitalWrite(AguaIn1, OFF);
digitalWrite(AguaIn2, OFF);
delay(100);
lcd.begin(20,4);
lcd.clear();
}
vvooiidd VaciandoLavadora(uunnssiiggnneedd lloonngg tiempo,iinntt pantalla) {//argumento1=tiempo, argumento2=1(iniciando) 2(vaciando)
uunnssiiggnneedd lloonngg vaciadoTiempo = millis();
muestraPantalla(pantalla);
wwhhiillee ((millis() - vaciadoTiempo) < tiempo) {
digitalWrite(VaciadoPin, ON);
delay(100);
}
digitalWrite(VaciadoPin, OFF);
delay(100);
lcd.begin(20,4);
lcd.clear();
}
vvooiidd MotorLavado(uunnssiiggnneedd lloonngg tiempo, iinntt pantalla, iinntt temperatura) { //argumento1=tiempo, argumento2=indicacin pantalla, argument3=temperatura
lcd.begin(20,4); // La pantalla aparece cuando el motor entra en accin
muestraPantalla(pantalla);
uunnssiiggnneedd lloonngg tmpmotorgiro = millis();
//temperatura variables y lecturas
iinntt val;//Crea una variable entera
iinntt temp;//Variable de temperatura = temp
val=analogRead(A4);//Lee el valor del pin analogo 2 y lo mantiene como val
temp=Termistor(val);//Realiza la conversin del valor analogo a grados Celsius
wwhhiillee (temp < temperatura) {//mientras no alcance la temperatura esta activado la resistencia calentadora de agua
digitalWrite(CalentadorAgua, ON);
delay(100);
temp=Termistor(val);//devuelve la temperatura
}
digitalWrite(CalentadorAgua, OFF);
//fin temperatura variables y lecturas
wwhhiillee ((millis() - tmpmotorgiro) < tiempo) { //mientras lavado, gira en motor en ambos sentidos
muestraPantalla(pantalla);
wwhhiillee (temp < temperatura) {//mientras no alcance la temperatura esta activado la resistencia calentadora de agua
digitalWrite(CalentadorAgua, ON);
delay(100);
temp=Termistor(val);//devuelve la temperatura
}
digitalWrite(CalentadorAgua, OFF);
//fin temperatura variables y lecturas
//GIRA A DERECHA
digitalWrite(MotorVelocidad1, HIGH);
delay(3000);
digitalWrite(MotorVelocidad1, LOW);
delay(6000);

}
digitalWrite(CalentadorAgua, OFF);
delay(100);
digitalWrite(MotorVelocidad1, LOW);
delay(100);
lcd.begin(20,4);
lcd.clear();
}
vvooiidd CentrifugadoSuave(uunnssiiggnneedd lloonngg tiempo) {
lcd.begin(20,4); // La pantalla aparece cuando el motor entra en accin
digitalWrite(VaciadoPin, ON);
uunnssiiggnneedd lloonngg tmpmotorgiro = millis();
wwhhiillee ((millis() - tmpmotorgiro) < tiempo) { //mientras lavado, gira en motor en ambos sentidos
//digitalWrite(MotorVelocidad1, HIGH);
//digitalWrite(MotorVelocidad2, HIGH);
digitalWrite(MotorVelocidad3, HIGH); //solo el 3 500 rpm
delay(100);
muestraPantalla(6);
}
digitalWrite(MotorVelocidad1, LOW);
digitalWrite(MotorVelocidad2, LOW);
digitalWrite(MotorVelocidad3, LOW);
delay(10000);
digitalWrite(VaciadoPin, OFF);
lcd.begin(20,4);
lcd.clear();
}
vvooiidd CentrifugadoFuerte(uunnssiiggnneedd lloonngg tiempo) {
lcd.begin(20,4); // La pantalla aparece cuando el motor entra en accin
uunnssiiggnneedd lloonngg tmpmotorgiro = millis();
wwhhiillee ((millis() - tmpmotorgiro) < tiempo) { //mientras lavado, gira en motor en ambos sentidos
// 1500 rpm
digitalWrite(MotorVelocidad1, HIGH);
digitalWrite(MotorVelocidad2, HIGH);
digitalWrite(MotorVelocidad3, HIGH);
digitalWrite(VaciadoPin, ON);
delay(100);
muestraPantalla(7);
}
delay(10000);
digitalWrite(VaciadoPin, OFF);
delay(100);
digitalWrite(MotorVelocidad1, LOW);
digitalWrite(MotorVelocidad2, LOW);
digitalWrite(MotorVelocidad3, LOW);
delay(100);
lcd.begin(20,4);
lcd.clear();
}
vvooiidd musica(){
ffoorr (iinntt thisNote = 0; thisNote < 18; thisNote++) {
iinntt noteDuration = 1000/noteDurations[thisNote];
tone(7, melody[thisNote],noteDuration); //conecta el pin 7
iinntt pauseBetweenNotes = noteDuration * 1.30;
delay(pauseBetweenNotes);
noTone(7); //desconecta el pin 7
}
}
//==================================================================================================
//==================================================================================================
//==================================================================================================

vvooiidd muestraPantalla(byte currentMode) { // No estoy contento con esta rutina. Necesita trabajarla
uunnssiiggnneedd lloonngg elapsedSeconds = ((millis() - cycleStart) / 1000); // Vamos con el nmero de segundos transcurridos
uunnssiiggnneedd lloonngg elapsedMinutes = (elapsedSeconds / 60);
uunnssiiggnneedd lloonngg elapsedHours = (elapsedMinutes / 60);
lcd.setCursor(0,0);
lcd.print(F("Tiempo lavado: "));
iiff (elapsedHours > 0) { // No mostrar las horas transcurridas si ha transcurrido menos de una hora.
lcd.print(elapsedHours);
lcd.print(':');
iiff (elapsedHours == 1) elapsedMinutes -= 60;
iiff (elapsedHours == 2) elapsedMinutes -= 120;
}
iiff (elapsedMinutes < 10) { // Slo muestra un solo dgito, por lo que necesita un cero de ms.
lcd.print('0');
}
//temperatura
iinntt val;//Crea una variable entera
iinntt temp;//Variable de temperatura = temp
val=analogRead(A4);//Lee el valor del pin analogo 2 y lo mantiene como val
temp=Termistor(val);//Realiza la conversin del valor analogico a grados Celsius
//temperatura
lcd.print(elapsedMinutes);
lcd.setCursor(0,1);
lcd.print(F("Temp Agua: "));
lcd.print(temp);
delay (1000);
lcd.print('C');
lcd.setCursor(0,3);
sswwiittcchh (currentMode) {
ccaassee 0:
lcd.print(F("Iniciando"));
bbrreeaakk;
ccaassee 1:
lcd.print(F("Llenando"));
bbrreeaakk;
ccaassee 2:
lcd.print(F("Vaciando"));
bbrreeaakk;
ccaassee 3:
lcd.print(F("Lavando ropa"));
bbrreeaakk;
ccaassee 4:
lcd.print(F("10 minutos Prelavado"));
bbrreeaakk;
ccaassee 5:
lcd.print(F("Suavizante"));
bbrreeaakk;
ccaassee 6:
lcd.print(F("Centrifugado suave"));
bbrreeaakk;
ccaassee 7:
lcd.print(F("Centrifugado fuerte"));
bbrreeaakk;
}
}

vvooiidd loop() {/*


int val=analogRead(A4);//Lee el valor del pin analogico y lo mantiene como val
int temp=Termistor(val);//Realiza la conversin del valor analogico a grados Celsius

lcd.clear();
lcd.setCursor(0,1);
lcd.print(F("Temp Agua: "));
lcd.print(temp);
delay (1000);
lcd.print('C');

while (temp < 65) {//mientras no alcance la temperatura esta activado la resistencia calentadora de agua
digitalWrite(CalentadorAgua, ON);
delay(100);
temp=Termistor(val);//devuelve la temperatura
lcd.clear();
lcd.setCursor(0,1);
lcd.print(F("Temp Agua: "));
lcd.print(temp);
delay (1000);
lcd.print('C');
}
digitalWrite(CalentadorAgua, OFF);
*/
}

Publicado por Electroduende Mil en 15:40

+3 Recomendar esto en Google

Etiquetas: Arduino, informtica, lavadora, mantenimiento, motor universal, obsolescencia


programada, programacin c, programador electrnico, reparacin, washing machine

10 comentarios:
MMeettaa 17 de junio de 2015, 2:05
Hola:

Me estoy fijando el esquema que hiciste, precisamente este.


https://drive.google.com/file/d/0B1RnTBfBuGhiQXJmWVN2UGY3Tk0/view

No es idntico a la hoja de datos del TDA1085C.


https://drive.google.com/file/d/0B1RnTBfBuGhiXzdpNkVmblUwSDQ/view

Primera pregunta si no es molestia.


1) Hay alguna diferencia sobre el comportamiento del TDA1085C de tu
esquema con el original?

2) Hay condensadores que no has puesto en la lista sobre los voltajes, por
ejemplo:

C7: 47nF Poliester


C8, C11: (2) 100nF Poliester
C9: 680pF Poliester

3) En cuanto a este de C10, C11: (2) 100nF / 230V ~ Poliester, no es


mejor usar 400 V. ya que usa en este caso cargas inductivas como un motor?

Por lo que he ledo arriba, an no lo has montado. Antes de comprar todos


sus componentes del TDA1085C, espero qu elo publiques y nos cuentes tus
experiencias.

Mientras sigo experimentando como regular el motor de forma estable, qu


epuedes ver por aqu como curiosidad.
http://electronica-pic.blogspot.com.es/2015/06/regulador-velocidad-motor-
de-lavadora.html

En cuanto al proyecto, buen trabajo.


Responder

Respuestas

EElleeccttrroodduueennddee MMiill 22 de junio de 2015, 10:54


Hola, disculpa que te conteste varios das despus. Intentar
resolver algunas de tus dudas.
A la primera pregunta: Si hay diferencias de comportamientos.
A la segunda: Si no se indican los voltajes es que son bajos o
desechables, no me acuerdo ahora mismo, pero algunos sern de
1,5v, para resolver esa duda puedes ver los diferentes voltajes de
las patillas en el datasheet. Creo recordar que solo dos patillas
tenan alto voltaje.
A la tercera: Si, podras usar 400v y probablemente sea mejor.

Tengo varios cambios en le esquema, que intentar actualizar


cuando tenga ms tiempo:
En la patilla 7, el C6 es de 479mF y R7 de 1,5 Megas.
La patilla 6, a ver como me explico...imagnate que trasladas la
lna de la patilla 5 a la seis, y cambias la resistencia por una
de valor 68k y el condensador del mismo valor, el similar de R5 no
existe en la patilla 6. Esta patilla finaliza en un componente
X2-3 y lleva un potenciometro de ajuste entre X2-1 y X2-3.
Espero haberme expresado correctamente, sin ms, recibe un cordial
saludo y te agradezco tu comentario.

RReessppoonnddeerr

MMeettaa 26 de junio de 2015, 16:06


Hola:

No encuentro el X2-3, estn todos menos ese. Lo que explicaste arriba.


https://drive.google.com/file/d/0B1RnTBfBuGhiQXJmWVN2UGY3Tk0/view

Cuando puedas, si actualizas al final el esquema, avisas por aqu como que
has actualizado, as me lleva un mensaje y me entero. Si llegas hacer la
placa por ti mismo sobre el TDA1085C, tambin, para verlo. As me cuentas
tus experiencias, de paso, lo monto.

Otras personas me han contado que mejor hacerlo con tres optoacopladores,
dos de entrada y uno de salida. Estas so nsus palabras.

Por tanto y partiendo de la necesidad de usar el taco generador puedes


optar por hacerlo de dos maneras distintas. - Por hardware. - Por
software. Por hardware: Puedes emplear el mtodo que conozcas o prefieras,
usar el TDA1085C, operacionales, transistores, etc. Por software:
Necesitas un pequeo interfaz que suministre al Arduino la seal del taco
generador y una seal del paso por cero de la tensin de la red elctrica.
Ambas seales es IMPRESCINDIBLE que estn optoacopladas a las entradas del
Arduino para mantener el aislamiento galvnico de la red. El Arduino
deber calcular un retardo al punto de disparo partiendo de la seal de
paso por cero, y teniendo en cuenta la velocidad seleccionada. y la
velocidad REAL del motor obtenida de la seal que suministra el taco
generador. Las seal (pulso) de disparo al triac de control del motor,
debe hacerse por medio de un optoacoplador SIN CIRCUITO INTERNO DE PASO
POR CERO, es decir, el triac del optoacoplador debe responder SOLO al
pulso de disparo que le suministra el Arduino en el mismo instante que lo
recibe. sta es la forma en que debe hacerse, eres libre de buscar atajos.
La forma ms sencilla es la que yo empleo (mtodo hardware), pero la ms
eficaz, econmica, elegante y precisa es por software embebido en algn
microcontrolador o Arduino.

Por ahora parece ms recomendable el TDA1085C.

Sigo experimentado con motores por aqu de mi lavadora.


http://electronica-pic.blogspot.com.es/2015/06/motor-en-marcha-en-la-
lavadora-beko.html

Gracias por tu tiempo, y de nuevo me sorprende tu trabajo. ;)


Responder

MMeettaa 13 de julio de 2015, 19:03


Este comentario ha sido eliminado por el autor.
Responder

rraauull ssaanncchheezz 26 de diciembre de 2015, 3:47


Hola
Estoy muy interesado en saber como has avanzado en este ambicioso
proyecto, ya que no veo actualizaciones recientes. Saludos y gracias por
publicar tus conocimientos
Responder

Respuestas

MMeettaa 2 de enero de 2016, 22:21


Tiene que aadir algo ms?

RReessppoonnddeerr

UUnnkknnoowwnn 20 de septiembre de 2016, 23:44


Hola, me sumo a estos proyectos pero tengo curiosidad de cmo controlar el
giro del motor de forma eficiente.
Responder

MMeettaa 21 de septiembre de 2016, 6:43


Hola:

Aqu tambin hay algo de info.


http://electronica-pic.blogspot.com.es/2014/04/proyecto-disenar-placa-
del-frontal-de.html

Saludos.
Responder
AAnnttoonniioo33000000 28 de noviembre de 2016, 7:15
Que sepas que esto es paja, el mio va a estar mejor
saludos
Responder

Respuestas

MMeettaa 28 de noviembre de 2016, 8:18


Si es el que compr tu madre, seguro que es mejor.

RReessppoonnddeerr

AAaaddiirr ccoommeennttaarriioo

Introduce tu comentario...

Comentar como: Seleccionar perfil...

Publicar Vista previa

Entrada ms reciente Pgina principal

Suscribirse a: Enviar comentarios (Atom)

Plantilla Sencillo. Las imgenes de las plantillas son obra de fpm. Con la tecnologa de Blogger.

Anda mungkin juga menyukai