溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

python開發(fā)板驅(qū)動舵機(jī)的方法是什么

發(fā)布時間:2022-01-13 10:38:07 來源:億速云 閱讀:141 作者:iii 欄目:互聯(lián)網(wǎng)科技

這篇“python開發(fā)板驅(qū)動舵機(jī)的方法是什么”文章的知識點大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“python開發(fā)板驅(qū)動舵機(jī)的方法是什么”文章吧。

    舵機(jī)主要有以下3個優(yōu)點:

    一是體積緊湊,便于安裝; 二是輸出力矩大,穩(wěn)定性好; 三是控制簡單,便于和數(shù)字系統(tǒng)接口。

    本次教程中使用的是SG90的舵機(jī),個人感覺性能一般,但是比較穩(wěn)定和耐用,做DIY實驗器材用還是比較不錯的。

    舵機(jī)的基本介紹

    舵機(jī),又稱伺服馬達(dá),是一種具有閉環(huán)控制系統(tǒng)的機(jī)電結(jié)構(gòu)。舵機(jī)主要是由外殼、電路板、無核心馬達(dá)、齒輪與位置檢測器所構(gòu)成。 其工作原理是由控制器發(fā)出PWM(脈沖寬度調(diào)制)信號給舵機(jī),經(jīng)電路板上的IC處理后計算出轉(zhuǎn)動方向,再驅(qū)動無核心馬達(dá)轉(zhuǎn)動, 透過減速齒輪將動力傳至擺臂,同時由位置檢測器(電位器)返回位置信號,判斷是否已經(jīng)到達(dá)設(shè)定位置,一般舵機(jī)只能旋轉(zhuǎn)180度。(蘿卜教育學(xué)科編程tpyboard。com)

python開發(fā)板驅(qū)動舵機(jī)的方法是什么
    舵機(jī)的接線

    舵機(jī)有3根線,棕色為地,紅色為電源正,橙色為信號線,但不同牌子的舵機(jī),線的顏色可能不同。

    舵機(jī)的控制原理

    舵機(jī)的轉(zhuǎn)動的角度是通過調(diào)節(jié)PWM(脈沖寬度調(diào)制)信號的占空比來實現(xiàn)的。

    占空比

    1.指高電平在一個周期之內(nèi)所占的時間比率。

    2.正脈沖的持續(xù)時間與脈沖總周期的比值。例如:正脈沖寬度1μs,信號周期10μs的脈沖序列占空比為0.1。即:脈沖的寬度除以脈沖的周期稱為占空比。標(biāo)準(zhǔn)PWM(脈沖寬度調(diào)制)信號的周期固定為20ms(50Hz),理論上脈寬分布應(yīng)在1ms到2ms之間,但是,事實上脈寬可由0.5ms到2.5ms之間,脈寬和舵機(jī)的轉(zhuǎn)角0°~180°相對應(yīng)。(蘿卜教育學(xué)科編程tpyboard。com)


    Python語言驅(qū)動舵機(jī)的方法

    其實說了以上這些呢,都是為了給大家介紹利用Python語言來控制舵機(jī)的轉(zhuǎn)動角度,和普通單片機(jī)一樣的,都是需要用不同寬度的脈沖來控制器轉(zhuǎn)動的角度。 說白了,我們需要做的就是使用Python語言來輸出不同寬度的脈沖信號,來給到信號線里面去。現(xiàn)在一般的舵機(jī)脈寬那都是在0.5ms到2.5ms之間,這就可以計算了。 0.5MS-2.5MS這兩毫秒里面可以控制轉(zhuǎn)動到180度,這樣算下來,轉(zhuǎn)一度的脈沖時間大約就是2毫秒/180度=0.011毫秒/度,這樣依次計算就可以了。剩下的就是寫一個脈沖信號了,相信寫脈沖信號的程序大家都很熟悉啦。 但是,在舵機(jī)里面有一些幾點幾的毫秒的延時脈沖,這個在Python語言里如果想要利用delay()函數(shù)來做延時的話,很難做到每個角度都可以轉(zhuǎn)到,甚至說是很難做到轉(zhuǎn)動到大多數(shù)的角度。所以,你需要找到一個比毫秒延時還要精確的延時函數(shù)來作為脈沖的計時延時函數(shù)。我現(xiàn)在用的是time.sleep(i)這個函數(shù),這個函數(shù)里面的i,建議設(shè)置在0.0000-0.0035之間。不能說精確的轉(zhuǎn)動到每個角度吧,但是百分之九十的角度都是可以轉(zhuǎn)到。如果想讓舵機(jī)進(jìn)行循環(huán)擺動,一定要記得加上適當(dāng)?shù)难訒r,因為程序可以飛快的跑,但是舵機(jī)轉(zhuǎn)動也是需要一點時間的。舵機(jī)轉(zhuǎn)動時間肯定要比程序跑一遍的時間要長的多啦。(蘿卜教育學(xué)科編程tpyboard。com)


    實驗?zāi)康?/p>

    通過加速度傳感器的X方向控制舵機(jī)的轉(zhuǎn)動,讓舵機(jī)隨TPYBoard 的轉(zhuǎn)動而轉(zhuǎn)動

    實驗材料

    TPYBoard v10x 開發(fā)板 1塊
    SG90舵機(jī) 1個
    杜邦線 若干

    實驗線路圖

    這里電路圖很簡單,只需要給舵機(jī)接上VCC和GNG(這是最基本的,這個開發(fā)板上好多電源和地可以用)。 然后把舵機(jī)的信號線接到任意一個GPIO口(后面程序里面要在這個GPIO往外輸出脈沖的,我用了X1,還有很多其他的GPIO口可以用。)就可以了。 接線原理圖:

import pyb
import time
from pyb import Pin
xlights = (pyb.LED(2), pyb.LED(3))
ylights = (pyb.LED(1), pyb.LED(4))
M0 = Pin('X1', Pin.OUT_PP)
accel = pyb.Accel()
i=0.0001
j=0.0000
while True:
    x = accel.x()
    print("x=")
    print(x)
    Y=x+20
    M0.high()
    time.sleep(i*Y)
    M0.low()
    time.sleep(i*Y)
    pyb.delay(12)
    if x > 0:
        xlights[0].on()
        xlights[1].off()
    elif x < 0:
        xlights[1].on()
        xlights[0].off()
    else:
        xlights[0].off()
        xlights[1].off()

以上就是關(guān)于“python開發(fā)板驅(qū)動舵機(jī)的方法是什么”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關(guān)的知識內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI