mirror of
https://github.com/marcogll/rotary_cotroller.git
synced 2026-03-15 13:25:23 +00:00
Updated the README to provide a comprehensive overview of the DC Motor Control project, including hardware setup, functionality, and future enhancements.
190 lines
4.0 KiB
Markdown
190 lines
4.0 KiB
Markdown
# Proyecto de Control de Motor DC
|
||
|
||
## 1. Descripción General
|
||
|
||
Este proyecto implementa una consola digital de control para un motor de corriente continua (DC), orientada a operación segura, control fino de velocidad y protección mecánica/eléctrica. A diferencia de un control directo con potenciómetro, el sistema introduce:
|
||
|
||
- Máquina de estados para evitar arranques accidentales.
|
||
- Aceleración y desaceleración progresiva (rampa).
|
||
- Inversión de giro con secuencia controlada.
|
||
- Interfaz hombre–máquina con encoder rotatorio, botones y pantalla OLED.
|
||
|
||
El sistema se desarrolla inicialmente sobre **HW-364A (ESP8266)**, con una ruta clara de migración a **ESP32 DevKit V1**.
|
||
|
||
---
|
||
|
||
## 2. Arquitectura del Sistema
|
||
|
||
### 2.1 Flujo Funcional
|
||
|
||
```
|
||
Usuario (Encoder / Botones)
|
||
↓
|
||
ESP8266
|
||
↓
|
||
Driver DRV8871
|
||
↓
|
||
Motor DC
|
||
↓
|
||
OLED (Feedback)
|
||
```
|
||
|
||
---
|
||
|
||
## 3. Hardware
|
||
|
||
### 3.1 Controlador Principal
|
||
|
||
- Placa: HW-364A
|
||
- MCU: ESP8266
|
||
- Lógica: 3.3 V
|
||
- Limitación crítica: GPIO reducidos
|
||
|
||
### 3.2 Sistema de Energía
|
||
|
||
- Tierra común (GND) para todo el sistema
|
||
- Motor alimentado por fuente externa independiente
|
||
- Electrónica alimentada a 3.3 V
|
||
|
||
### 3.3 Asignación de Pines
|
||
|
||
| Función | Señal | Pin |
|
||
|------|------|-----|
|
||
| OLED SDA | Datos I2C | D2 |
|
||
| OLED SCL | Reloj I2C | D1 |
|
||
| Encoder A | Giro A | D5 |
|
||
| Encoder B | Giro B | D6 |
|
||
| Botón Centro | Start | D7 |
|
||
| Botón Back | Reversa | D8 |
|
||
| Botón Confirm | Adelante | D3 |
|
||
| Driver IN1 | Motor A | D0 |
|
||
| Driver IN2 | Motor B | D4 |
|
||
|
||
### 3.4 Driver de Potencia
|
||
|
||
- Modelo: DRV8871
|
||
- Control PWM bidireccional
|
||
- Polaridad definida por IN1 / IN2
|
||
|
||
---
|
||
|
||
## 4. Lógica de Control
|
||
|
||
### 4.1 Máquina de Estados
|
||
|
||
| Estado | Descripción |
|
||
|------|-------------|
|
||
| WAITING_START | Sistema armado, motor bloqueado |
|
||
| SELECT_DIR | Selección explícita de sentido |
|
||
| RUNNING | Operación normal |
|
||
| CHANGING_DIR | Inversión controlada |
|
||
|
||
### 4.2 Arranque Seguro
|
||
|
||
El motor permanece apagado hasta confirmación explícita del usuario. Previene reinicios peligrosos tras fallas de energía.
|
||
|
||
### 4.3 Selección de Sentido
|
||
|
||
- BACK → Reversa
|
||
- CONFIRM → Adelante
|
||
|
||
No existe sentido por defecto.
|
||
|
||
### 4.4 Control de Velocidad Adaptativo
|
||
|
||
- Giro lento → ±1 %
|
||
- Giro rápido (< 50 ms) → ±5 %
|
||
- Rango: 0–100 %
|
||
|
||
### 4.5 Rampa de Aceleración
|
||
|
||
Variables desacopladas:
|
||
|
||
- `targetSpeed` → intención del usuario
|
||
- `currentSpeed` → acción física
|
||
|
||
Incremento/decremento: 0.5 % por ciclo (~2.5 s a plena escala).
|
||
|
||
### 4.6 Inversión Inteligente
|
||
|
||
Secuencia obligatoria:
|
||
|
||
1. Rampa descendente hasta 0 %
|
||
2. Pausa mecánica
|
||
3. Cambio de polaridad
|
||
4. Rampa ascendente
|
||
|
||
---
|
||
|
||
## 5. Firmware
|
||
|
||
### 5.1 Inicialización (`setup()`)
|
||
|
||
- Configuración de GPIO
|
||
- Motor apagado por defecto
|
||
- Botones con pull-up interno
|
||
- Inicialización OLED
|
||
|
||
### 5.2 Bucle Principal (`loop()`)
|
||
|
||
- Lectura del encoder
|
||
- Ejecución de máquina de estados
|
||
- Control de rampa
|
||
- Render de interfaz
|
||
|
||
### 5.3 Funciones Críticas
|
||
|
||
- `readEncoderSpeed()` → velocidad adaptativa
|
||
- `handleDirectionButtons()` → solicitud de inversión
|
||
- `updateMotorRamp()` → núcleo de control
|
||
- `drawInterface()` → visualización
|
||
|
||
---
|
||
|
||
## 6. Interfaz de Usuario
|
||
|
||
- Flechas grandes indican sentido
|
||
- Porcentaje central = velocidad real
|
||
- Indicador secundario = velocidad objetivo
|
||
|
||
Diseño orientado a lectura inmediata.
|
||
|
||
---
|
||
|
||
## 7. Limitaciones Actuales
|
||
|
||
- GPIO al límite
|
||
- Sin indicadores periféricos
|
||
- Expansión restringida
|
||
|
||
---
|
||
|
||
## 8. Versión 2 (V2)
|
||
|
||
### 8.1 Migración a ESP32
|
||
|
||
- Mayor número de GPIO
|
||
- PWM por hardware
|
||
- Escalabilidad
|
||
|
||
### 8.2 LED RGB de Estado
|
||
|
||
| Color | Significado |
|
||
|------|-------------|
|
||
| Amarillo | Standby / 0 % |
|
||
| Verde | Adelante |
|
||
| Rojo | Reversa |
|
||
| Rojo/Verde | Inversión |
|
||
|
||
### 8.3 Cambios en Firmware
|
||
|
||
- Nueva función `updateLeds()`
|
||
- GPIO dedicados (25, 26, 27)
|
||
- Mezcla de color por PWM
|
||
|
||
---
|
||
|
||
## 9. Conclusión
|
||
|
||
El sistema establece una base sólida para control seguro y profesional de motores DC, con una arquitectura preparada para evolucionar hacia una solución embebida más robusta en ESP32.
|