鹹魚硬件—舵機Servo

舵機是一種位置(角度)伺服的驅動器,適用於那些需要角度不斷變化並可以保持的控制系統。目前在高檔遙控玩具,如航模,包括飛機模型,潛艇模型;遙控機器人中已經使用得比較普遍。舵機是一種俗稱,其實是一種伺服馬達。

舵機的工作原理
在這裏插入圖片描述

舵機內部的控制電路,電位計(可變電阻器)和電機均被連接到電路板上,如內部結構圖的右邊部分。控制電路通過電位計可監控舵機的當前角度。
如果軸的位置與控制信號相符,那麼電機就會關閉。如果控制電路發現這個角度不正確,它就會控制馬達轉動,直到它達到指定的角度。舵機角度根據製造商的不同而有所不同。比如,一個180度的舵機,它可以在0度至180度之間運動。
由於限位裝置被安裝在主輸出裝置上,超出這個範圍機械結構就不能再轉動了。 舵機的輸出功率與它所需要轉動的距離成正比。如果輸出軸需要轉動很長的距離,馬達就會全速運轉,如果它只需要短距離轉動,馬達就會以較慢的速度運行,這叫做速度比例控制。

如何讓舵機轉到指定角度?
在這裏插入圖片描述

控制線用於傳輸角度控制信號。這個角度是由控制信號脈衝的持續時間決定的,這叫做脈衝編碼調製(PCM)。舵機的控制一般需要一個20ms左右的時基脈衝,該脈衝的高電平部分一般爲0.5ms-2.5ms範圍,總間隔爲2ms。脈衝的寬度將決定馬達轉動的距離。例如:1.5毫秒的脈衝,電機將轉向90度的位置(通常稱爲中立位置,對於180°舵機來說,就是90°位置)。如果脈衝寬度小於1.5毫秒,那麼電機軸向朝向0度方向。如果脈衝寬度大於1.5毫秒,軸向就朝向180度方向。以180度舵機爲例,對應的控制關係是這樣的:
0.5ms————-0度;
1.0ms————45度;
1.5ms————90度;
2.0ms———–135度;
2.5ms———–180度;

示例用法:
from pyb import Servo
s1=Servo(1#使用X1控制(X1,VIN,GND) 
s1.angle(45#轉到45°
s1.angle(-60,1500)#1500ms內轉到-60°
s1.speed(50)#以速度50繼續轉動

伺服對象使用定時器(5)產生 pwm 輸出。 您可以使用定時器(5)進行伺服控制,或者您自己的目的,但不能同時使用兩者。在這裏插入圖片描述

Class pyb.Servo(id)
pyb.Servo(1#創建一個伺服對象。
#id 是1-4,對應於針腳 x1到 x4。
方法

angle()

 '''沒有參數,這個函數返回當前角,
 有參數,這個函數設置伺服器的角度: '''
Servo.angle(angle, time=0)
'''
angle:角度:度數中移動到的角度
time:時間:時間是到達指定角度所需的毫秒數。 
 	 如果省略,然後伺服移動儘快到它的新位置。
 '''

在這裏插入圖片描述
speed()

 '''沒有參數,這個函數返回當前速度。
 有參數,這個函數設置伺服器的速度:'''
Servo.speed(speed, time=0)
'''
speed:速度:取值-100到100之間
time:時間:時間是達到指定速度所需的毫秒數。 如果省略,然後伺服加速儘可能快。
 '''

pulse_width()

 '''沒有參數,這個函數返回當前原始脈衝寬度值。
 有參數,這個函數設置原始脈衝寬度值。'''
Servo.pulse_width(value)

calibration()
在這裏插入圖片描述

 '''沒有參數,此函數將以5元組的形式返回當前的校準數據。 '''
Servo.calibration(pulse_min, pulse_max, pulse_centre, pulse_angle_90, pulse_speed_100)
如果給出參數,這個函數設置定時校準: 
pulse_min :允許的最小脈衝寬度
pulse_max :允許的最大脈衝寬度
pulse_centre :是與中心 / 零位相對應的脈衝寬度
pulse_angle_90 :90度相對應的脈衝寬度
pulse_speed_100 :脈衝速度100是與速度100相對應的脈衝寬度。

參考鏈接:
秒懂舵機角度控制原理
micropython

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章