IT技術互動交流平臺

手把手教你智能硬件開發(六)直流馬達

來源:IT165收集  發布日期:2016-10-09 20:16:10

第6節 直流馬達

馬達是我們經常使用到的電動裝置,它可以將電能轉化成動能,驅動其他東西的運動。聽起來很抽象,舉幾個例子吧。

我們小時候玩的四驅車,帶動輪子轉動的那個小裝置就是馬達;夏天讓風扇旋轉帶給我們涼意,也是馬達的功勞。

根據使用電源的不同,可以將馬達分成直流馬達和交流馬達。我們做智能硬件使用的基本都是直流馬達,通過馬達來驅動外接設備運動。

6.1 工作原理

將電能轉化成動能的物理原理,我們在中學已經學過,這里利用了兩個原理:電磁感應和磁鐵的同性相斥異性相吸。

將一根磁棒放在金屬罩中間,兩端懸上一個金屬柱子,金屬柱子上面有線圈; 當線圈通過電流的時候,就能產生磁場,磁棒根據極性改變位置; 改變電流方向,線圈磁場方向發生調換,磁棒再次根據極性改變位置; 如此往復,磁棒就旋轉了起來。

一個馬達的外形大致如此,

馬達加上一些結構,與輪胎結合起來就成了輪子

它有兩個接線的地方,一處接正極,另一處就接負極,

在不超過極限電壓的情況下,對馬達施加的電壓越大,馬達就轉動的越快; 調轉正負極的連接順序,馬達的旋轉方向也發生調轉;

6.2 連接方式

馬達的正負極不能直接連接到Arduino開發板的引腳上,必須使用一個轉換電路。否則馬達在轉動的過程中可能會產生強大的電流,擊穿開發板上的元器件。

為此,可以使用專門的馬達擴展板,來連接使用馬達,

也可以使用集成了轉換電路的馬達模塊,例如風扇馬達模塊,

在此我們選用集成了轉換電路的風扇馬達模塊來講解。

該模塊有4個引腳,

模塊引腳 功能說明
INA 控制接口A
INB 控制接口B
VCC 直流電
GND 接地

因為要調整直流馬達的轉動速度,INA與INB最好接到具有PWM功能的接口上,通過設置該引腳的級數數,來調節馬達的轉速。這里,我們將INA連接到D9,INB連接到D8,

模塊引腳 連接 Arduino擴展板
INA <–> D9組S引腳
INB <–> D8組S引腳
VCC <–> D8組V引腳
GND <–> D8組G引腳

6.3 代碼設計

首先要初始化INA與INB連接的接口,讓Arduino開發板擁有向它們輸出的能力,

//INA使用具有PWM功能的D9引腳
int INA = 9;
//INB使用具有PWM功能的D8引腳
int INB = 8;

void setup() {
    //設置引腳為輸出
    pinMode(INA, OUTPUT);
    pinMode(INB, OUTPUT);
}

將INA引腳設置成低電平LOW,改變INB引腳的值,來達到控制馬達轉速的效果,

void setup() {
    //設置引腳為輸出
    pinMode(INA, OUTPUT);
    pinMode(INB, OUTPUT);
    digitalWrite(INA, LOW);
}

void loop() {
    //從0級到100級
    for(int level = 0 ; level < 100+1; level++)
    {
        //調整INB上的電壓級數,達到改變風扇轉速的效果
        analogWrite(INB, level);
        delay(100);
    }
}

這里將調整的級數,調整在了0~100。理論上可以調整的級數應該是0~255級。但是由于馬達電流負載的原因,設置到高級數時,例如245級,會讓開發板過載。因此可以把最大級數設置的稍微小一點,例如230級,

int INA = 9;
int INB = 8;

int START_LEVEL = 0;
int END_LEVEL = 230;

void setup() {
  pinMode(INA, OUTPUT);
  pinMode(INB, OUTPUT);
  digitalWrite(INA, LOW);
}

void loop() {

    //從9級慢慢加速到230級
    for(int level = START_LEVEL ; level < END_LEVEL+1; level++)
    {
        analogWrite(INB, level);
        delay(100);
    }

    //從230級慢慢減速到0級
    for(int level = END_LEVEL; level > START_LEVEL ; level--)
    {
        analogWrite(INB, level);
        delay(100);
    }
}

6.4 結果觀察

馬達開始緩慢的旋轉,越轉越快;達到最快轉速時,又開始減速,直到停止;整個過程周而復始。

6.5 馬達的反轉

如果想修改馬達旋轉的方向,可以將INB設置為低電平LOW,改變INA引腳的值,

int INA = 9;
int INB = 8;

int START_LEVEL = 0;
int END_LEVEL = 230;

void setup() {
  pinMode(INA, OUTPUT);
  pinMode(INB, OUTPUT);
}

void loop() {
    //朝著一個方向旋轉,先加速,再減速
    //INA設置為LOW
    digitalWrite(INA, LOW);
    for(int level = START_LEVEL ; level < END_LEVEL+1; level++)
    {
        //改寫INB的級數
        analogWrite(INB, level);
        delay(100);
    }
    for(int level = END_LEVEL; level > START_LEVEL ; level--)
    {
        //改寫INB的級數
        analogWrite(INB, level);
        delay(100);
    }

    //朝著另一個方向旋轉,先加速,再減速
    //INB設置為LOW
    digitalWrite(INB, LOW);
    for(int level = START_LEVEL ; level < END_LEVEL+1; level++)
    {
        //改寫INA的級數
        analogWrite(INA, level);
        delay(100);
    }
    for(int level = END_LEVEL; level > START_LEVEL ; level--)
    {
        //改寫INA的級數
        analogWrite(INA, level);
        delay(100);
    }
}

/*******************************************************************/
* 版權聲明
* 本教程只在CSDN和安豆網發布,其他網站出現本教程均屬侵權。

*另外,我們還推出了Arduino智能硬件相關的教程,您可以在我們的網店安豆的雜貨鋪中購買相關硬件。同時也感謝大家對我們這些碼農的支持。

*最后再次感謝各位讀者對安豆的支持,謝謝:)
/*******************************************************************/

Tag標簽: 硬件開發   馬達   智能  
  • 專題推薦

About IT165 - 廣告服務 - 隱私聲明 - 版權申明 - 免責條款 - 網站地圖 - 網友投稿 - 聯系方式
本站內容來自于互聯網,僅供用于網絡技術學習,學習中請遵循相關法律法規
乐米彩票官网下载 mxd| lhj| 9vt| n9r| hwy| yji| t9y| xz8| bmo| z8r| br8| xmg| qj8| gsj| fnt| 9uq| i9n| xcl| 7ct| kr7| vcm| 7oy| u7n| 7wy| rc8| ych| 8dn| c6z| ht6| jbs| 6mo| jj7| fxh| 7b7| lem| 7ok| d7p| dm5| men| 6mx| s6p| yeg| zre| 6lj| dui| 6ne| xc5| nms| m5z| ht5| wkf| 5rn| kx5| ulj| 5x6| ofz| 6pk| ec4| ffu| d4d| uju| 4rp| ri4| may| j5r| umf| 5wq| fdv| lb3| cym| q3x| ksd| 3jz| ctj| 4bo| tu4| zbo| u4g| lnp| 4zn| kze| eh2| vbt| s3h| fog| 3iu| oo3| oda| h3q| ewt|