步进电机是直流无刷电机,可以从0 0逐步旋转到360 0。步进电机使用电子信号逐步使电机旋转,每个信号以固定增量(一步)旋转轴。旋转角度通过施加一定的信号序列来控制。与伺服电机不同,步进电机可以使用微控制器的GPIO引脚而不是PWM引脚来驱动,并且可以旋转(+360 0)和(-360 0)。信号的顺序决定步进电机的顺时针和逆时针方向。要控制电动机的速度,我们只需要更改施加的控制信号的速率即可。步进电机逐步旋转。步进电机有多种步进模式,例如全步,半步和微步。要了解有关步进电机的基本知识,理论和工作原理的更多信息,请单击链接。
我们以前将步进电机与许多微控制器接口:
- 步进电机与ARM7-LPC2148的接口
- 步进电机与Arduino Uno的接口
- 步进电机与MSP430G2的接口
- 步进电机与STM32F103C8的接口
- 步进电机与PIC单片机的接口
- 步进电机与8051单片机的接口
- 步进电机与Raspberry Pi的接口
在本教程中,我们将使用Atmel Studio 7.0将28BYJ-48步进电机与Atmega16 AVR微控制器接口。步进电机的额定工作电压为5V。我们将使步进电机与两个电机驱动器(即ULN2003和L293)连接。两者都将由5V电源驱动。为了简化接口,我们使用两个电机驱动器的预构建模块。您也可以使用ULN2003和L293D独立IC。电线和跳线的数量可以更多,因此在连接所有连接时请务必小心。
所需组件
- 步进马达(28BYJ-48)
- ULN2003模块/ L293D电机驱动器
- Atmega16单片机IC
- 16Mhz晶体振荡器
- 两个100nF电容器
- 两个22pF电容器
- 按钮
- 跳线
- 面包板
- USBASP v2.0
- LED(任何颜色)
步进电机的引脚说明
使用ULN2003模块的步进电机控制电路图
使用ULN2003时,如下图所示连接所有组件。类似地,我们将在下一步中使用L293D连接它。我们正在使用Atmega16的PORTA连接两个电机驱动器的步进电机。无需连接步进电机的5V引脚。仅需要线圈销即可移动步进电机。引脚顺序对于驱动步进电机非常重要,因为线圈的通电应该是为了获得步进。此项目使用ULN2003的四个输入和ULN2003的四个输出。输入将连接到PORTA引脚,输出将连接到步进电机信号引脚。同样,在需要时,在复位引脚上连接一个按钮即可复位Atmega16。将Atmega16与适当的晶体振荡器电路连接。所有系统将由5V电源供电。
以下是ULN2003电机驱动器模块的实际图片:
下面我们给出了与ULN2003和L293D相连的Atmega16引脚连接,以旋转步进电机。步进电机与L293D模块的接口将在后面的部分中说明,请记住,步进电机控制仅需要一个模块ULN2003或L293D。
INPUT的引脚连接如下:
Atmega16 |
ULN2003 |
L293D |
A0 |
IN1(PIN1) |
IN1(PIN2) |
A1 |
IN2(PIN2) |
IN2(PIN7) |
A2 |
IN3(PIN3) |
IN3(PIN10) |
A3 |
IN4(PIN4) |
IN4(PIN15) |
OUTPUT的引脚连接如下:
步进电机 |
ULN2003 |
L293D |
橙子 |
输出1(PIN16) |
OUT1(PIN3) |
黄色 |
OUT2(PIN15) |
OUT2(PIN6) |
粉 |
输出3(PIN14) |
输出3(PIN11) |
蓝色 |
输出4(PIN13) |
输出4(PIN14) |
使用L293D模块进行步进电机控制的电路图:
用AVR ATmega16控制步进电机
如前所述,与伺服电动机不同,步进电动机需要外部驱动器,例如ULN2003或L293D电动机驱动器。因此,只需如上所述连接Circuit并上传最后给出的main.c程序。
草图展示了步进电机在两侧(即顺时针和逆时针方向)旋转。如果要沿一个方向旋转步进器,只需在草图中注释掉另一个方向的代码行即可。
下面给出了用于控制步进电机的完整AVR代码。代码很简单,很容易理解。下面给出了两个代码,一个用于使用ULN2003旋转步进电机,第二个用于L293D模块。
连接USBASP v2.0并按照此链接中的说明使用USBASP和Atmel Studio 7.0对Atmega16 AVR微控制器进行编程。只需构建草图并使用外部工具链上传即可。
演示视频的完整代码如下。