認識 Servo 伺服馬達 (舵機)
Servo 伺服馬達, 亦稱為舵機。常用於遙控飛機、機器人、智慧小車 … 等等, 做為裝置的方向,角度與轉速的控制之用。
基本上分為:
- 180度型: 用於控制轉向與轉角
- 360度型: 用於控制轉向與速度。
- 標準舵機的規格:頻率 f: 50Hz, 脈衝寬度: 500us~2500us
*** 不同廠牌與型號的舵機, 其脈衝寬度可能略有不同, 使用前須特別注意。但若引用 MyKitServo 則它可自動判斷, 並允許您可彈性調整設定 ***
MyKitServo 的基本控制概念
- 控制值範圍: -90 ~ 90, 對180 度型舵機而言是角度值,360 度型舵機則是速度,正負值為轉向。
- 180 度型舵機: 0 為中間值, 通常可設為 HOME 位置。正值順時針, 負值逆時針, 值越大轉角越大, 反之轉角越小。
- 360 度型舵機: 0 為中間值, 速度為 0, 馬達停止轉動。正值順時針, 負值逆時針, 值越大速度越快, 反之速度越慢。
Step 1: 下載與安裝函式庫
首先, 必須先上傳下面的函式庫到 MCU 板子上:
- MyKitServo: 舵機控制的函式庫
***如果您尚不熟悉或想知道我是如何將函式庫上傳至 MCU 的, 那麼您應該會有興趣參考我的另一篇文章 “MicroPython 如此簡單系列 — ESP8266/ESP32 MCU 檔案管理”. ***
Step 2: 來點基本測試範例
接下來的範例, 基本上程式的最上頭, 都會需要先包含以下敘述:
import utime as time
from MyKitServo import myServosvo = myServo("YOUR SERVO NAME", continuous=True) # MG90S, SG90, S35, MG995, MG996, MG996R, ...svo.attach(YOU_SERVO_PIN) # 舵機掛載
Example 1: 180度型舵機的角度控制
svo.go(角度值) # 角度值:-90~90
svo.goHome() # 回到預設的原點
svo.detach() # 舵機停止並卸載
Example 2: 360度型連續旋轉型舵機的速度控制
用法同 180 型舵機的控制函式, 差別只是360型控制的是速度, 而180型是轉角。
DEMO: 一次控制 5 個不同規格舵機的轉向 , 轉角, 與速度 (含 180度型與360度型連續旋轉型舵機)
這個 DEMO 很適合作為 “機器手臂” 或 “機器人” 的基礎範例ㄡ !!
import utime as time
from MyKitServo import myServodef test(svo):
svo.go(90)
time.sleep(1)
svo.go(0)
time.sleep(1)
svo.go(-90)
time.sleep(1)
svo.go(0)svo180_1 = myServo("SG90")
svo180_2 = myServo("MG90S")
svo360_1 = myServo("MG995")
svo360_2 = myServo("S35")
svo360_3 = myServo("S35")
svo180_1.attach180(14) # ESP8266:D5
svo180_2.attach180(12) # ESP8266:D6
svo360_1.attach360(5) # ESP8266:D1
svo360_2.attach360(13) # ESP8266:D7
svo360_3.attach360(15) # ESP8266:D8
print("Function test: Angle 180 and Speed 360 ....")
test(svo180_1)
test(svo180_2)
test(svo360_1)
test(svo360_2)
test(svo360_3)svo180_1.detach()
svo180_2.detach()
svo360_1.detach()
svo360_2.detach()
svo360_3.detach()
如此而已, 就是這麼簡單, 希望能對你有發生了一點點小幫助 !
作者:Yungger 勇哥
若覺得此文真對您有幫助, 點點左上方的拍手圖示, 鼓勵一下。若還想 請喝杯咖啡 鼓勵一下勇哥的繼續創作, 也感謝 😘 😘 !!