Skip to content

Manuel-Rangel-Dev/Control-Banda-Transportadora

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Control de Velocidad - Motor DC + Banda Transportadora

Proyecto integrador para modelar y controlar la velocidad de una banda transportadora accionada por un motor DC con encoder Hall. El proyecto está separado en dos interfaces:

  • GUI_Arduino: interfaz de escritorio para conexión serial con Arduino, control en tiempo real y comparación contra el modelo.
  • GUI_Modelado: interfaz Streamlit dedicada al análisis matemático del sistema.

El firmware del Arduino se desarrolla con PlatformIO.

Estructura Del Proyecto

Proyecto_Integrador/
+-- Banda_GUI/
|   +-- platformio.ini
|   +-- src/
|       +-- main.cpp              # Firmware Arduino/PlatformIO
+-- GUI_Arduino/
|   +-- main.py                    # Interfaz de escritorio de Arduino
|   +-- constants.py
|   +-- data_manager.py
|   +-- model_engine.py
|   +-- plot_widgets.py
|   +-- serial_manager.py
|   +-- requirements.txt
+-- GUI_Modelado/
|   +-- GUI.py                    # Interfaz Streamlit de modelado matemático
|   +-- control_math.py
|   +-- requirements.txt
+-- Pruebas_Arduino/              # Códigos necesarios para obtener modelado y hacer pruebas
+-- Docs/
+-- LICENSE
+-- README.md

Firmware PlatformIO

El firmware está en:

Banda_GUI/src/main.cpp

La placa configurada actualmente es Arduino Uno:

[env:uno]
platform = atmelavr
board = uno
framework = arduino
monitor_speed = 115200
upload_speed = 115200

Pines

Elemento Pin
Encoder A 2
Encoder B 3
L298N IN1 8
L298N IN2 9
L298N ENA/PWM 10

Encoder Y Muestreo

PPR motor = 16.0
Relación de reducción = 270.0
CPR = PPR motor * relación de reducción
Periodo de muestreo = 50 ms

Rango De Operación

El setpoint usado actualmente está limitado a:

11 RPM <= setpoint <= 35 RPM

La GUI de Arduino y el firmware aplican este rango.

Conversión RPM A PWM

El setpoint se ingresa en RPM. El firmware calcula un PWM base con la relación experimental:

PWM = 0.0416*RPM^3 - 2.3343*RPM^2 + 44.086*RPM - 210.76

Ese PWM base se usa como acción inicial o feed-forward. Luego el controlador seleccionado suma una corrección según el error medido por el encoder. El resultado final se limita al rango válido de Arduino:

0 <= PWM <= 255

Modelos De Planta

Los modelos usados en GUI_Arduino y GUI_Modelado son:

Primer Orden

$$G_1(s) = \frac{3.5203}{0.1681s + 1}$$

Segundo Orden

$$G_2(s) = \frac{1737.68}{s^2 + 88.87s + 493.62}$$

Controladores

Controlador Función de transferencia Parámetros
P C(s) = Kp Kp
PI C(s) = Kp + Ki/s Kp, Ki
PD C(s) = Kp + Kd*s Kp, Kd
PID C(s) = Kp + Ki/s + Kd*s Kp, Ki, Kd

Protocolo Serial

La interfaz de Arduino envía comandos de texto terminados en salto de línea.

Comando Función
START Inicia el control y la transmisión de datos
STOP Detiene el motor
RESET Reinicia conteos e integrador
SETPOINT:<rpm> Cambia el setpoint en RPM, limitado internamente a 11-35 RPM
CTRL:P Selecciona controlador proporcional
CTRL:PI Selecciona controlador proporcional-integral
CTRL:PD Selecciona controlador proporcional-derivativo
CTRL:PID Selecciona controlador PID
GAINS:<kp>,<ki>,<kd> Actualiza las ganancias del controlador

El firmware responde con datos CSV por serial:

tiempo_s,rpm_medida,setpoint_rpm,error_rpm,pwm,controlador

GUI_Arduino

Interfaz de escritorio hecha con Tkinter + Matplotlib.

Incluye:

  • Selección de puerto serial.
  • Botones para conectar, desconectar, iniciar, detener y limpiar datos.
  • Setpoint en RPM dentro del rango 11-35.
  • Selección de controlador P, PI, PD o PID.
  • Ajuste de ganancias Kp, Ki y Kd.
  • Envío manual de parámetros mediante el botón Enviar parámetros.
  • Gráfica superior con RPM real, setpoint y modelo matemático.
  • Gráfica inferior del error.
  • Cambio de color por controlador:
    • P: cian
    • PI: verde
    • PD: amarillo
    • PID: morado

Cuando se cambia el setpoint o controlador, la gráfica conserva el historial: desde el instante del cambio hacia adelante se dibuja el nuevo tramo.

Ejecutar GUI_Arduino

cd "C:\Users\Manuel\Desktop\Universidad\Control Automático\VScode\Proyecto_Integrador\GUI_Arduino"
pip install -r requirements.txt
python GUI.py

GUI_Modelado

Interfaz Streamlit dedicada solo al modelado matemático.

Incluye:

  • Setpoint entre 11 RPM y 35 RPM.
  • Selección de modelo de planta: primer orden o segundo orden.
  • Controladores P, PI, PD y PID.
  • Respuesta temporal en lazo cerrado.
  • Lugar de las raíces y regiones de estabilidad.
  • Mapa de polos y ceros.
  • Diagramas de Bode y márgenes.
  • Diagnóstico de estabilidad.

Las gráficas temporales se muestran hasta que la respuesta entra y permanece dentro de la región del 2% del setpoint. Si la respuesta no alcanza esa región, la gráfica se extiende hasta 10 segundos.

Ejecutar GUI_Modelado

cd "C:\Users\Manuel\Desktop\Universidad\Control Automático\VScode\Proyecto_Integrador\GUI_Modelado"
pip install -r requirements.txt
streamlit run GUI.py

Compilar Y Cargar El Firmware

Desde la carpeta Banda_GUI:

cd "C:\Users\Manuel\Desktop\Universidad\Control Automático\VScode\Proyecto_Integrador\Banda_GUI"
pio run
pio run -t upload

También se puede cargar desde VSCode usando el botón Upload de PlatformIO.

Flujo Recomendado Para Pruebas Con Arduino

  1. Conectar el Arduino por USB.
  2. Cargar el firmware con PlatformIO si hubo cambios en main.cpp.
  3. Ejecutar GUI_Arduino.
  4. Seleccionar el puerto serial y presionar Conectar.
  5. Elegir setpoint, controlador y ganancias.
  6. Presionar Enviar parámetros.
  7. Presionar START.
  8. Observar la velocidad real, la respuesta del modelo y el error.
  9. Si se cambia setpoint, controlador o ganancias, volver a presionar Enviar parámetros.
  10. Presionar STOP antes de desconectar.

Requisitos

  • Python 3.9 o superior.
  • VSCode.
  • Extensión PlatformIO.
  • Arduino Uno o placa compatible.
  • Driver serial correspondiente a la placa, si aplica.

Licencia

Este proyecto se distribuye bajo licencia MIT. Consulta el archivo LICENSE para más detalles.

About

Código para realizar el análisis de una banda transportadora.

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors