📅  最后修改于: 2020-12-27 10:07:59             🧑  作者: Mango
直流电动机被认为是最简单的电动机,其用途广泛,从家庭到工业。示例包括汽车,电动汽车,电梯等中的电动窗。
直流电动机的原理基于电磁感应。这意味着电动机的旋转取决于磁场产生的力。它将电能转换为机械能。这样的电动机可以由直流电供电。
让我们讨论一下直流电动机的工作原理。
直流电动机由定子,转子,电枢和换向器组成。换向器带有电刷。定子中有两个固定磁体,它们负责产生磁场。
直流电动机中的电枢承载交流电。电枢将电能以转矩形式转换为机械能。它还通过轴传递该机械能。
换向器定义为电气开关。它还可以使外部电路和电动机之间的电流方向反向。电刷充当外部电源和旋转线圈之间的中间部分。
当电流通过导线时,位于中心的铁芯被绝缘的导线包裹,该导线集中在磁场上。绝缘电线的绕组在电动机的铁心周围有许多匝。
导线末端连接到换向器。换向器进一步激励电枢线圈,并通过电刷将电源和旋转线圈连接起来。
下面列出了使用直流电动机的优点:
直流电动机如下图所示:
让我们从项目开始。
我们将讨论直流电动机的两个项目。
在这里,我们将讨论使用二极管,晶体管和电阻器将直流电动机与Arduino板的简单连接。
该项目所需的组件如下:
该项目的结构如下所示:
考虑下面的代码:
int PinOFmotor = 10;
// PIN 10 of the Arduino is initialized to the variable
// the pin must be a PWM pin
void setup()
{
pinMode(PinOFmotor, OUTPUT);
}
void loop()
{
digitalWrite(PinOFmotor, HIGH);
delay(1000);
digitalWrite(PinOFmotor, LOW);
delay(1000);
}
步骤如下:
下面列出了建立连接的步骤:
我们将使用模拟器来显示连接,以便使连接更清晰,更精确。
我们可以使用硬件设备进行相同的连接。
连接后,电动机将旋转。
在这里,我们将讨论使用L293D H桥电机驱动器将DC Gear电机与Arduino板的连接。
让我们讨论一下将L293D H桥电机驱动器与直流电机一起使用的必要性。
L293定义为允许直流电动机沿任何方向驱动的电动机驱动器IC。它还可以同时控制两个直流电动机。它是一个16针集成电路(IC)。
它从Arduino板上的微处理器接收信号,并将该信号传输到电机。它具有两个VCC或电压引脚,其中一个引脚消耗电流以进行工作,而另一个则用于向直流电动机提供电压。
电机通常需要高电流才能运行。我们可以使用的微控制器,但是高电流可能会损坏微控制器。为了克服这个问题,使用了电机驱动器。
L293D是用于驱动直流电动机的最受欢迎的电动机驱动器之一。它可以运行高达1安培电流负载的直流电动机。
L293D驱动器上的四个输出使其也适用于驱动4线步进电机。我们也可以使用L293D驱动器来驱动伺服电机。
L293D的引脚排列如下所示:
该项目所需的组件如下:
考虑下面的代码:
#define MOTOR_1 11
// PWM pin 11
#define MOTOR_A 10
// PWM pin 10
// we can also connect it to the other PWM pins of the Arduino
#define MOTOR_B 8
// digital I/O pin
#define slow 64
#define normal 128
#define fast 255
int Speed; // initialization of speed variable
// created functions
void Forward_Rev(void)
{
analogWrite(MOTOR_1, Speed);
digitalWrite(MOTOR_A, HIGH);
digitalWrite(MOTOR_B, LOW);
}
void Backward_Rev(void)
{
analogWrite(MOTOR_1, Speed);
digitalWrite(MOTOR_A, LOW);
digitalWrite(MOTOR_B, HIGH);
}
void Forward_ramp_up(void)
{
digitalWrite(MOTOR_A, HIGH);
digitalWrite(MOTOR_B, LOW);
for (int i=0; i<255; i++) // loop started
//value set from 0 to 255
{
analogWrite(MOTOR_A, i);
delay(15); // delay time in milliseconds
}
}
void Forward_ramp_down(void)
{
digitalWrite(MOTOR_A, HIGH);
digitalWrite(MOTOR_B, LOW);
for (int i=255; i>=0; i--) // loop set in reverse direction
// value set from 255 to 0 (reverse)
{
analogWrite(MOTOR_A, i);
delay(15);
}
}
// same statement but within different function
void Backward_ramp_up(void)
{
digitalWrite(MOTOR_A, LOW);
digitalWrite(MOTOR_B, HIGH);
for (int i=0; i<255; i++)
{ analogWrite(MOTOR_A, i);
delay(15);
// we can modify the delay time as per the requirements
}
}
void Backward_ramp_down(void)
{
digitalWrite(MOTOR_A, LOW);
digitalWrite(MOTOR_B, HIGH);
for (int i=255; i>=0; i--)
{
analogWrite(MOTOR_A, i);
delay(15);
}
}
void Brake(void)
{
digitalWrite(MOTOR_A, HIGH);
digitalWrite(MOTOR_B, HIGH);
}
void setup()
{
Serial.begin(9600); // bps rate of 9600
Serial.println("DC motor test using L293D");
pinMode(MOTOR_1, OUTPUT);
pinMode(MOTOR_A, OUTPUT);
pinMode(MOTOR_B, OUTPUT);
}
void loop()
{
Speed=slow; // Slow Speed
// we can modify the value as fast, slow, and normal depending on the required speed
//the motor will revolve according to the specified speed
// for example, fast will cause it to move at fast speed
// we can also add more parameters using #define
Forward_Rev();
delay(1000);
Brake();
delay(500);
Backward_Rev();
delay(1000);
Brake();
delay(500);
Forward_ramp_up();
Forward_ramp_down();
Backward_ramp_up();
Backward_ramp_down();
// the statement inside the functions will run again and again
// the motor will revolve in forward and backward direction
}
下面列出了建立连接的步骤:
我们将使用模拟器来显示连接,以便使连接更清晰,更精确。
我们可以使用硬件设备进行相同的连接。
速度的“慢速”模式将导致电动机以慢速旋转。如代码中所述,我们还可以将模式更改为快速或正常。
我们还可以根据需要向代码添加更多速度参数。