Boletín No. 108
1o. de mayo de 2025
SEGUIMIENTO DE TRAYECTORIAS UTILIZANDO POLINOMIOS DE BÉZIER Y LA TARJETA STM32F4-DISCOVERY
Josue Roberto Rodríguez Cerón 1 Jorge Rivero Gómez 1 Everardo Hernández Manuel 1 Benjamín Natanael Santiago Nogales 2
Ramón Silva Ortigoza 2 Magdalena Marciano Melchor2
Instituto Politécnico Nacional
1 UPIITA
2CIDETEC, Laboratorio de Mecatrónica y Energía Renovable
Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.
Resumen
En el presente trabajo se muestra un control que resuelve la tarea de seguimiento de trayectoria en la velocidad angular de un motor de CD GM-25-370. Se presentan resultados experimentales logrados mediante una tarjeta STM32F4-DISCOVERY, el software Matlab-Simulink y la biblioteca Waijung. Las pruebas experimentales muestran un buen desempeño del sistema en lazo cerrado ante trayectorias deseadas del tipo Bézier.
I. Introducción
En el presente apartado se explican las generalidades del controlador proporcional-integral-derivativo (PID) [1].
-
- El control proporcional, denotado por la letra P, se utiliza para que la acción del controlador sea proporcional al valor de la señal de error. La representación de este control, tanto en el dominio del tiempo como en el de Laplace, es la siguiente:
-
- Dominio del tiempo.
- Dominio de Laplace.
En diagrama de bloques:
Figura 1. Diagrama de bloques en dominio de Laplace y del tiempo de control proporcional. - Dominio del tiempo.
- Control Integral. Denotado por la letra I, este control integral se usa cuando se requiere que el controlador corrija algún error de estado estacionario producido por un valor constante de la señal de referencia. Este tipo de control se utiliza para eliminar desplazamientos sin tener que usar grandes valores de ganancia en los controladores. La representación de este control, tanto en el dominio del tiempo como en el de Laplace, es la siguiente:
-
- Dominio del tiempo.
- Dominio de Laplace.
En diagrama de bloques:
Figura 2. Diagrama de bloques en dominio de Laplace y del tiempo de control derivativo. - Dominio del tiempo.
- Control Derivativo. La representación de este control, este utiliza la razón de cambio de una señal de error para posteriormente introducir un elemento de predicción dentro del control. La representación para este control tanto para el dominio del tiempo como de Laplace es el siguiente:
-
- Dominio del tiempo.
- Dominio de Laplace.
En diagrama de bloques:
Figura 3. . Diagrama de bloques en dominio de Laplace y del tiempo de control integral. - Dominio del tiempo.
- STM32F407VGT6
- Protoboard.
- Motor GM25-370 a 400 [RPM]
- L298N Driver.
- Fuente de alimentación fija de 12 [V] a 1 [A].
- 6 cables Jumper macho-hembra
- 4 cables jumper hembra-hembra
- Computadora con Matlab 2015b y biblioteca Waijung 1 (STM32).
- Crowe, K. K. Tan, T. H. Lee, R. Ferdous, M. R. Katebi, H.-P. Huang, J.-C. Jeng, K. S. Tang, G. R. Chen, K. F. Man, S. Kwong, A. Sánchez, Q.-G. Wang, Y. Zhang, Y. Zhang, P. Martin, M. J. Grimble, y D. R. Greenwood (2006). PID Control. Springer. ISBN: 978-1-85233-702-5.
- A. R. Rojas Castillo, A. Luviano Juárez, N. B. Lozada Castillo, y R. A. Cortez Vega (s.a.). Construcción de un servomecanismo de 1 GDL[En línea]. Disponible: https://rb.gy/6ky68i. [Último acceso: 07 11 2024].
En el presente artículo se muestra la aplicación de un control para el seguimiento de una trayectoria utilizando un polinomio de Bézier, haciendo uso de la biblioteca Waijung para Matlab y la placa STM32F407VGT6 (STM32F4-Discovery). Las secciones de este trabajo están divididas de tal forma que se pueda proporcionar la mejor explicación posible de la práctica. En la sección II se mencionan los materiales y el software utilizados. En la sección III se muestran los diagramas de bloques implementados dentro del ambiente de Simulink de Matlab, así como los resultados obtenidos, tanto de forma física con el motor de CD, como dentro del programa. Por último, la última sección de este trabajo está dedicada a las conclusiones obtenidas al finalizar la realización de este trabajo.
II. Materiales y software utilizados.
Se elaboró el sistema haciendo uso de la tarjeta STM32F407VGT6 como sistema de comunicación entre el ordenador y el motor GM25-370 a 400 RPM, con un encoder acoplado de 231 PPR (de efecto Hall). En la etapa de potencia, se utilizó el controlador L298N para controlar la velocidad y el sentido de giro del motor.
También, se hace uso del motor GM25-330, el cual cuenta con un Encoder efecto Hall de 231 [PPR]. De esta manera se realiza la adquisición de datos de la velocidad del motor utilizando la placa STM32F411CEU6.
![]() |
---|
Figura 4. Placa STM32F407VGT6. |
III. Programación e implementación del prototipo.
En este apartado se muestra la construcción del prototipo del sistema a estudiar. Para la elaboración de este trabajo se hace uso de la metodología empleada en [2] para la construcción de servomecanismos. Así, se creó un primer programa (test_conexion.slx) para realizar la comunicación entre la computadora, por medio de Simulink, y la placa, haciendo uso de bloques de Waijung. En este programa se cuenta con bloques para definir el MCU de la placa a utilizar, el compilador (GNU ARM) y el tiempo de muestreo de 0.005 [s].
![]() |
---|
Figura 5. Biblioteca Waijung añadida a Simulink con versión de Matlab 2015b. |
Posteriormente se realiza la asignación de los pines C6 y C7 para ejecutar la lectura del encoder del motor.
![]() |
---|
Figura 6. Diagrama para lectura de Enconder del motor y transmisión al VCP para posterior lectura en segundo programa (rutas_Proyecto_host_TEST.slx). |
Por último, mediante el envío de datos a través del USB VCP (Virtual COM Port), se envía una señal PWM (T=0.02s) a través del pin A8. Además, se asignan los pines PD12 y PD13 como salidas para el control del sentido de giro del motor. Este primer programa servirá para establecer la comunicación entre la placa y la computadora. Una vez terminado y configurado, se hace clic en el ícono “Build Model” para iniciar la comunicación.
![]() |
---|
Figura 7. Programa para realizar lectura de pines PD12 y PD13 para Encoder, envío de PWM al pin A8 para el motor. |
Se creó un segundo programa encargado del control PID de la velocidad del motor. Utilizando el Host Serial Setup, se asigna automáticamente el puerto COM de la placa STM32F4 y se configura la velocidad en baudios (bps) para la comunicación. Con los bloques de Host Serial Tx y Rx, se establece la comunicación entre la placa y el programa para controlar el motor.
![]() |
---|
Figura 8. Diagrama de bloques Simulink 2015b con control PD. |
Mediante bloques de simulink se crea un subsistema (estimación_posicion) para realizar la estimación de la posición del eje del motor según valores del enconder, convirtiéndolo a radianes. También, se utiliza una ganancia del motor (G1), la cual es especificada dentro del Mask de este subsistema.
![]() |
---|
Figura 9. Diagrama de bloques Simulink 2015b con control PD. |
Para la programación de la trayectoria deseada de tipo Bezier, de crea un subsistema independiente al controlador.
![]() |
---|
Figura 10. Subsistema para la obtención de la trayectoria por medio de polinomio de Bézier. |
Cabe notar que la sintonización de los valores de las ganancias del controlador PID se realizó por medio del método de Ziegler-Nichols, realizando ajustes hasta obtener el resultado expuesto en la siguiente figura.
![]() |
---|
Figura 11. Scope mostrando señal deseada (color amarillo) vs la señal obtenida por lectura de Encoder del motor (color azul). |
![]() |
---|
Figura 12. SConexión de placa STM34F4-Discovery con motor y Driver L295N. |
IV. Conclusiones
El uso de polinomios de Bézier para resolver la tarea de seguimiento de trayectorias es ampliamente empleado en motores. La biblioteca Waijung1 es un recurso de gran ayuda para establecer la comunicación en tiempo real entre programas de Simulink y una placa de la familia STM32F4. A pesar de la falta de compatibilidad con versiones más recientes de Matlab, sigue siendo una buena opción debido a los diversos problemas encontrados al intentar implementar este tipo de programa con Waijung 2 en versiones más recientes de Matlab utilizando la placa ESP32 de 38 pines.
Referencias