一、直流电机的定义
直流电机是指能将直流电能转换成机械能(直流电动机)或将机械能转换成直流电能(直流发电机)的旋转电机。当直流电机作为电动机运行时,它将电能转换为机械能,用于驱动各种设备;而作为发电机运行时,则将机械能转换为电能,用于发电。
直流电机的结构主要由定子和转子两大部分组成。直流电机中静止不动的部分称为定子。定子的主要作用是产生磁场,由机座、主磁极、换向极、端盖、轴承和电刷装置等组成。其中,主磁极的作用是产生气隙磁场,由主磁极铁心和励磁绕组两部分组成;换向极的作用是改善换向,减小电机运行时电刷与换向器之间可能产生的换向火花;电刷装置则用于引入或引出直流电压和直流电流。直流电机中转动的部分称为转子,其主要作用是产生电磁转矩和感应电动势,是直流电机进行能量转换的枢纽。转子由转轴、电枢铁心、电枢绕组、换向器和风扇等组成。其中,电枢铁心是主磁路的主要部分,同时用以嵌放电枢绕组;电枢绕组的作用是产生电磁转矩和感应电动势,是直流电机进行能量变换的关键部件。
直流电机的工作原理基于电磁感应和电磁力作用。当直流电源向电机的电枢绕组供电时,电枢绕组会产生电流,进而在磁场中受到电磁力的作用而旋转。同时,电枢在旋转过程中会切割定子磁场中的磁力线,产生感应电动势。这个感应电动势的方向与外加电压的方向相反,称为反电动势。电源需要克服这个反电动势才能向电动机输入电流,从而维持电机的持续运转。
直流电机在工业生产、交通运输、医疗设备、家用电器以及多个专业领域都有广泛的应用。例如,在工业生产中,直流电机常用于机床、风机、泵、印刷设备、冶金设备、化工设备、食品加工设备、纺织机械等设备中;在交通运输领域,直流电机则广泛应用于电动车、电动汽车、电动自行车等交通工具中;在医疗设备领域,直流电机也被用于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 加速到最大速度,然后减速到零。因此,电机将根据您的代码进行控制。
全部0条评论
快来发表一下你的评论吧 !