PCA9685介绍与分析(从LED控制到舵机控制)

一、概述

PCA9685设计之初是I2C控制的16通道LED控制器(现在广泛用于舵机控制),可针对红色/绿色/蓝色/琥珀色颜色背光应用进行优化。每个LED输出都有其自己的12位分辨率(2^{12}=4096步)固定频率个体PWM控制器,其占空比可将LED从0%调节至100%,以允许将LED设置为特定的亮度值,并且每个LED输出可以关闭或打开(无需PWM控件)。

特性总结:16个LED驱动通道(每个通道可以: / / 可编程的LED亮度(4096步))

二、原理框图与封装

各个模块的分析:

模块名称功能描述
I²C-BUS CONTROL负责通过I²C接口与外部微控制器进行通信。
INPUT FILTER减少I²C通信中的噪声干扰。
POWER-ON RESET确保芯片在上电时处于已知状态。
A0-A5(地址引脚)设置PCA9685的I²C地址,允许多个PCA9685芯片在同一I²C总线上工作。
LED STATE SELECT REGISTER控制每个LED通道的开关状态,可以设置为“0”(永久关闭)或“1”(永久开启)。
MUX/CONTROL负责将PWM信号输出到LED通道,根据LED状态选择寄存器的设置决定是否将PWM信号输出。
PWM REGISTER X BRIGHTNESS CONTROL包含16个PWM寄存器,每个寄存器控制一个LED通道的亮度。
PRESCALE用于调整内部25MHz振荡器的频率,从而影响PWM频率。
25 MHz OSCILLATOR提供内部时钟源,用于生成PWM信号。
CLOCK SWITCH允许选择使用内部25MHz振荡器还是外部时钟源(EXTCLK)。
EXTCLK外部时钟输入引脚。
OE输出使能引脚,控制PCA9685的输出使能,当OE引脚为低电平时,PCA9685的输出被使能。
VDD和VSS电源引脚,为PCA9685提供工作电压,VDD为电源正极,VSS为电源负极。
LEDn(LED输出引脚)连接到LED的正极,通过MUX/CONTROL模块控制LED的开关状态。

三、LED控制示例

示例 1:(假设使用了 LED0 输出,并且(延迟时间)+(PWM 占空比)≤100%)

控制需求:延迟时间 = 10%;PWM 占空比 = 20%(LED 亮的时间 = 20%;LED 灭的时间 = 80%)。

控制方法:
延迟时间 = 10% * 4096 = 409.6 ~ 410 个计数 = 19Ah(410的十六进制表示)。
由于计数器从 0 开始,到 4095 结束,因此需要减去 1,所以延迟时间 = 199h 计数。
LED0_ON_H = 1h;LED0_ON_L = 99h(LED 在这个延迟计数后开始点亮,计数到 409

注:(LED0_ON_H 存储高字节(High byte),LED0_ON_L 存储低字节(Low byte))

LED 亮的时间 = 20% * 4096 = 819.2 ~ 819 个计数。
LED 灭的时间 = 4CCh(十进制 410 + 819 - 1 = 1228)。
LED0_OFF_H = 4h;LED0_OFF_L = CCh(LED 在这个计数后开始熄灭,计数到 1228)。

示例 2:(假设使用了 LED4 输出,并且(延迟时间)+(PWM 占空比)> 100%)

控制需求:延迟时间 = 90%;PWM 占空比 = 90%(LED 亮的时间 = 90%;LED 灭的时间 = 10%)。

控制方法:
延迟时间 = 90% * 4096 = 3686.4 ~ 3686 个计数 (3686 - 1= 3685 = E65h)。
LED4_ON_H = Eh;LED4_ON_L = 65h(LED 在这个延迟计数后开始点亮,计数到 3685)。
LED 亮的时间 = 90% * 4096= 3686 个计数。
由于延迟时间和占空比的亮期间大于 4096 个计数,因此 LED4_OFF 计数将出现在下一个周期。因此,从 LED4_OFF 计数中减去 4096,以获得正确的 LED4_OFF 计数。
LED 灭的时间 = CCBh(十进制 3685 + 3686 = 7372 - 4096 = 3275)
LED4_OFF_H = Ch;LED4_OFF_L = CBh(下一个周期,LED 在这个计数后开始熄灭,计数到 3275)。

四、舵机控制

实物图
PCB图
原理图

各组件模块功能分析:

编号组件名称描述功能备注
1I2C AddressI2C地址选择电路通过A0-A5引脚设置PCA9685的I2C地址使用跳线选择
2PCA9685 (U1)16通道12位PWM控制器提供16路PWM信号输出支持I2C通信
3VDD电源输入为PCA9685提供工作电压电压范围3-5V
4VSS电路的公共地-
5SDA/SCLI2C数据和时钟线用于PCA9685的I2C通信-
6OE输出使能控制PCA9685的输出使能低电平有效
7EXTCLK外部时钟输入提供外部时钟信号当不使用时接地
8A0-A5I2C地址选择引脚用于设置PCA9685的I2C地址通过跳线选择
9PWM0-PWM15PWM输出通道提供16路PWM输出每路最大25mA电流
10JP1, 2,5,6PWM输出跳线连接PWM输出通道用于连接外部设备
11J1电源插座连接外部电源(舵机驱动电源)提供+5V电源
12D1二极管反向电压保护防止电源反接
13C1, C2电容电源滤波减少电源噪声
14LED1指示灯指示电路工作状态通过R1限流
15R10电阻限流保护LED1
16SJ_A0-SJ_A5跳线开关设置I2C地址开关状态决定引脚电平

舵机的控制原理与前面介绍的LED灯控制类似,PCA9685支持16个独立的PWM通道,每个通道连接一个舵机或其他PWM控制设备。每个通道有三个引脚:V+(连接到舵机电源)、PWM输出(用于输出PWM信号,控制舵机位置)、GND(连接到舵机地线)。

 五、参考文献

1.PCA9685 16-channel, 12-bit PWM Fm+ I2C-bus LED controller

2.https://learn.adafruit.com/16-channel-pwm-servo-driver?view=all

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值