Módulo PCA9685 para Servos
search
  • Módulo PCA9685 para Servos

Módulo PCA9685 para Servos

$ 6,25+IVA ($ 7,19)
Resumen

✅ Chip Principal: PCA9685

✅ Canales de Control: 16 (PWM)

✅ Protocolo de Comunicación: I2C (2 pines)

✅ Voltaje de Operación: 3.3V y 5V

✅ Frecuencia de PWM: Ajustable

✅ Aplicaciones: Control de servomotores, robots, iluminación LED, brazos robóticos

✅ Compatibilidad: Arduino, Raspberry Pi, ESP32, STM32

Descuentos por volumen

Cant. Precio unitario Usted ahorra
3 $ 4,60 $ 4,95
Cant.
19

A partir de Precio unitario
3 $ 4,60+IVA ($ 5,29)

*Los descuentos por cantidad se aplican sobre el número total de unidades del producto (puede incluir una o más variantes).

*Ver las Formas de Pago disponibles.

*Entrega inmediata el mismo día (o en un plazo de 24 a 48 horas según el lugar de destino). Ver las Formas de Entrega y Costos de Envío.

Producto de Alta Calidad con Garantía de Total Satisfacción. 

La calidad es lo primero. Satisfacción garantizada.

El módulo PCA9685 es un driver de control PWM (Modulación por Ancho de Pulso) diseñado para resolver el problema de la falta de pines PWM en microcontroladores como Arduino. Con este módulo, puedes controlar hasta 16 servomotores o LEDs de manera simultánea y precisa utilizando solo dos pines de tu placa (SDA y SCL) gracias al protocolo de comunicación I2C. Esto te permite liberar los pines de tu microcontrolador para otras funciones.

Este módulo es una solución imprescindible para proyectos de robótica, brazos robóticos, o cualquier aplicación que requiera controlar múltiples servos o la intensidad de múltiples LEDs. El chip PCA9685 genera señales PWM de alta resolución (12 bits), lo que se traduce en un movimiento suave y preciso de los servos. Además, es completamente compatible con microcontroladores de 5V y 3.3V, lo que lo hace muy versátil.

Beneficios destacados:

  • Control de Múltiples Servos: Controla hasta 16 servomotores o LEDs de forma simultánea con una sola placa Arduino.
  • Ahorro de Pines: Utiliza solo los dos pines del bus I2C de tu microcontrolador (SDA y SCL).
  • Versatilidad: Compatible con la mayoría de los microcontroladores populares.
  • Fácil de Usar: Cuenta con librerías y ejemplos de código para una rápida implementación con Arduino.
  • Libera los pines PWM de Arduino para otras funciones.
  • Precisión: Tiene una resolución de 12 bits, lo que significa que puede generar 4096 niveles de PWM, lo que permite un control más preciso y suave de los servos.
  • Incluye un oscilador interno de 25 MHz, lo que evita tener que usar un cristal externo.
  • Tiene un registro de preescala que permite ajustar la frecuencia de las señales PWM entre 24 Hz y 1526 Hz, lo que permite adaptarse a las especificaciones de los diferentes servos.
  • El pin OE (output enable) permite deshabilitar todas las salidas PWM con una sola señal, lo que puede ser útil para ahorrar energía o evitar interferencias.

¿Cómo se conecta el módulo PCA9685 a Arduino?

Para conectar el módulo PCA9685 a Arduino, solo hay que seguir estos pasos:

- Conectar el pin VCC del módulo al pin 5V de Arduino.

- Conectar el pin GND del módulo al pin GND de Arduino.

- Conectar el pin SDA del módulo al pin A4 de Arduino (o al pin correspondiente al bus I2C en otros modelos de Arduino).

- Conectar el pin SCL del módulo al pin A5 de Arduino (o al pin correspondiente al bus I2C en otros modelos de Arduino).

- Conectar el pin OE del módulo a tierra si no se va a usar, o a un pin digital de Arduino si se quiere controlar la habilitación de las salidas PWM.

- Conectar los servos a las salidas PWM del módulo, teniendo en cuenta que el cable rojo es el positivo, el cable negro es el negativo y el cable blanco o amarillo es la señal. El positivo y el negativo de los servos se pueden conectar al mismo VCC y GND del módulo, o a una fuente de alimentación externa si se requiere más corriente.

¿Cómo se programa el módulo PCA9685 para mover los servos?

Para programar el módulo PCA9685 para mover los servos con Arduino, hay que seguir estos pasos:

- Instalar la librería Adafruit_PWMServoDriver, que se puede descargar desde este enlace: https://github.com/adafruit/Adafruit-PWM-Servo-Driver-Library

- Incluir la librería en el código con la instrucción #include <Adafruit_PWMServoDriver.h>

- Crear un objeto de la clase Adafruit_PWMServoDriver con la dirección I2C del módulo, que por defecto es 0x40, pero que se puede cambiar mediante los pines A0-A5 del módulo. Por ejemplo: Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver(0x40);

- Inicializar el objeto con la instrucción pwm.begin(), que establece la comunicación I2C y configura el oscilador interno del módulo.

- Establecer la frecuencia de las señales PWM con la instrucción pwm.setPWMFreq(frecuencia), donde frecuencia es un valor entre 24 y 1526. Por ejemplo: pwm.setPWMFreq(50); para una frecuencia de 50 Hz, que es la más común para los servos.

- Mover los servos con la instrucción pwm.setPWM(canal, on, off), donde canal es un valor entre 0 y 15 que indica la salida PWM a la que está conectado el servo, on es un valor entre 0 y 4095 que indica el momento en el que se activa el pulso, y off es un valor entre 0 y 4095 que indica el momento en el que se desactiva el pulso. Por ejemplo: pwm.setPWM(0, 0, 150); para mover el servo del canal 0 a un ángulo de unos 45 grados.

A continuación se muestra un ejemplo de código que mueve dos servos conectados a los canales 0 y 1 del módulo PCA9685 con Arduino:

#include <Adafruit_PWMServoDriver.h>

// Crea un objeto de la clase Adafruit_PWMServoDriver con la dirección I2C del módulo
Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver(0x40);

// Define los valores de on y off para los ángulos de los servos
#define SERVOMIN 150 // Valor mínimo para un ángulo de 0 grados
#define SERVOMAX 600 // Valor máximo para un ángulo de 180 grados

void setup() {
// Inicializa el objeto pwm
pwm.begin();

// Establece la frecuencia de las señales PWM a 50 Hz
pwm.setPWMFreq(50);
}

void loop() {
// Mueve el servo del canal 0 a un ángulo de 90 grados
pwm.setPWM(0, 0, (SERVOMIN + SERVOMAX) / 2);

// Mueve el servo del canal 1 a un ángulo de 45 grados
pwm.setPWM(1, 0, (SERVOMIN + (SERVOMIN + SERVOMAX) / 2) / 2);

// Espera un segundo
delay(1000);

// Mueve el servo del canal 0 a un ángulo de 180 grados
pwm.setPWM(0, 0, SERVOMAX);

// Mueve el servo del canal 1 a un ángulo de 135 grados
pwm.setPWM(1, 0, ((SERVOMIN + SERVOMAX) / 2 + SERVOMAX) / 2);

// Espera un segundo
delay(1000);
}

584-PCA9685
19 Artículos