0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Arduino篇—舵機(jī)的控制

冬至子 ? 來源:X的創(chuàng)客課堂 ? 作者:MRXY ? 2023-11-02 10:12 ? 次閱讀

課程目標(biāo)

  • 舵機(jī)的組成與工作原理
  • 舵機(jī)的控制方式與應(yīng)用

相關(guān)知識(shí)

**舵機(jī):**是一種位置(角度)伺服的驅(qū)動(dòng)器,適用于那些需要角度不斷變化并可以保持的控制系統(tǒng)

**舵機(jī)的結(jié)構(gòu)組成:**一般來講舵機(jī)主要由以下幾個(gè)部分組成,舵盤、減速齒輪組、位置反饋電位計(jì)、直流電機(jī)、控制電路等。

圖片

**舵機(jī)工作原理:**舵機(jī)安裝了一個(gè)電位器(或其它角度傳感器檢測(cè)輸出軸轉(zhuǎn)動(dòng)角度,控制板根據(jù)電位器的信息能比較精確的控制和保持輸出軸的角度。這樣的直流電機(jī)控制方式叫閉環(huán)控制,所以舵機(jī)更準(zhǔn)確的說是伺服馬達(dá)。

圖片

舵機(jī)角度控制: 舵機(jī)轉(zhuǎn)動(dòng)的角度是通過調(diào)節(jié)PWM(脈沖寬度調(diào)制)信號(hào)的占空比來實(shí)現(xiàn)的。標(biāo)準(zhǔn)的PWM信號(hào)的周期固定為20ms,理論上脈寬分布應(yīng)該在1ms到2ms之間,實(shí)際上可由0.5ms到2.5ms之間,脈寬與轉(zhuǎn)角0°—180°相對(duì)應(yīng)。不同廠家不同型號(hào)的舵機(jī)也會(huì)有所差異。

圖片

電路搭建

所需材料:

ArduinoUNO * 1
SG90舵機(jī) *1
杜邦線若干

電路連接:

舵機(jī)一般都外接三根線,分別用棕、紅、橙三種顏色進(jìn)行區(qū)分,由于品牌不同,顏色也會(huì)有所差異,棕色為接地線,紅色為電源正極線,橙色為信號(hào)線。Arduino如果需要控制多個(gè)舵機(jī),需要外接電源以及使用專用的舵機(jī)控制板。
圖片

程序編寫

練習(xí)一:舵機(jī)往返運(yùn)動(dòng)

編寫控制程序,實(shí)現(xiàn)舵機(jī)在0°和180°間不間斷轉(zhuǎn)動(dòng)。

圖形化方式:

圖片

代碼方式:

/* 項(xiàng)目名稱:舵機(jī)0~180°往返運(yùn)動(dòng)
 * 項(xiàng)目時(shí)間:2022.03.22
 * 項(xiàng)目作者:MRX
 */
#include < Servo.h >


Servo myservo;  // 定義Servo對(duì)象來控制
int pos = 0;    // 角度存儲(chǔ)變量


void setup() {
  myservo.attach(6);  // 控制線連接數(shù)字6
}


void loop() {
  for (pos = 0; pos <= 180; pos ++) { // 0°到180°
    myservo.write(pos);              // 舵機(jī)角度寫入
    delay(5);                       // 等待轉(zhuǎn)動(dòng)到指定角度
  }
  for (pos = 180; pos >= 0; pos --) { // 從180°到0°
    myservo.write(pos);              // 舵機(jī)角度寫入
    delay(5);                       // 等待轉(zhuǎn)動(dòng)到指定角度
  }
}

練習(xí)二:可控的舵機(jī)

通過旋轉(zhuǎn)電位器來控制舵機(jī)的轉(zhuǎn)動(dòng)角度。

電路連接:

舵機(jī)連接到UNO的6號(hào)腳,電位器連接UNO的A0。

圖片

圖形化方式:

圖片

代碼方式:

/* 項(xiàng)目名稱:電位器控制舵機(jī)運(yùn)動(dòng)
 * 項(xiàng)目時(shí)間:2022.03.22
 * 項(xiàng)目作者:MRX
 */
#include < Servo.h >


Servo myservo;  // 定義Servo對(duì)象來控制
int pos = 0;
void setup() {
  myservo.attach(6);  // 控制線連接數(shù)字6
  pinMode(A0,INPUT);
}


void loop() {
  pos = map(analogRead(A0),0,1024,0,180);//將電位器讀取的值映射為舵機(jī)選擇角度
  myservo.write(pos);              // 舵機(jī)角度寫入
  delay(5);                       // 等待轉(zhuǎn)動(dòng)到指定角度
}

程序分析:

用Arduino控制舵機(jī)一般有兩種方法:

  • 通過Arduino的普通數(shù)字引腳產(chǎn)生占空比不同的方波,模擬產(chǎn)生PWM信號(hào)進(jìn)行舵機(jī)控制。
  • 直接利用Arduino自帶的Servo庫進(jìn)行控制。

Servo庫常用函數(shù):

  • Attach(接口)—設(shè)定舵機(jī)接口。
  • Write(角度)—用于設(shè)定舵機(jī)旋轉(zhuǎn)的角度,可設(shè)定范圍0°—180°。
  • Read()—用于讀取舵機(jī)角度的語句,可理解為讀取最后一條write()命令中的值。
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 電位器
    +關(guān)注

    關(guān)注

    14

    文章

    1012

    瀏覽量

    66842
  • 控制電路
    +關(guān)注

    關(guān)注

    82

    文章

    1714

    瀏覽量

    135944
  • 舵機(jī)
    +關(guān)注

    關(guān)注

    17

    文章

    270

    瀏覽量

    41077
  • 伺服驅(qū)動(dòng)器

    關(guān)注

    22

    文章

    486

    瀏覽量

    31647
  • Arduino
    +關(guān)注

    關(guān)注

    188

    文章

    6471

    瀏覽量

    187259
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    arduino學(xué)習(xí)筆記21 - 舵機(jī)控制實(shí)驗(yàn)

    舵機(jī)是什么這里就不詳細(xì)介紹了,詳情請(qǐng)看論壇里《舵機(jī)詳解》帖子這里使用arduino duemilanove通過電位器控制一個(gè)舵機(jī)轉(zhuǎn)動(dòng)使用原件
    發(fā)表于 10-24 10:16

    Arduino2560 控制圓周舵機(jī)

    求各位大神,Arduino2560 控制圓周舵機(jī)怎么編寫程序啊~急求~
    發(fā)表于 05-04 20:17

    Arduino如何利用紅外感應(yīng)控制舵機(jī)

    實(shí)現(xiàn)功能:當(dāng)紅外感應(yīng)到人時(shí),控制舵機(jī)轉(zhuǎn)動(dòng)180度參考:基于Arduino的多種方式控制舵機(jī)舵機(jī)
    發(fā)表于 06-28 11:17

    Arduino控制舵機(jī)的方法有哪幾種啊?

    什么是舵機(jī)?用Arduino控制舵機(jī)的方法有哪幾種???分別有什么優(yōu)點(diǎn)?Arduino是如何控制
    發(fā)表于 07-21 06:36

    如何在arduino中利用電位器控制舵機(jī)

    如何在arduino中利用電位器控制舵機(jī)一.簡介舵機(jī)是電機(jī)的一種,通上電并采取合適的方式就可以使他轉(zhuǎn)動(dòng),而電位器是一種電路元件,通過扭動(dòng)電位器的旋鈕就可以讓通過電位器的電壓和電流發(fā)生變
    發(fā)表于 09-07 07:15

    arduino如何控制舵機(jī)?

    arduino如何控制舵機(jī)?
    發(fā)表于 01-19 06:04

    請(qǐng)問arduino如何控制兩路舵機(jī)

    請(qǐng)問arduino如何控制兩路舵機(jī)?
    發(fā)表于 01-20 07:51

    如何通過Arduino對(duì)RC522刷卡控制舵機(jī)轉(zhuǎn)動(dòng)開門?

    如何通過Arduino對(duì)RC522刷卡控制舵機(jī)轉(zhuǎn)動(dòng)開門?
    發(fā)表于 01-24 07:06

    怎么用arduino控制舵機(jī)轉(zhuǎn)動(dòng)一定角度?

    怎么用arduino控制舵機(jī)轉(zhuǎn)動(dòng)一定角度
    發(fā)表于 10-18 06:16

    arduino如何控制舵機(jī)及詳細(xì)步驟

    本文首先介紹了舵機(jī)控制方法,其次闡述了Arduino控制舵機(jī)的兩種方法,最后詳細(xì)闡述了arduino
    的頭像 發(fā)表于 05-11 14:28 ?16.5w次閱讀
    <b class='flag-5'>arduino</b>如何<b class='flag-5'>控制</b><b class='flag-5'>舵機(jī)</b>及詳細(xì)步驟

    舵機(jī)控制原理是什么_舵機(jī)控制方法

    本文首先介紹了舵機(jī)工作原理,其次闡述了舵機(jī)控制原理及舵機(jī)的追隨特性,最后介紹了舵機(jī)控制方法和
    的頭像 發(fā)表于 05-30 11:13 ?14.3w次閱讀
    <b class='flag-5'>舵機(jī)</b><b class='flag-5'>控制</b>原理是什么_<b class='flag-5'>舵機(jī)</b>的<b class='flag-5'>控制</b>方法

    使用Arduino為微控制器打造能用舵機(jī)控制的游戲平臺(tái)

    本文主要介紹了使用Arduino為微控制器打造能用舵機(jī)控制的游戲平臺(tái).
    發(fā)表于 06-25 10:00 ?14次下載

    動(dòng)手玩轉(zhuǎn)Arduino---運(yùn)動(dòng)控制(直流電機(jī)步進(jìn)電機(jī)舵機(jī)

    動(dòng)手玩轉(zhuǎn)Arduino---運(yùn)動(dòng)控制(直流電機(jī)步進(jìn)電機(jī)舵機(jī))(電源技術(shù)是中文核心嗎)-該文檔為動(dòng)手玩轉(zhuǎn)Arduino---運(yùn)動(dòng)控制(直流電機(jī)
    發(fā)表于 09-23 09:22 ?36次下載
    動(dòng)手玩轉(zhuǎn)<b class='flag-5'>Arduino</b>---運(yùn)動(dòng)<b class='flag-5'>控制</b>(直流電機(jī)步進(jìn)電機(jī)<b class='flag-5'>舵機(jī)</b>)

    Arduino UNO驅(qū)動(dòng)數(shù)字舵機(jī)

    Arduino UNO驅(qū)動(dòng)數(shù)字舵機(jī)舵機(jī)數(shù)字舵機(jī)工作原理數(shù)字舵機(jī)與模擬舵機(jī)區(qū)別EMAX ES08M
    發(fā)表于 11-30 12:06 ?15次下載
    <b class='flag-5'>Arduino</b> UNO驅(qū)動(dòng)數(shù)字<b class='flag-5'>舵機(jī)</b>

    通過Arduino控制舵機(jī)

    本文主要介紹通過Arduino控制舵機(jī),步進(jìn)電機(jī)以及循環(huán)的使用。對(duì)于Arduino控制舵機(jī)的方法
    發(fā)表于 03-23 13:52 ?1次下載
    通過<b class='flag-5'>Arduino</b><b class='flag-5'>控制</b><b class='flag-5'>舵機(jī)</b>