發布日期:2022-10-09 點擊率:395
本文將討論以下內容:
(單擊以下鏈接,跳到您所需的部分)
什么是伺服電機?
它們如何工作?(基本驅動方法和技術)
如何為應用選擇伺服電機
使用 Arduino 平臺
什么是伺服電機,它們的用途是什么,它們由什么組成,以及它們如何工作?
伺服電機是一種根據控制信號確定軸轉動位置的電機,通常用于通過調整襟翼來控制遙控飛機,進行無人機飛行定位,在流量控制中用于閥門控制,或用于連續驅動機器人的輪子。它們可用來定位或調整任何您所能想到的東西。伺服電機包括一個直流電機、一個控制電路、幾個扭力齒輪以及一個塑料外殼(見圖 1)。
圖 1:Parallax 的伺服電機 900-00005-ND,圖中露出的直流電機和齒輪用于轉動電位計,從而為控制 IC 提供反饋以對軸進行定位。其中一個齒輪上有個凹槽,可限制只旋轉 180 度。如要進行連續旋轉,可以去掉這個凹槽。
伺服電機通過利用脈沖寬度調制 (PWM) 信號按順時針或逆時針方向(具體取決于信號的脈沖寬度)旋轉軸,來對軸位置進行控制。通常,1 ms 脈沖寬度會按順時針方向旋轉軸,2 ms 脈沖寬度會按逆時針方向旋轉軸。要將軸定位在 ? 位置(或中間位置),通常使用 1.5 ms 脈沖。每個脈沖之間將需要 20 ms 間隔。下圖 2 顯示每個位置的定時。
圖 2:不同軸位置的 PWM 定時
圖 3:Parallax 的規格書中所示的布線連接。
確定您需要的是有限旋轉(最大 180 度)還是連續旋轉。您還應注意應用所需的軸扭矩以及旋轉速度(以每分鐘轉數 RPM 表示)。
如果您正在構建一個移動物體(如機器人),通常需使用連續旋轉伺服系統來驅動輪子。另一方面,對于定位飛機模型的襟翼以進行飛行控制、水閥、開關或輔助機器人手臂所用的手柄等應用,可以使用有限旋轉伺服系統。
圖 4:Parallax 的高速伺服電機 900-00025-ND(提供 150 RPM @ 6 VDC 的連續旋轉)
下圖列出了一些可用的伺服系統模型。更多詳細信息及更多產品,請單擊此鏈接。
有限旋轉或連續旋轉Digi-Key 零件編號扭矩 - 額定值 (oz.-in)RPM直流工作電壓長/寬/高英寸尺寸(毫米)有限900-00005-ND38限制為 180°4-62.2/0.8/1.6 (56/19/41)連續旋轉900-00008-ND38504-62.2/0.8/1.6 (56/19/41)連續旋轉900-00025-ND221806-82.2/0.8/1.6 (56/19/41)有限1568-1320-ND16.6限制為 160°4.8-60.91/0.46/1.14 (23/11.74/29)連續旋轉1528-1496-ND44.52564.8-62.1/0.8/1.5 (55/20/37)連續旋轉1597-1197-ND25.21004.8-60.90/0.452/0.94 (23/11.5/24) |
(如果您不熟悉 Arduino,可訪問此文章鏈接了解更多信息)
最常用的一款 Arduino 板稱為“UNO”。還有幾個常用版本是我們分銷的產品,來自第三方 供應商,例如 Adafruit、SparkFun、Seeed、DFRobot 等。我個人最喜歡的是來自 SparkFun 的 Red Board,這款產品在原始“UNO”板的基礎上新增了一些出色的改進。我還使用過 Adafruit 的“Flora”,它是一款性價比高且易于使用的圓形電路板。要查看 Digi-Key 的所有 Arduino 板,請單擊此鏈接。
圖 5:左側是 Arduino UNO,右側是 SparkFun 的 Red Board (UNO)。
如果您已熟悉如何 Arduino 板,可以跳過下面這一段:
我對 Arduino 的描述如下:這是一款 IC 芯片和/或電路板,可在 Arduino IDE 這一常見的 IDE(集成開發環境)中使用標準 C 語言。您可以在 Arduino IDE 中創建代碼/軟件(即草圖),使主 IC 芯片(在常用電路板中為 ATMEGA328 微控制器)激活 I/O 引腳來執行某些操作。您可以在 IDE 中的屏幕上獲得關于 IC 如何處理數據的反饋(使用串行命令),這類似于使用 Windows 超級終端模式查看來自外界的串行反饋。互聯網上提供了大量在線支持以及諸多書籍和示例代碼。Arduino 一直在更新其 IDE,所以請確保下載了最新版本。它們有許多示例代碼和功能庫,因此電路板可以充分發揮其作用。正如其稱呼一樣,Arduino 板具有標準的引腳布局,而且還開發出了一種稱為“盾板”的標準版,可以為電路板添加不同的功能——這里是 Digi-Key 提供的各種電路板的鏈接。
我們來看一下如何使用 Red Board 驅動伺服電機:
首先,下載最新版本的 Arduino IDE,并啟動該程序。然后連接 Red Board。
該電路板使用 mini-B 轉 A USB 電纜進行供電,連接后請將您的草圖或編寫的代碼下載到板載 MCU。在此示例中,使用了稱為“Servo- Sweep”的標準庫實例來驅動伺服系統(見圖 6)。
圖 6:Servo Sweep 程序所在位置。
#include
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
}
}
圖 7:掃描程序的代碼。此程序是由 Scott Fitzgerald 通過 BARRAGAN 修改而來的(如上述代碼所示)。
然后,將 USB 電纜插入電路板,并在 IDE 左上角的“Tools”下選擇“Arduino UNO”板。在同一菜單中,選擇“Port”,以驗證程序是否選中了電路板所連接的 COM 端口。最后,單擊左上角的下載按鈕(指向右側的小箭頭)。幾秒鐘后,Red Board 的一些 LED 會閃爍(表示正在將已編譯程序下載到該電路板)。
然后,將伺服電機連接到一個單獨的電源,其地線與電路板的地線需連在一起(USB 電源只能驅動這么多的電流,這時伺服系統有點噪音,其感應脈沖會對電路板產生不利影響)。
要控制電機,需要將 PWM 輸入連接到電路板上。通過查看上面的代碼,我們可以知道要將 PWM 輸出連接到引腳 9。通過上圖 3,使用白色引線或中間導線,將其連接到電路板的引腳 9。
現在可以開始運行程序了。程序首先按順時針方向盡可能將軸歸零,然后按逆時針方向緩慢掃描 180 度,之后又按順時針方向歸零。使用示波器可以測量程序所產生的 PWM 脈沖寬度。我們會發現 90 度時為 1.5 ms,0 度或順時針擺動時接近 600 μs。180 度或逆時針擺動時,PWM 脈沖接近 2.2 ms。說明該程序運行良好,您可以更改一些值來查看各種效果,例如更改鎖定位置,或者將延遲更改為較小的值以加快掃描速度。
下一篇: 斷路器、隔離開關、接
上一篇: 索爾維全系列Solef?PV