SINTONIZAR PID CON ARDUINO – Control de velocidad de un motor

SINTONIZAR PID CON ARDUINO – Control de velocidad de un motor

Introducción

En esta entrada, exploraremos una implementación básica y fácil de entender del control de velocidad de un motor usando Arduino. Aunque es un ejemplo simple, sirve como un excelente punto de partida hacia implementaciones más avanzadas y profesionales. Para este proyecto, he utilizado un conocido motorreductor junto con un encoder infrarrojo, elementos comunes en la construcción de maquetas de vehículos a pequeña escala.

Componentes

Arduino UNO R3

Figura 5: Arduino UNO R3.

Yo he usado un Arduino Uno R3 pero os vale cualquier placa Arduino. Si usáis otra placa fijaros bien en cuales son los pines de las interrupciones para que todo funcione correctamente.

Protoboard

Motorreductor 3-6V

Controlador motor L298N

La placa L298N es un módulo controlador de motores ampliamente utilizado en robótica y proyectos de automatización. Su función principal es controlar la velocidad y la dirección de uno o dos motores de corriente continua (DC). Requiere una fuente de alimentación externa para los motores, que puede ser de mayor voltaje que la alimentación del circuito de control.

Disco ranurado

Son fáciles de conseguir. En ocasiones vienen con el motor o con el encoder incluidos en el mismo pack.

Encoder infrarrojo

Un lado emite una luz infrarroja mientras que el otro tiene un receptor fotoeléctrico. Cuando un disco ranurado (solidario al eje del motor) gira, las ranuras permiten que el receptor se active y desactive. Esto es proporcional a la velocidad. La señal se limpia a través del Inversor Schmidt incorporado y luego se envía a Arduino para su procesamiento.

Condensador 10 uF

Usado para atenuar el rebote de la señal del encoder.

Cables dupont

Yo he necesitado Macho-Macho y Macho-Hembra.

Fuente de alimentación externa de 7-12V

Necesaria para el motor. Se pueden usar pilas en su defecto.

Con todos los componentes, el coste del montaje ronda los 50€.

Esquema de conexiones

Montaje

He diseñado un sencillo soporte donde apoyar el motor para la ocasión. Si disponéis de impresora 3D lo tenéis en la carpeta del proyecto.

Identificación

Adecuación de la señal

Aún con el uso del condensador, la señal del encoder es muy ruidosa. Por ello implementaremos un filtro EMA (Exponential Moving Average), o media móvil exponencial representado por la ecuación 1.

\begin{align}
A_{n}=\alpha M+(1-\alpha )A_{n}-1
\end{align}

Siendo An el valor filtrado, alpha es un factor entre 0 y 1, M es el valor muestreado de la señal a filtrar, y An-1 el valor filtrado anterior.

El filtro EMA da más peso a las lecturas más recientes, haciendo que la salida reaccione más rápidamente a los cambios recientes en los datos mientras suaviza las variaciones aleatorias. El valor de alpha determina qué tan rápido el filtro reacciona a los cambios en los datos. Un alpha pequeño hace que el filtro reaccione más lentamente, suavizando más la señal, mientras que un alpha grande hace que el filtro reaccione más rápidamente a los cambios.

A continuación una muestra del efecto de alpha en la señal del encoder con un tiempo de muestreo de un segundo. Se aprecia que a partir de 0.4 la señal empieza a tener demasiado ruido. Un valor entre 0.2 y 0.4 parece razonable aunque debemos comprobar que el filtro elegido no afecte de manera inapropiada al tiempo de respuesta de la señal.

Recopilación de datos en lazo abierto

Una vez filtrada correctamente la señal del encoder, procedemos a identificar el sistema. El sistema responde de manera autorregulada, lo que significa que al cambiar el voltaje, cambiamos la velocidad del motor, que se estabiliza en un nuevo punto de equilibrio. Esto nos permite llevar a cabo un ensayo en lazo abierto, que implica ajustar manualmente el voltaje del motor para observar y registrar cómo varía la velocidad del motor ante estos cambios.

Step Test realizado en lazo abierto
Detalle del salto usado para calcular el sistema
Cálculos del sistema

Control PID

Esquema de control

Esquema de control

La imagen muestra un esquema básico de un sistema de control de velocidad para un motor de corriente continua. En el diagrama, hay dos componentes principales identificados:

Encoder (SC-1): Este dispositivo se utiliza para capturar la velocidad de rotación del eje del motor y convertirla en señales eléctricas. Cada vez que el eje gira, el encoder genera pulsos que se pueden contar para determinar la velocidad de rotación.

Motor de corriente continua: Representado en la parte inferior de la imagen. El motor es la parte del sistema que realiza el trabajo mecánico y cuya velocidad se desea controlar. La señal de control proveniente del controlador PID modula la energía suministrada al motor para mantener la velocidad deseada.

El control funciona de la siguiente manera:

El motor se pone en marcha y su velocidad de rotación es capturada por el encoder. Esta velocidad es enviada al controlador PID, que compara la velocidad real (variable de proceso o PV) con la velocidad deseada (punto de consigna o SP). Si hay una diferencia entre la velocidad real y la deseada, el controlador PID calcula una señal de control (OP) adecuada para ajustar la potencia del motor y corregir el error. Esta señal de control ajusta la velocidad del motor, ya sea aumentándola o disminuyéndola para que coincida con el. Este es un proceso continuo y dinámico donde el controlador PID constantemente ajusta la señal de control en respuesta a las variaciones en la velocidad del motor para mantener la velocidad estable. En resumen, este esquema representa un sistema de control en lazo cerrado para mantener una velocidad constante en un motor de corriente continua, utilizando para ello un controlador PID que procesa la información del encoder y ajusta la señal de potencia al motor.

Prueba de sintonías

Tras la identificación en lazo abierto, estamos en disposición de calcular una serie de sintonías que nos darán una respuesta específica de las cuales debemos elegir una en función del tipo de respuesta que queramos para nuestro sistema. Os recuerdo que estas sintonías son un punto de partida y que podemos retocarlas para ajustar la respuesta a nuestras necesidades. De la mano de la elección de las constantes viene la elección de la ecuación PID. En este caso he llegado a la conclusión de que con una ecuación PI es suficiente, de hecho, en la mayoría de maquetas sencillas que implementéis será así y en pocas ocasiones os hará falta el término derivativo.

Conclusiones

Me gustaría resaltar la importancia de utilizar un filtro para adecuar la señal del encoder. Este aspecto es fundamental ya que un buen filtrado de la señal es esencial para obtener lecturas precisas y fiables. El filtro EMA nos ha permitido suavizar la señal de salida del encoder, reduciendo el ruido y mejorando así la calidad de los datos para una interpretación más precisa. Esta mejora en la calidad de la señal ha sido crucial para realizar ajustes finos en la sintonización de los PIDs, asegurando así respuestas del sistema más estables y eficientes.

Otro punto interesante que hemos abordado es la capacidad de realizar ensayos en lazo abierto para calcular las sintonías de los PIDs. Esta práctica nos ha permitido evaluar y elegir la respuesta más adecuada según nuestras necesidades específicas. El ensayo en lazo abierto es una técnica valiosa porque nos permite ajustar y experimentar con los parámetros del controlador PID sin la influencia de la retroalimentación del sistema. Esto facilita una comprensión más clara de cómo cada componente del PID afecta al comportamiento general del sistema, permitiendo así un ajuste más informado y efectivo.

En resumen, el trabajo realizado con la maqueta ha sido enormemente esclarecedor y educativo. Nos ha brindado la oportunidad de profundizar en aspectos técnicos esenciales de la ingeniería de control, desde la construcción y diseño de sistemas básicos hasta el sofisticado ajuste de parámetros de control. La experiencia adquirida a través de este proyecto nos proporciona una base sólida para futuras investigaciones y desarrollos en este emocionante campo.

Enlaces

Libros y publicaciones

[1] Karl J. Astrom, Tore Hägglund. Control PID avanzado, Pearson, ISBN: 978-84-8322-511-0

[2] Daniel Chuck. Los sistemas de primer orden y los controladores PID, edición 2012. [Link] [Link2]

[3] J.G. Ziegler, N.B. Nichols. Optimum Settings For Automatic Controllers, 1942 edition, American Society of Mechanical Engineers. [Link]

[4] G.H. Cohen, G.A. Coon. Theoretical Consideration of Retarded Control, 1953 edition, American Society of Mechanical Engineers. [Link] [Link2]

[5] Daniel E. Rivera. Internal Model Control: A Comprehensive View, 1999 edition, College of Engineering and Applied Sciences. [Link]

[6] R. Vilanova, A. Visioli. PID Control in the Third Millennium. Chapter 5, The SIMC Method for smooth PID Controller Tuning, Springer. ISBN: 978-1-4471-2424-5.

[7] Morilla García, Fernando. El controlador PID. Dpto. de Informática y Automática UNED. [Link]

[8] Aidan O’Dwyer. Handbook of PI and PID controller tuning rules, 3rd edition, Imperial College Press. ISBN: 978-1-84816-242-6

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Información básica sobre protección de datos
Responsable Garikoitz Martínez Moreno +info...
Finalidad Gestionar y moderar tus comentarios. +info...
Legitimación Consentimiento del interesado. +info...
Destinatarios Automattic Inc., EEUU para filtrar el spam. +info...
Derechos Acceder, rectificar y cancelar los datos, así como otros derechos. +info...
Información adicional Puedes consultar la información adicional y detallada sobre protección de datos en nuestra página de política de privacidad.