banner
Centro de Noticias
Servicio excepcional

Uno que me perdí: controlador LED reutilizado para 16 servos

Dec 04, 2023

Estaba mirando la electrónica detrás del pequeño perro robot Petoi (bien), y noté un chip que no conocía antes, el PCA9685 de NXP.

Profundizando más, noté que Adafruit también lo usa para crear los pulsos clásicos de 1,0 a 2,0 ms que indican a los servicios de hobby dónde colocarse.

Tiene una entrada I2C y puede crear hasta 16 canales pwm: qué dispositivo tan útil.

NXP lo creó para controlar LED rojos, verdes, azules y ámbar en retroiluminación de cuatro colores para pantallas.

PCA9685 de NXP, mostrando uno de sus 16 canales de salida PWM

Cada PWM es de 12 bits, por lo que hay 4096 pasos (0% y 100% también son posibles), y todos los canales comparten una frecuencia base programable entre 24 Hz y 1,5 kHz (el oscilador interno es de ~25 MHz y se pueden aplicar externamente hasta 50 MHz).

Además, las salidas se pueden configurar en drenaje abierto (5,5 V máx.) o tótem. La capacidad es fuente de 10 mA y sumidero de 25 mA.

Se necesita un suministro de entre 2,3 y 5,5 V, y las entradas son tolerantes a 5,5 V.

No tengo idea de qué alma inteligente decidió por primera vez que esto sería una fuente de señal para servicios (¿quizás Adafruit?), pero qué buena idea: 16 servicios controlados a través de un solo bus I2C, que puede funcionar a 1MHz.

Cada salida tiene dos registros de 12 bits, nominalmente denominados tiempo de encendido y apagado, pero en realidad interactúan con un marco de tiempo fijo de 4096 conteos de una manera más compleja de lo que sugieren sus nombres para brindar control de fase relativa entre todos los canales también. como tiempo de encendido y apagado: comience en el capítulo 7.3.3 de la hoja de datos de PCA9685 para quedarse atónito por un tiempo.

Los bits separados configuran cada canal completamente apagado o completamente encendido, y hay una manera de activar o desactivar todos los canales junto con un comando global. Cada salida también tiene su propio bit de inversión de salida.

La frecuencia de salida se establece mediante un preescalador de 8 bits y produce una frecuencia de 25 MHz/4096/preescalador, aunque, por razones que me encantaría saber, no se puede establecer por debajo de división por cuatro, por lo que los ajustes de ÷1, ÷2 o ÷3 se reemplazan automáticamente por ÷4. ÷5 y más son posibles. Por defecto produce ~200Hz.

Afortunadamente para el resto de nosotros, AdaFruit ha creado una biblioteca Arduino para controlar el chip como un servocontrolador multicanal (agradecemos a Limor Fried por tantas buenas bibliotecas Arduino) y también tiene algo similar para CircuitPython y Python.

Por cierto, si estás interesado en el perro robot Peroi Bittle, encuéntralo aquí. Básicamente tiene electrónica Arduino: una placa Arduino-esk personalizada con periféricos adecuados.

bienPCA9685 de NXP, mostrando uno de sus 16 canales de salida PWMSteve Bush