fbpx

Expresate

Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:

Avisos
Vaciar todo

Rastreador PID

4 Respuestas
2 Usuarios
0 Reactions
2,217 Visitas
arcadi
Respuestas: 2
Topic starter
(@arcadi)
New Member
Registrado: hace 16 años

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

Responder
3 respuestas
_jm_
Respuestas: 961
 JM
(@_jm_)
Prominent Member
Registrado: hace 20 años

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;

Responder
_jm_
Respuestas: 961
 JM
(@_jm_)
Prominent Member
Registrado: hace 20 años

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;

Responder
arcadi
Respuestas: 2
Topic starter
(@arcadi)
New Member
Registrado: hace 16 años

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

Responder
Compartir: