簡體   English   中英

使用 Arduino Uno 控制直流電機

[英]Controlling a DC motor with an Arduino Uno

我按照這個原理圖設置了一個簡單的H 橋電路:

在此處輸入圖像描述

我試圖通過這個帶有Arduino Uno的 H 橋來控制小型直流電機,但我以前從未對這些控制器中的一個進行過編程。 當我在鍵盤上左右按時,我需要電機向不同方向旋轉。 到目前為止我有這段代碼:

// Right Motor

/** Adjust these values for your servo and setup, if necessary **/
int resistor1     =  3;
int resistor2     =  5;
int resistor3     =  6;
int resistor4     =  10;
int moveServo;


void setup() {
    Serial.begin(9600);
    pinMode(resistor1, OUTPUT); // Set servo pin as an output pin
    pinMode(resistor2, OUTPUT);
    pinMode(resistor3, OUTPUT);
    pinMode(resistor4, OUTPUT);
}


void loop() {
  // Wait for serial input
  if (Serial.available() > 0) {
      // Read the incoming byte:
      moveServo = Serial.read();

      // ASCII left = 37, up = 38, right = 39, down = 40
      if (moveServo == 37)
      {
          digitalWrite(resistor4, HIGH);
          digitalWrite(resistor1, HIGH);
      }
  }

然而,我在修改PWM以使電機保持開啟時遇到了問題,而且 output 引腳也沒有按照我指定的方式設置。

我該如何解決這個問題?

如果要產生PWM輸出,則必須使用AnalogWrite()函數。

解決問題的方法(使電動機保持運轉)不是PWM,而是以正確的組合設置引腳狀態。 請注意,您使用的代碼適用於全NPN晶體管H橋。 您的電路是由PNP-NPN組合構建的,因此控制方式有所不同(NPN晶體管在飽和時傳遞電流,而PNP晶體管在飽和時禁止電流)。

嘗試像這樣修改您的代碼:

if (moveServo == 37)
{
    digitalWrite(resistor1, LOW);
    digitalWrite(resistor2, LOW);
    digitalWrite(resistor3, HIGH);
    digitalWrite(resistor4, HIGH);
}
else if (moveServo == 39)
{
    digitalWrite(resistor3, LOW);
    digitalWrite(resistor4, LOW);
    digitalWrite(resistor1, HIGH);
    digitalWrite(resistor2, HIGH);
}

請注意,順序很重要。 首先將一對設置為LOW,然后再將另一對設置為HIGH,否則將使函數調用之間的電路短路。

注意:您可以將PWM與analogWrite()函數一起使用來控制電機速度,但是您需要稍作修改:將另外的NPN晶體管置於接地之前(集電極位於H橋上,發射極接地),將其基極連接到具有PWM功能Arduino引腳通過限流電阻器。

vcc2gnd答案的說明

假設給H橋電路提供了5V,則當PNP的基極電壓為0v時,PNP就會接通。 當它們的基准電壓為5v時,NPN就會打開。 當晶體管導通(飽和)時,它會導通電流。

當Q4和Q1接通而其他Q4和Q1斷開(切斷)時,電機向一個方向轉動。 要具有該方向,R1,R2,R3,R4應分別指定為5v,5v,0v,0v。

使用 IRF7105 雙通道 Mosfet 的 H 橋電路原理圖

使用 IRF7105 雙通道 Mosfet 的 H 橋電路原理圖

基於 Mosfet 的 H 橋,微型尺寸,適用於使用 20V 的高達 2 安培的連續電流,原理圖已在 Proteus 仿真軟件中測試並復制。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM