Autor Tema: todo el programa del control pid mirenlo y opinen  (Leído 2623 veces)

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

Desconectado miguech1

  • PIC10
  • *
  • Mensajes: 7
todo el programa del control pid mirenlo y opinen
« 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;

}
}
}
}

Desconectado kruskal

  • PIC16
  • ***
  • Mensajes: 108
RE: todo el programa del control pid mirenlo y opinen
« Respuesta #1 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

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
RE: todo el programa del control pid mirenlo y opinen
« Respuesta #2 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...
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado miguech1

  • PIC10
  • *
  • Mensajes: 7
RE: todo el programa del control pid mirenlo y opinen
« Respuesta #3 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

Desconectado kruskal

  • PIC16
  • ***
  • Mensajes: 108
RE: todo el programa del control pid mirenlo y opinen
« Respuesta #4 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

Desconectado miguech1

  • PIC10
  • *
  • Mensajes: 7
RE: todo el programa del control pid mirenlo y opinen
« Respuesta #5 en: 27 de Mayo de 2004, 16:25:00 »
tiene que variar de 0 hasta 255 para poder cargarle en el pwm
gracias

Desconectado kruskal

  • PIC16
  • ***
  • Mensajes: 108
RE: todo el programa del control pid mirenlo y opinen
« Respuesta #6 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



Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
RE: todo el programa del control pid mirenlo y opinen
« Respuesta #7 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.

Desconectado extrememind

  • PIC10
  • *
  • Mensajes: 1
Re: todo el programa del control pid mirenlo y opinen
« Respuesta #8 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!

Desconectado LinuzPro

  • PIC10
  • *
  • Mensajes: 12
Re: todo el programa del control pid mirenlo y opinen
« Respuesta #9 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
"Saber olvidar lo malo, tambien es tener memoria"

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: todo el programa del control pid mirenlo y opinen
« Respuesta #10 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
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado LinuzPro

  • PIC10
  • *
  • Mensajes: 12
Re: todo el programa del control pid mirenlo y opinen
« Respuesta #11 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
"Saber olvidar lo malo, tambien es tener memoria"


 

anything