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

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

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

Arduino提供的PWM控制功能入門(mén)(2)

冬至子 ? 來(lái)源:樂(lè)文好墨 ? 作者:樂(lè)文好墨 ? 2023-10-31 16:37 ? 次閱讀

上回我們用 PWM 控制了一盞 LED 燈的亮度,實(shí)現(xiàn)了漸明漸暗的效果。今天就來(lái)用 PWM 控制一個(gè)直流電機(jī)的轉(zhuǎn)速,實(shí)現(xiàn)逐漸加速,減速的效果。為了能清除看到效果,筆者還專門(mén)用拙劣的手工做了一個(gè)紙風(fēng)車,粘到電機(jī)轉(zhuǎn)軸上。下面就來(lái)動(dòng)手做實(shí)驗(yàn)。

實(shí)驗(yàn)器材:

  1. Arduino Uno R3 芯片 x1
  2. Adafruit 電機(jī)驅(qū)動(dòng)板(Motor Shield)V1 型 x1
  3. 直流電機(jī) x1
  4. 電線 x2
  5. USB 數(shù)據(jù)線 x1
  6. PC x1

實(shí)驗(yàn)器材一覽如下:

圖片

注意事項(xiàng):

Adafruit 電機(jī)驅(qū)動(dòng)板是設(shè)計(jì)成兼容 Arduino Uno R3 芯片的,可以直接堆疊在 Arduino 上連接。

驅(qū)動(dòng)板上的 jumper(在標(biāo)注 PWRJMP,意為 power jumper 的位置)是用來(lái)決定 Arduino 和驅(qū)動(dòng)板是否獨(dú)立供電的。如果蓋上 jumper,則驅(qū)動(dòng)板由 Arduino供電;如果拔掉jumper,則驅(qū)動(dòng)板獨(dú)立供電。

驅(qū)動(dòng)板若要獨(dú)立供電,電源接標(biāo)注 EXT_PWR(意為 external power)的 2 個(gè)接口。注意不要接反正負(fù)極,否則會(huì)燒壞驅(qū)動(dòng)板甚至 Arduino!驅(qū)動(dòng)板上LED 燈亮,表示驅(qū)動(dòng)板供電正常。

實(shí)驗(yàn)原理:

PWM 全稱 Pulse Width Modulation,它的原理,簡(jiǎn)而言之,是通過(guò)產(chǎn)生持續(xù)時(shí)間長(zhǎng)短不一的數(shù)字脈沖,來(lái)模擬連續(xù)變化的電平(“捏造”模擬信號(hào))。注意芯片上的標(biāo)識(shí), pin 號(hào)旁邊有 ~ 符號(hào)的表示該 pin 支持 PWM。(更詳盡的原理以后再做整理)

實(shí)驗(yàn)步驟:

1.連接硬件

首先將 Adafruit 電機(jī)驅(qū)動(dòng)板直接堆疊插在 Arduino 板上,注意數(shù)字引腳對(duì)數(shù)字引腳,模擬引腳對(duì)模擬引腳,就可以很容易安裝好。效果如圖:

圖片

b. Arduino 板用 USB 數(shù)據(jù)線接 PC。這時(shí)候 Arduino 和驅(qū)動(dòng)板都有供電,2 個(gè)板子上的 LED 燈常亮;

c. 2 條電線穿進(jìn)電機(jī)的 2 個(gè)腳,打個(gè)小結(jié)固定一下,連接順序現(xiàn)在來(lái)說(shuō)隨意。這里提一下電線的準(zhǔn)備,用剪刀剪出合適大小的電線后,用剪刀在電線的 2 端各去掉半個(gè)手指頭長(zhǎng)度的包皮,讓導(dǎo)線頭裸露;

d. 2 條電線另外一端接驅(qū)動(dòng)板上標(biāo)注 M3(意為 Motor 3)的 2 個(gè)腳。用 3 mm 十字螺絲刀擰松 2 個(gè)腳的螺絲,把電線放進(jìn)去 2 只腳的壓片下,然后擰緊螺絲,效果如圖:

圖片

2.下載安裝電機(jī)驅(qū)動(dòng)庫(kù)

要用代碼控制 Adafruit 電機(jī)驅(qū)動(dòng)板,可以使用 Adafruit 提供的庫(kù)函數(shù),輕松上手。

然后打開(kāi) Arduino IDE,在菜單里,點(diǎn)擊“項(xiàng)目”->“加載庫(kù)”->“添加一個(gè)新 ZIP 庫(kù)”,然后選擇剛剛下載的 ZIP 壓縮包就可以了。

3.編寫(xiě)程序

#include < AFMotor.h >

// 因?yàn)殡姍C(jī)裝在驅(qū)動(dòng)板的 M3 位置,所以第一個(gè)參數(shù)是 3
// 第 2 個(gè)參數(shù)是 PWM 頻率,如果電機(jī)接在 M1-M2 位上,則參數(shù)可選
// MOTOR12_64KHZ
// MOTOR12_8KHZ
// MOTOR12_2KHZ 
// MOTOR12_1KHZ
// 如果電機(jī)接在 M3-M4 位上,則參數(shù)可選
// MOTOR34_64KHZ
// MOTOR34_8KHZ
// MOTOR34_1KHZ
AF_DCMotor motor(3, MOTOR34_64KHZ);

void setup() {
    // 選擇串口 Baud 率
    Serial.begin(9600);
    Serial.println("Motor test!");
}

void loop() {
    Serial.println("tick");
    // 設(shè)置電機(jī)向前運(yùn)轉(zhuǎn)
    motor.run(FORWARD);
    // 不斷加速
    for (int i = 0; i < 255; i++) {
        motor.setSpeed(i);
        // 等待 0.1 s 讓電機(jī)充分加速
        delay(100);
    }
    // 讓電機(jī)恒速運(yùn)轉(zhuǎn) 10 s
    delay(10000);
    // 不斷減速
    for (int i = 255; i > 0; i--) {
        motor.setSpeed(i);
        // 等待 0.1 s 讓電機(jī)充分減速
        delay(100);
    }

    Serial.println("tock");
    // 釋放電機(jī),不運(yùn)轉(zhuǎn)
    motor.run(RELEASE);
    // 停轉(zhuǎn) 1 s
    delay(1000);

    Serial.println("tack");
    // 設(shè)置電機(jī)向后運(yùn)轉(zhuǎn)
    motor.run(BACKWARD);
    // 不斷加速
    for (int i = 0; i < 255; i++) {
        motor.setSpeed(i);
        // 等待 0.1 s 讓電機(jī)充分加速
        delay(100);
    }
    // 讓電機(jī)恒速運(yùn)轉(zhuǎn) 10 s
    delay(10000);
    // 不斷減速
    for (int i = 255; i > 0; i--) {
        motor.setSpeed(i);
        // 等待 0.1 s 讓電機(jī)充分減速
        delay(100);
    }

    Serial.println("tock");
    // 釋放電機(jī),不運(yùn)轉(zhuǎn)
    motor.run(RELEASE);
    // 停轉(zhuǎn) 1 s
    delay(1000);
}

燒錄到 Arduino 芯片上,可以看到電機(jī)按照我們?cè)O(shè)計(jì)的一樣,先正向加速運(yùn)轉(zhuǎn),然后恒速轉(zhuǎn)動(dòng) 10 秒,然后減速運(yùn)轉(zhuǎn),停頓 1 秒,然后反向加速運(yùn)轉(zhuǎn),恒速轉(zhuǎn)動(dòng) 10 秒,然后減速運(yùn)轉(zhuǎn),停頓 1 秒,周而復(fù)始。

最后,為了更加明顯的看到電機(jī)的轉(zhuǎn)動(dòng),筆者給小電機(jī)安上了一個(gè)粗糙的紙風(fēng)車,效果如下:

圖片

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

    關(guān)注

    36

    文章

    1692

    瀏覽量

    69902
  • 電機(jī)驅(qū)動(dòng)

    關(guān)注

    60

    文章

    1165

    瀏覽量

    86287
  • PWM控制
    +關(guān)注

    關(guān)注

    7

    文章

    189

    瀏覽量

    26176
  • Arduino
    +關(guān)注

    關(guān)注

    187

    文章

    6453

    瀏覽量

    185927
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    第42期《Arduino入門(mén)》善假篇 05:舵機(jī)的PWM控制原理#硬聲創(chuàng)作季

    PWM控制舵機(jī)Arduino
    電子學(xué)習(xí)
    發(fā)布于 :2022年10月28日 21:01:43

    Arduino入門(mén)

    Arduino入門(mén)歡迎來(lái)到Arduino的世界入門(mén)所需Arduino Nano板介紹Arduino
    發(fā)表于 01-21 09:52

    ArduinoPWM控制代碼

    如果你需要一個(gè)具體的代碼示例,我可以為你提供一個(gè)ArduinoPWM控制代碼。Arduino是一款常用的開(kāi)源電子原型平臺(tái),它
    發(fā)表于 09-21 08:57

    arduino入門(mén)教程 非常適合入門(mén)

    arduino入門(mén)教程 非常適合入門(mén)
    發(fā)表于 09-21 09:20 ?67次下載
    <b class='flag-5'>arduino</b><b class='flag-5'>入門(mén)</b>教程 非常適合<b class='flag-5'>入門(mén)</b>

    Arduino實(shí)踐中科學(xué)邏輯的應(yīng)用和VVVV入門(mén)教程

    彩色POV,相機(jī)紅外遙控器,玩轉(zhuǎn)arduino控制器-PWM控制電機(jī)轉(zhuǎn)速實(shí)驗(yàn),通過(guò)網(wǎng)頁(yè)遠(yuǎn)程配置及固件更新等資料
    發(fā)表于 11-01 10:51 ?19次下載
    <b class='flag-5'>Arduino</b>實(shí)踐中科學(xué)邏輯的應(yīng)用和VVVV<b class='flag-5'>入門(mén)</b>教程

    arduino 舵機(jī)控制pwm控制小車沖突解決資料下載

    電子發(fā)燒友網(wǎng)為你提供arduino 舵機(jī)控制pwm控制小車沖突解決資料下載的電子資料下載,更有其他相關(guān)的電路圖、源代碼、課件教程、中文資料
    發(fā)表于 04-09 08:51 ?2次下載
    <b class='flag-5'>arduino</b> 舵機(jī)<b class='flag-5'>控制</b>與<b class='flag-5'>pwm</b><b class='flag-5'>控制</b>小車沖突解決資料下載

    Arduino入門(mén)版使用教程.pdf

    Arduino入門(mén)版使用教程.pdf
    發(fā)表于 02-14 10:29 ?0次下載

    arduino入門(mén)套件教程

    arduino入門(mén)套件教程免費(fèi)下載。
    發(fā)表于 02-22 14:31 ?0次下載

    Arduino入門(mén)

    電子發(fā)燒友網(wǎng)站提供Arduino入門(mén)板.zip》資料免費(fèi)下載
    發(fā)表于 07-18 14:46 ?2次下載
    <b class='flag-5'>Arduino</b><b class='flag-5'>入門(mén)</b>板

    ARDUINO PWM太陽(yáng)能充電控制

    電子發(fā)燒友網(wǎng)站提供ARDUINO PWM太陽(yáng)能充電控制器.zip》資料免費(fèi)下載
    發(fā)表于 08-01 10:21 ?13次下載
    <b class='flag-5'>ARDUINO</b> <b class='flag-5'>PWM</b>太陽(yáng)能充電<b class='flag-5'>控制</b>器

    如何使用Arduino生成的PWM來(lái)控制交流風(fēng)扇的速度

    在這個(gè)項(xiàng)目中,我們將演示使用 TRIAC 的 Arduino 交流風(fēng)扇速度控制。這里使用交流信號(hào)的相位控制方法來(lái)控制交流風(fēng)扇的速度,使用 Ardui
    的頭像 發(fā)表于 08-18 16:26 ?1.1w次閱讀
    如何使用<b class='flag-5'>Arduino</b>生成的<b class='flag-5'>PWM</b>來(lái)<b class='flag-5'>控制</b>交流風(fēng)扇的速度

    Arduino PWM控制的對(duì)稱電源

    電子發(fā)燒友網(wǎng)站提供Arduino PWM控制的對(duì)稱電源.zip》資料免費(fèi)下載
    發(fā)表于 11-01 14:22 ?0次下載
    <b class='flag-5'>Arduino</b> <b class='flag-5'>PWM</b><b class='flag-5'>控制</b>的對(duì)稱電源

    Arduino Uno入門(mén)

    電子發(fā)燒友網(wǎng)站提供Arduino Uno入門(mén).zip》資料免費(fèi)下載
    發(fā)表于 11-21 09:24 ?5次下載
    <b class='flag-5'>Arduino</b> Uno<b class='flag-5'>入門(mén)</b>

    帶有Arduino入門(mén)套件的秒表

    電子發(fā)燒友網(wǎng)站提供《帶有Arduino入門(mén)套件的秒表.zip》資料免費(fèi)下載
    發(fā)表于 11-22 11:59 ?0次下載
    帶有<b class='flag-5'>Arduino</b><b class='flag-5'>入門(mén)</b>套件的秒表

    Arduino提供PWM控制功能入門(mén)(1)

    今天來(lái)學(xué)習(xí)一下 Arduino 提供PWM 控制功能,它可以用來(lái)控制電機(jī)轉(zhuǎn)速,LED 明亮等
    的頭像 發(fā)表于 10-31 16:32 ?1991次閱讀
    <b class='flag-5'>Arduino</b><b class='flag-5'>提供</b>的<b class='flag-5'>PWM</b><b class='flag-5'>控制</b><b class='flag-5'>功能</b><b class='flag-5'>入門(mén)</b>(1)