Descripción del Proyecto
El Duende Servo Control es un sistema avanzado de control de servomotor que simula movimientos naturales de una cabeza o mecanismo similar. El proyecto implementa una máquina de estados con tres modos de operación controlables por comandos seriales.Este proyecto es ideal para crear personajes animatrónicos, displays interactivos o cualquier aplicación que requiera movimientos de servo realistas y controlables.
Hardware Requerido
- Arduino Nano (o compatible)
- Servo motor (SG90, MG90S o similar)
- Fuente de alimentación: 5V, 1-2A (dependiendo del servo)
- Cables jumper para conexiones
- Protoboard (opcional, para prototipado)
Configuración de Hardware
Diagrama de Conexión
Tabla de Pines
| Pin Arduino | Componente | Descripción |
|---|---|---|
| D9 (PWM) | Servo Signal | Control PWM del servo |
| 5V/VIN | Servo VCC | Alimentación positiva |
| GND | Servo GND | Tierra común |
Características del Sistema
Modos de Operación
Modo VIDA
Movimientos naturales aleatorios cada 6 segundos. Rango exagerado de ±60 grados.
Modo NO
Movimiento rápido de negación continua (40° ↔ 140°).
Modo CENTRO
Servo en posición central (90°) sin movimiento.
Especificaciones Técnicas
- Rango de movimiento: 30° a 150° (±60° desde el centro)
- Intervalo modo VIDA: 6 segundos entre movimientos
- Velocidad de movimiento: 20ms por grado (suave y natural)
- Comunicación serial: 9600 baudios
- Control: Comandos de texto via Serial Monitor
Código Fuente
Guía de Uso
Abrir Serial Monitor
Ve a
Herramientas > Monitor Serial o presiona Ctrl+Shift+M. Configura a 9600 baudios.Probar comandos
Escribe los comandos y presiona Enter:
vida- Activa movimientos naturalesno- Activa movimiento de negacióncentro- Detiene el movimiento
Comandos Disponibles
| Comando | Descripción | Comportamiento |
|---|---|---|
vida | Modo natural | Movimientos aleatorios cada 6s en rango ±60° |
no | Modo negación | Oscilación rápida continua 40° ↔ 140° |
centro | Modo reposo | Retorna suavemente a 90° y se detiene |
Los comandos no distinguen entre mayúsculas y minúsculas. Puedes escribir “VIDA”, “vida” o “ViDa”.
Análisis del Código
Máquina de Estados
El proyecto usa unenum para definir estados claros:
Movimiento Natural (codigo.ino:27-64)
La funciónmovimientoNatural() implementa un algoritmo de dos fases:
Fase 1: IDA - Movimiento aleatorio
Fase 1: IDA - Movimiento aleatorio
- Genera un offset aleatorio entre -60° y +60°
- El servo se mueve suavemente hasta el objetivo
- Pausa de 1 segundo en la posición (“observando”)
Fase 2: VUELTA - Retorno al centro
Fase 2: VUELTA - Retorno al centro
- Siempre regresa a la posición central (90°)
- Movimiento suave de 20ms por grado
- Resetea el temporizador para el próximo ciclo
Movimiento de Negación (codigo.ino:22-25)
Control Serial (codigo.ino:67-89)
El sistema lee comandos del Serial Monitor:- Lee la cadena hasta encontrar nueva línea
- Elimina espacios con
trim() - Convierte a minúsculas con
toLowerCase() - Compara y cambia el estado correspondiente
Personalización
Ajustar el Rango de Movimiento
Cambiar la Velocidad
Ajustar el Intervalo entre Movimientos
Mejoras Futuras
Control Remoto
Agregar módulo Bluetooth (HC-05) o WiFi (ESP8266) para control inalámbrico
Sensor de Proximidad
Activar movimientos automáticamente cuando detecte personas cercanas
Múltiples Servos
Expandir a 2-3 servos para movimientos más complejos (cabeza + brazos)
Modos Adicionales
Agregar patrones de movimiento: asiento, duda, búsqueda, etc.
Troubleshooting
El servo vibra o hace ruido
El servo vibra o hace ruido
Causas posibles:
- Alimentación insuficiente (usa fuente externa)
- Servo defectuoso o desgastado
- Posiciones fuera del rango del servo (verificar 0-180°)
Movimientos entrecortados
Movimientos entrecortados
Causa: Delay demasiado corto entre pasos.Solución: Aumenta el
delay() en las funciones de movimiento a 20-30ms.No responde a comandos serial
No responde a comandos serial
Verificar:
- Baudios configurados a 9600
- Cable USB conectado correctamente
- Puerto COM correcto en Arduino IDE
- Enviar comando con Enter (new line)
Servo no se mueve
Servo no se mueve
Verificar:
- Conexión del cable señal al pin D9
- Alimentación 5V y GND conectados
- Servo funcional (probar con sketch de ejemplo)
Recursos
Servo Library
Documentación oficial de la librería Servo
Arduino Nano Pinout
Diagrama de pines y especificaciones
SG90 Datasheet
Especificaciones técnicas del servo SG90
Arduino Serial
Referencia de comunicación serial
