資料介紹
電路板如下圖:
組件
PCA9685PW,112 | x 1 |
RC0603FR-0710KL 10k |
× 9 |
SG73P1JTTD2203F KOA Speer 電子公司 |
× 17 |
156125YS75000 伍爾特電子 |
x 1 |
IRLML6401 UMW(廣東友臺半導(dǎo)體) |
x 1 |
593D106X9016A2TE3 威世斯普拉格 |
x 1 |
描述
帶PWM控制的伺服電機(jī)控制卡
您能想象通過互聯(lián)網(wǎng)控制任何設(shè)備嗎?燈、灌溉水泵、門驅(qū)動器和許多其他東西。
該板結(jié)合了多項功能,可讓您自動化和控制連接到互聯(lián)網(wǎng)的設(shè)備。
該項目是與印刷電路板制造商 PCBWay 共同開發(fā)的。您可以訪問該站點(diǎn),下載所有電子板文件并免費(fèi)獲得 10 個 PCBWay 單元。
閱讀全文并逐步了解接收電子板的步驟。
市場上有多種解決方案可用于通過互聯(lián)網(wǎng)控制設(shè)備。但是,有一個很大的問題:你不能修改控制代碼。這會阻止您創(chuàng)建自己的想法并根據(jù)您或客戶的需要創(chuàng)建一些東西。
PCA8695 PWM 伺服控制器 PCBWay 板的電子原理圖
編程
連接到 Arduino
PWM/伺服驅(qū)動器使用 I2C,因此只需 4 根線即可連接到您的 Arduino:
“經(jīng)典”Arduino 接線:
+5v -> VCC(這只是 BREAKOUT 的電源,不是伺服電源?。?/p>
接地 -> 接地
模擬 5 -> SCL
較舊的 Mega 接線:
+5v -> VCC(這只是 BREAKOUT 的電源,不是伺服電源!)
接地 -> 接地
數(shù)字 20 -> SDA
數(shù)字 21 -> SCL
R3 及之后的 Arduino 布線(Uno、Mega 和 Leonardo):
(這些板在最靠近 USB 連接器的接頭上有專用的 SDA 和 SCL 引腳)
+5v -> VCC(這只是 BREAKOUT 的電源,不是伺服電源?。?/p>
接地 -> 接地
SDA -> SDA
SCL -> SCL
舵機(jī)電源
大多數(shù)伺服系統(tǒng)設(shè)計為在大約 5 或 6v 的電壓下運(yùn)行。請記住,許多伺服系統(tǒng)同時移動(特別是大而強(qiáng)大的伺服系統(tǒng))將需要大量電流。即使是微型伺服系統(tǒng)在移動時也會消耗數(shù)百毫安。一些高扭矩伺服系統(tǒng)在負(fù)載下會消耗超過 1A 的電流。
好的電源選擇是:
5v 2A開關(guān)電源
5v 10A開關(guān)電源
4xAA 電池座 - 6v 堿性電池。4.8v 鎳氫充電電池。
來自愛好商店的 4.8 或 6v 可充電 RC 電池組。
我們在 PCB 上有一個用于焊接電解電容器的點(diǎn)。根據(jù)您的使用情況,您可能需要也可能不需要電容器。如果您從電源驅(qū)動大量伺服電機(jī),當(dāng)伺服電機(jī)移動時電源電壓下降很多,n * 100uF(其中 n 是伺服電機(jī)的數(shù)量)是一個很好的起點(diǎn) - 例如 470uF 或更多用于 5 個伺服電機(jī)。由于它如此依賴于伺服電流消耗、每個電機(jī)的扭矩和電源,因此我們無法建議“一個神奇的電容器值”,這就是我們不在套件中包含電容器的原因。將電容器添加到通孔電容槽
連接舵機(jī)
大多數(shù)伺服系統(tǒng)都帶有一個標(biāo)準(zhǔn)的 3 針母連接器,可直接插入伺服驅(qū)動器的接頭中。務(wù)必將插頭與地線(通常為黑色或棕色)與最下面一行和頂部的信號線(通常為黃色或白色)對齊。連接舵機(jī)
添加更多伺服系統(tǒng)
一塊板上最多可以連接 16 個舵機(jī)。如果您需要控制 16 個以上的舵機(jī),可以按照下一頁所述鏈接其他板。
鏈接驅(qū)動程序
可以鏈接多個驅(qū)動器(最多 62 個)以控制更多的伺服系統(tǒng)。電路板兩端都有接頭,接線就像將 6 針并行電纜從一個電路板連接到另一個電路板一樣簡單。
向董事會致辭
鏈中的每個板都必須分配一個唯一的地址。這是通過板右上邊緣的地址跳線完成的。每個板的 I2C 基地址是 0x40。您使用地址跳線編程的二進(jìn)制地址被添加到 I2C 基址。
要對地址偏移量進(jìn)行編程,請使用一滴焊料橋接地址中每個二進(jìn)制“1”的相應(yīng)地址跳線。
板 0:地址 = 0x40 偏移量 = 二進(jìn)制 00000(無需跳線)
Board 1: Address = 0x41 Offset = binary 00001 (bridge A0 as in the photo above)
電路板 2:地址 = 0x42 偏移量 = 二進(jìn)制 00010(橋 A1)
電路板 3:地址 = 0x43 偏移量 = 二進(jìn)制 00011(橋 A0 和 A1)
電路板 4:地址 = 0x44 偏移量 = 二進(jìn)制 00100(橋 A2)
等等
在您的草圖中,您需要為每個板聲明一個單獨(dú)的 pobject。在每個對象上調(diào)用 begin,并通過它所附加的對象控制每個伺服。例如:
#include
#include
Adafruit_PWMServoDriver pwm1 = Adafruit_PWMServoDriver(0x40);
Adafruit_PWMServoDriver pwm2 = Adafruit_PWMServoDriver(0x41);
無效設(shè)置(){
序列號.begin(9600);
Serial.println("16通道PWM測試!");
pwm1.開始();
pwm1.setPWMFreq(1600); // 這是最大 PWM 頻率
pwm2.開始();
pwm2.setPWMFreq(1600); // 這是最大 PWM 頻率
}
使用 Adafruit 庫
由于 PWM 伺服驅(qū)動器是通過 I2C 控制的,因此它非常容易與任何微控制器或微型計算機(jī)一起使用。在這個演示中,我們將展示如何將它與 Arduino IDE 一起使用,但 C++ 代碼可以輕松移植
安裝 Adafruit PCA9685 庫
要開始讀取傳感器數(shù)據(jù),您需要安裝 Adafruit_PWMServo 庫(我們的 github 存儲庫中的代碼)。它可從 Arduino 庫管理器獲得,因此我們建議使用它。
從 IDE 打開庫管理器...并輸入 adafruit pwm 以找到庫。點(diǎn)擊安裝
我們還有一個關(guān)于 Arduino 庫安裝的很棒的教程:
http://learn.adafruit.com/adafruit-all-about-arduino-libraries-install-use
使用示例代碼進(jìn)行測試:
首先確保關(guān)閉 Arduino IDE 的所有副本。
接下來打開 Arduino IDE 并選擇 File->Examples->Adafruit_PWMServoDriver->Servo。這將在 IDE 窗口中打開示例文件。
如果使用突破:
如上一頁所示連接驅(qū)動板和舵機(jī)。不要忘記為 Vin(3-5V 邏輯電平)和 V+(5V 伺服電源)供電。檢查綠色 LED 是否亮起!
如果使用盾牌:
將擴(kuò)展板插入您的 Arduino。不要忘記,您還必須為 V+ 接線端子提供 5V 電壓。紅色和綠色 LED 都必須點(diǎn)亮。
如果使用 FeatherWing:
將 FeatherWing 插入您的 Feather。不要忘記,您還必須為 V+ 接線端子提供 5V 電壓。檢查綠色 LED 是否亮起!
連接伺服
單個伺服應(yīng)插入 PWM #0 端口,第一個端口。您應(yīng)該看到舵機(jī)在大約 180 度范圍內(nèi)來回掃過。
校準(zhǔn)你的舵機(jī)
伺服脈沖時序因品牌和型號而異。由于是模擬控制電路,同品牌同型號樣品之間往往存在一定差異。對于精確的位置控制,您需要校準(zhǔn)代碼中的最小和最大脈沖寬度以匹配伺服的已知位置。
找到最小值:
使用示例代碼,編輯 SERVOMIN,直到掃描的低點(diǎn)達(dá)到最小行程范圍。最好逐漸接近并在達(dá)到行程的物理極限之前停止。
找到最大值:
再次使用示例代碼,編輯 SERVOMAX,直到掃描的高點(diǎn)達(dá)到最大行程范圍。同樣,最好逐漸接近并在達(dá)到行程的物理極限之前停止。
從度數(shù)轉(zhuǎn)換為脈沖長度
Arduino“map()”函數(shù)是一種在旋轉(zhuǎn)度數(shù)與校準(zhǔn)的 SERVOMIN 和 SERVOMAX 脈沖長度之間進(jìn)行轉(zhuǎn)換的簡單方法。假設(shè)一個典型的舵機(jī)旋轉(zhuǎn) 180 度;將 SERVOMIN 校準(zhǔn)到 0 度位置并將 SERVOMAX 校準(zhǔn)到 180 度位置后,您可以使用以下代碼行將 0 到 180 度之間的任何角度轉(zhuǎn)換為相應(yīng)的脈沖長度:
pulselength = map(度, 0, 180, SERVOMIN, SERVOMAX);
圖書館參考
setPWMFreq(頻率)
描述
此功能可用于調(diào)整 PWM 頻率,它決定了 IC 每秒產(chǎn)生多少完整“脈沖”。換句話說,考慮到脈沖的高段和低段,頻率決定了每個脈沖從開始到結(jié)束的持續(xù)時間“有多長”。
頻率在 PWM 中很重要,因?yàn)閷㈩l率設(shè)置得太高且占空比非常小會導(dǎo)致問題,因?yàn)樾盘柕摹吧仙龝r間”(從 0V 到 VCC 所需的時間)可能長于時間信號有效,PWM 輸出將顯得平滑,甚至可能達(dá)不到 VCC,這可能會導(dǎo)致許多問題。
freq:表示頻率的數(shù)字,單位為 Hz,介于 40 和 1600 之間
例子
以下代碼將 PWM 頻率設(shè)置為 1000Hz:
脈寬調(diào)制.setPWMFreq(1000)
setPWM(通道,開,關(guān))
描述
此函數(shù)設(shè)置特定通道上 PWM 脈沖高段的開始(開)和結(jié)束(關(guān))。當(dāng)信號打開和??關(guān)閉時,您指定 0..4095 之間的“刻度”值。通道指示 16 個 PWM 輸出中的哪一個應(yīng)該更新為新值。
參數(shù)
channel:應(yīng)使用新值 (0..15) 更新的通道
on:信號應(yīng)從低電平轉(zhuǎn)換為高電平時的刻度(在 0..4095 之間)
off:信號應(yīng)該從高到低轉(zhuǎn)換時的刻度(0..4095 之間)
例子
以下示例將導(dǎo)致通道 15 從低開始,進(jìn)入脈沖約 25% 的高電平(勾選 4096 中的 1024),轉(zhuǎn)換回低 75% 進(jìn)入脈沖(勾選 3072),并在最后 25% 的時間內(nèi)保持低電平脈搏:
pwm.setPWM(15, 1024, 3072)
用作 GPIO
還有一些特殊設(shè)置可以完全打開或完全關(guān)閉引腳
您可以將引腳設(shè)置為完全開啟
pwm.setPWM(pin, 4096, 0);
您可以將引腳設(shè)置為完全關(guān)閉
pwm.setPWM(pin, 0, 4096);
例子
以下示例將導(dǎo)致通道 15 從低開始,進(jìn)入脈沖約 25% 的高電平(勾選 4096 中的 1024),轉(zhuǎn)換回低 75% 進(jìn)入脈沖(勾選 3072),并在最后 25% 的時間內(nèi)保持低電平脈搏:
pwm.setPWM(15, 1024, 3072)
用作 GPIO
還有一些特殊設(shè)置可以完全打開或完全關(guān)閉引腳
您可以將引腳設(shè)置為完全開啟
pwm.setPWM(pin, 4096, 0);
您可以將引腳設(shè)置為完全關(guān)閉
pwm.setPWM(pin, 0, 4096);
bef
代碼
PCA9685
C/C++
? | /*************************************************** |
? | This is an example for our Adafruit 16-channel PWM & Servo driver |
? | Servo test - this will drive 8 servos, one after the other on the |
? | first 8 pins of the PCA9685 |
? | ? |
? | Pick one up today in the adafruit shop! |
? | ------> http://www.adafruit.com/products/815 |
? | ? |
? | These drivers use I2C to communicate, 2 pins are required to |
? | interface. |
? | ? |
? | Adafruit invests time and resources providing this open source code, |
? | please support Adafruit and open-source hardware by purchasing |
? | products from Adafruit! |
? | ? |
? | Written by Limor Fried/Ladyada for Adafruit Industries. |
? | BSD license, all text above must be included in any redistribution |
? | ****************************************************/ |
? | ? |
? | #include |
? | #include |
? | ? |
? | // called this way, it uses the default address 0x40 |
? | Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver(); |
? | // you can also call it with a different address you want |
? | //Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver(0x41); |
? | // you can also call it with a different address and I2C interface |
? | //Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver(0x40, Wire); |
? | ? |
? | // Depending on your servo make, the pulse width min and max may vary, you |
? | // want these to be as small/large as possible without hitting the hard stop |
? | // for max range. You'll have to tweak them as necessary to match the servos you |
? | // have! |
? | #define SERVOMIN120 // This is the 'minimum' pulse length count (out of 4096)(use135) |
? | #define SERVOMAX630 // This is the 'maximum' pulse length count (out of 4096)(use615) |
? | ? |
? | ? |
? | // our servo # counter |
? | uint8_t servonum = 0; |
? | ? |
? | void setup() { |
? | Serial.begin(9600); |
? | Serial.println("16 channel Servo test!"); |
? | ? |
? | pwm.begin(); |
? | ? |
? | pwm.setPWMFreq(60);// Analog servos run at ~60 Hz updates |
? | } |
? | ? |
? | void loop() { |
? | ? |
? | pwm.setPWM(0, 0, 135); |
? | delay(500); |
? | pwm.setPWM(1, 0, 135); |
? | delay(500); |
? | pwm.setPWM(2, 0, 135); |
? | delay(500); |
? | pwm.setPWM(3, 0, 135); |
? | delay(500); |
? | ? |
? | pwm.setPWM(0, 0, 615); |
? | delay(500); |
? | pwm.setPWM(1, 0, 615); |
? | delay(500); |
? | pwm.setPWM(2, 0, 615); |
? | delay(500); |
? | pwm.setPWM(3, 0, 615); |
? | delay(500); |
? | ? |
? | pwm.setPWM(0, 0, 135); |
? | pwm.setPWM(1, 0, 135); |
? | pwm.setPWM(2, 0, 135); |
? | pwm.setPWM(3, 0, 135); |
? | delay(1500); |
? | ? |
? | pwm.setPWM(0, 0, 615); |
? | pwm.setPWM(1, 0, 615); |
? | pwm.setPWM(2, 0, 615); |
? | pwm.setPWM(3, 0, 615); |
? | delay(1500); |
? | ? |
? | } |
?
?
- 利用運(yùn)動控制卡搭建運(yùn)動控制平臺
- LED控制卡客戶的使用說明資料說明 25次下載
- LED控制卡教程詳細(xì)培訓(xùn)資料免費(fèi)下載 28次下載
- 研華數(shù)據(jù)采集/控制卡+LabVIEW ——便捷的量測與控制系統(tǒng)解決方案 61次下載
- 多軸步進(jìn)電機(jī)插補(bǔ)控制器及多軸步進(jìn)電機(jī)運(yùn)動控制卡控制方法pdf資料分享 29次下載
- 基于PCI總線的STM32運(yùn)動控制卡的設(shè)計 327次下載
- PCI總線實(shí)現(xiàn)DSP伺服控制卡 39次下載
- 油壓系統(tǒng)閉環(huán)控制卡的開發(fā)及應(yīng)用 32次下載
- 基于DSP的PCI通用運(yùn)動控制卡的硬件設(shè)計
- 8098 單片機(jī)和伺服電機(jī)PWM 調(diào)速控制
- 基于運(yùn)動控制卡的控制系統(tǒng)的設(shè)計與實(shí)現(xiàn)
- K-880步進(jìn)電機(jī)控制卡使用說明書
- 基于DSP的PCI通用運(yùn)動控制卡的硬件設(shè)計
- 基于NextMoveES運(yùn)動控制卡的步進(jìn)電機(jī)群控系統(tǒng)
- 1.VC運(yùn)動控制卡控制電機(jī)轉(zhuǎn)動實(shí)驗(yàn) 0次下載
- 如何使用PWM控制電機(jī)速度 1510次閱讀
- LED顯示屏控制卡故障的常見現(xiàn)象 1145次閱讀
- 什么是Modbus聯(lián)合運(yùn)動控制卡實(shí)時通信 885次閱讀
- 運(yùn)動控制卡能仿真嗎? 1172次閱讀
- 基于ACRl505型運(yùn)動控制卡實(shí)現(xiàn)自動封裝運(yùn)動控制系統(tǒng)的設(shè)計 923次閱讀
- 臺達(dá)運(yùn)動控制卡系統(tǒng)在IC自動刻錄機(jī)上的應(yīng)用 3392次閱讀
- PLC如何控制伺服電機(jī) 8053次閱讀
- 簡介pmac運(yùn)動控制卡 1.3w次閱讀
- 淺談運(yùn)動控制卡的功能及使用 3w次閱讀
- 一文了解運(yùn)動控制卡是什么 4.8w次閱讀
- 簡單介紹無線led控制卡是什么 8870次閱讀
- 淺談led控制卡的品牌有哪些 1.5w次閱讀
- 一文弄懂是什么是led控制卡 1.8w次閱讀
- 帶你了解led控制卡的分類與型號 1.1w次閱讀
- 解答如何查看led控制卡型號 1.9w次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動電路設(shè)計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評論
查看更多