tft每日頭條

 > 汽車

 > 簡單的arduino電機控制

簡單的arduino電機控制

汽車 更新时间:2024-11-28 14:45:50

在本次的文章中,我們将會介紹如何使用 Arduino 控制直流有刷電機。

直流有刷電機上生活中最為常見的電動機之一。小時候玩的四驅車采用的就是直流有刷電機。這種直流電機的驅動也是非常簡單 ,隻要給它接上直流電,電機就能轉動,改變電源正負極,電機就能反轉。那麼我們怎麼對電機進行調速并且更方便地切換電機的旋轉方向呢?

簡單的arduino電機控制(Arduino應用實例用L298N芯片驅動直流電機)1

我們知道,一個電機接兩節幹電池時的轉速要比隻接一節幹電池要快得多。因此我們可以通過簡單地控制電機的輸入電壓來控制直流電機的轉速。最常用的方法是使用 pwm 信号控制電機。

PWM 直流電機控制

PWM 脈沖寬度調制(Pulse width modulation,PWM)是一種模拟控制方式,根據相應載荷的變化來調制晶體管基極或MOS管栅極的偏置,來實現晶體管或MOS管導通時間的改變,從而實現開關穩壓電源輸出的改變。這種方式能使電源的輸出電壓在工作條件變化時保持恒定,是利用微處理器的數字信号對模拟電路進行控制的一種非常有效的技術。它相當于我們通過快速打開和關閉電源來調整輸入電子設備的電壓的平均值。 平均電壓取決于占空比,或者信号開啟的時間與信号在一個周期内關閉的時間的比值。

簡單的arduino電機控制(Arduino應用實例用L298N芯片驅動直流電機)2

PWM原理圖

因此,根據電機的大小,我們可以簡單地将 Arduino PWM 輸出連接到晶體管的基極或 MOS管的栅極,并通過控制 PWM 輸出來控制電機的速度。 低功率 Arduino PWM 信号打開和關閉 MOS管上的栅極,通過該栅極驅動高功率電機。

簡單的arduino電機控制(Arduino應用實例用L298N芯片驅動直流電機)3

Arduino驅動直流電機接線圖

注意:Arduino與電機電源需共地。

H-橋直流電機控制

我們已經學會了控制電機的速度,下一步就是控制電機的正反轉。為了控制旋轉方向,我們隻需要反轉通過電機的電流方向,最常用的方法是使用H橋。 H橋電路包含四個開關元件、晶體管或MOS管,中間的電機形成類似H型的電路。通過同時激活兩個特定的開關,我們就可以改變電流的方向,從而改變電機的旋轉方向。比如隻接通開關1,3電機正轉,隻接通2,4開關電機就會反轉。

簡單的arduino電機控制(Arduino應用實例用L298N芯片驅動直流電機)4

因此,如果我們将PWM和H橋這兩種方法結合起來,我們就自如地控制直流電機了。實際上我們有許多具有這種功能的直流電機驅動器,L298N 就是其中最常用的模塊之一。

L298N驅動模塊

簡單的arduino電機控制(Arduino應用實例用L298N芯片驅動直流電機)5

L298N 是雙H橋電機驅動器,可同時控制兩個直流電機的速度和方向。該模塊可以驅動電壓在5-35V之間的直流電機,峰值電流可達2A。

該模塊左右各有兩個螺釘接線端子用于連接電機A和B。中間的螺釘接線端子包括一個接地端,一個電機5-35V的供電端VCC以及一個5V接線端,它可以是輸入或輸出。這取決于電機 VCC 上使用的電壓。 該模塊具有闆載5V穩壓器,可使用跳線啟用或禁用該穩壓器。 如果電機電源電壓高達 12V,我們可以啟用5V穩壓器,并且 5V 引腳可以用作輸出,并為我們的 Arduino 闆供電。 但如果電機電壓大于 12V,我們必須斷開跳線,因為過高的電壓會損壞闆載 5V 穩壓芯片。 在這種情況下,5V 引腳将用作輸入,因為我們需要将其連接到 5V 電源才能使 IC 正常工作。

簡單的arduino電機控制(Arduino應用實例用L298N芯片驅動直流電機)6

接下來是信号端的接線。使能A(EnableA)和使能B(EnableB)引腳用于啟用和控制電機速度。如果該引腳上存在跳線,電機将啟動并以最大速度工作。我們也拆下跳線帽,将PWM輸入此引腳,就可以控制電機的速度。如果我們将此針腳接地,電機将被禁用。

簡單的arduino電機控制(Arduino應用實例用L298N芯片驅動直流電機)7

接下來,IN1和IN2引腳用于控制馬達A的旋轉方向,IN3和IN4用于馬達B。我們通過這些引腳,來L298N IC内部H橋的開關。如果IN1輸入低電平而IN2輸入高電平,電機将正轉,如果N1輸入高電平而IN2輸入低電平,電機将反轉。如果兩個引腳輸入相同,電機将停止。這同樣适用于IN3和IN4以及電機B。

Arduino L298N電機驅動

現在讓我們連接上Arduino 做一個實際應用。我們将使用電位計控制電機的速度,并使用按鈕改變旋轉方向。下面是電路圖。

簡單的arduino電機控制(Arduino應用實例用L298N芯片驅動直流電機)8

硬件設備:

  • Arduino UNO控制器 × 1
  • 298N電機驅動模塊 × 1
  • 直流電機 × 1
    • 電位計 × 1
    • 按鈕 × 1
    • 12V 電源 × 1
    • 杜邦線 × n
Arduino代碼

/* Arduino 直流電機控制 - PWM | H-Bridge | L298N */ #define enA 9 //定義電機控制端和使能端 #define in1 6 #define in2 7 #define button 4 //定義按鍵 int rotDirection = 0; //定義旋轉方向 int pressed = false; void setup() { pinMode(enA, OUTPUT); pinMode(in1, OUTPUT); pinMode(in2, OUTPUT); pinMode(button, INPUT); // 設置初始旋轉方向 digitalWrite(in1, LOW); digitalWrite(in2, HIGH); } void loop() { int potValue = analogRead(A0); // 讀取電位計值 int pwmOutput = map(potValue, 0, 1023, 0 , 255); //将電位計值映射到 0- 255 analogWrite(enA, pwmOutput); // PWM信号輸出 // 讀取按鍵值 if (digitalRead(button) == true) { pressed = !pressed; } while (digitalRead(button) == true); delay(20); // 如果按鍵被按下,改變電機旋轉方向 if (pressed == true & rotDirection == 0) { digitalWrite(in1, HIGH); digitalWrite(in2, LOW); rotDirection = 1; delay(20); } // 如果按鍵被按下,改變電機旋轉方向 if (pressed == false & rotDirection == 1) { digitalWrite(in1, LOW); digitalWrite(in2, HIGH); rotDirection = 0; delay(20); } }

該實例程序中,我們需要先定義程序所需的管腳和變量。在setup中,我們需要設置引腳模式和電機的初始旋轉方向。在loop中,我們首先讀取電位計值,然後将從中獲得的值(從0到1023)映射為PWM信号的0到255的值,或者是PWM信号的0到100%占空比。然後使用analogWrite()函數将PWM信号發送到L298N闆的啟用引腳,該引腳實際驅動電機。

接下來,我們檢查是否按下了按鈕,如果是值是真的,通過反向設置in1和in2狀态來改變電機的旋轉方向。該按鈕将作為電機換向按鈕,每次我們按下它,電機的旋轉方向就會改變。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关汽車资讯推荐

热门汽車资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved