網(wǎng)上有很多關(guān)于pos機無(wú)線(xiàn)克隆器原理,用Arduino控制伺服電機的知識,也有很多人為大家解答關(guān)于pos機無(wú)線(xiàn)克隆器原理的問(wèn)題,今天pos機之家(www.xjcwpx.cn)為大家整理了關(guān)于這方面的知識,讓我們一起來(lái)看下吧!
本文目錄一覽:
pos機無(wú)線(xiàn)克隆器原理
如果您需要控制船上或飛機上的舵機以控制方向,則伺服系統是完美的選擇。它們在機器人工作中非常有用,可以定位相機、傳感器或機器人的運動(dòng)部件。伺服也可以用作模擬儀表,如速度表和轉速表。
本文翻譯自科普大神donebotWorkshop.com
譯者:DIY百事
目錄
1 什么是伺服電機? 1.1伺服電機的種類(lèi) 1.2模擬伺服電機
2 伺服是如何工作的? 2.1連續旋轉伺服電機
3 伺服電機控制信號 3.1常規伺服電機時(shí)序 3.2連續旋轉伺服電機時(shí)序
4 伺服電機規格4.1電機尺寸 4.2齒輪材料 4.3速度 4.4扭矩 4.5工作電壓 4.6臂(連桿)和配件
5 測試伺服電機 5.1伺服測試儀 5.2伺服電機連接
6 連接到 Arduino 6.1 PWM 輸出 6.2電源注意事項
7 旋轉掃描的代碼
8 可調節角度的旋轉掃描的代碼
9 PCA9685 伺服驅動(dòng)板
10 多個(gè)伺服系統——控制 MeArm
11 結論
什么是伺服電機?伺服電機是一種低速、高扭矩的電機,有多種尺寸可供選擇。與直流和步進(jìn)電機不同,伺服電機通常不會(huì )旋轉完整的 360 度。相反,它被限制在 180、270 或 90 度的范圍內。
控制信號被發(fā)送到伺服系統以將軸定位在所需的角度。這種具有單一信號的布置使得伺服系統可以簡(jiǎn)單地用于無(wú)線(xiàn)電和遙控設計以及單片機。
我們已經(jīng)構建了一些使用電機使物體移動(dòng)的項目,并且在此過(guò)程中我們查看了一些可以通過(guò) Arduino 和 Raspberry Pi 項目控制的不同類(lèi)型的電機。
圖1
伺服電機的種類(lèi)伺服電機本質(zhì)上是一種電機,它有一個(gè)控制信號輸入端用于指定電機軸位置。
伺服系統用于工業(yè)和業(yè)余愛(ài)好應用。工業(yè)伺服系統通常是帶有數字控制輸入的交流電機,成本數百或數千美元。
業(yè)余愛(ài)好者用的伺服電機通常是直流電機,可以用數字或模擬信號進(jìn)行控制。
數字伺服系統用于需要快速響應的應用中,例如飛機上的升降舵或直升機上的方向舵。我們也不會(huì )使用這些類(lèi)型的電機,盡管用于使用 Arduino 驅動(dòng)它們的電路圖和代碼與我們將用于模擬伺服系統的相同。
我們將使用普通的模擬伺服電機,這是業(yè)余愛(ài)好者最常用的類(lèi)型。它們價(jià)格低廉且易于獲得。安裝硬件也很容易找到,因為這些伺服器具有一組標準尺寸。
模擬伺服電機模擬伺服電機價(jià)格低廉,有多種尺寸和額定值可供選擇。當您需要可以準確定位的小型高扭矩電機時(shí),這是完美的選擇。
模擬伺服電機的“模擬”部分是控制信號。模擬伺服電機響應脈沖寬度調制( PWM) 信號來(lái)定位其電機軸。
PWM 是一種理想的控制方式。它可以由一個(gè)簡(jiǎn)單的定時(shí)器電路或單片機產(chǎn)生。它可以通過(guò)單根電線(xiàn)發(fā)送,也可以通過(guò)無(wú)線(xiàn)電或光束傳送信號。
Arduino 有許多支持 PWM 的輸出引腳,非常適合控制伺服電機。
伺服系統如何工作?伺服電機是一種內置“伺服機構”的電機。
伺服機構使用傳感器來(lái)監控電機軸位置然后用控制器來(lái)控制電機。它接收一個(gè)信號,指示軸應運動(dòng)到的位置。然后它將電機軸移動(dòng)到所需的位置。
在模擬伺服電機中,我們將使用的控制信號是一個(gè) PWM 信號,其脈沖寬度決定了電機軸的定位角度。電機本身是一個(gè)簡(jiǎn)單的直流電機,帶有減速齒輪組以減慢其速度并增加其扭矩。
為了正常工作,伺服電機需要一個(gè)可以準確測量其軸位置的傳感器。在一些工業(yè)和高端玩具伺服電機上,這是使用光電盤(pán)完成的,但在大多數標準業(yè)余伺服電機中,傳感器是一個(gè)電位計。這也是有效的,因為這些伺服系統通常會(huì )移動(dòng) 180 到 270 度,完全在電位計的范圍內。然而,電位計的精度,特別是在低成本伺服電機中的精度,會(huì )影響伺服機構的整體精度。
連續旋轉伺服電機標準模擬伺服電機的旋轉受到限制,通常為 180 或 270 度(目前最常見(jiàn)的是 180 度)。其內部齒輪裝置以小巧且廉價(jià)的包裝提供高扭矩動(dòng)力組。
小尺寸和大扭矩的結合也使伺服電機在小型玩具和機器人等小型設備的設計中用作標準直流電機的替代品。有些人會(huì )通過(guò)移除電位計來(lái)修改標準模擬舵機,讓舵機可以旋轉整整 360 度。
從制造商得到的消息,現在也提供“連續旋轉伺服電機”,其實(shí)是剝離了伺服機構的伺服電機。
在連續旋轉伺服電機中,軸旋轉的速度和方向由與傳統模擬伺服電機相同的 PWM 信號控制。
具有簡(jiǎn)單的單線(xiàn)控制信號和與標準伺服電機相同的物理封裝使連續旋轉伺服電機能用到許多場(chǎng)合。
伺服電機控制信號為了使用模擬伺服電機,您需要了解如何使用 PWM 控制其運行。常規旋轉和連續旋轉這兩個(gè)品種使用相同的計時(shí)信號,但對它們的響應略有不同。
讓我們來(lái)看看大多數模擬伺服電機中使用的PWM信號。
傳統伺服電機時(shí)序在傳統的模擬伺服電機中,使用周期為 20 ms 的 PWM 信號來(lái)控制電機。20 ms 的信號具有 50 Hz 的頻率。
脈沖寬度在 1 到 2 ms 之間變化,以控制電機軸位置。
圖2
1.5ms 的脈沖寬度將使伺服軸停留在 90 度位置,即其行程的中心。1ms 的脈沖寬度將導致伺服軸停在 0 度位置。2ms 的脈沖寬度將使伺服軸停在 180 度位置。
在 1ms 和 2ms 之間改變脈沖寬度將使伺服軸在 180 度的范圍內移動(dòng)。通過(guò)相應地調整脈沖寬度,您可以將其放置在您想要的任何角度。
連續旋轉伺服電機時(shí)序在連續旋轉伺服電機中,相同的 PWM 信號將導致電機的性能不同。
圖3
1.5ms 的脈沖寬度將導致伺服軸停止旋轉。1ms的脈沖寬度將導致伺服軸逆時(shí)針全速旋轉。2ms 的脈沖寬度將導致伺服軸順時(shí)針全速旋轉。
在 1ms 和 1.5ms 之間改變脈沖寬度將使電機逆時(shí)針旋轉,較短的脈沖寬度使電機旋轉得更快。
在 1.5ms 和 2ms 之間改變脈沖寬度將導致電機順時(shí)針旋轉,脈沖越長(cháng),速度越快。
商用連續旋轉伺服電機將有一個(gè)調節電位器,可用于在電機輸入 1.5ms 脈沖寬度時(shí)將速度歸零。
伺服電機規格市面上有數百種模擬伺服電機可用,了解如何閱讀它們的規格對于為您的應用選擇正確的電機至關(guān)重要。
以下是您在選擇伺服電機時(shí)會(huì )遇到的一些關(guān)鍵參數。
電機尺寸伺服電機的物理尺寸自然是一個(gè)重要的考慮因素,您的應用可能會(huì )要求電機符合特定的尺寸限制。
有多種標準伺服電機尺寸,這使得找到適合您的伺服電機的安裝支架和硬件變得更加容易。
伺服大小通常指定如下:
納米亞微微小型的標準大也有特殊尺寸。微(Micro) 和 標準(Standard) 尺寸是 Arduino 實(shí)驗者最常使用的尺寸。
齒輪材料伺服系統有許多內齒輪和直接在輸出軸上的齒輪裝置,這些用于降低電機速度并增加其扭矩。
齒輪可以使用塑料或金屬制造。
金屬齒輪提供更好的性能,通??梢灾С指叩呐ぞ夭⑶也灰酌撀?。金屬齒輪伺服系統的成本也更高。
塑料齒輪更容易脫落,并且沒(méi)有金屬齒輪的扭矩能力。然而,它們比金屬齒輪伺服電機更安靜且更便宜。
相同的伺服電機結構可能會(huì )使用不同的齒輪材料。一種常見(jiàn)的實(shí)驗電機是 SG90,帶有塑料齒輪的微型伺服電機。它的金屬齒輪對應型號是MG90。由于它們采用相同的外殼并具有相同的電壓和驅動(dòng)器要求,因此它們可以互換,MG90 因其金屬齒輪而提供卓越的性能。
伺服電機的質(zhì)量還受軸承類(lèi)型和軸承數量的影響。帶有多個(gè)軸承的電機轉動(dòng)更平穩、更準確。
速度伺服電機的速度定義為將伺服軸移動(dòng) 60 度所需的時(shí)間。
圖4
比如規格0.25 秒/60°,這意味著(zhù)行進(jìn) 60 度需要四分之一秒。
伺服速度更適用于傳統伺服電機,連續旋轉電機與任何直流電機一樣額定為最大 RPM。
高速伺服系統用于航模和直升機應用,以控制經(jīng)常需要快速移動(dòng)的升降舵和方向舵。其中許多使用數字控制和內部光學(xué)位置傳感器代替電位計,以實(shí)現更快速的移動(dòng)。
對于一些業(yè)余愛(ài)好應用如控制攝像機或超聲波傳感器的位置,速度通常不是關(guān)鍵因素。
扭矩扭矩是一個(gè)非常重要的參數,它從字面上指定了電機的力道。
扭矩被定義為伺服系統可以施加到連桿上的力,換句話(huà)說(shuō),它可以承受多大的力。
它以千克厘米為單位。
要了解扭矩數字與現實(shí)世界情況的關(guān)系,請考慮以下示例:
圖5
如伺服電機的額定值為 5 kg-cm。也就是說(shuō)伺服電機可在距軸中心 1 厘米處的杠桿上承受高達 5kg 的負載。
在兩倍距離處,負載將減半,因此在距軸 2 厘米處,杠桿可以支撐 2.5 千克。
一半的距離使可支撐的負載翻倍至 10kg。
更大的伺服電機往往具有更大的扭矩能力,更大扭矩的電機往往更貴。它們也更重,消耗更多電流。
工作電壓大多數業(yè)余模擬舵機的額定電壓為 4.8 到 6 伏,并在更高的電壓下實(shí)現其最大性能。
還有更多的伺服系統,最大額定電壓為 7.5 到 8.5 伏。由于 7.4 伏鋰聚合物電池可用于模型飛機、船只、車(chē)輛和四軸飛行器,這些電池變得越來(lái)越受歡迎。
伺服電機,尤其是高扭矩型號,會(huì )消耗相當多的電流,在為您的項目選擇電源或電池時(shí)需要考慮到這一點(diǎn)。
連桿、和配件大多數伺服電機都有一個(gè)齒輪軸,它的中心有螺紋方便堅固。
為了使用伺服電機,您需要在軸上裝上另一個(gè)零件—平臺、齒輪、輪子或任何您試圖與伺服電機軸一起移動(dòng)的東西。
伺服電機配有各種不同形狀的杠桿和圓盤(pán),可以與軸配合,以方便將伺服電機連接到您的設計中。這些部件通常被稱(chēng)“連桿”。它們連接到伺服電機軸上并用中心螺釘固定到位,它們可以由塑料或金屬制成。
除了連桿,您還應該隨伺服電機一起收到各種安裝硬件和螺釘,包括軸的中心螺釘(不要丟失它,因為它們往往因伺服類(lèi)型而異)。
您還可以購買(mǎi)設計用于接受微型和標準等流行伺服尺寸的安裝板。
伺服連桿、固定件和附件的可用性和互換性使您可以輕松地將伺服電機集成到您的設計中。
測試伺服電機與任何組件一樣,了解如何測試伺服電機以確保正常運行很有用。
在將伺服電機安裝到您的項目中之前,能夠將伺服軸旋轉到預設位置(例如 90 度)也很有用,以便一切都正確對齊。
您可以使用多種方法來(lái)測試伺服。一個(gè)簡(jiǎn)單的 Arduino 代碼和連接,就像您將在此處進(jìn)一步看到的那樣,將成為測試伺服并將其軸定位到預設位置的絕佳方法。
另一種方法是使用專(zhuān)用伺服測試儀。
伺服測試儀正如您想象的那樣,伺服測試儀是一種用于測試伺服電機的設備!它們非常有用,而且可能非常便宜,具體取決于您想要的功能。
一個(gè)簡(jiǎn)單的伺服測試儀,如這里所示(并在隨附的視頻中使用)只需幾美元。
更先進(jìn)的伺服測試儀有多個(gè)電機的速度和定心控制,有些還有電流表。加上這些都不到20美元。
這些測試儀可以共用電機本身的電源。它們可以插入標準伺服電機連接器,然后它們將控制伺服電機。
伺服測試儀將允許您手動(dòng)移動(dòng)電機并將其置于 90 度位置的中心。這使您可以在連桿固定到電機之前檢查電機是否正確運行并對齊其軸位置。
伺服電機接線(xiàn)模擬伺服電機通常有一個(gè) 3 針連接器。
民用伺服電機上使用的顏色代碼因制造商而異。然而,大多數制造商使用相同的引腳排列,如下圖所示:
圖6
伺服電機的三個(gè)連接如下:
Ground接地- 電機和邏輯的公共接地。Power電源- 為伺服供電的正電壓。Control控制——PWM 控制信號的輸入。最常見(jiàn)的連接器是標準的杜邦連接器,間距為 0.1 英寸。這使得使用標準杜邦接頭將伺服電機連接到您的項目變得容易。
您還可以將面包板電線(xiàn)直接插入伺服 3 針連接器,以便您可以使用伺服電機進(jìn)行原型設計。
連接到 Arduino正如我們已經(jīng)描述的那樣,伺服電機需要 PWM 控制信號才能正確運行。您可以通過(guò)多種方式生成此信號——簡(jiǎn)單的定時(shí)器電路、專(zhuān)用控制芯片或使用具有 PWM 輸出功能的單片機。
單片機在能夠更有效地控制伺服方面自然具有許多優(yōu)勢。Arduino 是一個(gè)很好的選擇。
Arduino IDE 已經(jīng)包含一個(gè)伺服庫,因此您很快就會(huì )看到,將伺服添加到您的代碼中非常簡(jiǎn)單。
PWM脈寬調制輸出所有 Arduino 板都有一些能夠進(jìn)行脈寬調制( PWM )的輸出引腳。在 Arduino Uno 上有 6 個(gè)支持 PWM 的引腳。
請記住,要生成 PWM 信號,伺服庫文件需要使用一些內部 Arduino 計時(shí)器,特別是計時(shí)器 1。這可能會(huì )干擾其他也需要相同計時(shí)器的庫。解決此問(wèn)題的一種方法是為伺服或其他所需功能尋找替代庫,這是繞過(guò)這些限制的常用方法。
更高級的方法是使用外部 PWM 控制器板并釋放 Arduino 計時(shí)器的需求。這將在本文中進(jìn)一步討論。
電源注意事項大多數伺服電機都可以在 5 伏電壓下運行,因此很容易使用 Arduino 板上的 5 伏輸出為伺服供電。
但這不是一個(gè)很好的主意。
伺服系統會(huì )消耗大量電流,尤其是在負載時(shí)。這可能比 Arduino 板上的電壓調節器所能承受的電流更大,尤其是在更便宜的克隆板上。雖然大多數 Arduino 板可以支持一個(gè)微型伺服電機,但它仍然會(huì )給調壓器帶來(lái)很大的負擔。
伺服電機與所有其他電機一樣,會(huì )在電源電路上產(chǎn)生電噪聲。在為單片機和其他邏輯設備供電的線(xiàn)路上存在這種噪聲通常會(huì )導致系統錯誤。
為您的伺服電機使用單獨的電源是一個(gè)更好的主意。5 伏 USB 3 電源可以很好地工作, 4 節 AA 電池也可以。
如果您真的必須直接從 Arduino 為伺服電機供電,請將其限制為一個(gè)微型伺服電機。在靠近伺服電機的電源線(xiàn)上安裝一個(gè) 100uf 或更大的電容器可以幫助吸收這些電涌。
伺服掃描旋轉的代碼對于我們的第一個(gè) Arduino 代碼,我們將使用Arduino IDE內置示例。無(wú)需編寫(xiě)代碼或安裝庫!
連接硬件以用于我們的第一個(gè)演示非常簡(jiǎn)單。您需要一個(gè) Arduino(任何類(lèi)型)、一個(gè)伺服電機和一個(gè)伺服電機電源。
圖7
連接再簡(jiǎn)單不過(guò)了。伺服由自己的電源供電,接地連接也連接到 Arduino 接地。然后來(lái)自伺服的控制引線(xiàn)連接到 Arduino 上的引腳 9。
Arduino Uno 上的引腳 9 是能夠進(jìn)行 PWM 的六個(gè)引腳之一,在大多數 Uno 板上,您會(huì )在 6 個(gè)啟用 PWM 的 I/O 引腳旁邊看到一個(gè)符號。
將您的 Arduino 連接到您的計算機并啟動(dòng) Arduino IDE。
單擊屏幕頂部的文件菜單。從那里選擇示例子菜單。
將顯示示例代碼列表。它分為幾個(gè)部分,向下滾動(dòng)列表直到到達“來(lái)自庫的示例”部分。
在“庫中的示例”部分,您將看到“伺服”。突出顯示以顯示兩個(gè)代碼,旋鈕和掃描。
加載代碼。
/* Sweep by BARRAGAN <http://barraganstudio.com> This example code is in the public domain. modified 8 Nov 2013 by Scott Fitzgerald http://www.arduino.cc/en/Tutorial/Sweep*/ #include <Servo.h> Servo myservo; // create servo object to control a servo// twelve servo objects can be created on most boards int pos = 0; // variable to store the servo position void setup() { myservo.attach(9); // attaches the servo on pin 9 to the servo object} void loop() { for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees // in steps of 1 degree myservo.write(pos); // tell servo to go to position in variable 'pos' delay(15); // waits 15ms for the servo to reach the position } for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees myservo.write(pos); // tell servo to go to position in variable 'pos' delay(15); // waits 15ms for the servo to reach the position }}
掃描旋轉是一個(gè)非?;镜拇a,它只是將伺服軸從頭掃描到尾。
該代碼使用了Arduino IDE 中包含的Arduino 伺服庫。顧名思義,它是一個(gè)用 PWM 控制伺服電機的庫。我們包含該庫并定義一個(gè)名為myservo的對象來(lái)表示我們的伺服電機。如果您有多個(gè)伺服電機,您可以為每個(gè)電機定義一個(gè)對象。
然后,我們定義一個(gè)名為“ pos ”的變量,用于保存我們希望伺服電機軸移動(dòng)到的位置(角度)。
在設置中,我們將伺服對象連接到 Arduino 引腳 9 上的伺服電機控制線(xiàn)。
然后是loop循環(huán),它由兩個(gè) for 循環(huán)組成。第一個(gè)循環(huán)增加pos變量的值,并使用它使用myservo.write命令控制伺服電機,將軸從 0 度發(fā)送到 180 度。
第二個(gè) for 循環(huán)是相同的,只是它將值從 180 遞減到 0,將軸朝相反的方向送回。
將代碼加載到 Arduino 中并觀(guān)察伺服電機軸,它應該從一端移動(dòng)到另一端。
您剛剛使用 Arduino 進(jìn)行了伺服運動(dòng)!
旋鈕代碼讓我們繼續看 Arduino IDE 附帶的另一個(gè)演示代碼,即旋鈕代碼。在我們做之前,我們需要在我們的電路中添加一個(gè)組件。
圖8
正如接線(xiàn)圖所示,您需要一個(gè)電位計,10k 以上的任何值都可以正常工作。將它的一端接地,另一端連接到 Arduino +5 伏。中間那個(gè)輸出連接到模擬輸入 A0。
電位器將用作定位伺服電機軸的控件,您可以使用它在其 180 度行程中撥動(dòng)任何位置。這不僅是一個(gè)很好的演示,它還是一個(gè)有用的功能,用于在將伺服電機安裝到您的項目之前設置它們的位置。
如果您在電路中替換連續旋轉伺服系統,您可以使用電位計來(lái)控制電機旋轉的速度和方向。
修改實(shí)驗以包含電位計后,打開(kāi) Arduino IDE 并返回示例代碼。這次從伺服菜單中選擇掃描。
/* Controlling a servo position using a potentiometer (variable resistor) by Michal Rinott <http://people.interaction-ivrea.it/m.rinott> modified on 8 Nov 2013 by Scott Fitzgerald http://www.arduino.cc/en/Tutorial/Knob*/ #include <Servo.h> Servo myservo; // create servo object to control a servo int potpin = 0; // analog pin used to connect the potentiometerint val; // variable to read the value from the analog pin void setup() { myservo.attach(9); // attaches the servo on pin 9 to the servo object} void loop() { val = analogRead(potpin); // reads the value of the potentiometer (value between 0 and 1023) val = map(val, 0, 1023, 0, 180); // scale it to use it with the servo (value between 0 and 180) myservo.write(val); // sets the servo position according to the scaled value delay(15); // waits for the servo to get there}
掃描代碼也很簡(jiǎn)單。與旋鈕代碼一樣,它使用它包含的 Arduino 伺服庫,然后創(chuàng )建一個(gè)myservo對象來(lái)表示伺服電機。
然后我們定義幾個(gè)整數。第一個(gè),potpin,代表我們用于電位計游標連接的模擬引腳。另一個(gè)val是讀取該模擬輸入時(shí)采用的值。
設置與旋鈕代碼相同,我們將伺服對象連接到引腳 9。
在循環(huán)中,我們首先從模擬引腳讀取值,0 到 1023 的值將分配給val。接下來(lái)我們使用 Arduino Map Function 改變val來(lái)表示 0 到 180 度之間的角度。
之后,我們使用寫(xiě)入命令將伺服定位到val的值,即電位器選擇的角度。
在短暫延遲讓伺服電機趕上之后,我們重新開(kāi)始。
將代碼加載到您的 Arduino 并轉動(dòng)電位計。您應該看到伺服電機的軸與可調電阻同步移動(dòng)。
PCA9685伺服驅動(dòng)板正如我們剛剛看到的那樣,直接從 Arduino 控制伺服電機非常簡(jiǎn)單。但是它有它的局限性:
您受到 Arduino 上 PWM 引腳數量的限制。如果伺服是需要其他 PWM 設備的設計的一部分,則可能會(huì )出現問(wèn)題。Arduino 伺服庫可能會(huì )與其他 Arduino 庫沖突,因為它們嘗試使用相同的計時(shí)器。這有時(shí)可以通過(guò)尋找替代庫來(lái)解決。您需要控制很多伺服電機,即使是 Arduino Mega 也有其局限性。一個(gè)更好的解決方案是使用單獨的伺服驅動(dòng)器板。這將省掉將 PWM 發(fā)送到伺服系統的任務(wù),解放您的 Arduino 以做更好的事情。
我們將使用的電路板基于 PCA9685 芯片。這些板非常受歡迎,由幾家公司制造。
PCA9685 板使用 I2C 與 Arduino 通信。這意味著(zhù)與 Arduino只有兩個(gè)時(shí)鐘和數據連接。由于板子 I2C 地址可以使用一系列焊盤(pán)進(jìn)行配置,因此您可以在同一電路上使用多個(gè)驅動(dòng)板。
每塊板卡最多可控制 16 個(gè)伺服電機。您可以級聯(lián)多達 62 個(gè)板來(lái)控制多達 992 個(gè)伺服電機!
如果您真的需要控制 992 個(gè)伺服電機,您可以使用 I2C 擴展板將多個(gè) I2C 總線(xiàn)連接到您的 Arduino!
與電路板的連接非常簡(jiǎn)單。
圖9
電路板的每一側都有一組相同的連接,這使得將多個(gè)模塊連接起來(lái)很容易。它們如下:
GND – 接地連接。OE——輸出使能。您可以使用此引腳啟用和禁用所有 16 個(gè)輸出。通常它保持未連接狀態(tài),這將導致啟用所有輸出。SCL – I2C 總線(xiàn)的時(shí)鐘線(xiàn)。SDA – I2C 總線(xiàn)的數據線(xiàn)。VCC – 邏輯電源,+5 伏。V+ – 伺服電機的電源。為此,電路板頂部還有另一個(gè)連接器,推薦用該連接器,因為它具有反接保護,而 V+ 則沒(méi)有。V+ 引腳真正用于級聯(lián)多個(gè) PCA9685 模塊,并通過(guò)單個(gè)電源為所有伺服系統供電。頂部還有一個(gè)用于伺服電源的 2 針螺絲連接器。如上所述,它受到反極性保護。
板子底部有 16 組 3 針公頭連接器。每一個(gè)可連接一個(gè)伺服電機。
電路板的右上角是六個(gè)焊盤(pán)。這些用于設置電路板的 I2C 地址。如果您使用多個(gè)板,則需要跳線(xiàn)其中的一個(gè)或多個(gè)以將其內部 I2C 地址更改為唯一。
沒(méi)有短接任何跳線(xiàn)的 PCA9685 模塊的基地址是 0x40。
如果將 A0 焊盤(pán)短路,則地址變?yōu)?0x41。
改為橋接 A1,它現在是 0x42 的地址。橋接 A0 和 A1,地址將為 0x43。
多舵機——控制 MeArm為了演示如何使用 PCA9685 PWM 模塊來(lái)控制多個(gè)伺服電機,我決定推出我之前構建的 MeArm。它有四個(gè)伺服電機。
我按如下方式連接所有內容:
圖10
你會(huì )注意到我還添加了四個(gè)電位器,和以前一樣,它們可以是 10k 或以上的任何值,將用于調節四個(gè)伺服電機中每一個(gè)的運行。
PCA9685 模塊連接到 Arduino 上的 SCL 和 SDA 連接。如果您的 Arduino 沒(méi)有用于這些 I2C 連接的引腳,則將模擬引腳 A4 用于 SDA,將引腳 A5 用于 SCL。
請注意,即使您確實(shí)有單獨的 SCL 和 SDA 引腳,在使用 I2C 時(shí)也無(wú)法將 A4 和 A5 用作模擬輸入。
四個(gè)電位器一側接地,另一側接地 5 伏。它們的輸出連接到模擬輸入 A0 到 A3。
Arduino 電源還用于為 PCA9685 模塊上的 VCC 電源供電。四個(gè)舵機的獨立電源連接到模塊上的螺釘連接器。
我將伺服電機連接到輸出 0、4、8 和 12。您實(shí)際上可以使用任何四個(gè)連接,只需記下它們,以便您可以修改代碼以匹配您的選擇。
由于這是我連接到 Arduino 的唯一 PCA9685 模塊,因此我沒(méi)有短路任何地址焊盤(pán)。
現在讓我們看看我用來(lái)完成這一切的代碼:
/* PCA9685 PWM Servo Driver Example pca9685-servomotor-demo.ino Demonstrates use of 16 channel I2C PWM driver board with 4 servo motors Uses Adafruit PWM library Uses 4 potentiometers for input DroneBot Workshop 2018 https://dronebotworkshop.com*/ // Include Wire Library for I2C Communications#include <Wire.h> // Include Adafruit PWM Library#include <Adafruit_PWMServoDriver.h> #define MIN_PULSE_width="360px",height="auto" />
該代碼使用了 Adafruit PWM 伺服驅動(dòng)程序庫,您需要安裝該庫才能完成這項工作。它可以從 Arduino IDE 中的庫管理器安裝。
打開(kāi) Arduino IDE。從頂部的菜單中選擇Sketch。選擇包括庫。將出現一個(gè)子菜單。從子菜單中選擇管理庫...。庫管理器將打開(kāi)。在庫管理器中搜索“Adafruit PWM”該Adafruit的PWM伺服Library驅動(dòng)程序應該是第一個(gè)結果。單擊“更多信息”鏈接以顯示“安裝”按鈕。使用此按鈕將庫安裝到您的 IDE 中。關(guān)閉庫管理器。該庫現已安裝,可以在您的 IDE 中使用。我們通過(guò)包含 Wire 庫開(kāi)始代碼。它內置于您的 Arduino IDE 中,用于控制 I2C 通信。
接下來(lái)我們包括我們剛剛安裝的 Adafruit PWM 伺服庫。
我們現在將定義一些常量。
前兩個(gè)常量定義了我們將發(fā)送到伺服系統的 PWM 信號的最小和最大脈沖寬度。你還記得這個(gè)脈沖寬度將決定伺服軸的位置。
我們定義的第三個(gè)常數是 PWM 頻率,模擬伺服電機的頻率為 50 Hz。如果您使用的是數字伺服電機,您可能需要增加它,因為它們通??梢允褂酶哌_ 200 Hz 的頻率。
接下來(lái),我們使用 Adafruit PWM 庫創(chuàng )建一個(gè)名為pwm的對象。如果您使用了默認 0x40 以外的地址,則需要在此處定義它。
現在我們定義一些變量。第一個(gè)是電位器輸入引腳,A0 到 A3。之后是 PCA9685 板上的電機輸出,我在連接電機時(shí)使用了 0、4、8 和 12。如果您為電機使用不同的連接器,請更改這些值。
現在進(jìn)入setup設置。我們初始化我們之前創(chuàng )建的pwm對象,然后將 PWM 振蕩器的頻率設置為我們定義的頻率,在我們的例子中是 50 Hz。
現在我們創(chuàng )建一個(gè)函數來(lái)驅動(dòng)電機以響應電位計的位置。然后我們可以為每個(gè)電機調用這個(gè)函數。
我們的函數叫做moveMotor。它有兩個(gè)輸入,controlIn代表電位計輸入,motorOut代表PCA9685上的電機連接。
該函數讀取電位計值并將其轉換為脈沖寬度。然后將此脈沖寬度與Adafruit PWM 伺服庫的setPWM方法一起使用,以將脈沖發(fā)送到由motorOut變量指定的電機。
在循環(huán)中,我們只調用moveMotor函數四次,每個(gè)電位器-伺服電機組合調用一次。
結果是 MeArm 中的四個(gè)伺服電機將響應電位計。在演示中,我使用了滑動(dòng)電位計,這使得精確定位 MeArm 變得更加容易。
結論伺服電機是多功能的小設備,在業(yè)余愛(ài)好者項目中有無(wú)數用途,知道如何控制它們是一項必不可少的 Arduino 編碼和接線(xiàn)技能。
希望本文及其相關(guān)視頻有助于闡明伺服電機的使用,伺服電機可以直接連接到 Arduino,也可以使用 PCA9685 PWM 控制器通過(guò) I2C 連接。
因此,請為自己準備一堆伺服電機,今天就開(kāi)始動(dòng)起來(lái)吧!
以上就是關(guān)于pos機無(wú)線(xiàn)克隆器原理,用Arduino控制伺服電機的知識,后面我們會(huì )繼續為大家整理關(guān)于pos機無(wú)線(xiàn)克隆器原理的知識,希望能夠幫助到大家!
