国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于I2C通信的PCA9685在舵機(jī)控制中的應(yīng)用

2018-11-21 11:46李強霍淑珍鄭偉
科技創(chuàng)新與應(yīng)用 2018年28期

李強 霍淑珍 鄭偉

摘 要:文章采用I2C總線通信方式,將PCA9685LED控制芯片應(yīng)用在舵機(jī)控制中。PCA9685接收主控芯片的指令,通過輸出PWM脈沖信號的方式用以控制最多不超過16路舵機(jī)或其他輸出通道,最終實現(xiàn)了舵機(jī)控制的功能。

關(guān)鍵詞:I2C總線;PCA9685;PWM;舵機(jī)控制

中圖分類號:TP273 文獻(xiàn)標(biāo)志碼: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

在自駕儀中,舵機(jī)是決定飛機(jī)舵面偏轉(zhuǎn)角度的執(zhí)行機(jī)構(gòu),一般的無人機(jī)需要四個舵機(jī)用于控制無人機(jī)的俯仰、偏航和滾轉(zhuǎn),通常由PWM信號進(jìn)行控制[1]。PCA9685是一款用于產(chǎn)生16路PWM信號的LED控制芯片,采用I2C總線與主控芯片進(jìn)行通信[2]。由于PCA9685具有可以產(chǎn)生16路PWM脈沖、控制獨立精準(zhǔn)、編程簡單靈活等特點,以其為基礎(chǔ)實現(xiàn)的舵機(jī)控制能夠有限減少硬件和軟件設(shè)計的復(fù)雜度,具有高可靠性[3-4]。

1 I2C總線協(xié)議

自駕儀的主控芯片一般具有多種資源與傳感器或其他外設(shè)進(jìn)行通信,包括串口、I2C、SPI、QSPI等。I2C總線具有簡單、有效的特點,能夠有效減少芯片管腳和線路連接的數(shù)量,本文介紹的PCA9685舵機(jī)控制器就是采用I2C與主控芯片進(jìn)行通信的[5]。

I2C總線是由Philips公司開發(fā)的,是一種簡單的雙向二線制同步串行總線。它只需要兩根線即可在連接于總線上的器件之間傳送信息。

I2C總線一般由兩根數(shù)據(jù)傳輸線構(gòu)成:一根時鐘線(SCL)、一根數(shù)據(jù)線(SDA)。I2C總線協(xié)議一般要求每次發(fā)送字節(jié)的長度必須為8位,每次通信由主機(jī)、從機(jī)兩端完成。整個通信過程如圖1所示[6]。

I2C寫操作流程為:

(1)主機(jī)發(fā)起開始信號;

(2)主機(jī)發(fā)送I2C地址(7位)和寫操作0(1位),等待確認(rèn);

(3)從機(jī)發(fā)送確認(rèn);

(4)主機(jī)發(fā)送寄存器地址(8位),等待確認(rèn);

(5)從機(jī)發(fā)送確認(rèn);

(6)主機(jī)發(fā)送數(shù)據(jù)(8位),即要向寄存器中寫入的數(shù)據(jù),等待確認(rèn);從機(jī)發(fā)送確認(rèn);

(7)主機(jī)發(fā)起停止。

I2C讀操作流程為:

(1)主機(jī)發(fā)送I2C地址(7位)和寫操作0(1位),等待確認(rèn);

(2)從機(jī)發(fā)送確認(rèn);主機(jī)發(fā)送寄存器地址(8位),等待確認(rèn);

(3)主機(jī)發(fā)送開始;主機(jī)發(fā)送I2C地址(7位)和讀操作(1位),等待確認(rèn);

(4)從機(jī)發(fā)送確認(rèn);從機(jī)發(fā)送數(shù)據(jù)(8位)。

(5)主機(jī)發(fā)送確認(rèn)。

從以上分析可以看出,I2C總線通信只需要兩根線(SCL和SDA),可并聯(lián)多個外設(shè)使用,通過每個外設(shè)的I2C地址區(qū)分不同外設(shè)。從機(jī)的I2C地址最低位代表讀(1)或?qū)懀?)操作。

2 PCA9685的用途及特點

PCA9685是一款基于I2C總線控制的16路LED背光調(diào)節(jié)控制芯片。每一路LED輸出端均可自由調(diào)節(jié)PWM波的頻率(40~1000Hz)和占空比(0%~100%)。這款芯片主要通過輸出不同占空比的PWM脈沖信號來控制舵機(jī)轉(zhuǎn)動的角度,其主要特點如下[7]:

(1)PCA9685可編程調(diào)節(jié)16路PMW脈沖的占空比以及高電平到來的時刻,分辨率為12位(4096)。

(2)在快速模式下I2C總線的速率可以達(dá)到1MHz,此外SDA端口30mA的驅(qū)動能力可以在高總線負(fù)荷上使用。

(3)PCA9685的PWM脈沖輸出頻率范圍為40~1000Hz,它內(nèi)置的25MHz振蕩器和外部時鐘可以選擇使用。

(4)PCA9685的硬件地址被設(shè)計為6位,這樣在同一個I2C總線上可以連接62個同一芯片;每個芯片有4個基于I2C總線的軟件可編程地址,并且任一芯片可以被同時或單獨尋址。

(5)PCA9685的電壓工作范圍為2.3~5.5V,使用溫度為-40℃~+85℃。

3 PCA9685舵機(jī)控制的實現(xiàn)

通常PCA9685與舵機(jī)連接需要三根線,分別是電源線、控制線和地線,其中控制線是PWM脈沖的輸出端,電源線和地線為舵機(jī)內(nèi)部的直流電機(jī)供電。舵機(jī)轉(zhuǎn)動的角度和控制線PWM脈沖的寬度(占空比)成正比,1ms對應(yīng)0°,2ms對應(yīng)180°,并且脈寬在1~2ms之間變化時,舵機(jī)角度從0°~180°線性增長。因此,要實現(xiàn)對舵機(jī)的控制,需要在PCA9685正確的地址設(shè)工作模式、PWM脈沖的頻率及占空比即可。

(1)芯片訪問地址的確認(rèn)。PCA9685的訪問地址由芯片的6位硬件地址引腳連接電平?jīng)Q定,最高位為1不變,最低位用于區(qū)分I2C通信的讀寫模式,主控芯片通過該地址向PCA9685的不同寄存器寫入不同數(shù)據(jù),就可以控制PCA9685向舵機(jī)發(fā)送想要的PWM脈沖。

4 結(jié)束語

本文在PCA9685 LED控制芯片的基礎(chǔ)上,通過I2C總線協(xié)議,設(shè)計了一種可產(chǎn)生16路PWM脈沖,并可靈活設(shè)置頻率及占空比的舵機(jī)控制實現(xiàn)途徑。經(jīng)過本文的分析及設(shè)計,最終從原理上實現(xiàn)了這一應(yīng)用,有效減輕了硬件設(shè)計和軟件設(shè)計的工作量,是一種行之有效的解決辦法。

參考文獻(xiàn):

[1]梁鋒,王志良,解侖,等.多舵機(jī)控制在類人機(jī)器人上的應(yīng)用[J].微計算機(jī)信息,2008(2):242-243.

[2]周英路,王志亮,朱松青,等.基于PCA9685的多路舵機(jī)控制器設(shè)計[J].南京工程學(xué)院學(xué)報(自然科學(xué)版),2017,15(04):26-31.

[3]韓玉龍,趙瑾,申忠宇,等.競賽機(jī)器人多舵機(jī)控制方法的研究與實現(xiàn)[J].自動化儀表,2016,37(07):46-49.

[4]吳清,劉紅周,鄭建榮.分時復(fù)用PWM模塊的多舵機(jī)控制信號的實現(xiàn)[J].微特電機(jī),2016,44(08):113-116.

[5]張軍才,茹偉,趙臘才,等.I~2C總線測試系統(tǒng)的設(shè)計與實現(xiàn)[J].儀表技術(shù)與傳感器,2016(12):118-120.

[6]林倩.I2C協(xié)議解析及實測波形[J].數(shù)字技術(shù)與應(yīng)用,2016(11):57-58.

[7]馮月芹.4位RGB LED彩燈控制器PCA9633的應(yīng)用[J].微型機(jī)與應(yīng)用,2015,34(07):30-33.

鹤山市| 无锡市| 闽侯县| 崇信县| 开江县| 监利县| 新河县| 平顶山市| 昌吉市| 广东省| 桑日县| 南投市| 锡林郭勒盟| 麻阳| 彰武县| 鸡西市| 仙居县| 南丰县| 金寨县| 康保县| 旬邑县| 万宁市| 长垣县| 安丘市| 郎溪县| 湘西| 鹤壁市| 正蓝旗| 桃园市| 双流县| 阿拉善盟| 六盘水市| 龙山县| 墨脱县| 安国市| 泰州市| 西昌市| 奇台县| 民乐县| 印江| 修文县|