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