了解PCA9685通過IIC控制多個舵機

2021-10-07 12:34:20 字數 1248 閱讀 8925

iic概述

i2c(inter-integrated circuit bus) 積體電路匯流排,該匯流排由nxp(原philips)公司設計,多用於主控制器和從器件間的主從通訊,在小資料量場合使用,傳輸距離短,任意時刻只能有乙個主機等特性。

經常iic和spi介面被認為指定是一種硬體裝置,但其實這樣的說法是不盡準確的,嚴格的說他們都是人們所定義的軟硬結合體,分為物理層(四線結構)和協議層(主機,從機,時鐘極性,時鐘相位)。

iic,spi的區別不僅在與物理層,iic比spi有著一套更為複雜的協議層定義。下面來分別說明一下iic的物理層和協議層。

(2)iic的物理層

a.只要求兩條匯流排線路,一條是序列資料線sda,一條是序列時鐘線scl。(iic是半雙工,而不是全雙工)。

b.每個連線到匯流排的器件都可以通過唯一的位址和其它器件通訊,主機/從機角色和位址可配置,主機可以作為主機傳送器和主機接收器。

c.iic是真正的多主機匯流排,(而這個spi在每次通訊前都需要把主機定死,而iic可以在通訊過程中,改變主機),如果兩個或更多的主機同時請求匯流排,可以通過衝突檢測和仲裁防止匯流排資料被破壞。

d.傳輸速率在標準模式下可以達到100kb/s,快速模式下可以達到400kb/s。

e.連線到匯流排的ic數量只是受到匯流排的最大負載電容400pf限制。

pca9685 舵機控制的實現

通常 pca9685 與舵機連線需要三根線,分別是電源線、控制線和地線,其中控制線是 pwm 脈衝的輸出端,電源線和地線為舵機內部的直流電機供電。舵機轉動的角度和控制線 pwm 脈衝的寬度(占空比)成正比,1ms 對應 0°,2ms 對應 180°,並且脈寬在 1~2ms 之間變化時,舵機角度從 0°—180°線性增長。因此,要實現對舵機的控制,需要在pca9685 正確的位址設工作模式、pwm 脈衝的頻率及占空比即可。

(1)晶元訪問位址的確認。pca9685 的訪問位址由晶元的 6 位硬體位址引腳連線電平決定,最高位為 1 不變,最低位用於區分 i2c 通訊的讀寫模式,主控晶元通過該位址向 pca9685 的不同暫存器寫入不同資料,就可以控制pca9685 向舵機傳送想要的 pwm 脈衝。

(2)pmw 脈衝頻率的設定。pca9685 脈衝輸出頻率的範圍為 40~1000hz,一般舵機控制需要的頻率為 50hz。計

算公式為:

其中 prescal 為向頻率設定暫存器(位址為 0xfeh)中寫入的值,extclk 為主控晶元的時鐘訊號,refresh_rate 為期望得到的 pwm 脈衝頻率,這裡為 50。

PCA9685通過IIC協議控制舵機的方式

iic協議的概述 iic即inter integratedcircuit 積體電路匯流排 是一種多向控制匯流排,由飛利浦半導體公司在八十年代初設計,主要是用來連線整體電路 ics 在iic中,多個晶元可以連線到同一匯流排結構下,同時每個晶元都可以作為實施資料傳輸的控制源,這種方式簡化了訊號傳輸匯流排...

樹莓派pca9685舵機驅動板python驅動

以下為python源程式 輸入通道與角度。即可選通並使該通道的舵機轉動到相應的角度 from future import division 匯入 future 檔案的 division 功能函式 模組 變數名.新的板庫函式 import time import the pca9685 module....

樹莓派之PCA9685驅動無刷電機

關於i2c驅動,這裡用的是wiringpi做進一步封裝,i2c驅動的函式如下 include int checki2cdevicei ist unsigned char devaddr bool writebyte int fd,unsigned char regaddr,unsigned char...