一、直流電機的定義
直流電機是指能將直流電能轉換成機械能(直流電動機)或將機械能轉換成直流電能(直流發電機)的旋轉電機。當直流電機作為電動機運行時,它將電能轉換為機械能,用于驅動各種設備;而作為發電機運行時,則將機械能轉換為電能,用于發電。
直流電機的結構主要由定子和轉子兩大部分組成。直流電機中靜止不動的部分稱為定子。定子的主要作用是產生磁場,由機座、主磁極、換向極、端蓋、軸承和電刷裝置等組成。其中,主磁極的作用是產生氣隙磁場,由主磁極鐵心和勵磁繞組兩部分組成;換向極的作用是改善換向,減小電機運行時電刷與換向器之間可能產生的換向火花;電刷裝置則用于引入或引出直流電壓和直流電流。直流電機中轉動的部分稱為轉子,其主要作用是產生電磁轉矩和感應電動勢,是直流電機進行能量轉換的樞紐。轉子由轉軸、電樞鐵心、電樞繞組、換向器和風扇等組成。其中,電樞鐵心是主磁路的主要部分,同時用以嵌放電樞繞組;電樞繞組的作用是產生電磁轉矩和感應電動勢,是直流電機進行能量變換的關鍵部件。
直流電機的工作原理基于電磁感應和電磁力作用。當直流電源向電機的電樞繞組供電時,電樞繞組會產生電流,進而在磁場中受到電磁力的作用而旋轉。同時,電樞在旋轉過程中會切割定子磁場中的磁力線,產生感應電動勢。這個感應電動勢的方向與外加電壓的方向相反,稱為反電動勢。電源需要克服這個反電動勢才能向電動機輸入電流,從而維持電機的持續運轉。
直流電機在工業生產、交通運輸、醫療設備、家用電器以及多個專業領域都有廣泛的應用。例如,在工業生產中,直流電機常用于機床、風機、泵、印刷設備、冶金設備、化工設備、食品加工設備、紡織機械等設備中;在交通運輸領域,直流電機則廣泛應用于電動車、電動汽車、電動自行車等交通工具中;在醫療設備領域,直流電機也被用于X光機、CT掃描儀、手術鉆等設備中。此外,直流電機還在家用電器、電動工具、船舶、自動化系統、航空航天等領域有廣泛應用。
二、使用L293D電機驅動器控制直流電機
直流電機廣泛應用于電氣、電子、機械行業。軸、真空吸塵器、傳送帶、洗衣機、印刷機和許多其他機器都使用直流電機。然而,需要正確理解控制直流電機,因為每臺機器都必須以不同的方式導出和控制。因此,有不同的驅動器 IC 可以在 Arduino 等微控制器的幫助下以更好、更精確的方式控制直流電機。因此,在本教程中,我們將使用 Arduino UNO 的 L293D 電機驅動器來控制直流電機。
L293d是一款電機驅動IC,可以驅動兩個直流電機。我們使用微控制器和該 IC 來控制方向。該電機驅動IC可以驅動電壓小于36V的電機。此外,IC 可以沿兩個方向(順時針或逆時針)運行電機。
電路原理圖
連接表
Arduino | L293D電機驅動器 |
---|---|
電壓控制電路 | 電壓控制電路 |
接地 | 接地 |
D9 | 引腳 1 |
D8 | 引腳 2 |
D7 | 引腳 7 |
D3 | 引腳 9 |
D5 | 引腳 10 |
D4 | 引腳 15 |
L293D電機驅動IC引腳配置
引腳號 | 引腳名稱 | 描述 |
---|---|---|
1 | 啟用1,2 | 該引腳啟用輸入引腳輸入 1(2) 和輸入 2(7) |
2 | 輸入1 | 直接控制輸出 1 引腳。由數字電路控制。 |
3 | 輸出1 | 連接至電機1一端 |
4 | 地面 | 我們將接地引腳連接到電路的接地(0V) |
5 | 地面 | 接地引腳連接到電路的地(0V) |
6 | 輸出2 | 連接到電機1的另一端 |
7 | 輸入2 | 直接控制輸出 2 引腳。由數字電路控制。 |
8 | Vcc2(Vs) | 連接到運行電機的電壓引腳(4.5V 至 36V) |
9 | 啟用3,4 | 該引腳啟用輸入引腳輸入 3(10) 和輸入 4(15) |
10 | 輸入3 | 直接控制輸出 3 引腳。由數字電路控制 |
11 | 輸出3 | 連接至電機2一端 |
12 | 地面 | 我們將接地引腳連接到電路的接地端。 |
13 | 地面 | 我們將接地引腳連接到電路的接地端。 |
14 | 輸出4 | 連接到電機2的另一端 |
15 | 輸入4 | 直接控制輸出 4 引腳。由數字電路控制 |
16 | Vcc2(Vss) | 連接至+5V以啟用IC功能 |
Arduino代碼
// Motor A connections
int enA = 9;
int in1 = 8;
int in2 = 7;
// Motor B connections
int enB = 3;
int in3 = 5;
int in4 = 4;
void setup() {
// Set all the motor control pins to outputs
pinMode(enA, OUTPUT);
pinMode(enB, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
// Turn off motors - Initial state
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
}
void loop() {
directionControl();
delay(1000);
speedControl();
delay(1000);
}
// This function lets you control spinning direction of motors
void directionControl() {
// Set motors to maximum speed
// For PWM maximum possible values are 0 to 255
analogWrite(enA, 255);
analogWrite(enB, 255);
// Turn on motor A & B
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
delay(2000);
// Now change motor directions
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
delay(2000);
// Turn off motors
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
}
// This function lets you control speed of the motors
void speedControl() {
// Turn on motors
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
// Accelerate from zero to maximum speed
for (int i = 0; i < 256; i++) {
analogWrite(enA, i);
analogWrite(enB, i);
delay(20);
}
// Decelerate from maximum speed to zero
for (int i = 255; i >= 0; --i) {
analogWrite(enA, i);
analogWrite(enB, i);
delay(20);
}
// Now turn off motors
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
}
工作說明
要使用 L293D 電機驅動器 IC 和 Arduino 控制直流電機,首先按照表格和電路圖中的描述進行完美連接。然后,在 Arduino IDE 中編寫給定的代碼并將該代碼上傳到 Arduino。現在,當您向電路供電時,電機開始根據代碼中提供的命令旋轉。例如,這些電機開始朝一個方向全速旋轉,然后朝另一個方向全速旋轉,分別持續兩秒鐘。然后它們停止旋轉。之后,它們從 0 加速到最大速度,然后減速到零。因此,電機將根據您的代碼進行控制。
-
直流電機
+關注
關注
36文章
1710瀏覽量
70280 -
電機驅動器
+關注
關注
16文章
646瀏覽量
64745 -
Arduino
+關注
關注
188文章
6473瀏覽量
187412
發布評論請先 登錄
相關推薦
評論