<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何在樹莓派Pico上編程使用舵機呢?

jf_zGNBEhbi ? 來源:趣無盡 ? 2023-11-30 09:04 ? 次閱讀

舵機是一種位置伺服的驅動器,主要是由外殼、電路板、無核心馬達、齒輪與位置檢測器所構成。其工作原理是由接收機或者單片機發出信號給舵機,其內部有一個基準電路,產生周期為 20ms,寬度為 1.5ms 的基準信號,將獲得的直流偏置電壓與電位器的電壓比較,獲得電壓差輸出。經由電路板上的 IC 判斷轉動方向,再驅動無核心馬達開始轉動,透過減速齒輪將動力傳至擺臂,同時由位置檢測器送回信號,判斷是否已經到達定位。適用于哪些需要角度不斷變化并可以保持的控制系統。當電機轉速一定時,通過級聯減速齒輪帶動電位器旋轉,使得電壓差為 0,電機停止轉動。

一般舵機旋轉的角度范圍是 0 度到 180 度。舵機轉動的角度與脈寬在 0.5ms~2.5ms 的區間內呈線性關系。舵機有 90°、180°、270°、360° 最大轉角。

控制原理

通過向舵機的信號信號線發送 PWM 信號來控制舵機的輸出量;一般來說,PWM 的周期以及占空比,我們是可控的,所以 PWM 脈沖的占空比直接決定了輸出軸的位置。

當我們向舵機發送脈沖寬度為 1.5 毫秒的信號時,舵機的輸出軸將移至中間位置(90度);脈沖寬度為 1ms 時,舵機的輸出軸將移至最小的位置(0度);脈沖寬度為 2ms 時,舵機的輸出軸將移至最小的位置(180度)。

注意:不同類型和品牌伺服電機之間最大位置和最小位置的角度可能會不同。許多伺服器僅旋轉約 170 度(或者只有 90 度),但寬度為 1.5ms 的伺服脈沖通常會將伺服設置為中間位置(通常是指定全范圍的一半)。

以 180 度角度伺服為例,對應的控制關系是這樣的:

0.5ms – 0 度;
1.0ms – 45 度;
1.5ms – 90 度;
2.0ms – 135 度;
2.5ms – 180 度;

既然是要控制輸出 PWM 的周期和占空比,需要明確定時器的周期、PWM 輸出占空比計算公式:

定義幾個相關量,系統運行時鐘(sys_clk)、定時器時鐘預分頻值(psc)、計數重裝載值(arr)、比較計數值(ccr)。

定時器頻率計算公式:f = sys_clk / [( arr + 1 ) * ( psc + 1 )];

占空比計算公式:duty = ccr/arr * 100%;

定時器設置與角度值換算

本示例使用的舵機為周期 20ms、轉角 180° 的模擬舵機。本示例編程推導思路如下:

1、任意角脈寬計算公式 :angle = 0.5ms + 角度值 *(2ms/180°)[角度值=[0,180]]
2、占空比計算公式 :duty = ccr/arr * 100%
3、定時器頻率計算公式:f = sys_clk / [( arr + 1 ) * ( psc + 1 )]

1. 設置 arr
公式 1 推導:從 0 位置轉到 180 位置,脈寬的最大增量 = (2.5ms – 0.5ms) = 2ms;此處將 arr 設置為 (2000-1)。

2. 設置 psc
公式 3 推導:psc = sys_clk/[ f * (arr + 1) ] – 1;本示例中 f=50hz,sys_clk=72Mhz,arr=(2000-1),即:psc = 72Mhz/(50hz * 2000) – 1; psc = 720。

3. 角度與 ccr 值換算:ccr = 500 + 角度值 *(2000/180°)

硬件接線

舵機具有三個接線:
棕色:GND,接 Pico 的 GND。
紅色:+4.5 ~ +6V 電源輸入,接 Pico 的 VSYS。
橙色:指令脈沖信號,接 Pico 的 GP28。

例程

以市面上常見的 9g 舵機為例,下面的代碼將舵機的角度在 -90、0、90 三個角度中間切換,并循環 3 次。

from machine import Pin,PWM
import time
  
pwm = PWM(Pin(28))
pwm.freq(50)
 
for _ in range(3):
    pwm.duty_u16(1600)
    time.sleep(1)
 
    pwm.duty_u16(4815)
    time.sleep(1)
 
    pwm.duty_u16(7953)
    time.sleep(1)
 
    pwm.duty_u16(4815)
    time.sleep(1)

使用電位器控制舵機角度

這個例子讀取電位器的輸入,并轉為舵機的角度。使舵機的角度從 -90 度到 90 度之間變化。

電位器接線

電位器模塊的 VCC 接樹莓派 Pico 的 3V3 引腳。
電位器模塊的 GND 接樹莓派 Pico 的 GND 引腳。
電位器模塊的 OUT 引腳接樹莓派 Pico 的 GP27 引腳。

代碼如下:

from machine import Pin,PWM
import time
  
pwm = PWM(Pin(28))
  
pwm.freq(50)
  
control = machine.ADC(27)
  
while True:
    adc = control.read_u16()
    duty = int(adc * (7953-1600)/0xffff) + 1600
    pwm.duty_u16(duty)
    time.sleep(0.1)

運行之后,轉動電位器,可以看到舵機的角度隨之變化。







審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 驅動器
    +關注

    關注

    51

    文章

    7532

    瀏覽量

    143509
  • 檢測器
    +關注

    關注

    1

    文章

    816

    瀏覽量

    47334
  • 電位器
    +關注

    關注

    14

    文章

    967

    瀏覽量

    66191
  • 舵機
    +關注

    關注

    17

    文章

    241

    瀏覽量

    40509
  • 樹莓派
    +關注

    關注

    113

    文章

    1649

    瀏覽量

    104844

原文標題:在樹莓派 Pico 上編程使用舵機

文章出處:【微信號:趣無盡,微信公眾號:趣無盡】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    #硬聲創作季 #樹莓 樹莓PICO-05 PWM驅動舵機

    舵機樹莓
    水管工
    發布于 :2022年10月08日 23:23:22

    樹莓pico入門學習筆記(一)相關資料推薦

    樹莓pico入門學習筆記選擇自己熟悉的編程語言樹莓pic
    發表于 07-01 09:28

    樹莓之MPU6050控制舵機轉向

    一、材料清單樹莓3B+MPU6050PCA9685擴展板(輸出16路pwm)一個舵機面包板、GPIO擴展板(可有可無,只是方便接在面包板)二、電路接線PCA9685和
    發表于 07-05 07:32

    樹莓Pico迷你開發板及所使用的RP2040 MCU芯片有哪些特性

    Raspberry Pi Pico是什么?樹莓Pico迷你開發板及所使用的RP2040 MCU芯片有哪些特性?
    發表于 09-14 06:50

    樹莓pico如何入門?

    樹莓pico如何入門?
    發表于 10-13 08:11

    怎么實現樹莓Pico電機運動控制MicroPython+pioasm編程?

    怎么實現樹莓Pico電機運動控制MicroPython+pioasm編程?
    發表于 10-27 06:37

    樹莓Pico的相關資料分享

    關注、星標公眾號,直達精彩內容1月22日,樹莓基金會最新發布一款低成本、高性能的微控制器開發板Raspberry Pi Pico,新產品相比普通樹莓
    發表于 11-03 08:44

    使用樹莓Pico開發板的一些思考與應用實踐資料分享

    本博文根據樹莓基金會2021年1月21日公開的兩部最新官方英文技術文獻[1]、[2]以及博主最近使用樹莓Pico開發板的一些思考與應用實
    發表于 11-12 06:07

    使用樹莓Pico做了一個自動駕駛小車

    樹莓Pico做了一個自動駕駛小車,連接上藍牙,可以用手機控制它的移動了。
    發表于 01-05 07:32

    樹莓Pico的相關資料推薦

    1月22日,樹莓基金會最新發布一款低成本、高性能的微控制器開發板Raspberry Pi Pico,新產品相比普通樹莓體積更小,售價僅4
    發表于 02-07 07:37

    樹莓Pico實現懷舊的AppleII仿真

    樹莓Pico采用他自己的處理器RP2040,雙核M0,133MHz。為了體驗它的雙核編程環境和性能,我用它來實現一個AppleII仿真,當然是在AppleWin代碼基礎
    發表于 05-24 20:58

    基于樹莓pico的FM接收器

    描述Pico 收音機是一個簡單的基于樹莓 pico 的 FM 接收器,它使用 rda5807m 調諧到 FM 頻道??梢酝ㄟ^在 SMA 連接器中連接 FM 天線和在音頻插孔中連接 3
    發表于 07-08 07:56

    樹莓Pico分線板V2.0資料分享

    描述樹莓 Pico 分線板 V2.0展示了具有改進性能的流行 Pi Pico Breakout Board Rev 1.0 的修訂版。更多功能,更好的實用性和優化的成本。特征:Ras
    發表于 07-28 07:54

    基于樹莓pico移植LVGL軟件包的設計如何去實現

    今天領導交給我一塊樹莓pico,讓我移植 u8g2,正好手上有樹莓的拓展板,于是順帶著吧 lvgl 移植上去了:)廢話不多說直接開搞!硬
    發表于 09-22 11:26

    樹莓PICO:使用rt-thread micropython軟件包聯網獲取天氣

    1、在樹莓PICO實現http請求demo  項目描述  本項目使用樹莓
    發表于 11-14 16:19
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>