舵機的乙個作用是用於充當機械手臂的關節或者機械爪的閉合,控制四驅車的轉向等。上好旋臂後,它的活動示意圖如下:
(網路,侵刪!)。可以看到他有一些基本運動規則:
我們主觀感覺舵機基本沒有延遲的執行我們的命令,但是其實並非如此。舵機會將時間分為一段段的,比如20ms,在這個時間內,使用者傳送乙個指令他接受並執行。這是,使用細小的離散來對世界的連續性進行模擬。絕對的連續是做不到的。
在這個週期內,使用者傳送乙份特定時長的脈衝,舵機根據脈衝的時長來旋轉特定的位置。對於sg90舵機來說,脈衝為0.5ms, 旋轉到0度位置,脈衝為1.5ms時旋轉到90度位置,2.5ms時旋轉到180度位置。如果想讓舵機從0度位置依次轉到,45度,90度,135, 180度,然後再依次轉回來,傳送0.5, 1.0, 1.5, 2.0, 2.5, 2.0, 1.5, 1.0, 0.5的脈衝即可,如上圖所示。
不管當前,在旋臂在什麼位置,想讓舵機轉到0度位置,只要輸入0.5ms的脈衝即可,想要轉到其他位置也是同樣道理。
由於gpio每個針腳限制3ma的電流,全部針腳電流和限制在100ma,所以,不要接大電流的舵機,否則會燒壞樹梅派。樹梅派3b+可以接sg90舵機。
另外,最好在關閉電源的情況下進行接線拔線,因為插拔瞬間有可能電流增大等情況,燒壞樹莓派。
sg90電機是乙個小電機,可以直接接在樹莓派3b上。電機三個導線,橙色為訊號線,也是我們需要變成控制的那根,紅色正級黑色負極(紅色正級,黑色負極,好像很多電器都是這樣的,想想萬用表,電壓表、電流錶都是如此)。電源使用樹梅派的5v電源即可,樹莓派的gnd就是電源負極。橙色線接在任意編號的針腳上, 我這裡使用的是bcm模式下的25號pin。下面上**,具體的**解釋也在**中:
# -*- coding:utf-8 -*-
# 這句是解決python2中,py檔案中中文字元問題
from rpi import gpio # 引入gpio庫
import time
# 先不要看這個函式,先看下邊的程式
# 將角度位置轉化為對應的pwm_value
defto_dutycycle
(angle)
:"""
這個函式為start()和changedutycycle()提供值,這兩個函式的輸入非常相似,值的範圍都是0.--100.。
為了得到這個值,先求輸入角度angle所對應的脈衝長度即,
length = angle * 1.0 / 180. * (2.5 - 0.5) + 0.5
然後,這個長度除以週期長度再乘100,即可獲得dutycycle
dutycycle = lenght / 20. * 100.
"""length = angle *
1.0/
180.*(
2.5-
0.5)
+0.5
dutycycle = lenght /20.
*100
.return dutycycle
try:
# 1. 樹梅派3b 的針腳有兩種編碼方式,這裡使用bcm,所以一定先制定編碼方式
gpio.setmode(gpio.bcm)
# 2. 設定25號pin作為輸出針腳,用於控制舵機
gpio.setup(
25, gpio.out)
# 3. 進一步將25號pin設定為pwm模式輸出,輸出頻率為50hz,所以第二個引數是hz
# 這時候,pwm的週期的時長是20ms了,即 1s / 50 = 20ms
pwm_sg90 = gpio.pwm(25,
50)# 4. 一開始,通過傳送乙個脈衝,通知舵機旋到對應的位置。引數dutycycle規定了脈衝的時常。(之所以叫dutycycle,是因為官方文件中,說這個引數叫做dutycycle)
# dutycycle 值範圍為0.---100., 它表示脈衝長度與週期時長的百分比。即dutycycle=脈衝時長/週期時長 × 100.
# 此時要求旋到0度位置
pwm_sg90.start(to_dutycycle(angle=0)
)# 5. 程式暫停1s,等待舵機將旋臂旋到0度位置。其實沒必要等待1s,大概最多需要0.3ms。
time.sleep(1)
# 將for angle in[0
,180,0
,90,0
,120,90
]: dutycycle = to_dutycycle(angle)
pwm.changedutycycle(dutycycle)
time.sleep(1)
finally
:# 最後這一步很關鍵
# 意思是釋放25號針腳的資源,使其他的程式可以使用這個針腳
# 另外不釋放資源,還有一些安全隱患,所以一定要釋放資源
# finally的作用是:當程式中途遇到錯誤的時候,不會立刻結束程式,而會向下執行,保證了cleanup一定會執行到。
gpio.cleanup(
)
了解樹梅派
很早就聽說過它的大名了,前兩天終於有了自己的第一台樹梅派3b 小電腦。第一次接觸樹梅派是上半年四月份,當時做乙個簡版的無人駕駛小車,打算用樹梅派3b,由於物體識別模型有些複雜,又不會優化,識別一幀影象就要幾秒就放棄了這個方案。當時3b 太搶手沒買到,現在從新認識一下。其他型號對比 官方系統我知道的有...
樹梅派 3 使用筆記
最近給樹梅派買了乙個酷炫的小風扇,測試效果確實不錯,1.2ghz 64位四核armv8 cpu 不再像以前一樣那麼熱了。問題 許久未開機後,重新開機,其餘軟體和terminal 均正常,只有 chromium 不能正常顯示,只有視窗邊框,內容是桌面。解決 sudo apt get update su...
樹梅派 安裝chrome Chromium
貌似最新版2016 9 23版本的系統,已經自帶chromium瀏覽器了,如果你不想重新安裝系統,可以按照本文的方法來安裝。網上的教程大部分已經失效,apt get install chromium命令無效,因為這瀏覽器已經改名字了,用以下命令安裝 apt get update 更新一下先 apt ...