Autor Tema: Proyecto seguidor de línea, dudas de control.  (Leído 5737 veces)

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

Desconectado Jorge555

  • PIC18
  • ****
  • Mensajes: 496
    • JMN
Proyecto seguidor de línea, dudas de control.
« en: 25 de Febrero de 2009, 17:47:50 »
Hola, a ver si me pueden orientar sobre como realizar este proyecto.

Me encuentro realizando un coche que tiene que seguir una línea a la máxima velocidad posible para presentarme a concursos de robótica y estoy realizando la programación, como sensores uso CNY70 leídos en digital y un pic18f452 para controlar la electrónica del coche programado en C. El coche consta de un servomotor para girar las ruedas y un motor para moverlo a distintas velocidades y en ambos sentidos. Es decir que en función de la posición del coche sobre la línea tendría que mandar dos entradas al sistema, la posición del servomotor y la velocidad del motor del coche.

En principio para simplificar he puesto la velocidad como constante para reducir el sistema a la entrada del servomotor solamente y más adelante cuando tenga resuelto este punto habilitar la velocidad variable.

He realizado un control proporcional para controlar el servomotor de dirección mientras el coche se mueve con una velocidad constante, éste parece que funciona bien y ahora estoy empezando a implementar la parte derivativa del control para corregir la oscilación del coche al usar una constante proporcional alta para que el coche responda lo antes posible.

La parte derivativa que añadir al regulador sería restar el error presente con el error anterior de la posición del coche respecto a la línea entre un tiempo de muestreo, este tiempo de muestreo es función de la velocidad a la que va el coche, como en principio ésta va a ser constante el tiempo también lo sería. Y aquí va mi primera duda, cada cuanto tiempo debo comparar el error pasado con el error actual para implementar el regulador D, creo que lo único que puedo hacer es prueba y error... alguna idea para este punto? ya que el ajuste de las constantes P y D al no tener la planta del coche tb se hará de manera experimental.

Mis conocimientos de electrónica de control son pobres, en su día sólo vi sistemas SISO y no se muy bien como enfocar el problema de tener dos entradas (motor y servomotor) y una salida en lugar de una sóla entrada y una sola salida. Ya que la Kp del servomotor va en función de la velocidad del coche y si esta es variable tendría que cambiar en función de la velocidad actual, y la Kd más de lo mismo.

Si alguien me puede recomendar algún documento sobre sistemas MISO u orientarme como resolver este problema estaría agradecido ya que ando totalmente pérdido en como resolver ésto.

También voy a añadir un módulo de comunicación al coche para mandar el error de los sensores a un ordenador mientras el coche está sobre la pista, de esta forma podría ver como influye los valores de las constantes y no sé si incluso sacar una aproximación de la planta mediante matlab, generando trazados establecidos en la superficie y viendo la respuesta del sistema, para ello puede que tenga que cambiar los sensores a analógico en lugar de digitales para tener mayor resolución.

En fin a ver si alguien que haya hecho algo similar o sepa del tema de electrónica de control puede orientarme un poco o indicarme algo que leer, de momento os dejo lo que llevo hecho: http://www.jmnlab.com/programar1/programar1.html

Muchas gracias. Saludos.

« Última modificación: 25 de Febrero de 2009, 17:51:15 por Jorge555 »

Desconectado blackcat

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 600
Re: Proyecto seguidor de línea, dudas de control.
« Respuesta #1 en: 25 de Febrero de 2009, 19:18:31 »
Hola ...

No me queda claro eso de cambiar el tiempo de muestreo ... mas bien creo que la variable derivativa se debe ajustar de acuerdo a la velocidad, es decir, Kd y no ts ... aunque es lógico que si cambiamos el tiempo de muestreo la variable derivativa cambia ..

En los sistemas digitales simples y comunes el tiempo de muestreo es fijo y constante ... se debe hacer con un timer y no con delays en el código.

El PID es un controlador experimental, debes variar la variable Kd y ver que sucede ...

saludos! 
Control Automático, DSP & Microcontroladores

Desconectado Jorge555

  • PIC18
  • ****
  • Mensajes: 496
    • JMN
Re: Proyecto seguidor de línea, dudas de control.
« Respuesta #2 en: 25 de Febrero de 2009, 20:00:46 »
Hola, a ver si consigo enfocar bien lo que quiero hacer, el Ts  para el derivativo tengo que establecerlo para la máxima velocidad que espero alcanzar que sería el equivalente por decirlo de alguna forma a la frecuencia máxima de la señal a muestrear, ya que la velocidad con la que cambia la línea es función de la velocidad de mi coche (además de la orientación de la dirección/trayectoría línea). Una vez hecho ésto establecer un valor de Kp crítico y ajustar Kd hasta que encuentre la respuesta buscada.

Digamos que tengo que hacer dos reguladores, un regulador para el servomotor y otro regulador para la velocidad. Mi pregunta es como por ejemplo la salida del motor influye al regulador del servo y viceversa, si están relacionados o los puedo hacer totalmente independientes, ya que no pase de la teoría de sistemas siso (una entrada una salida) y si no me equivoco en éste tengo dos entradas (servo y motor) y una salida posición.

Digamos que lo que quiero que según el error y su derivada el servo gire más o menos y también según el error ysu derivada el motor acelere o frene, ¿por lo que debo hacer dos reguladores, uno para velocidad y otro para el giro? y si estos son independientes el uno del otro, que creo que va a ser así.

Cómo enfocariais el problema?

El Ts lo llevo con el timer2 que lo tengo a 16ms necesarios para controlar la electrónica del coche, aunque si necesito menores tiempos metería otro timer.

Gracias por la respuesta. Saludos.



« Última modificación: 25 de Febrero de 2009, 20:05:21 por Jorge555 »