Files
rotary_cotroller/README.md
Marco Gallegos ce9f8d9f36 Revise README for DC Motor Control project
Updated the README to provide a comprehensive overview of the DC Motor Control project, including hardware setup, functionality, and future enhancements.
2026-01-18 11:30:45 -06:00

190 lines
4.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 hombremá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: 0100 %
### 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.