伺服電機(jī)特別適用于機(jī)器人和自動(dòng)化系統(tǒng),例如步進(jìn)電機(jī)。它們用于通過單個(gè)連接到 MCU 的邏輯門來獲得精確的角運(yùn)動(dòng)。它們是小塑料或金屬容器,其中有一根銷子,可以在 0° 到 180° 之間旋轉(zhuǎn),穩(wěn)定地保持到達(dá)的位置。它使用帶有減速系統(tǒng)的直流電機(jī),可在旋轉(zhuǎn)過程中增加扭矩。在伺服電機(jī)內(nèi)部,有一個(gè)控制電路能夠檢測(cè)達(dá)到的旋轉(zhuǎn)角度并將電機(jī)鎖定在所需的位置。伺服電機(jī)的電源通常為+5 V。邏輯信號(hào)線也遵循此值。
讓我們旋轉(zhuǎn)伺服電機(jī)
伺服電機(jī)的旋轉(zhuǎn)運(yùn)動(dòng)必須通過微控制器執(zhí)行。事實(shí)上,這種類型的協(xié)議遵循一定數(shù)量的規(guī)則和 PWM 節(jié)奏,這些規(guī)則和 PWM 節(jié)奏只能由智能單元生成。實(shí)際上,這些脈沖的目的是使伺服電機(jī)執(zhí)行一次運(yùn)動(dòng),通常是半圈甚至更少。請(qǐng)記住,它的樞軸不會(huì)自行旋轉(zhuǎn)很多圈,但旋轉(zhuǎn)通常限制在 180° 的延伸范圍內(nèi)。所產(chǎn)生脈沖的占空比寬度決定了行進(jìn)的角距離。每個(gè)脈沖的持續(xù)時(shí)間必須約為 20 ms,而伺服電機(jī)行進(jìn)的角度由高邏輯脈沖的持續(xù)時(shí)間決定,該持續(xù)時(shí)間必須在 1 ms 和 2 ms 之間。導(dǎo)頻的邏輯方案如圖2所示。

圖 2:有效脈沖的持續(xù)時(shí)間(1 ms 和 2 ms 之間)決定了伺服電機(jī)的旋轉(zhuǎn)角度。
高扭矩
伺服電機(jī)可以連接反饋和糾錯(cuò)裝置。它們的扭矩在不同的旋轉(zhuǎn)速度下可能非常高。因此,為了正確管理,觀察扭矩曲線很有用,這些曲線是表示伺服在其不同運(yùn)行速度下可以產(chǎn)生的扭矩的特定圖表。圖 3中的圖表顯示了兩個(gè)操作區(qū)域:一個(gè)是連續(xù)的,另一個(gè)是間歇性的。在連續(xù)運(yùn)行區(qū)域中,使用 RMS 轉(zhuǎn)矩,它處理加速、恒速和減速。如果伺服電機(jī)在高于額定溫度的環(huán)境中運(yùn)行,則必須降低轉(zhuǎn)矩曲線。否則,可以安全地增加額定扭矩。

圖 3:發(fā)動(dòng)機(jī)扭矩圖(來源:Motion Control Tips)
伺服電機(jī)示例
現(xiàn)在讓我們研究一下伺服電機(jī)的使用和驅(qū)動(dòng)它的技術(shù)。為此,我們將使用 Arduino 開發(fā)板,即使在實(shí)踐中可以使用任何其他類型的 MCU。有幾十個(gè)庫可以輕松正確地驅(qū)動(dòng)伺服電機(jī)。它們具有許多功能,只需幾行代碼即可以簡(jiǎn)單的方式配置和管理設(shè)備。但是為了更好地理解它是如何工作的,最好從頭開始實(shí)現(xiàn)運(yùn)動(dòng)算法,而不使用第三方軟件組件。提議的方案還提供了伺服電機(jī)與 Arduino 的直接連接。雖然這適用于一個(gè)或兩個(gè)伺服系統(tǒng),但最好實(shí)現(xiàn)一個(gè)單獨(dú)的功率級(jí),尤其是在有許多伺服系統(tǒng)的情況下。圖4中的接線圖顯示了一個(gè)帶有三個(gè)常開按鈕和一個(gè)伺服電機(jī)的簡(jiǎn)單應(yīng)用。按鈕的功能如下:
第一個(gè)按鈕將伺服電機(jī)向左移動(dòng)。
第二個(gè)將其移至中心。
第三個(gè)將其向右移動(dòng)。
這是一個(gè)可以在許多場(chǎng)合證明有用的試點(diǎn)系統(tǒng)。此外,用戶可以增加按鈕的數(shù)量以提供不同的動(dòng)作。

圖 4:使用伺服電機(jī)的應(yīng)用接線圖
固件非常簡(jiǎn)單,框圖如圖5所示。setup() 函數(shù)的目的是設(shè)置 I/O 端口的操作,特別是輸出中的端口 7,用于向伺服電機(jī)發(fā)送邏輯信號(hào),以及輸入中的端口 8、9 和 10,用于按鈕。另一方面,loop() 函數(shù)包含無限重復(fù)的主代碼。在其中,三個(gè)按鈕在輪詢中連續(xù)檢查。如果其中之一被按下,MCU 會(huì)向伺服電機(jī)發(fā)送正確的 PWM 序列以使引腳旋轉(zhuǎn)。

圖 5:一個(gè)伺服電機(jī)和三個(gè)按鈕的驅(qū)動(dòng)固件框圖
兩個(gè)伺服電機(jī)的示例
這個(gè)另一個(gè)例子涉及兩個(gè)伺服電機(jī)的交替運(yùn)動(dòng),如圖 6 所示。當(dāng)?shù)谝粋€(gè)伺服旋轉(zhuǎn)時(shí),另一個(gè)是靜止的,反之亦然。通過適當(dāng)?shù)匦薷某绦?,系統(tǒng)可以適應(yīng)無限的用途。例如,它可以用來控制機(jī)器人、機(jī)械臂、攪拌機(jī)、自動(dòng)電機(jī),或者更簡(jiǎn)單地說,是玩具。當(dāng)按下按鈕時(shí),其操作如下:
將第一個(gè)電機(jī)的銷向左移動(dòng)。
將第二個(gè)電機(jī)的銷向左移動(dòng)。
將第一個(gè)電機(jī)的銷向右移動(dòng)。
將第二個(gè)電機(jī)的銷向右移動(dòng)。

圖 6:具有兩個(gè)伺服電機(jī)的應(yīng)用接線圖
同樣,固件非常簡(jiǎn)單,即使沒有使用 Arduino 庫。相關(guān)框圖如圖 7所示。setup() 函數(shù)的目的是設(shè)置 I/O 端口的操作,特別是輸出中的端口 7 和 8,用于向伺服電機(jī)發(fā)送邏輯信號(hào),以及輸入中的端口 10,用于按鈕。另一方面,loop() 函數(shù)包含無限重復(fù)的主代碼。在其中,按鈕是連續(xù)控制的。如果按下它,MCU 會(huì)將 PWM 序列發(fā)送到兩個(gè)伺服電機(jī)以進(jìn)行旋轉(zhuǎn)。

圖 7:兩個(gè)伺服電機(jī)和一個(gè)按鈕的驅(qū)動(dòng)固件框圖
伺服電機(jī)的成本是多少?
伺服電機(jī)通常很昂貴(參見圖 8中的圖表)。非常小且動(dòng)力不足的型號(hào)很便宜,但隨著輸出扭矩的增加,它們變得越來越昂貴。在某些情況下,需要大量的機(jī)械功率和高扭矩。降低價(jià)格的一個(gè)解決方案是采用直流齒輪電機(jī)。

圖 8:指示性價(jià)格根據(jù)伺服電機(jī)的強(qiáng)度而有所不同。
一個(gè)有趣的實(shí)際應(yīng)用:四個(gè)伺服與慢動(dòng)作一致
最后一個(gè)例子是構(gòu)建一個(gè)由四個(gè)伺服電機(jī)組成的陣列,它們以相同的動(dòng)作以極慢的速度運(yùn)行。應(yīng)用可以多種多樣,如圖 9 所示,可以預(yù)見使用望遠(yuǎn)鏡自動(dòng)跟隨行星或使用太陽能電池板將它們定向到最大光的方向,以獲得最佳效率。四伺服電機(jī)系統(tǒng)的特點(diǎn)如下:
所有伺服電機(jī)的單一電源
所有伺服電機(jī)同步且均等運(yùn)動(dòng)(一致)
很慢的動(dòng)作
?
要在多個(gè)伺服電機(jī)上同時(shí)運(yùn)動(dòng),需要?jiǎng)?chuàng)建四個(gè) PWM 通道。理論上,可以通過一個(gè)邏輯門控制四個(gè)設(shè)備,但在實(shí)踐中,最好使通信通道多樣化(參見圖 10中的接線圖)。事實(shí)上,未來的項(xiàng)目可能需要不同的輪換,在這種情況下,必須重新繪制接線圖,從而浪費(fèi)時(shí)間。
固件包含兩個(gè)嵌套循環(huán):
第一個(gè),最里面的一個(gè),發(fā)送 10 個(gè) PWM 脈沖??梢钥闯?,20 ms 的暫停是固定的,因?yàn)樗欧姍C(jī)在信號(hào)總周期的測(cè)量中具有很大的容差。
第二個(gè),最里面的一個(gè),它調(diào)整脈沖寬度(從 1,000 μs 到 2,000 μs)以確定引腳的旋轉(zhuǎn)角度。
四個(gè)伺服電機(jī)一起從左到右執(zhí)行極其緩慢的運(yùn)動(dòng),反之亦然。通過修改數(shù)值參數(shù),也可以改變時(shí)間和運(yùn)行速度。

圖 10:伺服電機(jī)陣列接線圖
結(jié)論
今天驅(qū)動(dòng)伺服電機(jī)非常簡(jiǎn)單,因?yàn)樗袦?zhǔn)備好解釋接收到的脈沖并正確旋轉(zhuǎn)銷的邏輯。理論上,人們也可以避免使用微控制器并將信號(hào)的生成委托給邏輯門和觸發(fā)器,即使最終實(shí)現(xiàn)會(huì)更困難一些。標(biāo)準(zhǔn)型號(hào)的連接原理不會(huì)因制造商而異。特定庫的使用使代碼編程更加容易。
附件
本文隨附的是各個(gè)示例的三個(gè)草圖。您只需要編譯它們并將它們直接上傳到 Arduino 或在可能的模擬器中包含相關(guān)的 HEX 文件。附件是:
伺服01.ino
伺服02.ino
伺服03.ino
還應(yīng)該注意的是,Arduino IDE 提供了將“.ino”源存儲(chǔ)在同名文件夾中的功能。
審核編輯:湯梓紅
電子發(fā)燒友App



















評(píng)論