連接伺服電機可能是許多項目中的一項基本任務(wù),例如構(gòu)建定制機器人??梢圆捎枚喾N方法將伺服電機與Raspberry Pi連接起來。本文介紹了其中的兩種,并解釋了伺服電機的工作原理。這些知識將使讀者能夠使用不同的微控制器,甚至是簡單的基于555定時器的電路來控制伺服系統(tǒng)。
伺服電機是如何工作的?
通常,伺服系統(tǒng)具有三個輸入,其中兩個為位于塑料體內(nèi)的電機供電。第三個輸入控制伺服轉(zhuǎn)動多少。
通常,輸入信號是脈寬調(diào)制(PWM)信號,其頻率不會隨時間變化。相反,當(dāng)PWM輸入信號的占空比發(fā)生變化時,伺服電機會旋轉(zhuǎn)到某個角度。本例中使用的舵機總共可以轉(zhuǎn)動180度(每個方向90度)。當(dāng)占空比為5%(一毫秒長的高脈沖)時,伺服旋轉(zhuǎn)到其最小位置。如果占空比變?yōu)?0%(這是一個兩毫秒長的高脈沖),伺服會一直向右旋轉(zhuǎn)。之間的占空比與-90和+90之間的不同角度相關(guān)。但是,這些數(shù)字可能因不同的伺服系統(tǒng)和制造商而異。因此,始終有必要查閱伺服的數(shù)據(jù)表。
請注意,Raspberry Pi不應(yīng)為伺服提供電壓。相反,使用外部電源來驅(qū)動伺服電機,因為Raspberry Pi的GPIO引腳可能無法提供足夠的電源來使電機以可接受的速度轉(zhuǎn)動。
如何用樹莓派控制伺服電機?
要使樹莓派控制伺服電機,請將伺服器的+5 V和GND線連接到外部電源,將剩余的信號線連接到樹莓派的任何I/O引腳。
不要忘記將Raspberry Pi的任何GND引腳也連接到電源的地。
如上所述,伺服系統(tǒng)通常需要一個PWM信號來告訴它們轉(zhuǎn)向哪里。因此,有多種方法可以將舵機旋轉(zhuǎn)到特定角度。一種方法是使用包含伺服模塊的gpiozero庫。您可以使用pip在Raspberry Pi上安裝該庫。如果尚未安裝rpi.gpio包,也請下載它。否則,gpiozero庫將無法工作:
復(fù)制代碼
sudo apt-get install python3-rpi.gpiosudo pip3 install gpiozero
完成后,就可以執(zhí)行以下腳本:
復(fù)制代碼
from gpiozero import Servofrom time import sleep servo = Servo(25)try: while True: servo.min() sleep(0.5) servo.mid() sleep(0.5) servo.max() sleep(0.5)except KeyboardInterrupt: print("Program stopped")
如您所見,該庫允許您快速將伺服轉(zhuǎn)向三個預(yù)定義位置之一。這個簡單的python腳本首先導(dǎo)入所需的庫。然后,它定義伺服在開始無限循環(huán)之前連接到引腳25,在該無限循環(huán)中,伺服旋轉(zhuǎn)到其最小、中間和最大位置。在角度變化之間,腳本等待半秒。
但是,庫也可以通過直接將舵機的值設(shè)置為-1和1之間的數(shù)字來指示舵機轉(zhuǎn)向舵機最小值和最大值之間的任何位置。負(fù)值對應(yīng)于舵機的最小位置,一個代表舵機的最大旋轉(zhuǎn):
復(fù)制代碼
from gpiozero import Servo from time import sleep servo = Servo(25)val = -1try: while True: servo.value = val sleep(0.1) val = val + 0.1 if val > 1: val = -1except KeyboardInterrupt: print("Program stopped")
這個簡單的腳本與前一個腳本的工作方式類似。然而,它在每次循環(huán)迭代中直接設(shè)置舵機的值,而不是使舵機旋轉(zhuǎn)到三個預(yù)定義位置之一。
請注意,此庫僅代表使用Raspberry Pi控制伺服的一種方式。同樣,您也可以使用不同的庫,例如pigpio,并直接操縱進入伺服器的PWM輸出信號,使其轉(zhuǎn)向指定位置。
控制多個舵機的另一種方法
任何樹莓派編號的I/O引腳都能夠控制伺服系統(tǒng)。但是,如果您想控制更多的伺服系統(tǒng),或者您的項目需要GPIO引腳用于其他用途,那么也可以使用伺服控制器板。
這些模塊通常通過I2C與微控制器或類似設(shè)備通信,因此可以僅使用Raspberry Pi的兩個GPIO引腳來控制許多伺服系統(tǒng)。但是,您可以購買許多不同類型的模塊,它們的工作方式通常大不相同。因此,您應(yīng)該查閱模塊的數(shù)據(jù)表以了解如何使用它。
概括
與普通直流電機不同,伺服系統(tǒng)通常不能旋轉(zhuǎn)完整的360度。相反,它們在某個最小和最大角度之間轉(zhuǎn)動。具有恒定頻率的脈寬調(diào)制輸入信號控制旋轉(zhuǎn)。該信號的占空比直接對應(yīng)于電機的角度。當(dāng)輸入信號的占空比增加時,伺服會向其最大位置旋轉(zhuǎn)。樹莓派可以通過軟件直接同時控制多個舵機。每個編號的GPIO引腳都可以管理一個舵機。但是,不建議使用Raspberry Pi為伺服器供電。相反,它們應(yīng)該連接到外部電源。伺服控制器板是一次控制大量伺服的不錯選擇。