樹莓派控制舵機

2021-10-01 05:55:44 字數 2486 閱讀 8076

說在前面:在網上找了一圈有關樹莓派控制舵機的**,發現好多都是一模一樣的,重點是它們都貼著「原創」標籤。 ^ __ ^!

樹莓派不能直接輸出模擬電訊號,但我們可以使用pwm(脈寬調變)方法來模擬這一點。我們製作乙個固定頻率的數碼訊號,在那裡我們將改變脈衝寬度,將「轉換」改為「平均」輸出電壓的電平,我們可以使用這個「平均」電壓水平來控制led亮度。

頻率本身不是重點,而是「占空比」,即脈衝「高」的時間除以波週期之間的關係。例如,假設我們在樹莓派的 gpio上產生乙個50hz的脈衝頻率。週期(p)將是頻率的倒數或20ms(1 / f)。如果我們的led達到「半」亮度,我們的占空比必須為50%,這意味著「脈衝」將是10ms的「高」。而在這裡,我們將用「占空比」來定義舵機的位置。

一般舵機有三根控制線,分別為黃、紅、灰(黑),這三根線分別接樹莓派gpio資料輸出引腳、5v電源正極、gnd。

對於舵機的供電,可以選擇樹莓派的5v輸出,但為了樹莓派的安全起見,建議用外部5v電源。充電寶就可以。

舵機引數

首先,你要清楚你的舵機引數。我使用的舵機基本引數如下:

範圍0°~180°

電源5vdc

工作頻率

50hz(週期:20 ms)

脈衝寬度

1ms~2ms

理論上,1ms對應舵機0°,1.5ms對應舵機90°,2ms對應舵機180°。

在利用python編寫舵機位置時,利用的是上述位置所對應的的「占空比」。

位置角度

脈衝寬度

占空比0°

1ms5.0%

90°1.5ms

7.5%

180°

2ms10%

其中,占空比 = 脈衝寬度/週期。 5.0% = 1ms/20ms

可以看出,占空比理論上應該在5%到10%之間變化。但是,舵機在實際上會有一些誤差,需要我們校正,得到它的準確值。

舵機校正

在樹莓派中執行以下**:

#!/usr/bin/env python3

import rpi.gpio as gpio

import time

gpio.setmode(gpio.board)

# gpio引腳編號的兩種方式之一,另一種是bcm。所用編號方式不同,pin也不同。

gpio.setwarnings(false) # 禁用警告。

gpio.setup(pin,gpio.out)

# pin為你所接的資料輸出gpio引腳。

p = gpio.pwm(pin,50)

# 在pin腳上產生頻率為50hz的pwm訊號。

p.start(0)

# 在引腳上設定乙個初始pwm訊號。

p.changedutycycle(3)

# 通過輸入不同的「占空比值」來觀察舵機的位置變化,這裡的「占空比」是3%。

time.sleep(1)

p.stop(

)# 停止pwm。

gpio.cleanup(

)# 清理gpio。

最終得到的角度和「占空比」的關係為:

角度占空比

0°2%

90°7%

180°

12%進而,我們可以通過一組簡單的二元一次方程,得到占空比和角度的關係表示式:

dutycycle = angle/18 + 2

#!/usr/bin/env python3 

import rpi.gpio as gpio

import time

defsetser***ngle

(angle)

: gpio.setmode(gpio.board)

gpio.setwarnings(

false

) gpio.setup(

32, gpio.out)

tilt = gpio.pwm(32,

50)tilt.start(0)

dutycycle = angle/18+

2 tilt.changedutycycle(dutycycle)

time.sleep(1)

tilt.stop(

)c =

input

("if you want to continue, type 'c' please. type 'e' to end."

)while c ==

'c':

angle =

input

('please type an angle:'

)# input輸入的是字串,需要用int()函式轉化成數字。

angle =

int(angle)

setser***ngle(angle)

c =input

("'c' or 'e'?"

) gpio.cleanup(

)exit(

)

樹莓派python控制舵機 樹莓派控制舵機資料

舵機介紹 樹莓派pwm函式介紹 舵機角度和占空比對應的關係動畫。對應關係如下,範圍為 90 到 90 為了方便計算,可以將其對映到0 180 角度20ms內脈衝寬度 占空比對映後角度 90 0.5ms 2.5 0 45 1ms5.0 45 0 1.5ms 7.5 90 45 2ms10.0 135 ...

樹莓派控制SG90舵機

sg90一共三根線,紅線接5 電源,棕線gnd。黃線為資料控制線,該線接到gpio上,這裡我們是bcm模式的pin 21.sg90 脈衝週期為20毫秒 millisecond 不是20微秒 microsecond 兩者差1000倍呢!也就是說最多1秒鐘內可以轉動5 次,但是考慮到每次轉動還要耗時,所...

樹莓派控制数字舵機轉動

使用樹莓派控制数字舵機 舵機的線一般是 棕 gnd 紅 vcc 黃 控制線 我們把gnd和vcc接好,然後控制線接到gpio 16上。此舵機的介紹說明上活動角度是180度,脈寬範圍是500us 2500us,中立區1500us,死區2us,意思0度到180度對應500us到2500us,90度對應1...