TODOPIC
Microcontroladores PIC => - Niple - => Mensaje iniciado por: iavas en 16 de Noviembre de 2010, 00:09:00
-
hola Gente!! como estan? les traigo un sensor de temperatura para que me digan como lo ven ustedes. y de paso hacerles una pregunta. La idea es asi: tengo una pava electrica que corta cuando hierve el agua, y yo quiero hacerla cortar a unos 70º mas o menos (para los mates jaja). pero tambien con la condicion de poder bajar o subire la temperatura a la que quiero que corte, es decir, apreto un boton (TB0), y entra en estado de cambiar la temperatura, y con otros 2 botones subo o bajo la temperatura mientras dejo apretado RB0. Lo hice por interrupcion por RB0 porque crei que era mejor, pero no puede hacer el fin de interrupcion porque no me quedan salidas para hacerla, les piedo ayuda a ver que piensan ustedes que estoy haciendo mal.Les dejo el archivito para que lo vean y me digan que les parece. un abrazo.
-
Hola IAVAS:
Esta tarde le echo un vistazillo y te digo ;-)
fer.
-
Hola IAVAS
Yo estuve liado con un sistema para el control de la temperatura , necesitaba bastante precisión, 1 décima, por lo que tuve que ingeniarme un control PID, lo cierto es que el sistema aprende de las condiciones y actúa en consecuencia, no creo que sea tu caso, supongo que no necesitaras tanta precisión , pero lo que si que te aconsejaría es, que contemplases los margenes de histéresis, de tal manera que no este entrando y saliendo continuamente el sistema calefactor.
juanfra
-
Hola IAVAS
...un control PID, lo cierto es que el sistema aprende de las condiciones y actúa en consecuencia, no creo que sea tu caso, supongo que no necesitaras tanta precisión...
juanfra
Buenos dias. Juanfra, disculpame la ignorancia pero no entedi esa parte de tu mensaje.
Saludos confundidos.
-
PID= control retroalimentado
Depende de la precison que quieras se puede utilizar o no.
Si hay mucha precision com pequeños cambias vas a estar constantemente activando/desactivando la caleffaccion y/o refrigeracion al ser muy pequeñas las variaciones en temperatura que necesitases.
-
Ok
Al llegar a la consigna de temperatura el programa manda la orden de paro, poniendo a "0" el pin de salida , pero ocurre lo siguiente, debido a la inercia termica del calefactor, la temperatura seguirá subiendo , y lo mismo ocurrirá el en caso contrario, cuando en la rampa de bajada de la temperatura, el programa detecte "low temp" activara el pin correspondiente, tardando un cierto tiempo en superar de nuevo la inercia térmica del calefactor.
Esto, en mi caso, lo solucione haciendo que el sistema detectara la distancia a la consigna (los grados que faltan o sobran de la temperatura leída a la consigna) DIFERENCIAL.
Una vez sabemos cuanto estamos tanto por arriba como por abajo, a través de una modulación en PWM, la señal del calefactor sera proporcional a la diferencia.
Tb implemente una rutina de aprendizaje del sistema, de forma que el mismo programa "aprende" cual debe ser la señal de corrección de error, con lo que el ancho del pulso PWM, se adecua a la demanda de temperatura, tanto en bajada como en subida.
Cuanto mas tiempo este el sistema funcionando, mejor sera la corrección del error
P---salida proporcional al error
I---salida integral del error
D--salida diferencial al error
Pero en todo caso, como ya te comente, no creo que necesites tal precisión en tu proyecto, pero si necesitas las subrrutina , no dudes en pedírmela..
juanfra
-
me costo entender un poco lo que comentaban, lo que ustedes me quieren decir que cuando llega a la temperatura deseada corta y como baja ahi nomas la temperatura, vuelve a encender y corta, y enciende y asi sucesivanmente. lo que podria hacer es que cuando llegue termine el programa y quede mostrando la temperatura nada mas. por lo menos en mi caso, por la necesidad que yo tengo, que es solo una pava electrica...
-
Estimado iavas, creo que con mi pregunta, en el medio, complique la situación pues respndieron el significado de PID, de manera excelente, pero quedó pendiente la tuya respecto a que debes tener en cuenta la histéresis de tu sistema. Si buscas que te corte a 70ºC que se prenda nuevamente a 68ºC, así esos 2ºC serian la histeresis necesaria para tu caso.
Saludos.
-
Hola IAVAS:
he estado mirando un poco el fichero que has adjunto y te comento lo siguiente:
- Por una parte, la seccion del programa principal no le ve as inconveniente
- En la parte de la interrupcion, como bien dice no está bien. Le falta el final de la interrripcion y por otra parte veo que en la comparacion de RB2 veo que falta la salida de "No".
-Ademas cuando accionas los pulsadores para subir o bajar la temperatura, me imagino que será para establecer la temperatura de consigna(ºC de corte), no veo como suben y bajan los valores pues solo veo que igualas los registros de la toma de temperatura del sensor con los de la temperatura de consigna. Me imagino que lo que deberias de realizar es que mientras se esten pulsando se vayan "incrementado" los registros hasta el valor que deseas.
Debes de colocar en algun punto algo para que controle la temperatura de vueltaa conectar la calefacción. date cuenta de que en cuanto se detecte que la temperatura alcance el valor prefijado se desconectará la calefaccion y si no tiene mucha inercia al no tener generacion de calor el entorno se enfriará y justo en el momento que vuelva a descender del valor prefijado se voverá a conectar y te puede dar lugar a que este oscilando de manera permanente.
P.D.: No es criticar, pero por favor cuando escribas los post (todos ecribimos con faltas), intenta colocar alguna separacion entre las frases de ese modo nos seria mas facil entender lo que quieres decir.
Juanfran:
Pero en todo caso, como ya te comente, no creo que necesites tal precisión en tu proyecto, pero si necesitas las subrrutina , no dudes en pedírmela..
Si está realizado con Niple ¿No crees que sería interesante que adjuntases el proyecto para que la gente que está empezando tenga una referencia para construir este tipo de control :)
Fermin
-
OK Fermin
Os adjunto una simplificación de una subrutina para control proporcional-diferencial, esta pensada para controlar presión, solo tenéis que referirla a los registros de lectura de temperatura.
Tb es interesante que contempleis la posibilidad de la frecuencia de actualización, que desde luego esta en función dela velocidad de cambio de estado del sistema.
Esto lo soluciono con un simple llop de conteo, donde 1 de cada "x" veces actualizo.
En cuanto a la ganancia, depende mucho de lo que estés controlando, en esta caso, como la respuesta al cambio de estado es bastante rápida, el factor de ganancia es simplemente la diferencia al error, pero claro está que es sencillo el poder aumentar o disminuir la cantidad de respuesta (ganancia).
-
Muchas gracias por el aporte Juanfra, voy a descargar el fichero yya preguntaré si tengo dudas.
Fermin
-
hola gente!!! como estan?? sinceramente no habia visto las respuestas de ustedes. Pido disculpas porque pence que no habia mas mensajes. ademas eh estado un poco complicado... voy a bajar el ejemplo de juan asi lo veo y chequeo un poco. Muchas Gracias por la ayuda!!!. Fer Gracias por tu critica!! voy a estar mas atento a la hora de escribir...
-
Fer Gracias por tu critica!! voy a estar mas atento a la hora de escribir...
No es critica ;-)
Solo que de esa manera podremos entender todos mejor lo que quieres decirnos.