TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: miguech1 en 23 de Mayo de 2004, 17:14:00

Título: todo el programa del control pid mirenlo y opinen
Publicado por: miguech1 en 23 de Mayo de 2004, 17:14:00
#include <16f877a.h>
#use delay(clock=2000000)
#fuses hs
#include <lcd.c>
#byte portc=7
#byte portb=6
#use fast_io(b)
//respueta rapida de puerto b
int val1,val2,val3,setp,val_med;
float a0,a1,a2,xn_1,xn_2,yn,yn_1,kp,ki,kd,ts,xn;
main(){

setup_adc_ports(all_analog);
setup_adc(adc_clock_div_32);
setup_ccp1(ccp_pwm);
setup_ccp2(ccp_pwm);
setup_timer_2(t2_div_by_1,255,1);

lcd_init();
while(true){
   while((input(pin_b0))){  // si es un cero
set_adc_channel(2);
val1=read_adc();
delay_us(10);
set_adc_channel(3);
val2=read_adc();
delay_us(10);
set_adc_channel(4);
val3=read_adc();
delay_us(10);
kp=(float)val1;
ki=(float)val2;
kd=(float)val3;
ts=0,01;
a0=kp+ki*ts+kd/ts;
a1=kp+2*kd/ts;
a2=ki/ts;

lcd_gotoxy(1,1);
printf(lcd_putc,"p:%1.1f,i:%1.1f,d:%1.1f",kp,ki,kd);}lcd_putc("f";

while((!input(pin_b0))){
set_adc_channel(0);
setp=read_adc();
delay_us(1);
set_adc_channel(1);
val_med=read_adc();
xn=(float)(setp-val_med);
lcd_gotoxy(1,1);
printf(lcd_putc,"x:%1.1f,v:%1.1u,s%1.1u",xn,val_med,setp);
if(xn>0){
yn=a0*xn-a1*xn_1+a2*xn_2+yn_1;
set_pwm1_duty(yn);
xn_2=xn_1;
xn_1=xn;
yn_1=yn;
}
else{
yn=a0*xn-a1*xn_1+a2*xn_2+yn_1;
set_pwm2_duty(yn);
xn_2=xn_1;
xn_1=xn;
yn_1=yn;

}
}
}
}
Título: RE: todo el programa del control pid mirenlo y opinen
Publicado por: kruskal en 23 de Mayo de 2004, 19:25:00
Estiimado:

Me parece interesante, pero podrias agregar comentarios al codigo como una ayuda para lograr entenderlo.

Salu2

kruskal@hotmail.com
Título: RE: todo el programa del control pid mirenlo y opinen
Publicado por: MGLSOFT en 24 de Mayo de 2004, 07:15:00
Mete los valores al P, I , D leyendolos por los canales del conversor.
Los escalas en algun momento??
Esto esta probado en la practica.?
parece interesante...
Título: RE: todo el programa del control pid mirenlo y opinen
Publicado por: miguech1 en 24 de Mayo de 2004, 13:50:00
el problema que tengo es que en protus no puede cargar el valor de kd y me es imposible. este control es para un motor, cualquies inquietud o ayuda escriban. cuando funcione les aviso
Título: RE: todo el programa del control pid mirenlo y opinen
Publicado por: kruskal en 25 de Mayo de 2004, 13:23:00
Tengo una duda.

Me pudes decir entre que valores se mueve la variable yn?

salud2

kruskal@hotmail.com
Título: RE: todo el programa del control pid mirenlo y opinen
Publicado por: miguech1 en 27 de Mayo de 2004, 16:25:00
tiene que variar de 0 hasta 255 para poder cargarle en el pwm
gracias
Título: RE: todo el programa del control pid mirenlo y opinen
Publicado por: kruskal en 27 de Mayo de 2004, 18:17:00
Me parece que la variacion no esta bien controlada ya que aplicando algebra a la ecuacion:

yn=a0*xn-a1*xn_1+a2*xn_2+yn_1

Y se concidera que no hay cambio por tiempo prolongado en las entradas analogicas el valor yn, creo, va aumentando. Por tiempo no he analizado bien la ecuacion.  .

salud2
kruskal@hotmail.com


Título: RE: todo el programa del control pid mirenlo y opinen
Publicado por: pocher en 30 de Julio de 2004, 09:35:00
No controlo mucho lo del PID, pero el signo menos de la ecuación yn=a0*xn - a1*xn_1 + a2*xn_2 + yn_1  ¿no debiera ser un más?

Si alguién tiene enlaces a proyectos de control PID resueltos en C o PBP se agradecería ... también valen ejercicios propios de cada uno.
Título: Re: todo el programa del control pid mirenlo y opinen
Publicado por: extrememind en 14 de Noviembre de 2007, 19:53:10
Disculpa pero que "planta" o funcion de transferencia intentas controlar???.... Ademas podrias explicar un poco mas acerca de lo que representan cada una de las variables.

Saludos!
Título: Re: todo el programa del control pid mirenlo y opinen
Publicado por: LinuzPro en 19 de Noviembre de 2007, 20:20:27
Hola,para ser un poco mas entendible el codigo deberias comentarlo un poco mas ...estaria bueno tb si lo simulaste en el proteus estaria bueno verlos para entender bien el codigo..saludos
Título: Re: todo el programa del control pid mirenlo y opinen
Publicado por: MGLSOFT en 19 de Noviembre de 2007, 20:22:04
Tal vez hace mucho que ya lo termino!!
Es un POST del 2004!!! :D :D :D
Título: Re: todo el programa del control pid mirenlo y opinen
Publicado por: LinuzPro en 19 de Noviembre de 2007, 20:57:09
jaja..eso me pasa por metido ...lo vi en la lista y respondi ..falta de atencion ..:S