Arduino 入門程序示例之直流電機(2015-06-15)


概述

演示直流電機的控制。

示例程序

PWM控制直流電機

略過控制電機轉停的示例啦,有需要就把這里的 PWM 換成數字口輸出 HIGH 或 LOW 就行了。

// ----------------------------------------------------------------------------
// pwmMotor.ino
// 
// Created 2015-06-11
// By seesea <seesea2517#gmail#com> 
// 
// PWM 控制直流電機轉速
// 其實就是之前的 PWM 控制 LED 的程序,完全一樣,只是硬件上加上一個三極管用來驅動電機而已
//
// 11 腳接 NPN 三極管的基極,三極管集電極接電機一腳,電機另一腳接外接電源正極,三極管發射極接外接電源負,arduino 的 GND 也接到三極管發射極
// ----------------------------------------------------------------------------

const unsigned char motor  = 11;
const unsigned char sensor = A0;

void setup()
{
    pinMode(motor,  OUTPUT);
    pinMode(sensor, INPUT);
}

void loop()
{
    // 用 map 函數進行范圍的映射
    analogWrite(motor, map(analogRead(sensor), 0, 1023, 0, 255));
}

上個接線圖和效果圖:

 

 H橋控制直流電機

// ----------------------------------------------------------------------------
// hBridgeMotor.ino
// 
// Created 2015-06-11
// By seesea <seesea2517#gmail#com> 
// 
// H 橋控制直流電機演示
// 通過 H 橋控制直流電機的轉動方向
// 先順時針轉一秒,再逆時針轉一秒,停一秒,重復前述動作
//
// 根據 H 橋實際的電路進行接線。手頭沒有現成的芯片,用了四個三極管搭的粗糙的 H 橋原型來做的實驗
// ----------------------------------------------------------------------------

const unsigned char pinMotorCW  = 10;   // 接控制電機順時針轉的 H 橋引腳
const unsigned char pinMotorCCW = 11;   // 接控制電機逆時針轉的 H 橋引腳

// 電機停轉
void motorStop()
{
    digitalWrite(pinMotorCW,  LOW);
    digitalWrite(pinMotorCCW, LOW);
}

// 電機順時針轉
void motorCW()
{
    digitalWrite(pinMotorCW,  HIGH);
    digitalWrite(pinMotorCCW, LOW);
}

// 電機逆時針轉
void motorCCW()
{
    digitalWrite(pinMotorCW,  LOW);
    digitalWrite(pinMotorCCW, HIGH);
}

void setup()
{
    pinMode(pinMotorCW,  OUTPUT);
    pinMode(pinMotorCCW, OUTPUT);
}

void loop()
{
    motorCW();
    delay(1000);
    
    motorCCW();
    delay(1000);
    
    motorStop();
    delay(1000);
}

手工搭的 H 橋,太亂了就看個效果吧,建議直接用現成的芯片。

接了紅綠兩個 LED 用來直觀的看 PWM 和 方向:

 

PWM + H 橋控制直流電機

同時控制直流電機的方向及轉速

// ----------------------------------------------------------------------------
// pwmHBridgeMotor.ino
// 
// Created 2015-06-11
// By seesea <seesea2517#gmail#com> 
// 
// PWM 通過 H 橋控制直流電機
// 既控制電機的轉速,也控制電機的方向
// 控制電機順時針逐漸轉快,再逐漸轉慢,然后逆時針由慢轉快再轉慢,又回到順時針的轉動循環
//
// 根據 H 橋實際的電路進行接線。手頭沒有現成的芯片,用了四個三極管搭的粗糙的 H 橋原型來做的實驗
// ----------------------------------------------------------------------------

const unsigned char pinMotorCW  = 10;   // 接控制電機順時針轉的 H 橋引腳
const unsigned char pinMotorCCW = 11;   // 接控制電機逆時針轉的 H 橋引腳

// 電機停轉
void motorStop()
{
    digitalWrite(pinMotorCW, LOW);
    digitalWrite(pinMotorCCW, LOW);
}

// 電機以參數設定的 pwm 值順時針轉
void motorCW(unsigned char pwm)
{
    analogWrite(pinMotorCW,   pwm);
    digitalWrite(pinMotorCCW, LOW);
}

// 電機以參數設定的 pwm 值逆時針轉
void motorCCW(unsigned char pwm)
{
    digitalWrite(pinMotorCW, LOW);
    analogWrite(pinMotorCCW, pwm);
}

void setup()
{
    pinMode(pinMotorCW,  OUTPUT);
    pinMode(pinMotorCCW, OUTPUT);
}

void loop()
{
    unsigned char i;

    // 順時針由慢到快
    for (i = 0; i < 255; ++i)
    {
        motorCW(i);
        delay(10);
    }
    
    // 順時針由快到慢
    for (i = 255; i > 0; --i)
    {
        motorCW(i);
        delay(10);
    }

    // 逆時針由慢到快
    for (i = 0; i < 255; ++i)
    {
        motorCCW(i);
        delay(10);
    }

    // 逆時針由快到慢
    for (i = 255; i > 0; --i)
    {
        motorCCW(i);
        delay(10);
    }
}

用三極管搭的簡陋 H 橋就看個效果啦,建議直接用現成的芯片。

接了紅綠兩個 LED 用來直觀的看 PWM 和 方向:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM