# Control sustituto para lavadora automatica.



## antiworldx (Mar 3, 2010)

Bueno, aqui les comparto otro de mis proyectos, en este caso, es un control sustituto para lavadoras automaticas.
La breve historia de este proyecto es, que mi lavadora automatica, acabo su vida util, ya que quemo el motor gracias al que el sistema de control que tiene, se daño, con el tiempo, y pues un falso contacto en los interruptores del reloj, provoco la catastrofe.

Como una lavadora nueva, no cuesta tres pesos, decidi mejor hechar mano a lo que se, y me implemente un control nuevo para la lavadora, y mande embobinar el motor, ya que la transmisiion y las valvulas estan en muy buen estado.

Total, asi hice el control, usando un microcontrolador 8051, ya que un avr era mucho procesador para solo controlar señales analogicas.
De ahi en mas, use el sensado mismo de la lavadora para el llenado, y puse unos contactores para controlar el encendido y sentido del motor.

Adicionalmente agrege como funciones a la lavadora, nuevos ciclos, ciclos programabes en tiempo, y puede secar, lavar o enguajar por separado sin necesidad de correr un ciclo completo. Y tambien un relojito cuando la lavadora esta inactiva.

Les debo por lo pronto fotos con el control ya implementado, pero el fin de semana que lave mi ropa, le saco fotos y video funcionando.
El circuito no es nuevo, ya tiene casi un año operando y cada ocho dias me evita la pena de ir a lavadero a lavar manualmente.
Espero que les de inspiracion para problemas similares con ustedes

Salu2!


----------



## alexus (Mar 3, 2010)

cada 8 dias?????? dddddddd.... jejejeje

esta interesante!!! aqui no usamos el agua caliente, ya que se lava hasta 2 veces por dia, 4 personas, 2 trabajan. 

siempre quise hacer algo asi, recuerdo, cuando estaba estudiando, que un profesor nos hizo hacer esto mismo, pero....con "ELECTRONICA COMUUUUN"

una maravilla del diseño!!! jejeje

felicitaciones!


----------



## fernandoae (Mar 4, 2010)

Que prolijo che, ta bueno! yo estoy viendo de hacer algo asi para un lavavajillas del año del, hace mucho.
Si podes comparti la info  sera bienvenida.


----------



## antiworldx (Mar 4, 2010)

por su puesto... tengo el pcb y el esquematico que es una simpleza... adjunto prontamente.


----------



## antiworldx (Mar 4, 2010)

En vista del interes y necesidad de su parte, adjunto anticipadamente el esquematico para que empiecen a analizar y plantear dudas, de todas formas sigue en pie mi promesa del video del circuito ya funcionando.


----------



## fernandoae (Mar 4, 2010)

Ya tengo unas preguntas!
-Que hacen esas compuertas AND? 
-Que es Itec?
-Como diseñaste el programa? o sea los ciclos de lavado y demas...


----------



## antiworldx (Mar 4, 2010)

fernandoae dijo:


> Ya tengo unas preguntas!
> -Que hacen esas compuertas AND?
> -Que es Itec?
> -Como diseñaste el programa? o sea los ciclos de lavado y demas...



Las compuertas and, generan una señal que van a la etiqueta Itec, que si te fijas bien, va a dar a la Int0, o sea, interrupcion externa cero, esta, que activa la rutina de decodificacion de un teclado 4X4, y no tener que estar poleando o consultando si ya existe un dato. El teclado por si mismo anuncia que ya existe una tecla presionada.

El programa, si esta un poco extenso, ya que todavia no se me ocurria como trabajar el multihilos o multithread. Es una especie de hibrido de maquinas de estado, con interrupciones. Manejo bufferes que diferentes procesos consultan para saber que decision tomar.

A grandes rasgos, esta un proceso elemtal, que es el reloj, y esta en modo vigia, esperando un comando del teclado. Cuando el comando corresponde a un ciclo, va a otro proceso que inicializa unas variables, y estas a su vez se va a otro proceso que controla las señales y las entradas, y como maquina de estados, hasta que se cumplen condiciones de señales o tiempo va avanzando hasta terminar.

En ningun momento estoy decodificando el teclado, ya que ese tiene su proceso propio activado por una interrupcion, decodifica el dato, y lo deja en un buffer que ya cada proceso consultara por su cuenta para saber si ya llego un nuevo dato.

Despues pongo el programa, junto con los videos, para que se den una idea de como hace seguimiento el programa.


----------



## aitor 1995 (Mar 5, 2010)

Chicos, tengo, los circuitos montados para un dosificador de jabones para lavadoras industriales, falta el cableado, el sistema de funcionamiento era que al excitarse, según que electro válvula de la maquina, el circuito excitaba las bombas dosificadoras durante un periodo de tiempo determinado, buscando componentes para realizar este proyecto ( Vital para mi) he encontrado estos circuitos, coloco las fotos por si pensais que podría adaptarse alguno o pudiese aprovechar algo. Se programaba directamente desde el teclado, desconozco la manera.

Gracias por este tema, ya iba yo a intentar rehabilitar el de Pablín, pero por lo que se ve no es muy fiable, el programa.

disculpad la calidad de imagen, si deseais algún dato, pedidlo.


----------



## antiworldx (Mar 17, 2010)

Señores!!! ya pase mis examenes, asi que ahora cumplo con lo prometido.

En esta ocacion les dejo el programa que controla el circuito. Recuerdo que esto usando un microcontrolador 80C52 de atmel, es decir, un microcontrolador con nucleo 8051. 
Para los interesados, que empiecen a revisarlo, y resolver dudas. Este programa esta hecho para mi lavadora especificamente, asi que para quienes quieran implementarlo a la suya particular, tendran que hacer unas pequeñas modificaciones, dependiendo de como operen sus sensores.
Por otro lado, les recuerdo que las normas del foro no aprueban el minimo esfuerzo, asi que por favor, eviten hacer preguntas como "que es el 8051???".
Por otro lado, acepto que mi forma de programar es un poco "particular", ya que varios compañeros y maestros me lo han dicho. Asi que preguntas sobre el programa contestare con mucho gusto. Quisiera ver una hermana de mi lavadora proximamente. 
Y no olvido las fotos y el video del circuito ya implementado y operando. En estos dias estaran aqui subidas. 

Salu2!

edito: jajaja se me olvido subir el archivo... pero aqui esta. La extension original del archivo es .A51, pero el gestor de subida me lo rechazaba con esa extension. De todas formas lo mejor es copiar y pegar en un proyecto nuevo. Salu2!


----------



## aitor 1995 (Mar 18, 2010)

Me encantaria, si pudieras pasar la pcd, y la relación de conexiones, asi como el programa que has utilizado para ensamblar y grabar el micro.
Gracias.


----------



## antiworldx (Mar 18, 2010)

Use el Keil uVision 3, pero cualquier ensamblador para 8051 debe de soportarlo. Es lo bonito de ensamblador.

Si mal no recuerdo, el keil es gratuito.

El pcb lo subo este fin junto con los videos.


----------



## aitor 1995 (Mar 23, 2010)

no me olvides antiwordx


----------



## antiworldx (Mar 23, 2010)

aitor 1995 dijo:


> no me olvides antiwordx



Take it easy!!!

Bueno por fin, les dejo el video prometido del dispositivo funcionando...

http://www.youtube.com/watch?v=DYAAVpd4ZNY

Y tambien aqui les dejo algunas imagenes...

El pcb en la noche lo subo, solo que seria bueno primero saber si las señales tal cual se manejan concuerdan exactamente con el dispositivo donde piensan colocarlo.


----------



## antiworldx (Mar 25, 2010)

Pcb pcb pcb pcb!!!!!!!!!!!!!!


----------



## aitor 1995 (Mar 25, 2010)

Un gran trabajo. Muchas gracias estoy deseando poderte enseñar la mia, pero vamos a ver si atino, varias dudas;

- ¿Transformador? 
- ¿Xtal 4MH? 
- Valores Relés.

Y el valor de
-R7, R8, R9


----------



## antiworldx (Mar 25, 2010)

Bueno, ya esperaba preguntas de estas... 
La placa por si misma trabaja con un transformador de 12 V a 1A.
el cristal es de 8mhz.
y los relés son de 12 volts. El asuntillo aquí, es que estos relevadores no manejan la corriente del motor, estos a su vez, accionan unos contactores de 110V (tension nominal de uso doméstico en méxico).
Los contactores son dos, uno que lo enciende/apaga y otro que controla la direccion de giro del motor (lavado/secado)
Lo que si manejan directamente son las valvulas de agua, ya que consumen muy poca corriente.
Los sensores son simples interruptores... (lleno y vacio), (tapa abierta o cerrada).


----------



## aitor 1995 (Mar 25, 2010)

¿Donde está el C3?
los electroliticos ¿voltaje?

Aqui es de 220v,
así que añadiré contactores o reles para las maniobras.


----------



## antiworldx (Mar 25, 2010)

Veo que aqui tengo el problema que falto especificar materiales, un error de mi parte. Deja reviso ese asunto y pongo de una vez por todas esas especificaciones... 

Descuido de mi parte, pido disculpas.


----------



## aitor 1995 (Mar 26, 2010)

Qué opinas de esta posible variación, al igual algún varistor..

Al subir la imagen se ha perdido parte, espero que la entiendas.


----------



## antiworldx (Mar 26, 2010)

Pues puenteaste todos los relevadores, con que fin hiciste eso?
Asi como veo el circuito, con un solo relevador es suficiente, pero no veo el motivo o el objeto de tal reconexion.
Cierto, necesito ver el resto del circuito...


----------



## aitor 1995 (Mar 27, 2010)

Como comentas que los relevadores no manejaban la corriente del motor y que estos accionaban contactores...
 Te proponia una posible solución; si en vez de alimentar la salida de los mismos a 12v.
lo hacemos a 110v. o a 220v, como es el caso aquí, en tu caso podrias ahorrarte los contactores y el el mio exitaria los que tengo para motores trifasicos. 
¿Qué opinas? se pueden añadir a cada uno un fusible e incluso un varistor.

Si esto no es posible ruego me disculpeis en mi ignorancia.


----------



## aitor 1995 (Mar 30, 2010)

Al igual se entiende mejor.


----------



## tecnogirl (Mar 30, 2010)

aitor: Tu esquema del post #26 esta mal. Cuando el rele se activa, pones en corto la fuente de red externa!!!.. El esquema del post #27 esta [muy] correcto.

Saludos


----------



## tecnogirl (Mar 31, 2010)

antiworldx: He estado estudiando tu proyecto y Quisiera saber lo siguiente:
- Cuantos KB de codigo compilado ocupa el programa ?
- Cupo todo el programa en la memoria del micro ?
- Que componentes estan conectados en las borneras P4 y P8, ya que en el
  esquema no hay detalles al respecto ?.

Vielen Danke und auf Wiedersehen


----------



## antiworldx (Abr 1, 2010)

Lo siento muchisimo por estos atrasos y falta de formalidad de mi parte...

Se que puede sonar a excusa, pero no es así, tengo varias cosas que me aquejan en este momento...
un familiar en estado grave, guardias nocturnas en hospital, obligaciones de la universidad, mi auto esta por salir de una larga restauración, y problemas económicos.
Se que, repito, suena a pretexto, pero no es así. En esta pagina he tenido mucha formalidad por parte de los miembros, y por lo mismo respondo pidiendo un poco de paciencia.

Bueno, dejaré mis lloriqueos y atenderé lo mas urgente:

C3 no existe... Por alguna razón brinque el numero de C2 a C4, no considere importante ese detalle.
Los capacitores electroliticos son filtros para el rizo del rectificador, los cuales deberán ser de un voltaje mínimo de 16V. No pense que fuera necesario especificar el voltaje por que ahi en el esquematico especifico el voltaje de entrada (+12Vcc).
El transformador que alimenta el circuito deberá ser, por ende de 12V con 1A minima de corriente para evitar sobrecalentamiento con los relevadores operando. Esto lo hice pensando que el circuito lo diseñé para que siempre este operando las 24hrs. Cuando la lavadora no opera, muestra un reloj con la hora en formato 24hrs.

sobre el mecanismo de esta lavadora en particular:
Esta lavadora, cuenta con un solo motor de operación monofásica con dos devanados (arranque y operacion). De esta manera, al cambiar la polaridad o referencia de un devanado contra otro, se cambia el giro del motor. La transmisión está diseñada para lavar en un sentido, y secar en el otro. La bomba de agua, igualmente esta diseñada para que para un sentido regrese el agua al deposito, y en sentido contrario, lo expulse por el desague.
Cuenta con un sensor de nivel de agua por medio de un diafragma y un ajuste de tornillo, de manera que cuando la presion es suficiente, cierra un contacto.
La tapa tambien cuenta con un switch como sensor.
Las valvulas de agua, cuenta con dos, una caliente y una fria. Maneja dos ajustes de temperatura, una de lavado y otra de enguague, que se ajustan por medio de un boton en la consola. 

Ahora las I/O:
P11: es el sensor de la tapa de la lavadora (cuando se abre, pausa el ciclo, no lo cancela. Al cerrarse, reanuda el proceso).

P12: Se empalmo el numero, pero es el contiguo al anterior, y este es el detector de nivel del agua. Al cerrarse, es que el nivel se ha alcanzado y empieza a lavar.

P2: Este activa los contactores que cambian la referencia de ambos debanados del motor para controlar el sentido de giro de este. Encendido seca, apagado lava.

P5: Activa el contactor de encendido del motor. encendido, es encendido, valga la redundancia.

P6: Abre las valvulas de llenado, igualmente encendido es abierto.

P7 y P9: Activan el circuito de llenado en modo enjuague(apagado) y en modo lavado (encendido).

Debo sacar una foto del diagrama electrico original de esta lavadora para explicar donde van estos conectores, especialmente el circuito de las valvulas.

Ahora, contestando a tecnogirl:
Recuerdo que son aproximadamente 7KB de programa ya ensamblado y efectivamente si cupo en el micro... Cuenta con 8kb de flash.
En las borneras, las cuales no existen tales en la placa, es un cable plano de 24 vias, que conecta con el tablero de control. 

Veamos:
P3: conecta al circuito del teclado matricial.
P4: conecta al circuito del LCD.
P8: corriente, tierra y control de backlight del display y leds de indicador de ciclo.

No subi el esquematico del tablero?

Espero haber contestado esas dudas y seguire al pendiente... solo pido paciencia.

Es war ein Vergnügen, Miss dienen


----------



## aitor 1995 (Abr 1, 2010)

antiworldx;

             Lamento profundamente tu situación, intentar reconfortante mediante palabras, quizás sea demasiado efímero, los que hemos atravesado situaciones similares lo entendemos.
               Tan solo te digo que en la vida estamos sometidos a la balanza de las pretensiones y esta estará siempre en equilibrio, que no te hundan las desdichas que con el tiempo se las recibirás en forma de bendiciones. Desde aquí y a fin que ese equilibrio llege lo antes posible, por si eres creyente, encenderé una vela a nuestra Señora, La Virgen del Rocío.

Por lo demás, sin ocultarte mi interés, tomate el tiempo necesario.

Un cordial saludo.


----------



## tecnogirl (Abr 5, 2010)

antiworldx: Gracias por las aclaraciones y me uno al mensaje #33 de aitor1995 y espero que todo se resuelva de la mejor manera para ti. 
Saludos.


----------



## aitor 1995 (Abr 6, 2010)

Antiworldx:
Creo que sobra cualquier tipo de comentario sobre tu proyecto, simplemente soberbio.

Mis conocimientos son los de técnico y de electrónica antigua, hace 20 años, cambie de oficio por el negocio familiar, y aquí sigo.(Pequeña lavandería domestica)
El tema es que hasta ahora he podido mantener las lavadoras activas con programadores de tarjetas electromecánicos, pero una, casco se forma definitiva, y coloqué uno electromecánico domestico. 
Y con tu permiso quiero adaptarlo a la mía, tengo varias dudas;

-	Al ver el video veo que para encenderla tecleas varios dígitos del panel, ¿Significado?

-	Comentas;     “ P2: Este activa los contactores que cambian la referencia de ambos debanados del motor para controlar el sentido de giro de este. Encendido seca, apagado lava.” ¿Qué tiempo transcurre entre ambos procesos?¿Tu maquina seca? O te refieres al cambio de sentido en el lavado.

-	“P5: Activa el contactor de encendido del motor. encendido, es encendido, valga la redundancia.” ¿Te refieres a un centrifugado?. 

-	Con las electro válvulas me pasa igual, no comprendo bien, si das a entender,¿Cuál es la bomba de desagüe? 

En fin haber si consigo aclararme.

Un saludo.


----------



## antiworldx (Abr 6, 2010)

Una descripción mas amplia sobre la lavadora en si misma.

voy a citar en primer lugar el motor que acciona el mecanismo. Es una parte extraida de http://www.nichese.com/monofasico.html



> Motor monofásico de fase partida.
> 
> Este tipo de motor tiene dos devanados bien diferenciados, un devanado principal y otro devanado auxiliar. El devanado auxiliar es el que provoca el arranque del motor, gracias a que desfasa un flujo magnético respecto al flujo del devanado principal, de esta manera, logra tener dos fases en el momento del arranque.
> Al tener el devanado auxiliar la corriente desfasada respecto a la corriente principal, se genera un campo magnético que facilita el giro del rotor. Cuando la velocidad del giro del rotor acelera el par de motor aumenta. Cuando dicha velocidad está próxima al sincronismo, se logran alcanzar un par de motor tan elevado como en un motor trifásico, o casi. Cuando la velocidad alcanza un 75 % de sincronismo, el devanado auxiliar se desconecta gracias a un interruptor centrífugo que llevan incorporados estos motores de serie, lo cual hace que el motor solo funcione con el devanado principal.
> ...



Una vez aclarado el motor, ahora explico que, al girar en un sentido, la caja de engranajes mueve a la canasta en el clasico chaca chaca de lavado. Al girar en sentido inverso, la caja gira la canasta en centrifugado o exprimido. Pero por fines practicos y de expresion regional, se dice secado.

La bomba, que esta acoplada directamente al motor, al girar en el sentido donde lava, hace que el agua se dirija hacia la recirculacion que la conduce a una coladera para eliminar pelusa. Al girar en el sentido del secado, arroja el agua por el desague de la lavadora misma.

Por esa razón tengo dos controles del motor. Uno para invertir los devanados y otro para accionar el motor. Asi que cuando toca lavar, activo el relevador para que invierta los devanados y gire para lavar. Al secar desactivo el relevador y los devanados vuelven a su normalidad para secar. Una vez puesto los devanados en referencia requerida, entonces si, energizo el contactor que activa el motor. 

Sobre las valvulas, deja saco foto al diagrama original de la lavadora para que se entienda como se comportan las valvulas. En grandes conceptos, existen dos circuitos controlados por uno de los botones redondos, donde al activar un circuito, abre las valvulas para llenar antes de lavar, y al activar otro circuito, abre las valvulas para llenar antes de enjuagar. Es decir, puedo decirle que lave con agua caliente y seque con agua fria. 

Eso lo hice para conservar la maxima originalidad posible de la lavadora respecto a sus funciones. No me gusta ver botones que no sirven.

y lo que aprieto en un principio, es lo siguiente.
Al principio el video, el micro arranca y muestra una presentacion con algunos datos sobre el software para saber que version tiene instalada (para control de bugs) y un poco de edonismo al nombrar mi firma de proyectos. Antiworld labs.

Pasado un poco mi autoalavanza, jajaja, entonces el micro corre un programa de un simple reloj con formato de 24 horas. Entonces al presionar la tecla A, entro en modo de ajuste de hora. Introduzco la hora, y entonces presiono F para decirle al micro que esa es la nueva hora.

Cuando esta en modo reloj, los botones tienen las siguientes funciones.
A. Ajuste de reloj
1. Lavado normal
2. Lavado rapido
3. Lavado pesado
4. Solo lavado y exprimido
5. Solo enguajado y exprimido.
6. Solo exprimido
7. Lavado normal con tiempos personalizados.
8. Lavado con doble enjuagado con tiempos personalizados.

Creo que debí haber un stand alone o un user manual. mmmm pero pues de todas formas nadie los lee... jajaja. 
Obviamente es una pequeña broma.

Salu2!


----------



## aitor 1995 (Abr 7, 2010)

Antiworldx:
 Si no lo he entendido mal tu maquina solo tiene un sentido de giro para el lavado y otro para el centrifugado. Es decir, no invierte el giro durante el lavado, así como la bomba de desagüe la conectas en paralelo con el centrifugado, ¿Es correcto?


----------



## antiworldx (Abr 7, 2010)

A ver...
Anexe un garabato de como esta el sistema mecanico de la lavadora...

Explico otra vez... el motor gira en dos sentidos. 
Que ocurre con la bomba?
en un sentido arroja el agua a la recirculacion y en sentido contrario hacia el desagüe.

Que ocurre con la canastilla?
Pues la caja de engranajes, internamente, cuando la polea gira en un sentido, el engranaje hace que la canastilla haga chaca chaca. La canastilla y el batidor central, giran como cualquier lavadora restregando la ropa.
Cuando gira en sentido contrario el motor, la caja de engranajes hace girar la canastilla rápidamente para hacer el centrifugado.

Para hacer que la canastilla lave o centrifugue, debe de detenerse primero el motor y la canastilla totalmente, si no, adios a la caja.

En resumen... se controla la canastilla pra que lave o centrifugue, con el sentido del giro del motor.


----------



## aitor 1995 (Abr 9, 2010)

Antiworldx:
 Quizás en vez de marearte con mis dudas sea mejor exponerte mi intención a ver si puedo adaptar tu sistema; pretendo rearmar una máquina de 32 Kg., lo único útil son, dos motores 380v trifásicos, presostato, resistencias, y bomba de desagüe de alimentación inversa (Necesita el paso eléctrico para evitar el desagüe de la maquina). Todo el sistema está manejado por contactores o reles a 220v.

Mi necesidad;
-	Dos o tres electro válvulas de entrada de agua; para todo (llenado, enjuagues) y una simplemente para el último enjuague antes del centrifugado (a fin de poder aditar productos de termino; Neutralizantes, suavizantes…., mediante dosificaciones automáticas) 
-	Que el nivel de agua lo marque un presostato de membrana, así como la temperatura sea mediante un interruptor, con la posibilidad de añadir un selector de temperatura.
-	El sistema de seguridad de la puerta realmente no me es necesario por el tipo de cierre que tiene.

En cuanto al lavado;

-	Llenado de la máquina, si ha de establecerse un tiempo de seguridad que sean 15 minutos.
-	A los 5 minutos del comienzo de llenado, Ciclos inversos de 3-4 minutos, con un reposo de 20 segundos entre ciclos.
-	Un tiempo de lavado una vez alcanzada la temperatura de 15 minutos.
-	Desagüe de la maquina 4 minutos
-	3 enjuagues de 5 minutos, una vez llena la maquina de agua con sus correspondientes desagües y por  último,
-	un centrifugado de 15 minutos.

Este sería el que podría valerme aunque hay otro que me gustaría poder añadirle; simplemente disminuyendo el tiempo de los ciclos a 1-2 y el del lavado a 7 minutos.



Esta es mi necesidad y agradezco cualquier sugerencia al respecto.


----------



## antiworldx (Abr 9, 2010)

No es complicado hacer las adaptaciones... realmente el "esqueleto" ya esta hecho, solo hay que colgarle mas salidas y modificar el programa original aumentando ciclos... casi casi hacer copy paste a secciones del codigo.

preguntas claves... 

¿sabes programar este microcontrolador?
¿sabes interpretar y/o modificar esquemáticos?
¿sabes hacer y grabar placas?
¿sabes soldar y tienes herramienta para perforar?

Dependiendo de tus respuestas, podremos hacer un plan de trabajo para dividir actividades.

Esto es diseño y me encanta... y lo mejor de todo para ti, que es gratis!!!


----------



## tecnogirl (Abr 9, 2010)

antiworldx: del video de la operacion de la lavadora capte esta imagen... Que estas haciendo ahi, esa operacion no esta bajo el control del micro ?. Saludos


----------



## antiworldx (Abr 9, 2010)

tecnogirl: estoy ajustando la temperatura de lavado/enguajado, el nivel de agua, y lavado normal o suave(regula la fuerza del chaca chaca). 
Efectivamente eso no esta bajo control del microcontrolador, ya que los botones operan perfectamente y asi conservo cierta "originalildad" de la lavadora.

aitor: pues sera cuestion de ponernos de acuerdo con las salidas, que van a controlar que y modifico el programa... y el resto te encargas tu... Te agrada la idea?


----------



## aitor 1995 (Abr 9, 2010)

La verdad es que no sabría como agradecertelo.
en cuanto a las salidas, lo dejo a tu elección.

Mi nivel de electronica es bajo, ¿cuantas salidas se podrían implementar el el circuito que ya tienes diseñado? No he trabajado con micros y desconozco sus posibilidades.


----------



## Josefe17 (Abr 9, 2010)

Antiworldx, cómo seleccionas la intensidad del chaca chaca, como dices tú y el nivel de carga de agua, que hacen esos mandos.

Aitor 1995, eso de bomba inversa qué es, como la que plantea Antiworldx en su diseño pero con motor; y dos motores por qué, que hace cada uno, y con tantas electroválvulas para qué, una para cada departamento del jabón. Otra cosa, por lo que he visto, la seguridad de puerta sí es necesaria, están formadas por un electroimán y un interruptor. Tienen 3 contactos, común, salida corte del interruptor de puerta y alimentación electroimán. A común suele venir un cable tras el interruptor principal por donde pasa toda la carga (o mediante relés) donde sólo dejará pasar corriente si se cierra. A su vez dejará pasar corriente al electroimán de bloqueo, que si está el programador no está en parada, le llega corriente y se bloquea. Se soltará al apagarse la corrriente, pero por un muelle no abrirá la puerta hasta el tiempo necesario. Si condenas el interruptor de puerta se podría poner en marcha con ella abierta. Si condenas el bloqueo se abríría, aunque pararía en medio ciclo, con lo que supone. Se puede poner un rele con el programador que en cualquier ciclo dé corriente al bloqueo y la seguridad de inicio con la puerta abierta al pause y que no permita encender cualquier programa con la puerta abierta. Si la apertura retardada es un sistema como el que digo (bloqueo e interruptor integrados) y directamente el interruptor opera sobre toda la corriente se pone un relé, si es un interruptor independiente directamente.

Atentamente
Josefe17


----------



## aitor 1995 (Abr 9, 2010)

A ver,

La bomba, no es una bomba en si, mas bien es una salida, que desagua por caída, solo hay que mantenerla cerrada durante el proceso de lavado. Se mantiene mediante un motor. Mañana subo foto.

Tiene dos motores, uno para ciclos de lavado y enjuague y otro solo para centrifugado.

El motivo de tres electro válvulas, para poder aditar productos líquidos; jabones, lejías, suavizantes, neutralizantes. Mediante dosificadores automáticos, que se excitan con las electro válvulas.

El cierre no me preocupa en exceso por el sistema de cierre de la maquina. Es muy complicado que quede abierta o se abra.


----------



## aitor 1995 (Abr 10, 2010)

Yo entiendo por bitermico, la posibilidad de entrada de agua fría y/o caliente, Hay maquinas que traen la posibilidad con entradas distintas, casi siempre la caliente viene generada por elementos menos costosos que el consumo eléctrico de las resistencias.

En mi caso no es un elemento necesario, y no pretendo complicar el proyecto que nos ha presentado Antiworldx. Es evidente que todo se puede mejorar.

Yo carezco de los conocimientos para poder desarrollar "El definitivo", disculpad la definición, pero me refiero al que pueda cumplir todas las necesidades del lavado de prendas, según su tipo, composición, el esquemático puede ser similar al de Antiworldx, al igual con alguna salida mas, aunque sin entender mucho de micros creo que habría que ampliar con alguna memoria anexa, o ampliar el elemento. Ya que hablamos de unos 12 programas distintos.


----------



## antiworldx (Abr 10, 2010)

Mi circuito, tiene dos circuitos de entrada de agua... Uno para el lavado y otro para el secado. El switch integrado de la lavadora, respete su circuiteria, la cual permite tener entrada de agua caliente y fria (bitermica). No obstante, hacer combinacion para asi tener fria, tibia y caliente. Puede lavar con caliente y enguajar contibio, o lavar con tibio y enjuagar con frio, o lavar y enguagar con frio... tiene 4 combinaciones en el boton.

Ten un poco de paciencia... los programas cabran en ese microcontrolador, ya que aunque es ensamblador, programo pensando tipo objetos... tengo funciones comunes con parametros. Los programas de lavado solo mandan llamar funciones. No tengo que reprogramar el resto.


----------



## aitor 1995 (Abr 14, 2010)

antiworldx:
 Me gustaria conocer mas sobre el tema de micros y programación, te agradecería si me orientaras sobre los primeros pasos o primeras lecturas sobre el tema.
 Obviamente, no se aprende en un día, pero soy de los que piensa que el que la sigue, la consigue. Y siempre se empieza en el comienzo.

Agradezco cualquier sugerencia.

antiworldx:
Estoy estudiando afondo tu proyecto y me falta el esquematico del tablero.
P8: corriente, tierra y control de backlight del display y leds de indicador de ciclo.

y si puedes; para tenerlo mas claro.

P6: Abre las valvulas de llenado, igualmente encendido es abierto.

P7 y P9: Activan el circuito de llenado en modo enjuague(apagado) y en modo lavado (encendido).

Pasa una foto del diagrama electrico original de tu lavadora para explicar donde van estos conectores, especialmente el circuito de las valvulas.


gracias.


----------



## aitor 1995 (Abr 17, 2010)

Subo una propuesta, basada en el proyecto de antiworldx, estoy aprendiendo, y es probable que tenga algún fallo, si alguien me lo revisa y me comenta le quedaré muy agradecido.


----------



## Josefe17 (Abr 17, 2010)

¿Y la resistencia?
Por cierto, los relés van a trabajar con la corriente definitiva o con contactores. Por cierto explícame lo de los motores, si son trifásicos, quie hay que interrumpir, ¿las 3 fases?


----------



## aitor 1995 (Abr 17, 2010)

Los reles activan contactores trifasicos.
¿A qué resistencia te refieres?


----------



## Josefe17 (Abr 17, 2010)

A la de calentar el agua


----------



## aitor 1995 (Abr 17, 2010)

Es increible, llevo lo último de tiempo liado con el tema y hasta ahora no he reparado en ese detalle. ¿ Donde la pondías? Como ya digo estoy empezando a estudiar el funcionamiento de micros, y ando perdidillo.

Gracias.

Haber si vale esta modificación.


----------



## antiworldx (Abr 18, 2010)

Aitor, muy bien veo tu circuito, parece que lo has comprendido perfectamente y ya has hecho tus modificaciones a tu necesidad.
Solo tengo una pregunta. Porque dos relevadores apra giro derecha o izquierda?
Y otra cosa... cuando usas un motor trifasico, solo vasta cambiar dos fases para invertir el giro.


----------



## aitor 1995 (Abr 18, 2010)

Me alegro de reencontrarte, espero todo bien.
La maquina es semi- industrial, ya trae los motores y las variaciones por contactores, por lo que cada contactor marcaría el sentido del giro.

Si me revisas el proyecto, me gustarias que opinaras sobre las variaciones, si te fijas he suprimido el control de backlight del display, a fin de insertar el circuito de temperatura.

Te agradecería dejaras el esquematico del panel, para poder estudiarlo a fondo.


----------



## aitor 1995 (Abr 19, 2010)

He modificado el calentamiento de la maquina, así como desarrollar la fuente de alimentacion de una forma externa.
Me gustaría incluir un zumbador, para aviso de fin de lavado , interrupciones, alarmas en general.
¿Donde podría instalarlo?


----------



## tecnogirl (Abr 19, 2010)

aitor 1995: En la ultima version del esquema, que es Alarma de balanceo y achique ?
Las borneras de "giro a la derecha", "centrifugado", etc, mejor ponle etiquetas como P20, P21, etc. Las bobinas K tambien renumeralas porque todas quedaron como K1

Saludos


----------



## aitor 1995 (Abr 19, 2010)

La Alarma de balanceo, es un dispositivo de seguridad electromecánico, cuando entra la centrifugación, si la maquina balancea mas de lo debido esta se activa y la maquina deja de centrifugar. El Achique, la bomba de desagüe.
En cuanto a la nominación, este es mi primer esquema y lo estoy haciendo en Paint, ya sabes cortar, pegar..... y no le he dado en un principio mucha importancia, de todas formas redenominare los elementos.

Por cierto, recomendadme algún programa para realizar las pcb.


----------



## tecnogirl (Abr 19, 2010)

aitor 1995 dijo:


> ...por cierto, recomendadme algún programa para realizar las pcb.


 
En realidad se emplea un paquete CAD de diseño electronico el cual tiene un modulo que genera el PCB. Puedes buscar mas informacion sobre esos paquetes en 
https://www.forosdeelectronica.com/...ewreply.php%3Fdo%3Dnewreply%26p%3D285650#1128

Saludos


----------



## aitor 1995 (Abr 19, 2010)

Gracias por la información tecnogirl, y de incluir un zumbador, ¿que opinas?


----------



## antiworldx (Abr 19, 2010)

Estan correctas tus opciones, solo que ten en cuenta que yo soy el que va a programar esos perifericos... y hay que sincronizarlos internamente en el algoritmo
Todo hasta donde has desarrollado va perfecto... ahora, te encargaria por favor, un diagrama del sistema electromecanico de tus maquinas, nomas para asegurartnos que empate tu circuito con el resto.

Tambien, la lista de procedimiento del algoritmo... por ejemplo...
Abrir valvula de llenado,
cerrar valvula
abrir dispensador de detergente
cerrar dispensador
accionar direccion del motor
accionar el motor
apagar el motor
etc...


----------



## aitor 1995 (Abr 19, 2010)

Te lo preparo.
Por favor dejame el esquematico del panel, para poder estudiarlo a fondo.

Muchas gracias por todo.


----------



## tecnogirl (Abr 20, 2010)

aitor 1995 dijo:


> Gracias por la información tecnogirl, y de incluir un zumbador, ¿que opinas?


 
Si la lavadora esta en un ambiente silencioso, lo usaria. Si esta en un ambiente con mucho ruido, pensaria en una lampara indicadora, como las de la imagen.

Saludos.


----------



## aitor 1995 (Abr 20, 2010)

Un zumbador sería lo ideal, es por lo que espero el esquematico del panel, para ver donde podría colocarlo.

Añado esquema electrico de los motores y resistencia.


----------



## tecnogirl (Abr 21, 2010)

aitor 1995: El esquema de calefaccion y motores se vé bien pero, otra vez, hay que rotular cada rele (K10, K11, etc), para ir armando todo el circuito y el programa. 
Tambien deberias incluir junto a cada motor, sus caracteristicas de velocidad y de potencia nominal. Y te hacen falta las protecciones de los motores (circuit breaker o reles termicos).

Saludos


----------



## antiworldx (Abr 21, 2010)

Ok, aqui esta el diagrama del tablero, como veran es muy simple, practicamente es mas un soporte que un circuito en si.

Para la alarma visual, precisamente use los leds de status para avisar. Cuando encienden y apagan, es cuando ya termino. Así me evite poner una señal extra de aviso.

Pero se puede hacer cualquier cosa. Una sirena, una chicharra, un wherever. 

Tecnogirl, muchas gracias por ayudarme a ascesorar a aitor. En serio has sido de valiosa importancia para mantener el interes, y a ayudarme a contestar dudas y preguntas.


----------



## aitor 1995 (Abr 21, 2010)

El  buzzer, ¿que función realiza en tu proyecto?


----------



## antiworldx (Abr 21, 2010)

Buzzer =  zumbador. Lo mismo que quieres hacer tu, pero a la hora de implementarlo fisicamente, lo quité, osea no lo conecte. No fue necesario. Recorde que me molestan los ruidos que no sean musica.


----------



## aitor 1995 (Abr 21, 2010)

ok. Por eso te solicitaba el esquemático, aprecié un espacio vacio y tenia curiosidad.
Ando un poco liado, espero tenerte la información que me has requerido en breve.
Por curiosidad con que programa haces los esquemas y las pcb,?

Y sobretodo agradecerte que me permitas usurpar el espacio de tu proyecto,
realmente muchas gracias.


----------



## antiworldx (Abr 21, 2010)

Uso el protel, el DXP 6.

Y no hay problema, de todas formas no tengo dinero para patentarlo, ni tiempo para comercializarlo. jajaja.


----------



## aitor 1995 (Abr 22, 2010)

Una duda, si no estoy equivocado, la conexión 4 del P8 de tu esquema, se corresponde con el 12 del P2 del tablero( - del fondo del lcd).

Este lo modifique el el esquema que te plantee, con una salida a rele.
¿Podríamos obtener este valor desde el mismo tablero?
o
¿Se debería habilitar el conector 7 del P4, que está vacante?


----------



## antiworldx (Abr 22, 2010)

hmm no entiendo bien tu pregunta... que quieres hacer? utilizar el buzzer que quise meter inicialmente usando otra señal? a la que tenia originalmente en mi esquema?


----------



## aitor 1995 (Abr 22, 2010)

No, una de las modificaciones que realice de tu proyecto, fue el pin 25 del micro, (si no estoy equivocado, la conexión 4 del P8 de tu esquema), creo que se corresponde con el 12 del P2 del tablero( - del fondo del lcd).
Yo lo he utilizado para el rele que maneja la electrovalvula común.

La duda es que al eliminar de tu esquema la conexión 4 del P8, que se corresponde con el 12 del P2 del tablero( negativo del fondo del lcd).

¿Podríamos obtener este valor desde el mismo tablero?
o
¿Se debería habilitar el conector 7 del P4, que está vacante? 

espero comprendas mejor la pregunta.

un saludo


----------



## aitor 1995 (Abr 23, 2010)

Estoy intentando rehacer denuevo los esquemas, renombrarlos... en fin, intentando dejar lo más claro posible el funcionamiento.
Además intentando localizar el protel DXP 6, pero no lo encuentro gratuito.
Estoy tan emocionado con el proyecto que ando pensando en armar un termostato electrónico, pero no quisiera complicarlo mucho. ¿Que opináis? ¿Lo complicaría en exceso?, al ser la programación mi mayor problema, siento pudor al pedir cualquier mejora.

Por lo que con lo que hay estoy extremadamente agradecido.

Adjunto lo que he entendido que me solicitabas, revísalo y cuéntame.

Lo dicho, un saludo y muy agradecido.


----------



## antiworldx (Abr 25, 2010)

Todo puede hacerse mi estimado aitor, pero francamente ten en cuenta que estamos por amor al arte y que mi carrera tambien requiere tiempo. 

Puedes explicarme un poco la tabla? no entiendo bien los terminos de los que hablas en el documento. Deja entiendo bien lo que hay que hacer y luego vemos lo del termostato. Y con lo referente a tu alarma, trata de no mover mucho lo del tablero, dejalo ahorita como esta. Tengo una pregunta, el lugar donde estan estas maquinas, hace mucho ruido? porque convendria ponerle una sirena mejor de alarma de auto, de esas que se escuchan como tarzan (es broma lo de tarzan).


----------



## aitor 1995 (Abr 26, 2010)

Por eso agradezco cualquier minuto que dediques a este tema, un zumbador valdría, tal y como está, la duda del esquemático en cuanto cotejes el tuyo con el mio notaras que falta una señal del panel, la que habilita el pin 25 del micro.

Espero que te sirva de aclaración lo que te dejo, si tienes dudas te lo detallo mejor.

Gracias por todo, ah!, tu carrera ha de ser lo primero.

Suerte y gracias.


----------



## antiworldx (Abr 26, 2010)

Muy bien... ahora ya entiendo mejor el asunto... ahora si.Realmente solo has agregado cosas pero sigue siendo lo mismo que hago yo. 

Es poco lo que hay que modificar. Dame chance para el fin de semana para hacer un concentrado de lo que tenemos y ya empezar a concretar. Ya que el programa va muy de la mano con el hardware que has estado modificando... Por cierto, has hecho un buen trabajo para no tener un editor de pcbs.


----------



## aitor 1995 (Abr 27, 2010)

Gracias.
En la época el la que me toco estudiar a mí, Tecnico tan solo, no existian tantas facilidades y tendre que adaptarme y estudiar de nuevo.

Reitero las gracias, por todo.

PD: las facilidades a las que me refiero es al WEB. la puerta del saber.


----------



## aitor 1995 (May 11, 2010)

antiworldx:
 ya estoy denuevo por aquí, espero me comentes que te parece mi esquema y si tiene errores o se puede mejorar. 

esperando que todo bien, recibe un saludo.


----------



## aitor 1995 (May 18, 2010)

antiworldx:
No se si me has olvidado, tan solo espero que revises mi esquema y me cuentes, o dime que desistes de este hilo.
De todas formas muchisimas gracias por todo.


----------



## antiworldx (May 18, 2010)

Compañero aitor!!!

Para nada te he olvidado!, solo que ahorita ando metidazo con los proyectos de la uni, como se termina el ciclo, ya empiezan a apretar cinturones. Ya falta poco para terminar el ciclo, y entonces, como digo por acá, "me siento a dos nalgas" a modificar el programa. El esquema esta bien... solo tendria que preguntarte detallitos a la hora de programar.

No he desistido, repito, solo pido un poco de paciencia, ya que las modificaciones que estas metiendo, aunque son sencillas en cuestion de algoritmo, si requieren un rato de hechar codigo.
Salu2!


----------



## aitor 1995 (May 18, 2010)

Reitero las gracias y suerte en todo.
te espero.


----------



## aitor 1995 (Nov 2, 2010)

antiworldx:
No se si me has olvidado, tan solo espero que revises mi esquema y me cuentes, o dime que desistes de este hilo.
De todas formas muchisimas gracias por todo.


----------



## nemesismx10 (Nov 8, 2010)

Hola antiworldx, estaba viendo tu tema de la lavadora esta muy bien explicado y el video lo complementa muy bien con el ejemplo de ciclo completo y cuando se detiene la lavadora para sacar el agua muy bien en serio, quisiera saber si este sistema lo adaptaste con las perillas de la temperatura del agua y la del nivel del agua? o utilizaste alguna forma de convertir estas señales para que el pic lo reconosca?
Otra cosa es que es necesario usar este pic? ya que yo ando usando otros, aunque creo que se puede adaptar como mencionas no?

Bueno entre otras cosas sabras como programar en PBP, MikroBasic o MPLAB? esque ando empezando en esto de los microcontroladores y su programacion, use el MPLAB para encender y apagar unos led y otras cosas utilizando electronica de potencia con las señales del pic, despues pues me intereso este tema de programacion y encontre MikroBasic en el cual utilice un LCD para escribir un mensaje en la pantalla y el PBP adaptado al MPLAB que estoy utilizando para hacer un contador, pero me falta que realize un reset al sistema por eso ando buscando informacion y tutoriales sobre estos programas.

Ese programa que mensionas Keil uVision3 las instrucciones son parecidas al MPLAB no? claro no todas pero unas cuantas creo que si, serian los mismos codigos o si se deben de cambiar al momento de estar programando?

Gracias por tu atencion!

Saludos.


----------



## antiworldx (Nov 8, 2010)

A ver... tenia meses que no me acordaba de este hilo.
Aitor: En que te quedaste? Tengo ahorita un gran problema, debido a que ya estoy a solo dos materias de titularme como ingeniero (por fin) mi carga de trabajo me trae vuelto loco. Me temo que no podre darte ayuda con la programacion del microcontrolador. Mi intencion era hacer eso, lo se, pero no contaba con que ya no tendria al menos dos o tres dias libres a la semana. Creo que tendremos que apegarnos a la rutina que ya esta programada del micro. Tienes alguna sugerencia?

nemesis: Primero que nada, no uso pic, uso un Atmel 89C52, de la familia de los 8051 de intel. Y las perillas de temperatura y nivel, no requirieron ser monitoriadas por el microcontrolador, ya que el alambrado es muy simple y aun trabaja correctamente. Solo el micro sensa que el nivel ya este completo. 

Como comentario personal, programar en basic u otro engendro de pseudo lenguaje de esos, vomito sobre ellos, yo solo para programar microcontroladores solo uso el ensamblador y muy pocas veces el C. 
Y sobre tu reset podria ayudarte, pero no en este hilo. Si se usar el mplab, y otros ensambladores.


----------



## nemesismx10 (Nov 8, 2010)

Orale, esa era mi duda sobre las perillas de temperatura y el nivel, gracias por la informacion. En cual hilo crees que pueda ir para poder hacer el reset que te comento para mi conteo?


----------



## nemesismx10 (Dic 9, 2010)

Como comentario extra, ya encontre la forma de aplicar el reset, buscando en el foro encontre como hacerlo. Gracias!


----------



## solaris8 (Ene 5, 2011)

*antiworldx* 
ya se que paso el tiempo, recien veo este tema , pero no pude dejar de decirte..... 
exelente trabajo, no solo limpio sino muy util


----------



## antiworldx (Ene 5, 2011)

Muchas gracias!


----------



## sfano01 (Mar 22, 2011)

Saludos antiworldx... no creas que no has ayudado... tu proyecto fue el precursor para el desarrollo de mi trabajo... Me basé en tu diagrama y desarrollé este que estoy subiendo ahora para aitor... Claro que tube que empezar de lo más básico ya que nunca pude estudiar electrónica, pero la necesidad de reparar una lavadora industrial me hizo perder varias noches de sueño hasta que logré este... 
Aqui va el diagrama... yo creo que falta ordenarlo un poco, pero ésta es la idea general...


----------



## aitor 1995 (Mar 23, 2011)

Justo el proyecto que necesito realizar sfano, pensaba en algo parecido con un 16F84, ya que la programación es mi principal problema, y de este hay bastante información, y gracias a antiworldx, por este hilo, ya me he propuesto llegar a comprender y dominar a estos bichejos. No obstante agradecería si ampliaras un poco mas la información del tuyo. Ahora despues de agradeceros no dejar morir el hilo, voy a revisar las diferencias de los pic.


PD: Antiworldx, me alegro de poder reencontrarte denuevo, espero que todas tus espectativas se cumplan, Un abrazo Amigo.


----------



## antiworldx (Mar 23, 2011)

Muchas gracias, y si, todo va marchando hasta ahorita... con su respectivo esfuerzo.

Por otro lado, te recomiendo usar un pic mucho mas grande, por la cantidad de señales que necesitas. Un pic4011 pudiera ser un buen sustituto del 8051 y hay mas gente que lo domina.
La informacion que dispongo toda esta ahi, incluso el firmware del 8051 esta por ahi en uno de los post.
Saludos y sigo al pendiente en lo posible...


----------



## sfano01 (Mar 25, 2011)

Que tal Aitor... Ahora te mando mi programa en Basic para que lo del circuito te funcione... Creo que tendras que hacer ciertas modificaciones de acuerdo a las funciones que quieras realice tu Maquina.
Heché un vistazo al diagrama que nombraste "variante" y si comparas con mi diagrama, yo no ocupo "cierre de puerta", "alarma de balanceo", ni tengo centrifugado alta velocidad ni achique... Asi que te va a tocar modificar el programa como sea...
Mi lavadora, al ser Industrial, no necesita mucha presision en la entrada de agua, asi que lo realiza por tiempo... Tengo un presostato que solo cumple la funcion de verificar si ha entrado un mínimo de agua para evitar que en el lavado entre al calentamiento de agua (que en esta máquina es por entrada de vapor) y prevenir un daño en la ropa que está lavando.
Tengo básicamente tres programas... Lavado largo, corto y sólo centrifugado, que se seleccionan a travez de tres diferentes pulsadores (cada uno asignado a una función)...
Mejor te mando el programa... revisalo y de ahi te voy respondiendo tus consultas, si hubiera alguna... 
Ojala te ayude en algo... Y recuerda que la idea es que aprendas esto de la programación, no que te hagamos todo el trabajo... 
El PIC que utilizo es el 16F877A... Si ocupas otro tendrás que modificar el valor de "CONFIG_WORD" que aparece al principio... 
Suerte...

Encontrarás archivo ".bas" que es el programa en basic, ese es el que debes modificar para adaptarlo a tu Lavadora... el ".hex" es el lenguaje de máquina, que es programa que se carga al PIC


----------



## miglo (Sep 17, 2014)

Buenas, estoy intentando hacer un programa para mi lavadora  en C por que se a quemado la tarjeta electrónica, mas en concreto un triac, aunque lo he sustituido por un equivalente supuestamente, no va, entra agua a golpes y cuando se supone que debe empezar el ciclo de lavado se queda esperando y no hace nada mas.
Después de varias comprobaciones creo que es la tarjeta, con el precio te quedas de piedra ya que para el modelo de mi lavadora el precio ronda los 230€. 
Tengo varias dudas con el programa, hay ciertos conceptos que no soy capaz de resolver, simplemente no doy para mas, es mas, usar interrupciones se me atraganta, y otros conceptos mas complicados pues aun mas,  el programa seguro que tiene muchos errores en el código, lo único que pido es que me expliquéis el por que de esos errores para yo comprender mejor las cosas.
Mi primer problema esta en que cuando se activa el presostato(esto es tanque lleno de agua) se pone a lavar, hace los ciclos de lavado luego desagua, aqui me falta solucionar lo del centrifugado, y vuelve a llenar el tanque asta que se activa el presostato, no se solucionar que el microprocesador sepa que, una vez llenado el tanque, con lo que vuelve a activarse el presostato y corta la entrada de agua, comience con el proceso de aclarado, digo esto por que me repite el ciclo como si empezase de nuevo, y claro esto me lleva de cabeza.
Y por otro lado pues no se como solucionar el tema del centrifugado ya que esta lavadora, cuando funcionaba bien, empieza poco a poco luego va subiendo de revoluciones y hace el centrifugado, y claro para esto supongo que habrá que usarse el pwm y hay ya se me hace oscuro, sobre todo por que utiliza triacs para todo, y según he leido en algun que otro tema, lo de subir o bajar revoluciones con triacs es complicado.
Pues eso si alguien me hecha un cable encantado y si nos pues a seguir leyendo toca, de todas formas solo por haberos leído esto ya me doy por contento.
Gracias de paso.
Añado el código y el programa en proteus.
Posdata: los 2 jampers simulan el cierre de puerta y el presostato.


----------



## D@rkbytes (Sep 20, 2014)

miglo dijo:


> Tengo varias dudas con el programa, hay ciertos conceptos que no soy capaz de resolver, simplemente no doy para mas, es más, usar interrupciones se me atraganta, y otros conceptos mas complicados pues aún más.
> El programa seguro que tiene muchos errores en el código.
> Lo único que pido es que me expliquéis el por que de esos errores para yo comprender mejor las cosas.


Estás anidando rutinas dentro del bucle principal del programa y por eso se generan errores.
Tienes que colocarlas fuera del bucle principal y después invocarlas.
También tienes rutinas repetidas o con el mismo nombre y no puede haber rutinas que se llamen igual.

La estructura básica que tienes que hacer, viene siendo así:

```
void inicio (void)
      {
         // mi código de inicialización.
      }
      
   void rutina_1 (void)
      {
         // Mi código de rutina 1
      }
      
   void rutina_2 (void)
      {
         // Mi código de rutina 2
      }
      
   
   void main (void)        // Inicio del programa.
      {
         inicio ();        // Invoco a rutina de inicio.
            
         while (true)      // Bucle del programa.
            {
               rutina_1(); // Invoco a rutina_1
               rutina_2(); // Invoco a rutina_2
            }              // Fin del bucle.
      }                    // Fin del programa.
```
También puedes inicializar algunas cosas antes de entrar al bucle del programa y realizar otras dentro del bucle.
Si quieres colocar las rutinas en otra parte del programa, tienes que declararlas en la cabecera.

Por ejemplo así:
void rutina_1 (void);
O así cuando es una función:
void funcion_1 (intX param_1, char param_2, etc, etc);

También te faltó agregar las librerías que estás usando, y eso es importante porque no todos las tenemos.

Suerte.


----------



## miglo (Sep 21, 2014)

En lo de las rutinas repetidas es un error por que se me olvido poner a presostato, presostato _1 y el _2, con esto queria decir aclarado_1 y aclarado_2, despiste mio, ahora he puesto lavado, aclarado_1 y aclarado_2.
En lo de la extructura basica si lo hago como dices tu colocando por un lado el inicio y dentro del while el bucle principal no va, cuando pulso D6 que es como si estubiese seleccionando un programa no obedece, pero si lo coloco dentro del bucle principal si, pero entonces es mas o menos parecido a lo que tenia yo, con lo que se repite el mismo problema, esto es, al tirar el agua la bomba de desagüe, como baja la presion el presostato, este se desactiva con lo que el microprocesador sabe que esta desactivado y cuando termina de desgüar da la orden de activar la electrovalvula para que vuelva a entrar agua y una vez se vuelve a activar el presostato se corta la entrada de agua y comienza el proceso de aclarado, aqui es donde se me genera el bucle cuando le doy al jamper, como si se activa el presostato despues de haberse vuelto a llenar el tanque, vuelve a comenzar el ciclo de lavado desde el principio y de hay no salgo.  
En lo de las librerias no se a cuales te refieres ya que las 2 que no uso, de momento, son las referidas a temperatura que lo hare mas adelante, de todas maneras por si lo que quieres decir es poner las del lcd, 1Wire y DS18B20-2.1 pues adjunto un nuevo archivo tal como lo he dejado ahora y con esas librerias.


----------



## D@rkbytes (Sep 21, 2014)

miglo dijo:


> al tirar el agua la bomba de desagüe, como baja la presión el presostato, este se desactiva, con lo que el microcontrolador sabe que está desactivado, y cuando termina de desaguar da la orden de activar la electrovalvula para que vuelva a entrar agua, y una vez se vuelve a activar el presostato se corta la entrada de agua y comienza el proceso de aclarado.
> Aquí es donde se me genera el bucle cuando le doy al jumper, como si se activara el presostato.
> Después de haberse vuelto a llenar el tanque, vuelve a comenzar el ciclo de lavado desde el principio y de hay no salgo.


Para saber lo que está ocurriendo con las rutinas del programa, usa el depurador (Debugger) de ISIS.
Así podrás ir siguiendo paso por paso las instrucciones del programa.
Coloca un punto de ruptura (Break Point) justo donde quieres comenzar la depuración.

Lo que puedo notar, es que te hace falta realizar mas comprobaciones durante el ciclo inicial y final, porque el programa continúa pase lo que pase.
Revisa bien la configuración de los pines que usarás como entradas y salidas, pues al iniciar con el jumper de cierre de puerta abierto, existen contenciones lógicas.
También te hace falta colocar resistencias pull-down en los pines de los sensores.
Y para un programa así, si será necesario que utilices interrupciones y que en vez de usar retardos uses bucles while para comprobar el llenado del tanque por medio de sensores.


miglo dijo:


> En lo de las librerías no se a cuales te refieres ya que las 2 que no uso, de momento, son las referidas a temperatura que lo haré mas adelante.


Cuando de momento no vayas a usar librerías en el programa, debes comentarlas.
¿Por qué? Porque pueden tener rutinas o nombres de variables que se repitan y podrían entrar en conflicto.
(No en este caso, pero es una recomendación.)

También te recomiendo que uses la librería LCD420.C que ya viene con el PCWHD Compiler de CCS.
No sé que versión tengas, pero creo que esa librería viene incluida desde hace tiempo.
Esto te lo menciono porque al ejecutar la simulación existen contenciones lógicas al usar la que adjuntas.

Suerte.


----------



## miglo (Sep 22, 2014)

Cuanta razon tienes, ya me habia dado cuenta con " falta realizar mas comprobaciones durante el ciclo inicial y final, porque el programa continúa pase lo que pase.", lo tengo mal configurado, es lo primero que voy a intentar areglar.
Nunca pense en eso "Cuando de momento no vayas a usar librerías en el programa, debes comentarlas."
"También te hace falta colocar resistencias pull-down en los pines de los sensores." Esto no lo hecho nunca mirare para ver como hacerlo.
"Para saber lo que está ocurriendo con las rutinas del programa, usa el depurador (Debugger) de ISIS.
Así podrás ir siguiendo paso por paso las instrucciones del programa.
Coloca un punto de ruptura (Break Point) justo donde quieres comenzar la depuración." no se hacerlo, voy a leer sobre el tema.
"será necesario que utilices interrupciones", esta es mi gran batalla !! aprender hacerlo ¡¡. estoy en ello.
" en vez de usar retardos uses bucles while para comprobar el llenado del tanque por medio de sensores." en esto te agradeceria algun ejemplo que pueda comprender, si es posible.
De todas maneras tampoco quiero pecar de ser un pesao.
En lo que me defienda voy a intentar hacerlo y en lo que no comprenda, ya que me has dado ideas, voy a leer mas.
Gracias.


----------



## D@rkbytes (Sep 22, 2014)

miglo dijo:


> D@rkbytes dijo:
> 
> 
> > Será necesario que utilices interrupciones.
> ...


No es complicado y mucho menos si lo haces con PCWHD Compiler.


miglo dijo:


> D@rkbytes dijo:
> 
> 
> > En vez de usar retardos uses bucles while para comprobar el llenado del tanque por medio de sensores.
> ...


Aquí te dejo un ejemplo usando interrupciones por RB0 y por RB4<>RB7, más un uso del bucle while.
También puedes usar las interrupciones de los timers y otros periféricos.

Nota:
El ejemplo contiene una simulación preparada con depuración.
Cuando se ejecute el evento donde se colocaron los puntos de ruptura, aparecerá la ventana de depuración.

Suerte.


----------



## miglo (Sep 24, 2014)

Un par de preguntas,





> aparecerá la ventana de depuración


te refieres a que al pulsar alguna de las interrupciones, salvo rb1 el programa de proteus se pone en pause?,si es asi yo tenia entendido que cuando se utiliza una interrupcion el programa se para para efectuar lo que esta en esa interrupcion y una vez ejecutado el programa continua con lo que estaba haciendo, aqui si no pulso play se queda parado, una vez pulsado play continua.
La otra pregunta es dos preguntas dentro de una misma, en el archivo main dentro de "void main (void)" aparece esta que visto en muchos archivos pero que no comprendo 1º si se pone enable_interrupts(global); ¿no serviria esta funcion para todas las interrupciones? si fuese asi, ¿cual es el sentido de poner "enable_interrupts(int_rb);" y "enable_interrupts(int_ext);".
Y la ultima pregunta, despues de enable_interrupts(int_ext); la siguiente funcion es "ext_int_edge(H_TO_L);",aunque he leido sobre esto no entiendo lo de por flanco de subida o de bajada como es este caso, ¿eso para que se usa, o cual es su funcion concretamente?.
estoy con lo de configurar el incio, nada mas lo tenga te lo enseñare para ver que te parece, es que voy un poco liado con el trabajo y voy teniendo pocos ratos libres.
Venga.


----------



## D@rkbytes (Sep 24, 2014)

miglo dijo:


> Un par de preguntas. ¿Te refieres a que al pulsar alguna de las interrupciones, salvo rb1 el programa de proteus se pone en pause?
> Si es así yo tenía entendido que cuando se utiliza una interrupción el programa se para para efectuar lo que esta en esa interrupción y una vez ejecutado el programa continúa con lo que estaba haciendo, aquí si no pulso play se queda parado, una vez pulsado play continúa.


Así es, pero eso lo hace el microcontrolador en tiempo real.
Cuando estás depurando un programa, lo que detiene la secuencia es el depurador.
Y sólo lo hace precisamente sobre los puntos de ruptura puestos, no exclusivamente sobre las interrupciones.
Los puntos de ruptura se colocan en este caso sobre las instrucciones del programa. (Código escrito)
Y esto se hace dando doble click sobre la instrucción o usando los botones de la ventana de depuración.
Para comprender más acerca de esto, si será necesario que tomes algún curso sobre ensamblador.


miglo dijo:


> La otra pregunta es dos preguntas dentro de una misma.
> En el archivo main dentro de "void main (void)" aparece esta que he visto en muchos archivos pero que no comprendo.
> 1º si se pone enable_interrupts(global); ¿no serviría esta función para todas las interrupciones?
> Si fuese así, ¿cual es el sentido de poner "enable_interrupts(int_rb);" y "enable_interrupts(int_ext);".
> ...


Lo que pasa es que cada interrupción tiene su bit de activación/desactivación.
Aquí tienes que leer la hoja de datos para saber en que registro se encuentran.

*Enable_Interrupts (Global);* Habilita todas las interrupciones que se hayan activado.
Es como un switch de activación general que actúa sobre el bit 7 (GIE) del registro INTCON
Posiblemente también actúe sobre el bit 6 (PEIE) del mismo registro INTCON (Interrupts Control)
Y no se habilitan todas, pues cada una se activa/desactiva de forma independiente.

*Disable_Interrupts (Global);* Lo hace de forma inversa.
Y también actúa únicamente sobre las interrupciones que hayan sido activadas con su respectivo bit.

Sobre los flancos de subida o bajada *H_TO_L* y *L_TO_H*, no es difícil entenderlo.
Por ejemplo; tienes un sensor que al accionarse da un pulso negativo.
Entonces requieres que la detección de la interrupción ocurra por flanco descendente.
*H_TO_L* = *High To Low *o *Alto a Bajo* o de *1  a 0*.

Es decir, si usas la interrupción por RB0, necesitas configurar que el evento ocurra cuando el estado de RB0 pase de Alto a Bajo.

Y para el caso de *L_TO_H* es todo lo contrario a lo anterior.
Esta selección en el PIC16F877A se establece en el bit 6 (*INTEDG*) del registro *OPTION_REG*
Y es precisamente sobre este bit donde actúa la instrucción *Ext_Int_Edge (X_TO_X);*

Por esto, siempre es bueno que le den una buena leída a la hoja de datos del PIC con el que se va a trabajar.

PD:
Los documentos de ayuda de PCWHD Compiler y PROTEUS, también contienen bastante información.

Saludos.


----------



## miglo (Sep 25, 2014)

```
Es decir, si usas la interrupción por RB0, necesitas configurar que el evento ocurra cuando el estado de RB0 pase de Alto a Bajo.
```
Gracias, ahora si lo he entendido. alto quiere decir que al hacer la interrupcion le pones, al pin en cuestion, en este caso RB0, tension (5 voltios o los que se consideren) y bajo, que el pin lo ponemos, en la interrupcion, a masa o negativo. 

```
será necesario que tomes algún curso sobre ensamblador
```
  mirare de leer sobre ensamblador pero no me quiero liar mucho por que con lo que me cuesta aprenderrrr, mas que nada por que gusta mucho C.


----------



## miglo (Oct 9, 2014)

Bueno D@rkbytes despues de un tiempo intentando dar soluciones, de momento para salir del paso, esto es como llevo el tema, tengo que decir que aun me falta incorporar el tema de temperatura, centrifugado, lavado normal, ropa sucia, muy sucia.
Dime como lo ves, que opinas de como lo llevo o si devo corregir algo.
Los tiempos son a mero modo de ejemplo.


----------



## D@rkbytes (Oct 9, 2014)

miglo dijo:


> Bueno D@rkbytes después de un tiempo intentando dar  soluciones, de momento para salir del paso, esto es como llevo el tema.
> *¿Dime cómo lo ves, qué opinas de como lo llevo o si debo corregir algo?*


Mal, volviste a ingresar subrutinas dentro del bucle principal del programa.
_*Ya te había explicado sobre eso*_.

Tienes que estructurar tu programa sin anidar las subrutinas dentro del bucle principal.
Posteriormente las puedes llamar dentro del bucle, pero no deben estar dentro.


----------



## miglo (Oct 10, 2014)

Pregunta, te refieres a como lo hecho en el archivo que adjunto ahora?, si no es asi no me aclaro a que te refieres.


----------



## D@rkbytes (Oct 10, 2014)

miglo dijo:


> Pregunta; ¿te refieres a cómo lo he hecho en el archivo  que adjunto ahora?





D@rkbytes dijo:


> Tienes que estructurar tu programa sin anidar las subrutinas dentro del bucle principal.
> Posteriormente las puedes llamar dentro del bucle, pero no deben estar dentro.





miglo dijo:


> Si no es así no me aclaro a que te refieres.





D@rkbytes dijo:


> _*Ya te había explicado sobre eso*_.


Mira la explicación de la estructura básica que te expuse en ese mensaje. (_*#88*_)

Anteriormente ya habías sacado las subrutinas del bucle principal, pero nuevamente las volviste a colocar.

Lo que tienes que hacer, es colocar las subrutinas fuera del bucle, pero no las incluyas dentro de él.

Mira la foto adjunta para que veas el error que aparece cuando haces eso.
Ahora en este programa sólo te falta sacar un subrutina, en el programa anterior las incluiste todas.


----------



## miglo (Oct 11, 2014)

Eso lo habia entendido, creo yo, pero resulta que el compilador que tengo, yo, no me marca ningun error y compila bien y al probarlo en proteus va todo correcto, por eso primero los habia puesto dentro del while, aunque tu me indicaste fuera, y luego cuando me digiste pense que querias decir que las rutinas menos importantes las dejase fuera del while y la que realiza la funcion principal dentro, todo habiendo entendido lo que decias, pero como probe por que me surgia un problema no recuerdo, en concreto, ahora cual, pues lo puse asi y el compilador tiraba bien.
Bueno ahora me acuerdo el problema me venia dado por que quiero poner el tiempo en cada proceso de lavado y no me salia como hacerlo, creo que tengo la solucion pero estoy haciendo pruebas.
Esto biene dado por que tengo otra lavadora que es con la que estoy tomando las referencias y en esta me marca el tiempo que cuesta cada clase de lavado, aunque me podido darme cuenta que tambien los buenos programadores cometen algunos despistes, digo esto por que contando el tiempo de lavado vi que tiene 3 errores en los tiempos ya que de 22' salta a 19', cuando deveria pasar a 21' y luego de 10' pasa a 8' y cuando termina de lavar, que en teoria deve estar en 0 minutos, esperar un tiempo, despues del cual desconecta el seguro de puerta, pues se queda un rato luego desconecta el seguro y luego se pone a 0 minutos.   
Adjunto el archivo de como esta ahora que creo entender es lo que me explicastes.
Vuelvo a repetir que los tiempos que pongo son a modo de ejemplo solo.



Una cosa que se me olvida, como haces para poner, cuando quieres referirte a una parte del texto de otro miembro del foro, eso que sale con los simbolos el nombre al que te refieres y luego "dijo:->"


----------



## D@rkbytes (Oct 11, 2014)

miglo dijo:


> Eso lo había entendido, creo yo, pero resulta que el compilador que tengo yo, no me marca ningún error y compila bien y al probarlo en proteus va todo correcto.


Te recomiendo que si puedes, actualices tu compilador. (Que no te indique esos errores está muy mal)

Nota bien los mensajes que da ISIS durante la simulación pues existen contenciones lógicas.
Esto es debido a la librería que estás usando para la pantalla.
Utiliza esta que no tiene problemas y está modificada para trabajar por el puerto D. LCD420

También te recomiendo que coloques resistencias pull-up/pull-down en los pines de entrada.
Puedes utilizar las resistencias pull-up internas del puerto B si lo deseas.


miglo dijo:


> Adjunto el archivo de como está ahora que creo entender es lo que me explicaste.
> Vuelvo a repetir que los tiempos que pongo son a modo de ejemplo.


Pues va algo mejor, pero no como tiene que ser.

Tienes que realizar una rutina previa de funciones.
Es decir...
* Verificar tipo de programa seleccionado por el usuario. (Establecer programa por defecto.)
* Verificar puerta cerrada, esperar orden de inicio. (Avisar si la puerta está abierta)
* Iniciar programa.
* Resto de comprobaciones durante programa.
* Final del programa.

Si quieres hacer un programa sencillo puedes hacer una rutina básica, pero siempre con comprobaciones.


miglo dijo:


> Una cosa que se me olvida; ¿cómo haces para poner, cuando quieres referirte a una parte del texto de otro miembro del foro, eso que sale con los símbolos el nombre al que te refieres y luego "dijo:->"?


En la parte de abajo a la derecha del mensaje se encuentra una etiqueta que dice "Citar"
Si haces click sobre ella, aparece la ventana de edición con el mensaje envuelto y con su referencia.
Puedes copiar la referencia, separar los bloques del texto e irla añadiendo al principio de cada mensaje a citar y con su respectivo "[/quote]" al final para cerrar la cita. (Sin comillas)

Saludos.


----------



## miglo (Oct 12, 2014)

D@rkbytes dijo:


> Tienes que realizar una rutina previa de funciones.
> Es decir...
> * Verificar tipo de programa seleccionado por el usuario. (Establecer programa por defecto.)
> * Verificar puerta cerrada, esperar orden de inicio. (Avisar si la puerta está abierta)
> ...



Lo de establecer "programa por defecto" ya habia pensado en ello, estoy en ello, pero poco a poco que yo termino de llegar a este mundo, otra cosa es que lo haga bien.

En lo de la puerta no se si lo he hecho bien pero mi idea tal y como lo he puesto es que cuando activas la primera tecla automaticamente se activa el seguro y ya no se puede abrir la puerta por mas que quieras salvo que se corte la corriente.

En lo de resto de comprobaciones pues esoo, mas de lo mismo voy poco a poco.





D@rkbytes dijo:


> Puedes copiar la referencia, separar los bloques del texto e irla añadiendo al principio de cada mensaje a citar y con su respectivo "


" 

Ya me voy defendiendo un poco con esto, jejeje. Gracias





D@rkbytes dijo:


> Te recomiendo que si puedes, actualices tu compilador. (Que no te indique esos errores está muy mal)
> 
> Nota bien los mensajes que da ISIS durante la simulación pues existen contenciones lógicas.
> Esto es debido a la librería que estás usando para la pantalla.
> Utiliza esta que no tiene problemas y está modificada para trabajar por el puerto D. LCD420"


"

Ya la he puesto, es mas, la he guardado y asi la tengo para el puerto D, por que tengo la misma pero es para el puerto B y encima me ocupa menos memoria, que todo cuenta.
Me volvi un poco mico por que no me di cuenta de cambiar las salidas en proteus y no me iba, jeje. Gracias


----------



## miglo (Dic 21, 2014)

Bueno pues despues de un tiempo con mi programa para mi lavadora creo que avanzado algo pero en estos momentos estoy atascado con lo siguiente que no se como resolver, por eso espero ver si me echais un cable, me explico:
Donde estoy atascado es que cuando cierro la puerta y pulso uno de los dos programas, en este caso centrifugar o lavar, asta que no lo resuelva no puedo añadir mas, pues si por lo que sea se da el caso de que lo que pulsado me equibocado y quiero cambiar de programa se me queda bloqueado y no puedo cambiar salvo que en proteus le de al reset, cosa por cierto que tambien tengo como problema por que el mando de programas de mi lavadora es manual y si por lo que sea una vez puesto un programa quiero parar la lavadora, poniendo el mando en paro, el microcontrolador no me responde y sigue haciendo el programa y aqui es donde estoy, tambien, atorado y no se como hacerlo.

como no me aclaro para camiar el archivo rar pues lo hago de esta manera


----------



## D@rkbytes (Dic 21, 2014)

miglo dijo:


> Donde estoy atascado es que cuando cierro la puerta y  pulso uno de los dos programas, en este caso centrifugar o lavar, hasta  que no lo resuelva no puedo añadir mas, pues si por lo que sea se da el  caso de que lo que he pulsado me he equivocado y quiero cambiar de programa, se  me queda bloqueado y no puedo cambiar, salvo que en proteus le de al  reset, cosa por cierto que también tengo como problema porque el mando  de programas de mi lavadora es manual y si por lo que sea una vez puesto  un programa quiero parar la lavadora, poniendo el mando en paro, el  microcontrolador no me responde y sigue haciendo el programa y aquí es  donde estoy también atorado y no se cómo hacerlo.


Es que deberías usar más interrupciones para realizar comprobaciones, por ejemplo, las del puerto B (RB4<>RB7)
También será necesario que sustituyas los delay_ms(); por una rutina de bucle para que el uC no se trabe.
Algo así:

```
void retardo (int16 milisegundos)
{
int16 x;
   for (x=1;x<=milisegundos;++x)
   {
      delay_ms(1);
   }
}
```
Y lo llamas de esta forma, por ejemplo: retardo(1000); // 1 segundo de retardo.

Recuerda que el programa es secuencial y que no se puede salir hasta que se llegue al final de la rutina.
Y si utilizas retardos largos con delay_ms(); no se atenderán las interrupciones hasta que termine el periodo. (No ocurre ésto si lo haces con el bucle mencionado.)

Nota:
Yo sigo viendo una mala estructura del programa y realizar un programa de este tipo debe llevar una estructura y un control más estrictos.
Tal vez por ahora estés realizando una simulación, pero hacen falta resistencias pull-down en algunas entradas.


----------



## miglo (Dic 22, 2014)

D@rkbytes dijo:


> deberías usar más interrupciones para realizar comprobaciones, por ejemplo, las del puerto B (RB4<>RB7)



Eso ya lo he pensado pero en tanto en cuanto no resuelva otros temas eso lo dejo para mas tarde





D@rkbytes dijo:


> será necesario que sustituyas los delay_ms(); por una rutina de bucle para que el uC no se trabe.
> Algo así:
> 
> ```
> ...


Esto no lo sabia que se puede trabar el programa, si por ejemplo yo pongo un retardo de 4 segundos no viene a ser, mas o menos, lo mismo que como tu lo pones en tu ejemplo?.





D@rkbytes dijo:


> Nota:
> Yo sigo viendo una mala estructura del programa y realizar un programa de este tipo debe llevar una estructura y un control más estrictos.


Yaaa, pero intento, en la medida de lo posible, hacerlo lo mas correcto partiendo de que no soy ningun programador y que voy aprediendo a pasos agigantados con lo que leo y lo que me enseñais personas como tu, gracias a todo eso me voy fijando en los procesos de la lavadora que tengo en casa y con todo un poco pues intento hacerlo, de hay que cuando en el proceso hago, a mi manera, una funcion y luego quiero cambiar a otra, ya sea por que me equibocado al querer realizar un proceso o bien por cualquier circustancia inesperada pues me quedo, como indicaba en el post anterior, atascado y no se como solucionar o mejor dicho que sentencias o funciones poner para salir del atasco.
Gracias por la informacion que me has aportado esta vez,voy haber si soy capaz de mejorar la cosa.
Postdata: en lo de mala estructura del programa ¿cuales son los pasos que, segun tu, ves que hago incorrectos?.


----------



## D@rkbytes (Dic 22, 2014)

miglo dijo:


> Eso ya lo he pensado pero en tanto en cuanto no resuelva otros temas eso lo dejo para mas tarde


OK. Porque si sería muy conveniente.


miglo dijo:


> Esto no lo sabia que se puede trabar el programa, si por ejemplo yo pongo un retardo de 4 segundos no viene a ser, mas o menos, lo mismo que como tu lo pones en tu ejemplo?.


Si creas un bucle con retardos de 1ms. Será más fácil que se pueda romper si ocurre una interrupción, pues es un periodo relativamente corto.
Los retardos afectan más que nada a atender otros puertos, no tanto sobre las interrupciones.
 Y ésto en el caso de PIC C Compiler, en otros lenguajes de alto nivel cómo PIC Basic, si se congela el microcontrolador ante interrupciones.


miglo dijo:


> Yaaa, pero intento, en la medida de lo posible,  hacerlo lo mas correcto partiendo de que no soy ningún programador y que  voy aprendiendo a pasos agigantados con lo que leo y lo que me enseñáis  personas como tú.
> Gracias a todo eso me voy fijando en los procesos de  la lavadora que tengo en casa y con todo un poco pues intento hacerlo,  de ahí que cuando en el proceso hago a mi manera una función y luego  quiero cambiar a otra, ya sea por que me he equivocado al querer realizar  un proceso o bien por cualquier circunstancia inesperada, pues me quedo, como indicaba en el post anterior, atascado y no sé cómo solucionar o  mejor dicho que sentencias o funciones poner para salir del atasco.


Pues sí, lo que pasa es que estás realizando un programa algo complicado para un novato.
Sin embargo has ido aprendiendo, dentro de poco podrás terminar el programa y con el tiempo podrás mejorarlo.


miglo dijo:


> Gracias por la información que me has aportado esta vez.
> Voy a ver si soy capaz de mejorar la cosa.
> Postdata: En lo de mala estructura del programa, ¿cuales son los pasos que, según tú, ves que hago incorrectos?


De nada.
Lo que tienes que hacer, es crear rutinas independientes para que no se realice un solo proceso en un único bucle.
De esta forma ordenas el programa, lo haces más comprensible para ti mismo, consigues una mejor depuración y tienes la posibilidad de hacer ciclos no redundantes y con más comprobaciones.

Suerte.


----------



## Meta (Feb 14, 2015)

Hola:

¿Cómo va el proyecto?

¿Ha sido montado y usado que todavía no me he enterado?

Saludos.


----------



## miglo (Feb 16, 2015)

Estoy en ello sin parar, lo que pasa es que no resuelvo un problema que me ha surgido con la dichosa LCD 4x20 y asta no resolverlo no puedo seguir, por cierto y aprobecho para preguntar, por que creo que tiene que ser algo que se me escapa en la lcd 4x20, me explico, al encender, la tarjeta que tengo con los leds indicadores de las funciones se posiciona bien, osea se enciende el led rojo que me dice que el programa esta parado esperando las ordenes pertinentes, como no soy capaz de hacer que se encienda bien la LCD pues no puedo seguir y me temo que igual es alguna configuracion ya que este LCD lo compre en ebay y creo que pone algo de para arduino, no recuerdo muy bien, y esa es mi pregunta para si alguien sabe el por que de que se ilumine tan raramente y me explico, cada vez que enciendo se ilumina como con poca luz y solo se iluminan 2 filas intercaladas y no sale texto ni dato alguno, alguien puede tener idea de que puedo estar haciendo mal?



Te comento, un pequeño problema lo he resuelto, es el de la iluminacion, "a medias", te explico, resulta que este disply lleva retroiluminacion y no me di cuenta, una vez hecho se ilumina con fuerza pero sigo teniendo el mismo problema, solo se iluminan dos linias y no consigo que salga informacion por las linias por lo tanto si alguien de indica el por que pues estare agradecido ya que de lo contrario estoy atascado.
Un saludo





Bufffffff, por si faltaba poco termino de descubrir que la tarjeta de los pulsadores me equibocado en casi todo, un desastre por mi parte, jeje, no si ya se dice que por la noche todos los gatos son pardos, o lo que por la noche se hace por la mañana se ve jejeje, nada a volver hacer la tarjeta de los pulsadores y a prestar mas atencion,"una pequeña cagada por mi parte", cuando lo corriga vere si entonces funciona bien la lcd, ya contare el resultado.


*[Edita tus comentarios en lugar de crear nuevos]*


----------



## Meta (Feb 16, 2015)

Hola:

No pasa nada, es normal, ya que el equivocarse y los errores forman parte del aprendizaje.

Hace tiempo dejé la versión del PIC16F886/887 en ensamblador o asm y me metí en Arduino porque acabas muchísimo antes, encuentras errores de programación mucho antes. Cuando acabe que me queda mucho y llevo desde el 2012 analizando mi lavadora para imitarlo, lo presentaré con todo su explendor.

Ánimos y adelante.


----------



## miglo (Feb 17, 2015)

Gracias fogonazo por editarlo, se me olvido.
Meta te comento una cosa por si te sirve de ayuda que es como lo are yo cuando lo tenga hecho, espero que si, en la lavadora que tengo, y a la que que quiero hacer el control, no utiliza reles, la tension tanto de las electrovalvulas como de la bomba de desagüe se activa a traves de triacs directamente y estos a su vez a traves de transitores que reciben los pulsos del micro, cosa que no me esperaba ya que yo hubiese usado optoacopladores, de hcho asi lo are, mas que nada por separar la tension de 230 del resto del circuito , para lo que es el motor si utiliza reles.
Por cierto es una bosch


----------



## Meta (Feb 17, 2015)

Holas:

He sacado algunos vídeos de mi lavadora para tomar nota en cada programación. En mi lavadora solo usan 4 relés. Dos para el motor. Uno para la seguridad del motor por si se recalienta, es decir, si detecta mucha temperatura o en la resistencia para calentar el agua o otra cosa, simplemente se activa, el último es del propio calentador.

Las dos electroválvulas, el cierre de la puerta, el arranque del motor funcionan con triac. Aunque mi idea es hacerlo con un módulo de 8 relés, pero me lo estoy pensando mejor. Al final compraré el otro módulo de 4 relés y los demás a triac como debe ser.

Le puse Led directo a 220 VAC en paralelo a las electroválvulas y otra en el motor de salidad de agua de color *naranja*. Los *rojos* son de 24 VDC directo de los 4 relés, 2 cambio giro motor, seguridad de motor, y el calentador o resistencia. Los Led *verdes* son de fábrica.



Leds colocalo en la lavadora.


He seguido los pasos en un cuaderno cuando se encienden y apaga cada Led, en el cual seguiré revisando por si me escapa algo. Quiero hacerlo lo más parecido posible. Los 8 relés es para empezar rápido, si veo que funciona, haré ya la palca casera con sus 4 relés y los demás a triac. 

Saludos.


----------



## miglo (Feb 17, 2015)

Haber Meta tranquilizate, por lo que dices es parecida a la mia, la tarjeta de mi lavadora solo usa 3 reles.
Otra cosa! eso de poner led directo a 220Vac ¡¡estas jugando con fuego!!, es mas sencillo cuando se da la orden de activar las electrovalvulas a la misma vez activa el led que indica esa tarea pero no lo pongas a 220Vac que te puedes llevar un susto.
Lo de motor de salida de agua supono que te refieres a la bomba de desagüe ¿no es asi?, pues lo mismo pones como con las electrovalvulas


----------



## Meta (Feb 17, 2015)

Trankis.
Esos relés los compré así preparado para ello con su porta led, dentro de ella tiene resistencia de 47000 Ohmios y un 1N4007. Va de maravilla y los dos primero sde las electroválvules ya llevan un año de uso.


----------



## miglo (Feb 19, 2015)

Meta te comento que ya he resuelto el problema del lcd, era otra pequeña _macana_ por mi parte, habia soldado, sin darme cuenta, los pins 14 y 15 entre si y como el 15 le asignado una tarea pues este era el error, una vez reparado ya funciona todo como deve ser.


----------



## Meta (Feb 19, 2015)

Menos mal.

Cuando acabes todo, a subir fotos y vídeos. Siempre me ha gustado estas cosas.


----------



## Ata (Ene 21, 2016)

¡Hola!
Disculpe traducción de Google ...
Proyectos interesantes, hicieron un control de velocidad del motor fase con triac?


----------



## miglo (Ene 21, 2016)

Si esa es la idea, mira un ejemplo de como quiero manejar el motor.

Esta en el archivo


----------



## Ata (Ene 21, 2016)

Gracias .... estudio ...


Vamos a la inserción LAVADO Como ver de un programa.
No Pude Encontrar un completo programa.
Gracias de Nuevo.


----------

