李強 霍淑珍 鄭偉


摘 要:文章采用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.