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