Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:
Buenas,
estoy escogiendo un tema de proyecto de fin de carrera, y me estoy decantando a por un robot rastreador. Me gustaria implementar un
control PID a través de un PIC 18F452, pero no se como empezar... utilizaria todo un puerto para leer los 8 CYN70 (los sensores).
Ya hice anteriormente un rastreador, pero era pura logica binaria con dos sensores XD.
¿Alguien me puede decir si puedo seguir esta estructura?
Tendria 3 potenciometros para graduar Kd, Kp y Ki o un teclado 4x4.
Inicializar:
Kd=valor1;
Kp=valor2;
Ki=valor3;
ek=ek_1=ek_2=0;
uk=uk_1=uk_int=0;
Calculo del PID:
si tenemos 8 sensores, ( 1 2 3 4 5 6 7 8 )
-Caso 1: la linia negra esta en 4 y 5, no existirà error
-Caso 2: la linia negra esta en 3 y 4, error positivo (tengo que girar a la izquierda)
-Caso 3: la linia negra esta en 5 y 6, error negativo (tengo que girar a la derecha)
uk=Kd*ek_2+(Kp+2*Kd)*ek_1+(Kp+Ki+Kd)*ek-uk_1; // controlador pid
ek_1=ek;
ek_2=ek_1;
uk_1=uk;
uk_int=uk;
-Calculo del PWM:
Segun el resultado de uk_int, se configurara el PWM de los dos motores CC.
Muchas gracias
No sé que estás haciendo ahí sumando todas las constantes.
Los valores de las Ks las puedes asignar programandolas en el micro, no es necesario el potenciometro.
Mirate esto:
http://foro.webdearde.com/viewtopic.php?f=1&t=1761&start=10 " onclick="window.open(this.href);return false;
Y este hilo de paso por si te puede ayudar
http://foro.webdearde.com/viewtopic.php?f=4&t=2362 " onclick="window.open(this.href);return false;
Muchas gracias JM.
me gusta mucho esta rutina del PID:
LOOP:
PV=ReadMotorSpeed()
LastError=Error
Isum=Isum+Error
Error=SP-PV
Rate=Error-LastError
CV=Error*Kprop.....
SetPWM(CV)
GOTO LOOP