在本教程中,我们将使DC电动机与Arduino UNO相连,并使用PWM(脉冲宽度调制)概念控制其速度。在UNO中启用此功能可在恒定电压上获得可变电压。在此说明PWM的方法。考虑一个如图所示的简单电路。
如果按下按钮(如图所示),则电动机将开始旋转,并且它将一直运动,直到按下按钮为止。该按压是连续的,并且在第一波图中表示。如果在某种情况下,考虑按下按钮8ms并在10ms的周期内将其打开2ms,则在这种情况下,由于按钮仅按下8ms,电动机将无法承受9V的完整电池电压,因此RMS端子两端的电压电机将在7V左右。由于RMS电压降低,电动机将旋转,但速度降低。现在,平均接通时间为10ms =接通时间/(接通时间+断开时间),这称为占空比,为80%(8 /(8 + 2))。
在第二和第三种情况下,与第一种情况相比,按下按钮的时间更少。因此,电机端子上的RMS端子电压甚至进一步降低。由于电压降低,电动机转速甚至进一步降低。这种速度下降与占空比连续发生,直到电动机端子电压不足以使电动机转动为止。
因此,我们可以得出结论,PWM可用于改变电动机速度。
在继续之前,我们需要讨论H-BRIDGE。现在,该电路主要具有两个功能,一个是 从低功率控制信号驱动直流电动机, 另一个是 改变直流电动机的旋转方向。
图1
图2
众所周知,对于直流电动机,要改变旋转方向,就需要改变电动机电源电压的极性。因此,要改变极性,我们使用H桥。现在在上图1中,我们有四个开关。如图2所示,为了使电动机旋转,A1和A2关闭。因此,电流从右向左流过电动机,如图3的第二 部分所示。现在考虑电动机顺时针方向旋转。现在,如果打开开关A1和A2,则关闭B1和B2。过电动机电流从左至右,如图1日 图3。电流的流动方向与第一个相反,因此我们在电动机端子上看到的电位与第一个相反,因此电动机逆时针旋转。H-BRIDGE就是这样工作的。但是,低功率电机可以由H-BRIDGE IC L293D驱动。
L293D是设计用于驱动低功率直流电动机的H-BRIDGE IC,如图所示。该IC由两个H桥组成,因此可以驱动两个直流电动机。因此,该IC可用于根据微控制器的信号来驱动机器人的电机。
现在,如前所述,该IC具有更改直流电动机旋转方向的能力。这是通过控制INPUT1和INPUT2上的电压电平来实现的。
使能引脚 |
输入引脚1 |
输入引脚2 |
电机方向 |
高 |
低 |
高 |
右转 |
高 |
高 |
低 |
转左 |
高 |
低 |
低 |
停止 |
高 |
高 |
高 |
停止 |
因此,如上图所示,对于顺时针旋转,2A应该较高,而1A应该较低。同样,对于逆时针方向,1A应该为高,2A应该为低。
如图所示,Arduino UNO具有6个PWM通道,因此我们可以在这六个引脚中的任何一个上获得PWM(可变电压)。在本教程中,我们将使用PIN3作为PWM输出。
硬件: ARDUINO UNO,电源(5v),100uF电容器,LED,按钮(两个),10KΩ电阻(两个)。
软体: arduino IDE(Arduino nightly)。
电路原理图
该电路按照上面显示的电路图连接在试验板上。但是,在连接LED端子时必须注意。尽管在这种情况下按钮显示弹跳效果,但不会引起很大的错误,因此我们这次不必担心。
来自UNO的PWM很容易,通常情况下为PWM信号设置ATMEGA控制器并不容易,我们必须定义许多寄存器和设置以获取准确的信号,但是在ARDUINO中我们不必处理所有这些事情。
默认情况下,所有头文件和寄存器都是由ARDUINO IDE预先定义的,我们只需要调用它们,就可以在适当的引脚上获得PWM输出。
现在要在适当的引脚上获得PWM输出,我们需要做三件事:
|
首先,我们需要从六个引脚中选择PWM输出引脚,然后我们需要将该引脚设置为输出。
接下来,我们需要通过调用函数“ analogWrite(pin,value)”来启用UNO的PWM功能。这里的“引脚”代表需要PWM输出的引脚号,我们将其设为“ 3”。因此,在PIN3上,我们将获得PWM输出。
值是开启占空比,介于0(始终关闭)和255(始终开启)之间。我们将通过按按钮增加和减少此数字。
UNO的最大分辨率为“ 8”,因此不能再进一步了,因此其值在0-255之间。但是,可以通过使用命令“ analogWriteResolution()”来降低PWM的分辨率,在方括号中输入一个4-8的值,可以将其值从四位PWM更改为八位PWM。
该开关将改变直流电动机的旋转方向。