Aquí tienes un repaso detallado sobre el controlador PCA9685, ideal para prepararte para tu evaluación:
1. ¿Qué es la PCA9685?
Es un controlador de 16 canales que permite manejar múltiples servomotores o LEDs utilizando solo dos pines del microcontrolador (como Arduino o ESP32). Se comunica mediante el protocolo I2C, lo que ahorra muchos pines de salida y descarga al procesador principal de la tarea de generar señales en tiempo real.
2. ¿Cómo se usa para controlar servos?
Conexión I2C: Se conecta a los pines SDA y SCL del microcontrolador.
Alimentación Externa: Los servos consumen mucha corriente, por lo que la PCA9685 tiene una bornera (normalmente azul) para conectar una fuente externa (ej. 5V o 6V). No se deben alimentar los servos directamente desde el Arduino.
Librerías: Generalmente se utiliza la librería de Adafruit (
Adafruit_PWMServoDriver), que permite enviar comandos simples para posicionar cada servo de forma independiente.
3. Puertos de la PCA9685
La placa está organizada de la siguiente manera:
Pines de Control (I2C): VCC, V+, SDA, SCL, GND y OE (Output Enable, para apagar todas las salidas).
Canales de Salida (0 al 15): Tiene 16 grupos de 3 pines. Cada grupo tiene:
PWM (Amarillo/Blanco): La señal de control.
V+ (Rojo): Alimentación positiva para el servo.
GND (Negro/Marrón): Tierra.
Puente de Direcciones: Pequeños pads de soldadura para cambiar la dirección I2C y conectar hasta 62 placas en cascada.
4. ¿Qué es una señal PWM?
PWM (Pulse Width Modulation) o Modulación por Ancho de Pulso, es una técnica que consiste en variar el tiempo que una señal eléctrica está en estado "alto" (encendido) dentro de un ciclo constante.
En los servos, no importa el voltaje promedio, sino la duración exacta del pulso en milisegundos, ya que esto le indica al servo en qué ángulo posicionarse (por ejemplo, 1ms para 0°, 1.5ms para 90° y 2ms para 180°).
5. Pulso Mínimo y Máximo
En la programación de la PCA9685 (que tiene una resolución de 12 bits, es decir, valores de 0 a 4095):
PULSO_MIN: Es el valor numérico que corresponde al tiempo mínimo (usualmente 0°). Suele estar cerca de 150.
PULSO_MAX: Es el valor que corresponde al tiempo máximo (usualmente 180°). Suele estar cerca de 600.
6. Significado de const int PULSO_MAX = 600;
Según el estándar de programación para estos controladores:
Significado: Este número representa la longitud del pulso para la posición máxima del servomotor.
En el contexto del código: Indica el valor de "conteo" (ticks) en el que la señal PWM debe bajar a 0 para que el servo alcance su ángulo máximo (180°). Si el comentario dice algo como "Valor de pulso para 180 grados", ese es el significado exacto: definir el límite superior del recorrido del servo para evitar que intente girar más allá de su capacidad física y se dañe.
Resumen para tu examen:
PCA9685: 16 canales, I2C, 12 bits de resolución.
PWM: Control por duración de pulso.
600: El valor máximo de la señal para llegar al tope de giro (180°).