使用L293D电机驱动器控制直流电机

描述

一、直流电机的定义

直流电机是指能将直流电能转换成机械能(直流电动机)或将机械能转换成直流电能(直流发电机)的旋转电机。当直流电机作为电动机运行时,它将电能转换为机械能,用于驱动各种设备;而作为发电机运行时,则将机械能转换为电能,用于发电。

直流电机的结构主要由定子和转子两大部分组成。直流电机中静止不动的部分称为定子。定子的主要作用是产生磁场,由机座、主磁极、换向极、端盖、轴承和电刷装置等组成。其中,主磁极的作用是产生气隙磁场,由主磁极铁心和励磁绕组两部分组成;换向极的作用是改善换向,减小电机运行时电刷与换向器之间可能产生的换向火花;电刷装置则用于引入或引出直流电压和直流电流。直流电机中转动的部分称为转子,其主要作用是产生电磁转矩和感应电动势,是直流电机进行能量转换的枢纽。转子由转轴、电枢铁心、电枢绕组、换向器和风扇等组成。其中,电枢铁心是主磁路的主要部分,同时用以嵌放电枢绕组;电枢绕组的作用是产生电磁转矩和感应电动势,是直流电机进行能量变换的关键部件。

直流电机的工作原理基于电磁感应和电磁力作用。当直流电源向电机的电枢绕组供电时,电枢绕组会产生电流,进而在磁场中受到电磁力的作用而旋转。同时,电枢在旋转过程中会切割定子磁场中的磁力线,产生感应电动势。这个感应电动势的方向与外加电压的方向相反,称为反电动势。电源需要克服这个反电动势才能向电动机输入电流,从而维持电机的持续运转。

直流电机在工业生产、交通运输、医疗设备、家用电器以及多个专业领域都有广泛的应用。例如,在工业生产中,直流电机常用于机床、风机、泵、印刷设备、冶金设备、化工设备、食品加工设备、纺织机械等设备中;在交通运输领域,直流电机则广泛应用于电动车、电动汽车、电动自行车等交通工具中;在医疗设备领域,直流电机也被用于X光机、CT扫描仪、手术钻等设备中。此外,直流电机还在家用电器、电动工具、船舶、自动化系统、航空航天等领域有广泛应用。

二、使用L293D电机驱动器控制直流电机

直流电机广泛应用于电气、电子、机械行业。轴、真空吸尘器、传送带、洗衣机、印刷机和许多其他机器都使用直流电机。然而,需要正确理解控制直流电机,因为每台机器都必须以不同的方式导出和控制。因此,有不同的驱动器 IC 可以在 Arduino 等微控制器的帮助下以更好、更精确的方式控制直流电机。因此,在本教程中,我们将使用 Arduino UNO 的 L293D 电机驱动器来控制直流电机。

L293d是一款电机驱动IC,可以驱动两个直流电机。我们使用微控制器和该 IC 来控制方向。该电机驱动IC可以驱动电压小于36V的电机。此外,IC 可以沿两个方向(顺时针或逆时针)运行电机。

电路原理图

直流电机

连接表

ArduinoL293D电机驱动器
电压控制电路电压控制电路
接地接地
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 引脚。由数字电路控制。
8Vcc2(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 引脚。由数字电路控制
16Vcc2(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 加速到最大速度,然后减速到零。因此,电机将根据您的代码进行控制。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分