一、L298N


单片机无法直接驱动步进电机,需要L298N进行驱动。L298N的最大功耗为20W,驱动部分端子供电范围+5~+30V,控制信号输入电压范围5V/0V,驱动部分峰值电流2A。

二、两相四线制步进电机

1. 技术指标
(1)相数:电机内部的线圈组数。
(2)拍数:完成一个磁场周期性变化所需要脉冲数或导电状态。两相四线电机可以使用单四拍、双四拍和八拍的方式驱动。
(3)步距角:磁场变化一次电机转过的角度,两相四线电机步距角为0.9°/1.8°。
2. 工作原理

如图所示,电机有四条控制信号A+、A-、B+、B-,通过控制这四条引线上的励磁脉冲,就可以控制步进电机的转动。以四拍驱动方式为例,顺时针转动时

STEP A+ A- B+ B-
1 1 0 0 0
2 0 1 0 0
3 0 0 1 0
4 0 0 0 1
**ps:**电动机的旋转方向由脉冲顺序决定,转动速度和脉冲频率有关。

三、接线方法

  • 控制端:IN1、IN2、IN3、IN4接单片机的四个管脚,用于给出脉冲
  • 输入端:5V输入接板载5V,12V输入外接电源
  • 使能端:ENA、ENB接板载5V,默认使能
  • 输出端:OUT1、OUT2、OUT3、OUT4分别接步进电机的四条线红绿黄蓝。

三、Proteus仿真

在Proteus中的接线情况如下图所示:

参考程序如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include<reg52.h>
sbit enable = P3^0;

void delay(int i)
{
int j;
for(;i>0;i--)
for(j=114;j>0;j--);
}

void main()
{
unsigned char step[] = {0x01,0x02,0x04,0x08}; //顺时针转动
//unsigned char istep[] = {0x01,0x02,0x04,0x08}; //逆时针转动
int i=0;
enable=1;
while(1)
{
for(i=0; i<4; i++)
{
P2 = step[i];
delay(200);
}
}
}

仿真结果: