Este proyecto implementa un sistema de control de posición utilizando un sensor ultrasónico (HC-SR04), un módulo puente H, dos motores DC, y un controlador basado en espacio de estados. El código está diseñado para plataformas Arduino y emplea temporización mediante la librería TimerOne.
- Sensor ultrasónico: Mide la distancia respecto a un objetivo.
- Controlador basado en estado: Regula la posición del motor en función del error de distancia.
- Temporización: Se utiliza un temporizador de 10 ms (Timer1) para ejecutar el control de manera periódica.
- Comunicaciones seriales: Permite visualizar las variables de control y cambiar la distancia deseada.
| Componente | Pin en Arduino | Descripción |
|---|---|---|
| Sensor Ultrasónico | TrigPin: 7 | Pin de activación del sensor |
| EchoPin: 6 | Pin de recepción del pulso | |
| Motor DC | IN3: 2 | Sentido de giro Motor B |
| IN4: 4 | Sentido de giro Motor B | |
| ENB: 3 | Control de velocidad PWM |
- Librería TimerOne: Manejo del temporizador.
-
Clona el repositorio:
git clone https://github.com/tu-usuario/tu-repositorio.git
-
Carga el código en la tarjeta Arduino:
- Abre el archivo en el IDE de Arduino.
- Selecciona la placa correcta y el puerto serial.
- Carga el programa.
-
Uso mediante comunicación serial:
- Envía la letra 'A' para ver las variables del sistema:
- Distancia medida
- Distancia deseada
- Estados internos del controlador.
- Envía la letra 'D' seguido de un valor (0-255) para cambiar la distancia deseada.
- Envía la letra 'A' para ver las variables del sistema:
- El sensor ultrasónico mide la distancia actual (distance1).
- Se calcula el error en los estados (xa y xb) y se aplica un controlador de espacio de estados con ganancias
k_1yk_2. - El control generado ajusta:
- Dirección del motor: Adelante o atrás según el signo del error.
- Velocidad: Proporcional al voltaje de control
u, limitado entre 50 y 255 (PWM).
- El sistema se ejecuta cada 10 ms usando una interrupción de temporizador.
| Variable | Descripción |
|---|---|
distance_setpoint |
Distancia objetivo (en cm) |
distance1 |
Distancia medida por el sensor ultrasónico |
u |
Señal de control generada |
xa, xb |
Estados del sistema (posiciones controladas) |
voltajebits |
Valor de PWM aplicado al motor |
30.25 30.00 0.12 0.35
29.90 30.00 0.08 0.29
30.10 30.00 0.10 0.32
- Primera columna: Distancia actual medida.
- Segunda columna: Distancia deseada.
- Tercera y cuarta columna: Estados del sistema (xa y xb).
- Configuración de prueba: Distancia objetivo de 30 cm.
- Resultados esperados: El motor ajusta su velocidad y dirección para mantener la distancia medida cercana a la deseada.
- Para una mejor visualización de los resultados, el proyecto puede integrarse con LabVIEW. El proceso es sencillo: se abre el archivo correspondiente, se selecciona el puerto serial al que está conectado el microcontrolador Arduino UNO, se establece un SetPoint y se presiona Start. Una vez iniciado, el sistema comienza a funcionar y permite interactuar dinámicamente con la interfaz, observando en tiempo real la curva de respuesta y con la posibilidad de ajustar el SetPoint en cualquier momento.
Proyecto desarrollado como sexto laboratorio de la asignatura Sistemas de Control Automático II del programa de Ingeniería Electrónica de la Universidad del Quindío.
Desarrollado por los estudiantes Daniel Alejandro Cangrejo López, Alvaro Sebástian Hernandez Ramirez y Andrea Carolina Soler.
Cualquier duda o mejora, ¡no dudes en contribuir! 🚀