APP下载

基于I2C通信的PCA9685在舵机控制中的应用

2018-11-21李强霍淑珍郑伟

科技创新与应用 2018年28期

李强 霍淑珍 郑伟

摘 要:文章采用I2C总线通信方式,将PCA9685LED控制芯片应用在舵机控制中。PCA9685接收主控芯片的指令,通过输出PWM脉冲信号的方式用以控制最多不超过16路舵机或其他输出通道,最终实现了舵机控制的功能。

关键词:I2C总线;PCA9685;PWM;舵机控制

中图分类号:TP273 文献标志码:A 文章编号:2095-2945(2018)28-0173-02

Abstract: In this paper, the I2C bus communication mode is adopted, and the PCA9685LED control chip is applied to the control of the steering gear. The PCA9685 receives the instruction of the main control chip and uses the way of outputting the PWM pulse signal to control the steering gear up to 16 channels or other output channels, and finally realizes the control function of the servo gear.

Keywords: I2C bus; PCA9685; PWM; servo control

在自驾仪中,舵机是决定飞机舵面偏转角度的执行机构,一般的无人机需要四个舵机用于控制无人机的俯仰、偏航和滚转,通常由PWM信号进行控制[1]。PCA9685是一款用于产生16路PWM信号的LED控制芯片,采用I2C总线与主控芯片进行通信[2]。由于PCA9685具有可以产生16路PWM脉冲、控制独立精准、编程简单灵活等特点,以其为基础实现的舵机控制能够有限减少硬件和软件设计的复杂度,具有高可靠性[3-4]。

1 I2C总线协议

自驾仪的主控芯片一般具有多种资源与传感器或其他外设进行通信,包括串口、I2C、SPI、QSPI等。I2C总线具有简单、有效的特点,能够有效减少芯片管脚和线路连接的数量,本文介绍的PCA9685舵机控制器就是采用I2C与主控芯片进行通信的[5]。

I2C总线是由Philips公司开发的,是一种简单的双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息。

I2C总线一般由两根数据传输线构成:一根时钟线(SCL)、一根数据线(SDA)。I2C总线协议一般要求每次发送字节的长度必须为8位,每次通信由主机、从机两端完成。整个通信过程如图1所示[6]。

I2C写操作流程为:

(1)主机发起开始信号;

(2)主机发送I2C地址(7位)和写操作0(1位),等待确认;

(3)从机发送确认;

(4)主机发送寄存器地址(8位),等待确认;

(5)从机发送确认;

(6)主机发送数据(8位),即要向寄存器中写入的数据,等待确认;从机发送确认;

(7)主机发起停止。

I2C读操作流程为:

(1)主机发送I2C地址(7位)和写操作0(1位),等待确认;

(2)从机发送确认;主机发送寄存器地址(8位),等待确认;

(3)主机发送开始;主机发送I2C地址(7位)和读操作(1位),等待确认;

(4)从机发送确认;从机发送数据(8位)。

(5)主机发送确认。

从以上分析可以看出,I2C总线通信只需要两根线(SCL和SDA),可并联多个外设使用,通过每个外设的I2C地址区分不同外设。从机的I2C地址最低位代表读(1)或写(0)操作。

2 PCA9685的用途及特点

PCA9685是一款基于I2C总线控制的16路LED背光调节控制芯片。每一路LED输出端均可自由调节PWM波的频率(40~1000Hz)和占空比(0%~100%)。这款芯片主要通过输出不同占空比的PWM脉冲信号来控制舵机转动的角度,其主要特点如下[7]:

(1)PCA9685可编程调节16路PMW脉冲的占空比以及高电平到来的时刻,分辨率为12位(4096)。

(2)在快速模式下I2C总线的速率可以达到1MHz,此外SDA端口30mA的驱动能力可以在高总线负荷上使用。

(3)PCA9685的PWM脉冲输出频率范围为40~1000Hz,它内置的25MHz振荡器和外部时钟可以选择使用。

(4)PCA9685的硬件地址被设计为6位,这样在同一个I2C总线上可以连接62个同一芯片;每个芯片有4个基于I2C总线的软件可编程地址,并且任一芯片可以被同时或单独寻址。

(5)PCA9685的电压工作范围为2.3~5.5V,使用温度为-40℃~+85℃。

3 PCA9685舵机控制的实现

通常PCA9685与舵机连接需要三根线,分别是电源线、控制线和地线,其中控制线是PWM脉冲的输出端,电源线和地线为舵机内部的直流电机供电。舵机转动的角度和控制线PWM脉冲的宽度(占空比)成正比,1ms对应0°,2ms对应180°,并且脉宽在1~2ms之间变化时,舵机角度从0°~180°线性增长。因此,要实现对舵机的控制,需要在PCA9685正确的地址设工作模式、PWM脉冲的频率及占空比即可。

(1)芯片访问地址的确认。PCA9685的访问地址由芯片的6位硬件地址引腳连接电平决定,最高位为1不变,最低位用于区分I2C通信的读写模式,主控芯片通过该地址向PCA9685的不同寄存器写入不同数据,就可以控制PCA9685向舵机发送想要的PWM脉冲。

4 结束语

本文在PCA9685 LED控制芯片的基础上,通过I2C总线协议,设计了一种可产生16路PWM脉冲,并可灵活设置频率及占空比的舵机控制实现途径。经过本文的分析及设计,最终从原理上实现了这一应用,有效减轻了硬件设计和软件设计的工作量,是一种行之有效的解决办法。

参考文献:

[1]梁锋,王志良,解仑,等.多舵机控制在类人机器人上的应用[J].微计算机信息,2008(2):242-243.

[2]周英路,王志亮,朱松青,等.基于PCA9685的多路舵机控制器设计[J].南京工程学院学报(自然科学版),2017,15(04):26-31.

[3]韩玉龙,赵瑾,申忠宇,等.竞赛机器人多舵机控制方法的研究与实现[J].自动化仪表,2016,37(07):46-49.

[4]吴清,刘红周,郑建荣.分时复用PWM模块的多舵机控制信号的实现[J].微特电机,2016,44(08):113-116.

[5]张军才,茹伟,赵腊才,等.I~2C总线测试系统的设计与实现[J].仪表技术与传感器,2016(12):118-120.

[6]林倩.I2C协议解析及实测波形[J].数字技术与应用,2016(11):57-58.

[7]冯月芹.4位RGB LED彩灯控制器PCA9633的应用[J].微型机与应用,2015,34(07):30-33.