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

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

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

如何使用Arduino控制直流電機(jī)?

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

課程目標(biāo)

  • 三極管的原理與基本應(yīng)用
  • 學(xué)習(xí)L298N驅(qū)動(dòng)模塊的原理及應(yīng)用
  • 學(xué)習(xí)PWM信號的含義
  • 編程實(shí)現(xiàn)控制直流電機(jī)運(yùn)動(dòng)

相關(guān)知識

三極管: 是一種控制電流的半導(dǎo)體器件,可以用來放大信號和控制電流的通斷。

圖片

三極管的控制原理: 通過小的交流輸入,控制大的靜態(tài)直流。

假設(shè)三極管是個(gè)大壩,大壩有兩個(gè)閥門,一個(gè)大閥門,一個(gè)小閥門。小閥門可以用人力手動(dòng)打開,大閥門只能通過小閥門的水力打開。

圖片

每當(dāng)要放水的時(shí)候,可以手動(dòng)( 輸入信號 )打開小閥門,小的水流( UBE )流出的時(shí)候會(huì)沖擊大閥門的開關(guān),大閥門隨之打開,這時(shí)候,大的水流( UCE )就可以流出來。

圖片

如果不停地改變小閥門開啟的大小,那么大閥門也相應(yīng)地不停改變,假若能嚴(yán)格地按比例改變,那么,完美的控制就完成了。在這里,如果把水流比為電流的話,會(huì)更確切,因?yàn)槿龢O管畢竟是一個(gè)電流控制元件。

**三極管的三個(gè)工作區(qū):**截止區(qū),放大區(qū),飽和區(qū)。

截止區(qū): 小的閥門開啟的還不夠,不能打開打閥門,這種情況是截止區(qū)。

**放大區(qū):**就是水流處于可調(diào)節(jié)的狀態(tài),小閥門和大閥門之間呈線性關(guān)系。

飽和區(qū): 大閥門里放出的水流已經(jīng)到了它極限的最大流量,這時(shí)候再增大小閥門都不會(huì)起任何的作用,但是如果減小小閥門的輸入可以讓三極管工作狀態(tài)從飽和區(qū)返回到放大區(qū)。

圖片

H橋驅(qū)動(dòng): H橋通常會(huì)包含四個(gè)獨(dú)立控制的開關(guān)元器件,它們通常用于驅(qū)動(dòng)電流較大的負(fù)載,比如電機(jī),由于電路長得像大寫字母H,所以稱為叫H橋(H-Bridge)。這里有四個(gè)開關(guān)元器件Q1Q2,Q3,Q4,另外還有一個(gè)直流電機(jī)M,D1,D2D3,D4是MOS-FET的續(xù)流二極管;

圖片

H橋的開關(guān)狀態(tài): 下面以控制一個(gè)直流電機(jī)為例,對H橋的幾種開關(guān)狀態(tài)進(jìn)行簡單的介紹。

**正轉(zhuǎn):**通常H橋用來驅(qū)動(dòng)一個(gè)直流電機(jī);打開Q1和Q4;關(guān)閉Q2和Q3;此時(shí)假設(shè)電機(jī)正轉(zhuǎn),這電流依次經(jīng)過Q1,M,Q4。

圖片

反轉(zhuǎn): 關(guān)閉Q1和Q4;打開Q2和Q3;此時(shí)電機(jī)反轉(zhuǎn),這時(shí)電流依次經(jīng)過Q2,M,Q3。

圖片

調(diào)速: 關(guān)閉Q2,Q3;打開Q1,Q4上給它輸入50%占空比的PWM波形,這樣就達(dá)到了降低轉(zhuǎn)速的效果,如果需要增加轉(zhuǎn)速,則將輸入PWM的占空比設(shè)置為100%。

圖片

停止?fàn)顟B(tài): 我們以電機(jī)從正轉(zhuǎn)切換到停止?fàn)顟B(tài)為例;正轉(zhuǎn)情況下;Q1和Q4是打開狀態(tài);這時(shí)候如果關(guān)閉Q1和Q4,直流電機(jī)內(nèi)部可以等效成電感,也就是感性負(fù)載,電流不會(huì)突變,那么電流將繼續(xù)保持原來的方向進(jìn)行流動(dòng),這時(shí)候我們希望電機(jī)里的電流可以快速衰減;

這里有兩種辦法:

第一種: 關(guān)閉Q1和Q4,這時(shí)候電流仍然會(huì)通過反向續(xù)流二極管進(jìn)行流動(dòng),此時(shí)短暫打開Q1和Q3從而達(dá)到快速衰減電流的目的;

圖片

第二種: 準(zhǔn)備停止的時(shí)候,關(guān)閉Q1,打開Q2,這時(shí)候電流并不會(huì)衰減很快,電流循環(huán)在Q2,M,Q4之間流動(dòng),通過MOS-FET的內(nèi)阻將電能消耗掉;

圖片

**L298N模塊:**L298N 是一種雙H橋電機(jī)驅(qū)動(dòng)芯片,其中每個(gè)H橋可以提供2A的電流,可以驅(qū)動(dòng)2個(gè)直流電機(jī),可分別實(shí)現(xiàn)正轉(zhuǎn),反轉(zhuǎn)功能。

圖片

**控制方式表:**邏輯通道IN1,IN2接收信號,控制out1和out2;IN3,IN4控制out3,out4。
利用電位差可以使得直流電機(jī)實(shí)現(xiàn)正反轉(zhuǎn)。ENA,ENB為使能端,即PWM口,默認(rèn)是通過跳線連接到+5V,如果要進(jìn)行電機(jī)速度控制,那么可以連接Arduino的PWM引腳,從中輸入PWM信號,這樣可以起到控速作用,但是電機(jī)轉(zhuǎn)動(dòng)方向還是得靠IN口控制。

圖片

**PWM:**脈沖寬度調(diào)制,可以理解為是使用數(shù)字信號達(dá)到一個(gè)模擬信號的效果。

圖片

PWM本質(zhì): 就是改變脈沖寬度來實(shí)現(xiàn)不同的效果,這是一個(gè)周期是 10ms,即頻率是 100Hz 的波形,但是每個(gè)周期內(nèi),高低電平脈沖寬度各不相同。

占空比: 高電平的時(shí)間占整個(gè)周期的比例。比如第一部分波形的占空比是 40%,第二部分波形占空比是 60%,第三部分波形占空比是 80%,這就是 PWM 的解釋。

**模擬電路控制:**我們以控制LED亮滅來舉例,數(shù)字電路中,LED=1時(shí)為亮,LED=0時(shí)為滅,亮滅間隔運(yùn)行的時(shí)候,LED開始閃爍。

如果我們把這個(gè)間隔不斷的減小,減小到我們的肉眼分辨不出來,也就是 100Hz 以上的頻率,這個(gè)時(shí)候小燈表現(xiàn)出來的現(xiàn)象就是既保持亮的狀態(tài),但亮度又沒有 LED = 1時(shí)的亮度高。

我們不斷改變時(shí)間參數(shù),讓 LED = 0的時(shí)間大于或者小于 LED = 1的時(shí)間,會(huì)發(fā)現(xiàn)亮度都不一樣,這就是模擬電路的感覺了,不再是純粹的 0 和 1,還有亮度不斷變化。

  • 如果我們用 100Hz 的信號,假如高電平點(diǎn)亮小燈,低電平熄滅小燈的話,第一部分波形點(diǎn)亮4ms,熄滅6ms,亮度最低,第二部分點(diǎn)亮 6ms,熄滅 4ms,亮度次之,第三部分點(diǎn)亮8ms,熄滅2ms,亮度最高。

電路搭建

所需材料

ArduinoUNO * 1
L298N驅(qū)動(dòng)模塊 * 1
直流電機(jī) * 2
7~12V外接電源 * 1
杜邦線若干

電路連接

這里要注意,如果不外接電源的話,會(huì)導(dǎo)致供電不足,電機(jī)不會(huì)工作的。外接的電源正極接入到UNO 的VIN。

圖片

程序編寫:

課堂練習(xí):控制電機(jī)正反轉(zhuǎn)

通過程序編寫,控制電機(jī)實(shí)現(xiàn)全速轉(zhuǎn)動(dòng)。由于圖形化的方式只需要直接拖出模塊調(diào)用即可,所以這里不做贅述。主要以代碼的形式進(jìn)行分析。

代碼方式:

/* 項(xiàng)目名稱:控制直流電機(jī)
 * 項(xiàng)目時(shí)間:2022.03.25
 * 項(xiàng)目作者:MRX
 */
int IN1 = 4;   // IN1 connected to pin 4
int IN2 = 5;   
int ENA = 9; 
int IN3 = 6;   // IN3 connected to pin 6
int IN4 = 7;   
int ENB = 10; 

unsigned long delaytime = 1000;  //delay time
int value = 255;   // the duty cycle

void setup(){
    for (int i = 4;i <= 10;i++){
      pinMode(i, OUTPUT);
    }
    //set direction;
    digitalWrite(IN1, HIGH);
    digitalWrite(IN2, LOW);
    digitalWrite(IN3, HIGH);
    digitalWrite(IN4, LOW);
}

void loop(){
    analogWrite(ENA, value);
    analogWrite(ENB, value);
    delay(delaytime);
}
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 三極管
    +關(guān)注

    關(guān)注

    142

    文章

    3575

    瀏覽量

    121366
  • 直流電機(jī)
    +關(guān)注

    關(guān)注

    36

    文章

    1705

    瀏覽量

    69988
  • 電流控制
    +關(guān)注

    關(guān)注

    4

    文章

    139

    瀏覽量

    23134
  • PWM波
    +關(guān)注

    關(guān)注

    0

    文章

    99

    瀏覽量

    16820
  • Arduino控制器
    +關(guān)注

    關(guān)注

    0

    文章

    4

    瀏覽量

    947
收藏 人收藏

    評論

    相關(guān)推薦

    如何使用MATLB和Arduino控制直流電機(jī)

    在本教程中,我們將向您展示如何使用 MATLB 和 Arduino 控制直流電機(jī)。
    發(fā)表于 11-03 17:18 ?1296次閱讀
    如何使用MATLB和<b class='flag-5'>Arduino</b><b class='flag-5'>控制</b><b class='flag-5'>直流電機(jī)</b>

    使用Arduino控制直流電機(jī)的技巧指南

    基于ROS使用Arduino控制直流電機(jī)
    發(fā)表于 09-16 08:25

    Arduino控制直流電機(jī) 相關(guān)資料下載

    今天做了使用Arduino控制直流電機(jī),其實(shí)就是對小車的基本控制,4個(gè)電機(jī)驅(qū)動(dòng)小車的4個(gè)輪子,不過我只用了兩路
    發(fā)表于 06-29 07:48

    ROS怎么使用Arduino控制直流電機(jī)?

    ROS怎么使用Arduino控制直流電機(jī)
    發(fā)表于 09-24 06:42

    請問Arduino是怎么控制直流電機(jī)轉(zhuǎn)動(dòng)的?

    請問Arduino是怎么控制直流電機(jī)轉(zhuǎn)動(dòng)的?
    發(fā)表于 10-13 08:08

    如何使用Arduino控制直流電機(jī)?

    如何使用Arduino控制直流電機(jī)?
    發(fā)表于 10-19 07:38

    Proteus仿真Arduino控制直流電機(jī)

    發(fā)表于 06-15 15:17 ?38次下載

    怎樣用Wekinator和Arduino控制直流電機(jī)

    可以在Wekinator網(wǎng)站上下載DTW Mouse Explorer應(yīng)用程序文件。
    的頭像 發(fā)表于 08-03 09:53 ?2562次閱讀

    怎樣用Arduino控制直流電機(jī)

     現(xiàn)在,您已將Arduino連接好,將代碼復(fù)制并粘貼到Arduino IDE。將讀取此代碼的作用,以獲取您將在串行監(jiān)視器中手動(dòng)鍵入的信號。輸入1或2時(shí),電動(dòng)機(jī)將在短時(shí)間內(nèi)順時(shí)針或逆時(shí)針旋轉(zhuǎn)。做一點(diǎn)實(shí)驗(yàn)!鍵入多個(gè)1或2,然后看看會(huì)發(fā)生什么!
    的頭像 發(fā)表于 09-27 14:25 ?6w次閱讀

    Arduino直流電機(jī)調(diào)速

    Arduino直流電機(jī)調(diào)速(深圳市核達(dá)中遠(yuǎn)通電源技術(shù)有限公司招聘電話)-基于Arduino直流電機(jī)調(diào)速? ? ? ? ? ? ? ? ? ? ? ??
    發(fā)表于 09-18 16:12 ?61次下載
    <b class='flag-5'>Arduino</b>的<b class='flag-5'>直流電機(jī)</b>調(diào)速

    如何使用L298N和Arduino控制直流電機(jī)

    在這個(gè)Arduino教程中,我們將學(xué)習(xí)如何使用Arduino控制直流電機(jī)。我們來看看控制直流電機(jī)
    的頭像 發(fā)表于 04-08 15:06 ?1.1w次閱讀
    如何使用L298N和<b class='flag-5'>Arduino</b>板<b class='flag-5'>控制</b><b class='flag-5'>直流電機(jī)</b>

    arduino直流電機(jī)

    這一期我們來學(xué)習(xí)如何控制直流電機(jī)。 需要材料:Arduino UNO 直流電機(jī)——本文以12V額定電機(jī)為例
    發(fā)表于 03-30 13:46 ?3次下載
    <b class='flag-5'>arduino</b><b class='flag-5'>直流電機(jī)</b>

    ros與arduino通信控制直流電機(jī)

    前言:在成功通過arduino開發(fā)板控制直流電機(jī)后,開始嘗試用ros與arduino通信來控制直流電機(jī)
    發(fā)表于 03-31 11:45 ?4次下載
    ros與<b class='flag-5'>arduino</b>通信<b class='flag-5'>控制</b><b class='flag-5'>直流電機(jī)</b>

    使用Arduino直流電機(jī)MOSFET控制速度

    電子發(fā)燒友網(wǎng)站提供《使用Arduino直流電機(jī)MOSFET控制速度.zip》資料免費(fèi)下載
    發(fā)表于 06-27 15:13 ?0次下載
    使用<b class='flag-5'>Arduino</b>的<b class='flag-5'>直流電機(jī)</b>MOSFET<b class='flag-5'>控制</b>速度

    使用Arduino控制直流電機(jī)

    電子發(fā)燒友網(wǎng)站提供《使用Arduino控制直流電機(jī).zip》資料免費(fèi)下載
    發(fā)表于 07-03 11:04 ?0次下載
    使用<b class='flag-5'>Arduino</b>來<b class='flag-5'>控制</b><b class='flag-5'>直流電機(jī)</b>