Prototipo de Control de Horno con Pic16F876 + MAX6675

Cerrado
Avatar de Usuario
DOMUSPRIME
Hot Gun
Mensajes: 26
Registrado: Dom Abr 17, 2011 12:07 am

Hola Thulsa_Doom

Estuve revisando tus avances la verdad que seria bueno que publiques tus avances para los menos avanzandos ya que tambien me gusta experimentar con algo ya adelantado, claro si puedes, saludos.
------------------------------------------------- :> ------------------------------------------
"Todo lo que somos es el resultado de lo que hemos pensado; está fundado en nuestros pensamientos y está hecho de nuestros pensamientos". (Sidhartha Gautama - Fundador del budismo).
Avatar de Usuario
Thulsa_Doom
Reboleador Extremo
Mensajes: 557
Registrado: Lun Ago 24, 2009 3:24 pm

Hola, en este momento no puedo publicarlo.

El motivo es que no tengo tiempo de hacer una documentación en condiciones, no tengo el diseño de las pistas para que puedan hacerse la placa ustedes mismo ya que el prototipo que tengo ha evolucionado según las necesidades y no he hecho un esquema (eso al final) y otras cosas que no están preparadas.

Ahoramismo estoy liado en otros asuntos e intentando desarrollar el nuevo control, para ello le he pedido ayuda a un amigo porque he llegado a un nivel donde no puedo seguir yo solo.
El mayor escollo al que me enfrento es con una función matemática creada por Ziegler/Nichols que es para el control de sistemas continuos y eso ya es de ingeniería de control y yo no soy ingeniero, así que hay que esperar un poco.
Del desarrollo de esta función (y otras) se saca el algoritmo para el control de la temperatura, no voy a entrar en detalles que esto se que aburre.

ya iré informando
Si cada vez que se dice manteca, dios mata un gatito, no os preocupéis, en el callejón de al lado de mi edificio hay un contenedor de basura que por las noches está lleno
ZM5860C
Horno de reflujo casero con un control fabricado por mi en evolución
Avatar de Usuario
DOMUSPRIME
Hot Gun
Mensajes: 26
Registrado: Dom Abr 17, 2011 12:07 am

Si, te entiedo a mi me pasa lo mismo, si te puedo ayudar no dudes en solicitarlo, estudie ing. industrial algo me acuerdo de termodinamica y balance, bueno cuando puedas estare revisando tus adelantos.
------------------------------------------------- :> ------------------------------------------
"Todo lo que somos es el resultado de lo que hemos pensado; está fundado en nuestros pensamientos y está hecho de nuestros pensamientos". (Sidhartha Gautama - Fundador del budismo).
Avatar de Usuario
dmingo
Reboleador Extremo
Mensajes: 512
Registrado: Vie Feb 05, 2010 11:53 pm

Hola Thulsa_Domm, te felicito por tu proyecto, yo hace tiempo y continúo experimentando con sistemas Pid,
analizando comportamientos de calefactores, utilziando transformadas de Laplace, aproximación de curvas por mínimo cuadrado, con polinomios de 4º orden(que churros de ecuaciones, al despejar incógnitas), integrales, etc... y casi siempre los métodos emprícos para un buen tuning del Pid. Puedes jugar con las variables pid, dependiendo del rizado, etc..
Si puedo ayudarte, de momento te envío esta parte de código, es un Pid donde te ajusta el PWM, creo
que es lo que buscabas.
Espero a ver te ayudado, aunque sea un poco. Ánimo con tu proyecto.

#INCLUDE <16F877A.H>
#DEVICE ADC=10
#USE DELAY(CLOCK=4000000)
#FUSES XT,NOWDT
VOID MAIN(){
INT16 valor, control; //Variables para lectura de ADC y señal de Control a modulo CCP
FLOAT a,b,c; //Constantes para parámetros de controlador PID
FLOAT TEMPERATURA_LIMITE; //Referencia de Temperatura
FLOAT rt,eT,iT,dT,yT,uT,iT0,eT0; //Variables de controlador PID
FLOAT max,min; //Variables para anti-windup
min=0.0;
max=1000.0;
iT0=0.0;
eT0=0.0;
a=0.1243;
b=0.0062;
c=0.6215;
TEMPERATURA_LIMITE=1200.0; //Set Point r(kT)= 120°C
setup_timer_2(t2_div_by_4,249,1); //Configuracion de Timer 2 para establecer frec. PWM a 1kHz
setup_ccp1(ccp_pwm); //Configurar modulo CCP1 en modo PWM
setup_adc_ports(all_analog); //Configurar ADC
setup_adc(adc_clock_internal);
set_adc_channel(0); //Seleccionar Canal 0 para sensor de Temperatura
while(true){
valor=read_adc(); //Leer ADC
yT=5000.0*valor/1024.0; //Escalizar señal de salida y(kT)
rT=TEMPERATURA_LIMITE;
eT=rT-yT; //Calcular senal de error e(kT)
iT=b*eT+iT0; //Calcular termino integrativo i(kT)
dT=c*(eT-eT0); //Calcular termino derivativo d(kT)
uT=iT+a*eT+dT; //Calcular senal de control u(kT)
if (uT>max){ //Anti-windup
uT=max;
}
else {
if (uT<min){
uT=min;
}
}
control=uT;
set_pwm1_duty(control); //Transferencia de senal de control al actuador
iT0=iT;
eT0=eT;
delay_ms(100); //Periodo de muestreo T=0.1s
}
}

Saludos
Avatar de Usuario
Thulsa_Doom
Reboleador Extremo
Mensajes: 557
Registrado: Lun Ago 24, 2009 3:24 pm

Hola, gracias por tu ayuda e interés.
ese algoritmo se me parece mucho a uno que me traía el libro "compilador C CCS y simulador Proteus
y no conseguí que funcionara, en la simulación iba perfecto pero en la realidad entraba en bucle, y a parte de eso, el comportamiento no era el adecuado, de todas maneras he estado hablando con un amigo que estudio el caso y pensamos en crear el algoritmo de 0 lo que pasa que por causas de trabajo mi amigo ya no puede, espero que dentro de un mes más o menos podamos retomar el asunto.
Si cada vez que se dice manteca, dios mata un gatito, no os preocupéis, en el callejón de al lado de mi edificio hay un contenedor de basura que por las noches está lleno
ZM5860C
Horno de reflujo casero con un control fabricado por mi en evolución
Avatar de Usuario
dmingo
Reboleador Extremo
Mensajes: 512
Registrado: Vie Feb 05, 2010 11:53 pm

Ok Thulsa_Doom, pués nada suerte, y espero que lo consigas. Será apasionante tu viaje, hasta la creación de tu Pid.

Un saludo
Avatar de Usuario
Thulsa_Doom
Reboleador Extremo
Mensajes: 557
Registrado: Lun Ago 24, 2009 3:24 pm

De todas maneras lo que he dicho no significa que no acepte ayuda de nadie más, si se te ocurre cualquier cosa no dudes en comentarla, saludos y muchas gracias
Si cada vez que se dice manteca, dios mata un gatito, no os preocupéis, en el callejón de al lado de mi edificio hay un contenedor de basura que por las noches está lleno
ZM5860C
Horno de reflujo casero con un control fabricado por mi en evolución
Avatar de Usuario
dmingo
Reboleador Extremo
Mensajes: 512
Registrado: Vie Feb 05, 2010 11:53 pm

Bueno, yo te puedo decir que implementar la función Pid no es nada complejo, si el tuning. No se que tipo de resistencias utilizas en tu horno, si son de cuarzo, podías implementar un Pid Proporcional, el mas básico, tienen buena inercia térmica
y no tendrás que pelearte con las variables integrales y derivativas. De hecho siempre que se implementa un Pid, se comienza con el proporcional, aunque esto supongo que ya lo sabías, si has simulado con proteus.
Tengo un código interesante, hecho en Visual Basic, es un Pid para control de una válvula que controla el llenado de un depósito de agua, si quieres te lo mando. Es una buena forma de documentarse.
Aunque es mas apasionante, hacer tus cálculos e implementarlo, eso si necesitarás un dataloger de temperaturas para trazar la línea de máxima pendiente y empezar.

Mira encontré algo interesante, te lo envío, hasta que encuentre el código en Visual b.
Creo que hay mas información que la que pueda aportarte tu amigo.

http://www.megaupload.com/?d=OORLDGCV

Saludos
Avatar de Usuario
dmingo
Reboleador Extremo
Mensajes: 512
Registrado: Vie Feb 05, 2010 11:53 pm

Thulsa, te envió un código para pic, es un pid completo, no se si llegaste a probarlo, pero por si acaso.

Por problemas con megaupload, quito el enlace, de todas formas me dí cuenta que era un código Pid, para
Pic (joer parezco un pájaro :D :D :D :D :D :D ), está orientado a estabilizar un péndulo.

Lo siento, de todas maneras el enlace anterior, tiene suficiente información, y un simulador.

Saludos
Última edición por dmingo el Mar Jun 28, 2011 8:49 pm, editado 1 vez en total.
Avatar de Usuario
DOMUSPRIME
Hot Gun
Mensajes: 26
Registrado: Dom Abr 17, 2011 12:07 am

"dmingo" Bueno el material, obtuve información que tenia confusa respecto al funcionamiento de un PID, se agradece el material, el ultimo archivo no esta vigente si puedes subirlo nuevamente. Gracias por el aporte.
------------------------------------------------- :> ------------------------------------------
"Todo lo que somos es el resultado de lo que hemos pensado; está fundado en nuestros pensamientos y está hecho de nuestros pensamientos". (Sidhartha Gautama - Fundador del budismo).
Cerrado