pyboard上有4個專用連接點,用於連接業餘愛好伺服電機(參見例如 維基百科)。這些電機有3根電線:接地,電源和信號。在pyboard上,您可以在右下角連接它們,信號引腳位於最右側。引腳X1,X2,X3和X4是4個專用伺服信號引腳。
在這張圖片中,有男性 - 男性雙適配器將伺服器連接到pyboard上的插頭引腳。
伺服器上的接地線通常是最黑的,黑色或深棕色。電源線很可能是紅色的。
伺服電機的電源引腳(標記為VIN)直接連接到pyboard的輸入電源。通過USB供電時,VIN通過5V USB電源線通過二極管供電。連接到USB,pyboard可以為至少4個中小型伺服電機供電。
如果使用電池給pyboard供電並運行伺服電機,請確保它不大於6V,因為這是大多數伺服電機可以承受的最大電壓。(有些電機最高只需4.8V,因此請檢查您使用的是哪種類型。)
1.1。創建一個Servo對象
將伺服插入位置1(帶有引腳X1的伺服)並使用以下命令創建伺服對象:
>>> servo1 = pyb 。伺服(1 )
要改變伺服角度,請使用以下angle方法:
>>> servo1 。角度(45 )
>>> 伺服1 。角度(- 60 )
這裡的角度以度為單位,範圍從約-90到+90,具體取決於電機。angle不帶參數調用將返回當前角度:
>>> servo1 。角度() -
60
請注意,對於某些角度,由於設置脈衝寬度時的捨入誤差,返回的角度與您設置的角度不完全相同。
您可以將第二個參數傳遞給angle方法,該方法指定達到所需角度所需的時間(以毫秒為單位)。例如,要從當前位置到50度需要1秒(1000毫秒),請使用
>>> servo1 。角(50 , 1000 )
該命令將立即返回,伺服將繼續移動到所需的角度,並在它到達時停止。您可以將此功能用作速度控制,或同步2個或更多伺服電機。如果我們有另一台伺服電機()那麼我們就可以做到servo2 = pyb.Servo(2)
>>> servo1 。角(- 45 , 2000 ); 伺服2 。角(60 , 2000 )
這會將伺服系統移動到一起,使它們都需要2秒才能達到最終角度。
注意:使用上面兩個表達式之間的分號,以便在REPL提示符下按Enter鍵時,它們會一個接一個地執行。在腳本中,您不需要執行此操作,您可以將它們一行寫入另一行。
1.2。連續旋轉伺服系統
到目前為止,我們一直在使用移動到特定角度並保持該角度的標準伺服系統。這些伺服電機可用於創建機器人的關節,或平移機構等。在內部,電動機具有可變電阻器(電位計),該電阻器測量電流角度並向電動機施加與其距所需角度的距離成比例的電動機。所需的角度由伺服信號線上的高脈衝寬度設定。1500微秒的脈衝寬度對應於中心位置(0度)。脈衝以50Hz發送,即每秒50個脈衝。
您還可以獲得連續順時針或逆時針旋轉的連續旋轉伺服電機。旋轉的方向和速度由信號線上的脈衝寬度設定。1500微秒的脈衝寬度對應於停止的電動機。小於或大於此的脈衝寬度意味著以給定的速度以一種方式或另一種方式旋轉。
在pyboard上,連續旋轉電機的伺服對象與以前相同。事實上,使用angle你可以設置速度。但為了更容易理解預期內容,還有另一種方法speed可以設置速度:
>>> servo1 。速度(30 )
speed具有與以下功能相同的功能angle:您可以獲得速度,設置速度,並將其設置為達到最終速度的時間。
>>> servo1 。speed ()
30
>>> servo1 。速度(- 20 )
>>> 伺服1 。速度(0 , 2000 )
上面的最後一個命令將電機設置為停止,但需要2秒鐘才能完成。這基本上是對連續伺服加速度的控制。
伺服速度為100(或-100)被認為是最大速度,但實際上你可以比這快一點,具體取決於特定的電機。
angle和speed方法(除了名稱)之間的唯一區別是輸入數字(角度或速度)轉換為脈衝寬度的方式。
1.3。校準
從角度或速度到脈衝寬度的轉換由伺服對象使用其校準值完成。要獲得當前校準,請使用
>>> servo1 。校準()
(640,2420,1500,2470,2200)
這裡有5個數字,它們有意義:
最小脈衝寬度; 伺服接受的最小脈衝寬度。
最大脈衝寬度; 伺服接受的最大脈衝寬度。
中心脈衝寬度; 將伺服置於0度或0速度的脈衝寬度。
脈衝寬度對應90度。這設置了angle角度與脈衝寬度方法的轉換。
脈衝寬度對應於速度100.這設定了speed速度到脈衝寬度的方法的轉換。
您可以使用以下方法重新校準伺服(更改其默認值):
>>> servo1 。校準(700 , 2400 , 1510 , 2500 , 2000 )
當然,您可以更改上述值以適合您的特定伺服電機。