遙控pos機,用Arduino控制伺服電機

 新聞資訊2  |   2023-06-23 17:47  |  投稿人:pos機之家

網上有很多關于遙控pos機,用Arduino控制伺服電機的知識,也有很多人為大家解答關于遙控pos機的問題,今天pos機之家(www.chinaclyc.com)為大家整理了關于這方面的知識,讓我們一起來看下吧!

本文目錄一覽:

1、遙控pos機

遙控pos機

如果您需要控制船上或飛機上的舵機以控制方向,則伺服系統是完美的選擇。它們在機器人工作中非常有用,可以定位相機、傳感器或機器人的運動部件。伺服也可以用作模擬儀表,如速度表和轉速表。

本文翻譯自科普大神donebotWorkshop.com

譯者:DIY百事

目錄

1 什么是伺服電機? 1.1伺服電機的種類 1.2模擬伺服電機

2 伺服是如何工作的? 2.1連續旋轉伺服電機

3 伺服電機控制信號 3.1常規伺服電機時序 3.2連續旋轉伺服電機時序

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 伺服驅動板

10 多個伺服系統——控制 MeArm

11 結論

什么是伺服電機?

伺服電機是一種低速、高扭矩的電機,有多種尺寸可供選擇。與直流和步進電機不同,伺服電機通常不會旋轉完整的 360 度。相反,它被限制在 180、270 或 90 度的范圍內。

控制信號被發送到伺服系統以將軸定位在所需的角度。這種具有單一信號的布置使得伺服系統可以簡單地用于無線電和遙控設計以及單片機。

我們已經構建了一些使用電機使物體移動的項目,并且在此過程中我們查看了一些可以通過 Arduino 和 Raspberry Pi 項目控制的不同類型的電機。

圖1

伺服電機的種類

伺服電機本質上是一種電機,它有一個控制信號輸入端用于指定電機軸位置。

伺服系統用于工業和業余愛好應用。工業伺服系統通常是帶有數字控制輸入的交流電機,成本數百或數千美元。

業余愛好者用的伺服電機通常是直流電機,可以用數字或模擬信號進行控制。

數字伺服系統用于需要快速響應的應用中,例如飛機上的升降舵或直升機上的方向舵。我們也不會使用這些類型的電機,盡管用于使用 Arduino 驅動它們的電路圖和代碼與我們將用于模擬伺服系統的相同。

我們將使用普通的模擬伺服電機,這是業余愛好者最常用的類型。它們價格低廉且易于獲得。安裝硬件也很容易找到,因為這些伺服器具有一組標準尺寸。

模擬伺服電機

模擬伺服電機價格低廉,有多種尺寸和額定值可供選擇。當您需要可以準確定位的小型高扭矩電機時,這是完美的選擇。

模擬伺服電機的“模擬”部分是控制信號。模擬伺服電機響應脈沖寬度調制( PWM) 信號來定位其電機軸。

PWM 是一種理想的控制方式。它可以由一個簡單的定時器電路或單片機產生。它可以通過單根電線發送,也可以通過無線電或光束傳送信號。

Arduino 有許多支持 PWM 的輸出引腳,非常適合控制伺服電機。

伺服系統如何工作?

伺服電機是一種內置“伺服機構”的電機。

伺服機構使用傳感器來監控電機軸位置然后用控制器來控制電機。它接收一個信號,指示軸應運動到的位置。然后它將電機軸移動到所需的位置。

在模擬伺服電機中,我們將使用的控制信號是一個 PWM 信號,其脈沖寬度決定了電機軸的定位角度。電機本身是一個簡單的直流電機,帶有減速齒輪組以減慢其速度并增加其扭矩。

為了正常工作,伺服電機需要一個可以準確測量其軸位置的傳感器。在一些工業和高端玩具伺服電機上,這是使用光電盤完成的,但在大多數標準業余伺服電機中,傳感器是一個電位計。這也是有效的,因為這些伺服系統通常會移動 180 到 270 度,完全在電位計的范圍內。然而,電位計的精度,特別是在低成本伺服電機中的精度,會影響伺服機構的整體精度。

連續旋轉伺服電機

標準模擬伺服電機的旋轉受到限制,通常為 180 或 270 度(目前最常見的是 180 度)。其內部齒輪裝置以小巧且廉價的包裝提供高扭矩動力組。

小尺寸和大扭矩的結合也使伺服電機在小型玩具和機器人等小型設備的設計中用作標準直流電機的替代品。有些人會通過移除電位計來修改標準模擬舵機,讓舵機可以旋轉整整 360 度。

從制造商得到的消息,現在也提供“連續旋轉伺服電機”,其實是剝離了伺服機構的伺服電機。

在連續旋轉伺服電機中,軸旋轉的速度和方向由與傳統模擬伺服電機相同的 PWM 信號控制。

具有簡單的單線控制信號和與標準伺服電機相同的物理封裝使連續旋轉伺服電機能用到許多場合。

伺服電機控制信號

為了使用模擬伺服電機,您需要了解如何使用 PWM 控制其運行。常規旋轉和連續旋轉這兩個品種使用相同的計時信號,但對它們的響應略有不同。

讓我們來看看大多數模擬伺服電機中使用的PWM信號。

傳統伺服電機時序

在傳統的模擬伺服電機中,使用周期為 20 ms 的 PWM 信號來控制電機。20 ms 的信號具有 50 Hz 的頻率。

脈沖寬度在 1 到 2 ms 之間變化,以控制電機軸位置。

圖2

1.5ms 的脈沖寬度將使伺服軸停留在 90 度位置,即其行程的中心。1ms 的脈沖寬度將導致伺服軸停在 0 度位置。2ms 的脈沖寬度將使伺服軸停在 180 度位置。

在 1ms 和 2ms 之間改變脈沖寬度將使伺服軸在 180 度的范圍內移動。通過相應地調整脈沖寬度,您可以將其放置在您想要的任何角度。

連續旋轉伺服電機時序

在連續旋轉伺服電機中,相同的 PWM 信號將導致電機的性能不同。

圖3

1.5ms 的脈沖寬度將導致伺服軸停止旋轉。1ms的脈沖寬度將導致伺服軸逆時針全速旋轉。2ms 的脈沖寬度將導致伺服軸順時針全速旋轉。

在 1ms 和 1.5ms 之間改變脈沖寬度將使電機逆時針旋轉,較短的脈沖寬度使電機旋轉得更快。

在 1.5ms 和 2ms 之間改變脈沖寬度將導致電機順時針旋轉,脈沖越長,速度越快。

商用連續旋轉伺服電機將有一個調節電位器,可用于在電機輸入 1.5ms 脈沖寬度時將速度歸零。

伺服電機規格

市面上有數百種模擬伺服電機可用,了解如何閱讀它們的規格對于為您的應用選擇正確的電機至關重要。

以下是您在選擇伺服電機時會遇到的一些關鍵參數。

電機尺寸

伺服電機的物理尺寸自然是一個重要的考慮因素,您的應用可能會要求電機符合特定的尺寸限制。

有多種標準伺服電機尺寸,這使得找到適合您的伺服電機的安裝支架和硬件變得更加容易。

伺服大小通常指定如下:

納米亞微微小型的標準大

也有特殊尺寸。微(Micro) 和 標準(Standard) 尺寸是 Arduino 實驗者最常使用的尺寸。

齒輪材料

伺服系統有許多內齒輪和直接在輸出軸上的齒輪裝置,這些用于降低電機速度并增加其扭矩。

齒輪可以使用塑料或金屬制造。

金屬齒輪提供更好的性能,通常可以支持更高的扭矩并且不易脫落。金屬齒輪伺服系統的成本也更高。

塑料齒輪更容易脫落,并且沒有金屬齒輪的扭矩能力。然而,它們比金屬齒輪伺服電機更安靜且更便宜。

相同的伺服電機結構可能會使用不同的齒輪材料。一種常見的實驗電機是 SG90,帶有塑料齒輪的微型伺服電機。它的金屬齒輪對應型號是MG90。由于它們采用相同的外殼并具有相同的電壓和驅動器要求,因此它們可以互換,MG90 因其金屬齒輪而提供卓越的性能。

伺服電機的質量還受軸承類型和軸承數量的影響。帶有多個軸承的電機轉動更平穩、更準確。

速度

伺服電機的速度定義為將伺服軸移動 60 度所需的時間。

圖4

比如規格0.25 秒/60°,這意味著行進 60 度需要四分之一秒。

伺服速度更適用于傳統伺服電機,連續旋轉電機與任何直流電機一樣額定為最大 RPM。

高速伺服系統用于航模和直升機應用,以控制經常需要快速移動的升降舵和方向舵。其中許多使用數字控制和內部光學位置傳感器代替電位計,以實現更快速的移動。

對于一些業余愛好應用如控制攝像機或超聲波傳感器的位置,速度通常不是關鍵因素。

扭矩

扭矩是一個非常重要的參數,它從字面上指定了電機的力道。

扭矩被定義為伺服系統可以施加到連桿上的力,換句話說,它可以承受多大的力。

它以千克厘米為單位。

要了解扭矩數字與現實世界情況的關系,請考慮以下示例:

圖5

如伺服電機的額定值為 5 kg-cm。也就是說伺服電機可在距軸中心 1 厘米處的杠桿上承受高達 5kg 的負載。

在兩倍距離處,負載將減半,因此在距軸 2 厘米處,杠桿可以支撐 2.5 千克。

一半的距離使可支撐的負載翻倍至 10kg。

更大的伺服電機往往具有更大的扭矩能力,更大扭矩的電機往往更貴。它們也更重,消耗更多電流。

工作電壓

大多數業余模擬舵機的額定電壓為 4.8 到 6 伏,并在更高的電壓下實現其最大性能。

還有更多的伺服系統,最大額定電壓為 7.5 到 8.5 伏。由于 7.4 伏鋰聚合物電池可用于模型飛機、船只、車輛和四軸飛行器,這些電池變得越來越受歡迎。

伺服電機,尤其是高扭矩型號,會消耗相當多的電流,在為您的項目選擇電源或電池時需要考慮到這一點。

連桿、和配件

大多數伺服電機都有一個齒輪軸,它的中心有螺紋方便堅固。

為了使用伺服電機,您需要在軸上裝上另一個零件—平臺、齒輪、輪子或任何您試圖與伺服電機軸一起移動的東西。

伺服電機配有各種不同形狀的杠桿和圓盤,可以與軸配合,以方便將伺服電機連接到您的設計中。這些部件通常被稱“連桿”。它們連接到伺服電機軸上并用中心螺釘固定到位,它們可以由塑料或金屬制成。

除了連桿,您還應該隨伺服電機一起收到各種安裝硬件和螺釘,包括軸的中心螺釘(不要丟失它,因為它們往往因伺服類型而異)。

您還可以購買設計用于接受微型和標準等流行伺服尺寸的安裝板。

伺服連桿、固定件和附件的可用性和互換性使您可以輕松地將伺服電機集成到您的設計中。

測試伺服電機

與任何組件一樣,了解如何測試伺服電機以確保正常運行很有用。

在將伺服電機安裝到您的項目中之前,能夠將伺服軸旋轉到預設位置(例如 90 度)也很有用,以便一切都正確對齊。

您可以使用多種方法來測試伺服。一個簡單的 Arduino 代碼和連接,就像您將在此處進一步看到的那樣,將成為測試伺服并將其軸定位到預設位置的絕佳方法。

另一種方法是使用專用伺服測試儀。

伺服測試儀

正如您想象的那樣,伺服測試儀是一種用于測試伺服電機的設備!它們非常有用,而且可能非常便宜,具體取決于您想要的功能。

一個簡單的伺服測試儀,如這里所示(并在隨附的視頻中使用)只需幾美元。

更先進的伺服測試儀有多個電機的速度和定心控制,有些還有電流表。加上這些都不到20美元。

這些測試儀可以共用電機本身的電源。它們可以插入標準伺服電機連接器,然后它們將控制伺服電機。

伺服測試儀將允許您手動移動電機并將其置于 90 度位置的中心。這使您可以在連桿固定到電機之前檢查電機是否正確運行并對齊其軸位置。

伺服電機接線

模擬伺服電機通常有一個 3 針連接器。

民用伺服電機上使用的顏色代碼因制造商而異。然而,大多數制造商使用相同的引腳排列,如下圖所示:

圖6

伺服電機的三個連接如下:

Ground接地- 電機和邏輯的公共接地。Power電源- 為伺服供電的正電壓。Control控制——PWM 控制信號的輸入。

最常見的連接器是標準的杜邦連接器,間距為 0.1 英寸。這使得使用標準杜邦接頭將伺服電機連接到您的項目變得容易。

您還可以將面包板電線直接插入伺服 3 針連接器,以便您可以使用伺服電機進行原型設計。

連接到 Arduino

正如我們已經描述的那樣,伺服電機需要 PWM 控制信號才能正確運行。您可以通過多種方式生成此信號——簡單的定時器電路、專用控制芯片或使用具有 PWM 輸出功能的單片機。

單片機在能夠更有效地控制伺服方面自然具有許多優勢。Arduino 是一個很好的選擇。

Arduino IDE 已經包含一個伺服庫,因此您很快就會看到,將伺服添加到您的代碼中非常簡單。

PWM脈寬調制輸出

所有 Arduino 板都有一些能夠進行脈寬調制( PWM )的輸出引腳。在 Arduino Uno 上有 6 個支持 PWM 的引腳。

請記住,要生成 PWM 信號,伺服庫文件需要使用一些內部 Arduino 計時器,特別是計時器 1。這可能會干擾其他也需要相同計時器的庫。解決此問題的一種方法是為伺服或其他所需功能尋找替代庫,這是繞過這些限制的常用方法。

更高級的方法是使用外部 PWM 控制器板并釋放 Arduino 計時器的需求。這將在本文中進一步討論。

電源注意事項

大多數伺服電機都可以在 5 伏電壓下運行,因此很容易使用 Arduino 板上的 5 伏輸出為伺服供電。

但這不是一個很好的主意。

伺服系統會消耗大量電流,尤其是在負載時。這可能比 Arduino 板上的電壓調節器所能承受的電流更大,尤其是在更便宜的克隆板上。雖然大多數 Arduino 板可以支持一個微型伺服電機,但它仍然會給調壓器帶來很大的負擔。

伺服電機與所有其他電機一樣,會在電源電路上產生電噪聲。在為單片機和其他邏輯設備供電的線路上存在這種噪聲通常會導致系統錯誤。

為您的伺服電機使用單獨的電源是一個更好的主意。5 伏 USB 3 電源可以很好地工作, 4 節 AA 電池也可以。

如果您真的必須直接從 Arduino 為伺服電機供電,請將其限制為一個微型伺服電機。在靠近伺服電機的電源線上安裝一個 100uf 或更大的電容器可以幫助吸收這些電涌。

伺服掃描旋轉的代碼

對于我們的第一個 Arduino 代碼,我們將使用Arduino IDE內置示例。無需編寫代碼或安裝庫!

連接硬件以用于我們的第一個演示非常簡單。您需要一個 Arduino(任何類型)、一個伺服電機和一個伺服電機電源。

圖7

連接再簡單不過了。伺服由自己的電源供電,接地連接也連接到 Arduino 接地。然后來自伺服的控制引線連接到 Arduino 上的引腳 9。

Arduino Uno 上的引腳 9 是能夠進行 PWM 的六個引腳之一,在大多數 Uno 板上,您會在 6 個啟用 PWM 的 I/O 引腳旁邊看到一個符號。

將您的 Arduino 連接到您的計算機并啟動 Arduino IDE。

單擊屏幕頂部的文件菜單。從那里選擇示例子菜單。

將顯示示例代碼列表。它分為幾個部分,向下滾動列表直到到達“來自庫的示例”部分。

在“庫中的示例”部分,您將看到“伺服”。突出顯示以顯示兩個代碼,旋鈕和掃描。

加載代碼。

/* 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  }}

掃描旋轉是一個非常基本的代碼,它只是將伺服軸從頭掃描到尾。

該代碼使用了Arduino IDE 中包含的Arduino 伺服庫。顧名思義,它是一個用 PWM 控制伺服電機的庫。我們包含該庫并定義一個名為myservo的對象來表示我們的伺服電機。如果您有多個伺服電機,您可以為每個電機定義一個對象。

然后,我們定義一個名為“ pos ”的變量,用于保存我們希望伺服電機軸移動到的位置(角度)。

在設置中,我們將伺服對象連接到 Arduino 引腳 9 上的伺服電機控制線。

然后是loop循環,它由兩個 for 循環組成。第一個循環增加pos變量的值,并使用它使用myservo.write命令控制伺服電機,將軸從 0 度發送到 180 度。

第二個 for 循環是相同的,只是它將值從 180 遞減到 0,將軸朝相反的方向送回。

將代碼加載到 Arduino 中并觀察伺服電機軸,它應該從一端移動到另一端。

您剛剛使用 Arduino 進行了伺服運動!

旋鈕代碼

讓我們繼續看 Arduino IDE 附帶的另一個演示代碼,即旋鈕代碼。在我們做之前,我們需要在我們的電路中添加一個組件。

圖8

正如接線圖所示,您需要一個電位計,10k 以上的任何值都可以正常工作。將它的一端接地,另一端連接到 Arduino +5 伏。中間那個輸出連接到模擬輸入 A0。

電位器將用作定位伺服電機軸的控件,您可以使用它在其 180 度行程中撥動任何位置。這不僅是一個很好的演示,它還是一個有用的功能,用于在將伺服電機安裝到您的項目之前設置它們的位置。

如果您在電路中替換連續旋轉伺服系統,您可以使用電位計來控制電機旋轉的速度和方向。

修改實驗以包含電位計后,打開 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}

掃描代碼也很簡單。與旋鈕代碼一樣,它使用它包含的 Arduino 伺服庫,然后創建一個myservo對象來表示伺服電機。

然后我們定義幾個整數。第一個,potpin,代表我們用于電位計游標連接的模擬引腳。另一個val是讀取該模擬輸入時采用的值。

設置與旋鈕代碼相同,我們將伺服對象連接到引腳 9。

在循環中,我們首先從模擬引腳讀取值,0 到 1023 的值將分配給val。接下來我們使用 Arduino Map Function 改變val來表示 0 到 180 度之間的角度。

之后,我們使用寫入命令將伺服定位到val的值,即電位器選擇的角度。

在短暫延遲讓伺服電機趕上之后,我們重新開始。

將代碼加載到您的 Arduino 并轉動電位計。您應該看到伺服電機的軸與可調電阻同步移動。

PCA9685伺服驅動板

正如我們剛剛看到的那樣,直接從 Arduino 控制伺服電機非常簡單。但是它有它的局限性:

您受到 Arduino 上 PWM 引腳數量的限制。如果伺服是需要其他 PWM 設備的設計的一部分,則可能會出現問題。Arduino 伺服庫可能會與其他 Arduino 庫沖突,因為它們嘗試使用相同的計時器。這有時可以通過尋找替代庫來解決。您需要控制很多伺服電機,即使是 Arduino Mega 也有其局限性。

一個更好的解決方案是使用單獨的伺服驅動器板。這將省掉將 PWM 發送到伺服系統的任務,解放您的 Arduino 以做更好的事情。

我們將使用的電路板基于 PCA9685 芯片。這些板非常受歡迎,由幾家公司制造。

PCA9685 板使用 I2C 與 Arduino 通信。這意味著與 Arduino只有兩個時鐘和數據連接。由于板子 I2C 地址可以使用一系列焊盤進行配置,因此您可以在同一電路上使用多個驅動板。

每塊板卡最多可控制 16 個伺服電機。您可以級聯多達 62 個板來控制多達 992 個伺服電機!

如果您真的需要控制 992 個伺服電機,您可以使用 I2C 擴展板將多個 I2C 總線連接到您的 Arduino!

與電路板的連接非常簡單。

圖9

電路板的每一側都有一組相同的連接,這使得將多個模塊連接起來很容易。它們如下:

GND – 接地連接。OE——輸出使能。您可以使用此引腳啟用和禁用所有 16 個輸出。通常它保持未連接狀態,這將導致啟用所有輸出。SCL – I2C 總線的時鐘線。SDA – I2C 總線的數據線。VCC – 邏輯電源,+5 伏。V+ – 伺服電機的電源。為此,電路板頂部還有另一個連接器,推薦用該連接器,因為它具有反接保護,而 V+ 則沒有。V+ 引腳真正用于級聯多個 PCA9685 模塊,并通過單個電源為所有伺服系統供電。

頂部還有一個用于伺服電源的 2 針螺絲連接器。如上所述,它受到反極性保護。

板子底部有 16 組 3 針公頭連接器。每一個可連接一個伺服電機。

電路板的右上角是六個焊盤。這些用于設置電路板的 I2C 地址。如果您使用多個板,則需要跳線其中的一個或多個以將其內部 I2C 地址更改為唯一。

沒有短接任何跳線的 PCA9685 模塊的基地址是 0x40。

如果將 A0 焊盤短路,則地址變為 0x41。

改為橋接 A1,它現在是 0x42 的地址。橋接 A0 和 A1,地址將為 0x43。

多舵機——控制 MeArm

為了演示如何使用 PCA9685 PWM 模塊來控制多個伺服電機,我決定推出我之前構建的 MeArm。它有四個伺服電機。

我按如下方式連接所有內容:

圖10

你會注意到我還添加了四個電位器,和以前一樣,它們可以是 10k 或以上的任何值,將用于調節四個伺服電機中每一個的運行。

PCA9685 模塊連接到 Arduino 上的 SCL 和 SDA 連接。如果您的 Arduino 沒有用于這些 I2C 連接的引腳,則將模擬引腳 A4 用于 SDA,將引腳 A5 用于 SCL。

請注意,即使您確實有單獨的 SCL 和 SDA 引腳,在使用 I2C 時也無法將 A4 和 A5 用作模擬輸入。

四個電位器一側接地,另一側接地 5 伏。它們的輸出連接到模擬輸入 A0 到 A3。

Arduino 電源還用于為 PCA9685 模塊上的 VCC 電源供電。四個舵機的獨立電源連接到模塊上的螺釘連接器。

我將伺服電機連接到輸出 0、4、8 和 12。您實際上可以使用任何四個連接,只需記下它們,以便您可以修改代碼以匹配您的選擇。

由于這是我連接到 Arduino 的唯一 PCA9685 模塊,因此我沒有短路任何地址焊盤。

現在讓我們看看我用來完成這一切的代碼:

 /*  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 伺服驅動程序庫,您需要安裝該庫才能完成這項工作。它可以從 Arduino IDE 中的庫管理器安裝。

打開 Arduino IDE。從頂部的菜單中選擇Sketch。選擇包括庫。將出現一個子菜單。從子菜單中選擇管理庫...。庫管理器將打開。在庫管理器中搜索“Adafruit PWM”該Adafruit的PWM伺服Library驅動程序應該是第一個結果。單擊“更多信息”鏈接以顯示“安裝”按鈕。使用此按鈕將庫安裝到您的 IDE 中。關閉庫管理器。該庫現已安裝,可以在您的 IDE 中使用。

我們通過包含 Wire 庫開始代碼。它內置于您的 Arduino IDE 中,用于控制 I2C 通信。

接下來我們包括我們剛剛安裝的 Adafruit PWM 伺服庫。

我們現在將定義一些常量。

前兩個常量定義了我們將發送到伺服系統的 PWM 信號的最小和最大脈沖寬度。你還記得這個脈沖寬度將決定伺服軸的位置。

我們定義的第三個常數是 PWM 頻率,模擬伺服電機的頻率為 50 Hz。如果您使用的是數字伺服電機,您可能需要增加它,因為它們通常可以使用高達 200 Hz 的頻率。

接下來,我們使用 Adafruit PWM 庫創建一個名為pwm的對象。如果您使用了默認 0x40 以外的地址,則需要在此處定義它。

現在我們定義一些變量。第一個是電位器輸入引腳,A0 到 A3。之后是 PCA9685 板上的電機輸出,我在連接電機時使用了 0、4、8 和 12。如果您為電機使用不同的連接器,請更改這些值。

現在進入setup設置。我們初始化我們之前創建的pwm對象,然后將 PWM 振蕩器的頻率設置為我們定義的頻率,在我們的例子中是 50 Hz。

現在我們創建一個函數來驅動電機以響應電位計的位置。然后我們可以為每個電機調用這個函數。

我們的函數叫做moveMotor。它有兩個輸入,controlIn代表電位計輸入,motorOut代表PCA9685上的電機連接。

該函數讀取電位計值并將其轉換為脈沖寬度。然后將此脈沖寬度與Adafruit PWM 伺服庫的setPWM方法一起使用,以將脈沖發送到由motorOut變量指定的電機。

在循環中,我們只調用moveMotor函數四次,每個電位器-伺服電機組合調用一次。

結果是 MeArm 中的四個伺服電機將響應電位計。在演示中,我使用了滑動電位計,這使得精確定位 MeArm 變得更加容易。

結論

伺服電機是多功能的小設備,在業余愛好者項目中有無數用途,知道如何控制它們是一項必不可少的 Arduino 編碼和接線技能。

希望本文及其相關視頻有助于闡明伺服電機的使用,伺服電機可以直接連接到 Arduino,也可以使用 PCA9685 PWM 控制器通過 I2C 連接。

因此,請為自己準備一堆伺服電機,今天就開始動起來吧!

以上就是關于遙控pos機,用Arduino控制伺服電機的知識,后面我們會繼續為大家整理關于遙控pos機的知識,希望能夠幫助到大家!

轉發請帶上網址:http://www.chinaclyc.com/newsone/72396.html

你可能會喜歡:

版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至 babsan@163.com 舉報,一經查實,本站將立刻刪除。