直流电动机是机器人技术和电子项目中使用最多的电动机。为了控制直流电动机的速度,我们有多种方法,例如可以根据温度自动控制速度,但在本项目中将使用PWM方法来控制直流电动机的速度。在此 Arduino电动机速度控制项目中,可以通过旋转电位计的旋钮来控制速度。
脉冲宽度调制:
什么是PWM? PWM是一种通过使用我们可以控制电压或功率的技术。为了更简单地理解它,如果您施加5伏电压来驱动电动机,那么电动机将以一定速度运动,现在,如果我们将施加的电压减小2表示我们将3伏电压施加给电动机,那么电动机速度也会降低。该概念在项目中用于通过PWM控制电压。我们已经在本文中详细解释了PWM。还要检查使用PWM控制LED亮度的电路:1瓦LED调光器。
%占空比=(TON /(TON + TOFF))* 100其中,T ON =方波的高电平时间T OFF =方波的低电平时间
现在,如果图中的开关在一段时间内连续闭合,则电动机将在这段时间内连续导通。如果开关在10ms的时间内闭合8ms并断开2ms,则电动机将仅在8ms的时间内接通。现在,在10ms的时间内,平均终端=开启时间/(开启时间+关闭时间),这称为 占空比 ,为80%(8 /(8 + 2)),因此平均值输出电压将为电池电压的80%。现在,人眼无法看到电动机打开了8毫秒而关闭了2毫秒,因此看起来直流电动机正在以80%的速度旋转。
在第二种情况下,开关在10ms的时间内闭合5ms,然后断开5ms,因此输出端的平均端电压将为电池电压的50%。假设电池电压为5V,占空比为50%,则平均端子电压为2.5V。
在第三种情况下,占空比为20%,平均端子电压为电池电压的20%。
在许多项目中,我们已将PWM与Arduino一起使用:
- 使用PWM的基于Arduino的LED调光器
- 使用Arduino的温度控制风扇
- 使用Arduino的直流电机控制
- 使用Arduino和TRIAC的交流风扇速度控制
您可以通过执行基于PWM的各种项目来了解有关PWM的更多信息。
所需材料
- Arduino UNO
- 直流马达
- 晶体管2N2222
- 电位计100k欧姆
- 电容0.1uF
- 面包板
- 跳线
电路原理图
为电路图 使用PWM的Arduino直流电机调速 被geven下面:
代码和解释
最后给出了使用电位计的Arduino DC电机控制的完整代码。
在下面的代码中,我们初始化变量C1和C2以及分配模拟销A0为电位器输出和12个引脚为“PWM”。
int pwmPin = 12; 积分罐= A0; int c1 = 0; int c2 = 0;
现在,在下面的代码中,将引脚A0设置为输入,将12(这是PWM引脚)设置为输出。
void setup(){ pinMode(pwmPin,OUTPUT); //将引脚12声明为输出 pinMode(pot,INPUT); //将引脚A0声明为输入 }
现在,在 void loop()中, 我们正在使用 AnalogRead(pot) 读取模拟值(从A0 ), 并将其保存到变量c2中。然后,从1024中减去c2值,并将结果保存在c1中。然后进行PWM销12日Arduino的HIGH,然后的值的延迟之后C1使该销LOW。同样,在延迟值c2之后,循环继续。
从1024中减去模拟值的原因是,Arduino Uno ADC 具有10位分辨率(因此0-2 ^ 10的整数值= 1024个值)。这意味着它将把0到5伏之间的输入电压映射为0到1024之间的整数值。因此,如果将输入 anlogValue 乘以 (5/1024),则会得到输入电压的数字值。在这里了解如何在Arduino中使用ADC输入。
void loop() { c2 = AnalogRead(pot); c1 = 1024-c2; digitalWrite(pwmPin,HIGH); //将引脚12设置为HIGH delayMicroseconds(c1); //等待c1美国(高时间) digitalWrite(pwmPin,LOW); //将引脚12 设为 LOW delayMicroseconds(c2); //等待c2 us(低时间)}
使用Arduino的直流电机的速度控制
在该电路中,为了控制直流电动机的速度,我们使用一个100K欧姆的电位计来更改PWM信号的占空比。 100K欧姆电位器连接至Arduino UNO的模拟输入引脚A0,而直流电动机连接至Arduino的第12引脚(即PWM引脚)。 Arduino程序的工作非常简单,因为它从模拟引脚A0读取电压。使用电位器可改变模拟引脚上的电压。在进行必要的计算之后,占空比将根据其进行调整。
例如,如果我们向模拟输入输入256值,则HIGH时间将为768ms(1024-256),LOW时间将为256ms。因此,这仅意味着占空比为75%。我们的眼睛看不到这样的高频振荡,看起来电机以75%的速度连续打开。这就是我们可以使用Arduino执行 电动机速度控制的方式。