Autor Tema: programa para control de lavarropas automatico  (Leído 119028 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Fer_TACA

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4154
Re: programa para control de lavarropas automatico
« Respuesta #210 en: 05 de Octubre de 2012, 13:07:11 »
Hola Serdio,

primero es la obligacion y despues los pic :D :D :mrgreen:

He mirado la rutina del centrifugado. Es cierto que habias puesto la bomba en marcha, pero no veo que la desconectes nunca.
Adjunto el programa corregido con una forma d realizarlo. No me agrada mucho pero para que lo puedas entender lo pongo como lo veo. Dejo los bloques como "INHABILITADOS" para que veas lo que he cambiado. pero ya te digo que el final no me gusta es francamente mejorable, pero está asi para que lo entiendas.

Otra cosa que debes de apuntar para las mejoras es:
- En la rutina de centrifugado se vuelve a repetir parte del proceso del programa de lavado, esto debes de eliminarlo y despues cuando termine el lavado, si el programa tiene centrifugado, pues se le llama a esa rutina "SOLO" de centrifugado.

De esta forma se va optimizando el código.

F.
Todos los días se aprende algo nuevo.

Desconectado Fer_TACA

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4154
Re: programa para control de lavarropas automatico
« Respuesta #211 en: 05 de Octubre de 2012, 13:26:35 »
Bueno para ahorrarte un poco el trabajo de la mejora te adjunto lo cambiado.

- Añadir rutina de centriguado
- Mejora de rutina de estado_centrifugado: Elimino todo y dejo solo la deteccion del interruptor para saber si ha seleccionado o no el centrifugado.
- En  la rutina del programa 1: Añado rutina de centrifugado.


Luego todavia se pueden mejor mas cosas que s repiten siempre varias veces como son los sentidos de giro de los motores. Apuntatelo para añadir mas soimplificaciones y mejoras.

Fermin.
Todos los días se aprende algo nuevo.

Desconectado lucegiar2005

  • PIC24F
  • *****
  • Mensajes: 504
Re: programa para control de lavarropas automatico
« Respuesta #212 en: 05 de Octubre de 2012, 20:33:37 »
Hola Fermin, Sergio, buenas noches a quienes lean. Va tomando forma el programa, espero que le este brindando conocimientos a Sergio y a quienes han seguido este post buscándolo. Me llama la atención, no lo he visto antes, que el inicio del programa me muestra como una etiqueta blanca, tal como si fuera un salto a una etiqueta. También que, por un detalle que noté, quise consultar los registros declarados y se tildó la maquina en 3 oportunidades. Lo que noté como, a mi entender, raro es lo que detallo pero dejo a Sergio que lo modifique, es esto:
-En enjuague_2 no se ha reseteado el contador enjuague, con lo que solo se cumplirá 1 vez y saldrá.
-En Centrifugado si bit centrifugado=1 sale, con 0 asigna centrifugado a estado_centrifugado (que será 0) compara igual que antes, ahora compara los bits por iguales y ¿si no son iguales continúan?, con 1 debería salir como antes me parece. Además si eran iguales antes de salir asigna 0 a estado de centrifugado, valor que ya tiene.
_¿Usa lavado_1 para el conteo?
_En esta rutina debe serse cuidadoso de que el ultimo sentido de giro de marcha lenta coincida con el giro del motor en rapida, sobre todo si se aprovecha la inercia para el inicio de esta.

Espero comentarios sobre acierto o desacierto de lo que comenté.
Un abrazo y lindo fin de semana, que en Argentina es largo por suerte.
- Santiago -

Desconectado sergioandres

  • PIC16
  • ***
  • Mensajes: 168
Re: programa para control de lavarropas automatico
« Respuesta #213 en: 07 de Octubre de 2012, 20:56:52 »
Hola Santiago, Fermin y todos los concurrentes.
Para Fermin: estuve viendo las mejoras y veo como se aclara el programa, en cuanto a acortar las repeticiones de eventos, con rutinas, tengo claro cuales son, pero no se como se deberían implementar, rutinas dentro de rutinas, no se si se pueden y los tiempos por TMRO. Tendrás que enseñarme como hacerlo modificando algo del programa y explicármelo y yo podré hacer el resto. Hay un ejemplo de TMRO que esta en la página de NIPLE, lo hizo Jorge cuando hicimos el programa del motor, lo miro, más o menos lo entiendo.
Pregunta: como es eso de deshabilitar los bloques, los cambios no se guardan?
Faltaría para terminar los cinco beep y podríamos, si ya esta terminado poner los códigos de error y la seguridad para rutinas incompletas por roturas u obstrucciones o demás.
Tambien te pido leas el word

Santiago no te preocupes por el color del icono de inicio, he lavado tanto con el programa que seguro se destiño, habrá que reponerlo cuando terminemos je je jeje.
Santiago te pongo en el Word lo que tuve intención de hacer, si no se logro espero las correcciones, también hice unas correcciones según tus apreciaciones y espero estén bien.
Yo se que las explicaciones que pongo son muy extensas pero creo que para quienes quieran entender el porque, de cómo esta realizado y el razonamiento que utilizo puede ser constructivo, por eso pongo tanto énfasis en que lo lean y corrijan.
Un Abrazo fraternal Sergio.

Desconectado lucegiar2005

  • PIC24F
  • *****
  • Mensajes: 504
Re: programa para control de lavarropas automatico
« Respuesta #214 en: 07 de Octubre de 2012, 22:47:48 »
Hola a todos, como están? Acá un poco húmedos pero disfrutando del finde largo.
Sergio: he leído tu word y creo que ese debe dar reflejo en un código acompañado de una descripción corta y clara, que defina lo hecho con pocas palabras. Te confieso que tanto ir y venir ya estoy desorientado, creo que no te detienes a pensar en algunas cosas que hacen al programa y lo simplifican, me refiero a que en centrifugado consultas el estado del presostato, ¿para qué?, si antes de llegar a esta rutina se realizó un desagote, si el agua que se junte la irá sacando durante la función, y solo será la que quedaba en la ropa. Yo creo que no hace falta, ni los 60 segundos posteriores.
Se que Fermin me lleva mucho conocimiento y experiencia, además de tener distintos modos de programar, humildemente digo que no veo la necesidad de usar temporizadores internos, no veo funciones que ameriten tal prioridad, y si te fijas en lo que hice dejé RB0 libre, con el tengo una interrupción por errores cuando ocurran. Como ves hay distintos modos para lo mismo.
Creo recordar además que cuando viniste vimos los TMR, e hicimos un programita, dijiste entenderlo, no entiendo que ahora no lo hagas.
Como te dije antes no voy a modificar código, te indicaré lo que creo y luego vos decides que hacer, los word no me dicen con claridad lo que veo en un código, que con errores o no, reflejan el concepto conque se encara el programa, realizá un diagrama del circuito que harás, en base a el, y no solo a un listado, desarrolla el soft, los emuladores te permiten probar lo que haces y corregirlo, y si no puedes están los foros, pero antes el hacer es lo que permite llegar con preguntas puntuales. Perdoná los consejos, son de onda, pero veo que si sigue así estaremos mucho más sin arribar a algo terminado, jugate con lo que creas se debe hacer y Proteus, aprenderás rápido y mucho, Un abrazo 
- Santiago -

Desconectado Fer_TACA

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4154
Re: programa para control de lavarropas automatico
« Respuesta #215 en: 08 de Octubre de 2012, 01:59:50 »
Hola amigos,

miraré lo realizado y en cuanto tenga un rato, esta semana va a estar dificil haste el martes o miercoles, y oe respondere´a todo lo cuestionado o planteado.

Asi, mismo y creo que seria bueno, realizaré un pequeño resumen de lo realizado hasta ahora, lo plantado inicialmnete y posibles avanzes.

Sergio: intentaremos aunque no se aplique todavia en este proyecto como funcionan las interrupciones.

F.
Todos los días se aprende algo nuevo.

Desconectado Fer_TACA

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4154
Re: programa para control de lavarropas automatico
« Respuesta #216 en: 11 de Octubre de 2012, 13:33:32 »
Hola amigos:

Ya estoy por aqui de nuevo despues de un poco de trabajo y medio recuperarme de un catarro.
En primer lugar paso a describirte Sergio un poco lo que es una interrupcion, espero saber hacerme entender si no es asi pregunta. Despues me descargare lo ultimo realizado y mas tarde comento algo al respecto. Vayamos con la interrupcion:
Código: [Seleccionar]
Una interrupción es un mecanismo por el cual un evento interno o externo puede interrumpir la ejecución de un programa. A partir de eses momento se produce un salto a una subrutina de atención a la interrupción, Es decir se atiende inmediatamente dejando de realizar lo que se realiza hasta ese momento, se ejecuta o indicado en la rutina de interrupción después al finalizar esta se retorna al programa en el sitio donde se dejó en el momento de producirse la interrupción.
Pueden existir distintas interrupciones dependiendo del pic utilizado y algunas de las más usuales son: desborde de temporizadores internos (TMR0, TMR1, TMR2,…);  fin de conversión de conversores analógicos/digitales;  cambio de estado en las líneas RB4 a RB7; por flanco en algún pin (RB0);….

Paso a comentar un poco la interrupción por el desborde por TMR0:
A partir de la frecuencia tomada del cristal externo, si  así  se configura el hardware, el pic internamente  trabaja con una frecuencia de oscilación que suele ser la 4 parte de la frecuencia de oscilación. Esta frecuencia se utiliza para sincronizar el conjunto de instrucciones de programa.
Por su parte el TMR0, es un timer (registro interno) que puede ser leído y escrito su valor en cualquier momento, que puede ser  configurado como contado ascendente r o como temporizador. Ahora nos centraremos en su funcionamiento como temporizador. Para ello va contando internamente los impulsos (frecuencia del cristal) divididos por 4. Estos impulsos tienen una duración conocida de un “ciclo maquina” que es 4 veces el periodo de la señal de reloj. Como ejemplo para una frecuencia de 4MHz el TMR0 se incrementa en una unidad cada 1micro segundo.
Para que se pueda trabajar con una interrupción por desborde del TMR0, se debe de configurar una serie de bits/registros internos del pic. En concreto hay que permitir las configuraciones GIE (general interrupt enable que se corresponde con el bit7 de registro INTCO; y después hay que comprobar periódicamente el estado del bit que indica si se ha producido la interrupción  T0IF ( Oweflow interrupt  flag  que se corresponde con el bit 2 del mismo registro).
Como el tiempo que tardaría en recorrer todo el valor del registro del timer TMR0, sería muy poco, el TMR0 dispone de “PREESCALER” que no es más que otra división interna de la frecuencia que leería el TMR0 para incrementar de ese modo el tiempo en recorrer todo el valor desde “00000000 hasta FFFFFFFF”.
Este predivisor se configuraría adecuadamente en el registro “OPTION” con los bits 0 a 5 de dicho registro. La división puede hacerse por 2, 4, 8, 16, 32, 64,128 y 256. Como ejemplo el valor de una temporización se calcularía con la siguiente formula:
Temporización = (Toscilación/4) x Valor de preescaler x (256- valor cargado en TMR0)
X= (4/4) x 2 x (256-0=1 x 2 x 256= 512microsegunds.

Una vez realizada la configuración, si tenemos programada una interrupción, el pic está realizando el trabajo que le hayamos programado y cuando el timer TMR0, que está trabajando en segundo plano, se activa el bit F0IF y automáticamente tu programa deja de realizar la secuencia normal y pasa a realizar lo que tengamos pensado realizar cuando se produzca ese desborde. Al finalizar se retoma de nuevo el programa principal donde se dejó.
Como puedes ver esto es útil para realizar temporizaciones, digamos bajo cuerda, sin enterarnos que se está temporizando  cuando llega al tiempo programado el pic nos avisa. Esto nos permite realizar unos trabajos independientemente de las temporizaciones (el pic está realizando 2 programas, digamos lo así). Si te fijas si la temporización s  se realiza por bucles cuando el pic llega a este punto, el micro se para y no realiza nada hasta que no se termina el bucle. Por tanto la mejora del uso de las interrupciones aumenta la potencia  y prestaciones del pic.
Las fases de una interrupción son:
1 Habilitación general de interrupciones
2 Señalización por medio del flag correspondiente cuando se activa
3 Para evitar otras interrupciones cuando se está en la primera hay que deshabilitar las interrupciones
4 El valor del contador de programa se guarda (para saber el regreso al finalizar).
5 Salto a la rutina de interrupción
6 Comprobar que tipo de interrupción ha sido disparada: TMR0, TMR1,….
7 Realizar lo que queramos en la rutina de interrupción.
8 Recuperar el valor de regreso
9 Borrar el flag de indicación de interrupción
10 Habilitar nuevas interrupciones.

Pero no te abrumes que NIple ya te realiza bastantes cosas como los pasos: 2, 3, 4, 5,6 y 8

Espero que esto te sirva para empezar  o entender, y luego ya puedes preguntar las dudas.

F.
Todos los días se aprende algo nuevo.

Desconectado Fer_TACA

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4154
Re: programa para control de lavarropas automatico
« Respuesta #217 en: 11 de Octubre de 2012, 13:59:15 »
Respondo a post anteriores:

Hola Fermin, Sergio, buenas noches a quienes lean. Va tomando forma el programa, espero que le este brindando conocimientos a Sergio y a quienes han seguido este post buscándolo. Me llama la atención, no lo he visto antes, que el inicio del programa me muestra como una etiqueta blanca, tal como si fuera un salto a una etiqueta.

Yo tampoco y no sé porque, se lo consultare a Jorge. No es normal aunque el programa sigue funcionado. Del resto de cosas las mirare con detenimiento.

Santiago te pongo en el Word lo que tuve intención de hacer, si no se logro espero las correcciones, también hice unas correcciones según tus apreciaciones y espero estén bien.
Yo se que las explicaciones que pongo son muy extensas pero creo que para quienes quieran entender el porque, de cómo esta realizado y el razonamiento que utilizo puede ser constructivo, por eso pongo tanto énfasis en que lo lean y corrijan.

La verdad son extensas a mi no me importa leerlas pero si es bueno como dice Santiago trabajar siempre con los mismos valores o variables. Te adjunto tu Word con algunas cosas en otros colores para que las compruebes. Si no se utiliza siempre lo mismo nos volveremos locos.
Con respecto a lo que has cambiado del centrigugado, ¿No te parece que has puesto lo mismo este el presostato tanto con agua como sin ella? Pienso que es mejor o que te puse en el 8c.

Saludos Fermin
« Última modificación: 11 de Octubre de 2012, 14:06:28 por Fer_TACA »
Todos los días se aprende algo nuevo.

Desconectado Fer_TACA

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4154
Re: programa para control de lavarropas automatico
« Respuesta #218 en: 11 de Octubre de 2012, 17:01:00 »
Respuestas pendientes a Santiago:

Citar
-En enjuague_2 no se ha reseteado el contador enjuague, con lo que solo se cumplirá 1 vez y saldrá.

No encuentro donde está, esta etiqueta, pero si es el contador dentro de la rutina de enjuague , este se inicializa siempre al entrar en la propia rutina de enjuague.


Citar
En Centrifugado si bit centrifugado=1 sale, con 0 asigna centrifugado a estado_centrifugado (que será 0) compara igual que antes, ahora compara los bits por iguales y ¿si no son iguales continúan?, con 1 debería salir como antes me parece. Además si eran iguales antes de salir asigna 0 a estado de centrifugado, valor que ya tiene.

No entiendo muy lo que quieres decir, la comparacion de si es 0 la realiza 2 veces. La primera si NO es cero es que no se ha movido el interruptor, directamnete se guarda su estado y se lava CON centrfugado y si, si es 0 es que se ha seleccionado el lavar sin centrifugado y guardamos su valor para la comprobacion de los rebotes.

En la 2ª comparacion se repite las misma preguntas, si la primera no es cero es que sigue sin moverse, se guarda el valor del centrifugado y salimos pero si, si es 0 es que se quiere lavar sin centrifugado, confirmacion despues de eliminar los rebotes, guardamos el valor de estado y salimos.


Citar
Usa lavado_1 para el conteo?
_En esta rutina debe serse cuidadoso de que el ultimo sentido de giro de marcha lenta coincida con el giro del motor en rapida, sobre todo si se aprovecha la inercia para el inicio

Esto esta corregido en otra version, que tengo llamada como 9, pero no he querido adjuntarla hasta ver si Sergio se anima a ver que hay que hacer.



Respecto a la primera etiqueta en blanco, me da la impresion que en algun momento se ha añadió la etiqueta de iniciar entre el bloque que crea automaticamnete Niple de "programa principal" y despues se borró este ultimo. Parece que esto NO le sienta mal a NIple pues compila perfectamnete a´si.


F.
« Última modificación: 11 de Octubre de 2012, 17:03:03 por Fer_TACA »
Todos los días se aprende algo nuevo.

Desconectado lucegiar2005

  • PIC24F
  • *****
  • Mensajes: 504
Re: programa para control de lavarropas automatico
« Respuesta #219 en: 11 de Octubre de 2012, 20:15:00 »
Hola Fermin, Sergio y demás amigos, un abrazo. Fermin:
_El comentario del contador enjuague no reiniciado se refiere al 8c creo, ya que en 8d está corregido.
_Lo que quiero decir es que con centrifugado=0 --> estado-centrifugado=0, centrifugado=0 --> ¿donde cambiaría la asignación estado-centrifugado=0?, seguirá siendo 0 pues no hay asignación posterior a la primera, por lo tanto no pasará por la asignación de 1.
_Lo de lavado_1 es solo un comentario por si correspondía otro, pero con reiniciar un contador cualquiera puede ser usado en varias funciones.
_Tanto en lavado como todo lo que implique motor a un lado y otro tomo como logico que el que energiza es marcha_x, quedando para motor_x el direccionamiento, en ese contexto y en el de logica negativa (1 = falso) es que trataré lo que se hago, para tener un parametro de trabajo. Fijate que opinas de esto que dejo en imagen.

Un abrazo a todos
- Santiago -

Desconectado sergioandres

  • PIC16
  • ***
  • Mensajes: 168
Re: programa para control de lavarropas automatico
« Respuesta #220 en: 12 de Octubre de 2012, 09:47:47 »
Hola a todos: Espero estén bien de dinero, la salud va y viene......Es una broma.
La verdad es que yo también estoy remando en dulce de leche, es pesado. El domingo descanso y empiezo a estudiar lo que has puesto para mi Fermin, a Santiago gracias por su tiempo. Un Abrazo Sergio.
« Última modificación: 12 de Octubre de 2012, 09:49:53 por sergioandres »

Desconectado Fer_TACA

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4154
Re: programa para control de lavarropas automatico
« Respuesta #221 en: 12 de Octubre de 2012, 12:50:01 »
_Tanto en lavado como todo lo que implique motor a un lado y otro tomo como logico que el que energiza es marcha_x, quedando para motor_x el direccionamiento, en ese contexto y en el de logica negativa (1 = falso) es que trataré lo que se hago, para tener un parametro de trabajo. Fijate que opinas de esto que dejo en imagen.

Entiendo que antes de cambiar el sentido de giro, lo que hay que realizar es parar el motor.
la secuencia debe ser:
1º seleccionar el entido
2º activar marcha
3º parar
4ºcambiar sentido
5º volver a poner en marcha
y asi sucesivamente excepto para el centrifugado que al cabo de unos segundos despues de estar en marcha lenta, hya que activar la marcha rapida.

F.
Todos los días se aprende algo nuevo.

Desconectado Fer_TACA

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4154
Re: programa para control de lavarropas automatico
« Respuesta #222 en: 12 de Octubre de 2012, 13:04:36 »
Para Sergio:

Un ejemplo muy basico del funcionamineto del TMR0.

Se trata de ewstar leyendo continuamnete el estado de un interruptor conectado al pin RA0 y si es 1 enciende un piloto en la salida RA1. Cuando RA0 es cero el piloto se apaga. Este es el programa principal.

Pero bajo cuerda esta actuando la interrupcion del TMR0 de forma que cada 2 segundos activa a 1 todas las salidas del puerto B durante 1/2 segundo. El ciclo se repite indefinidamente, este como esté el interruptor del puerto RA0.

F.
Todos los días se aprende algo nuevo.

Desconectado lucegiar2005

  • PIC24F
  • *****
  • Mensajes: 504
Re: programa para control de lavarropas automatico
« Respuesta #223 en: 12 de Octubre de 2012, 14:31:16 »
Hola Fermin, gracias por la respuesta. Te diré que tienes razón en lo que dices, pero fijate que cuando hago motor_x=0 y hasta tanto asigne motor_x=1 no tiene energía el motor por estar ambos en 0, por lo que llega corriente hasta los relés motor_x, pero queda sin aplicarse a los bobinados, y con ello ambos acertamos a la solución. Como verás, en esta hipótesis de funcionamiento, marcha_x solo necesita activarse una vez y desactivarse otra.
Sergio: como estás? Como verás es importante saber con exactitud todo lo referente al circuito, como está desarrollado y que hace cada parte, las hipótesis son caminos ambiguos que llevan a incertidumbre, no se puede aunar conceptos si no están del todo claro.

A ustedes y los amigos que se presenten un saludo cordial.
- Santiago -

Desconectado sergioandres

  • PIC16
  • ***
  • Mensajes: 168
Re: programa para control de lavarropas automatico
« Respuesta #224 en: 14 de Octubre de 2012, 20:58:59 »
Hola para todos los seguidores del tema: Para Santiago, lo que me enseñaste en tu casa fue muy útil y no creas que no valoro ese tiempo, yo pensé que tenia todo muy claro pero, no fue tan así, siempre requiero de un tiempo y ejercitacion para fijar conceptos y manejarlo con soltura, soy muy duro, lo reconozco.
Para Fermin, Las interrupciones y las contemporizaciones ya algo habíamos visto cuando realizamos las inversiones del motor, la teoría la entiendo, estoy mas maduro y con mas comprensión, con un poco de tiempo lo saco bien en claro, solo necesito ejemplos de aplicación donde los tiempos hay que calcularlos agregando registros,para aumentar los tiempos.
Pero me gustaría hacer un parate con lo que es el programa en si y que veamos la electrónica, esto es a raíz de lo planteado por Santiago sobre el motor, pero mas sobre mi confucion sobre unos y ceros en habilitaciones o no.
Para empezar tome el presóstato que yo tengo y voy a emplear, realice un estudio de sus pines respetando sus números que son una norma para los lavarropas, y las combinaciones, e realizado un diagrama, e intentado aplicar lo que tenia en mente y puse en el programa, como esta mal en la parte de enjuague la verdad me perdi, me enrede tanto que me dan de comer con una cañita.
Lo sigo en la semana para poder definir el funcionamiento de la electrónica y creo allí sera mas fácil para mi o aclarara mi idea, luego seguirá el motor, porque yo no se como es la alimentación para los giros, marchas lentas y rápidas, tengo mucha info para revisar, desde ya la ficha de conexión es de seis pines.
En el comprimido esta una vista general de una plaqueta electrónica, es solo una referencia algo podemos adaptar a la nuestra, no se, el diagrama del presóstato y una ficha de motor.
Todo por hoy un abrazote bien fuerte Sergio Peralta