步进电机是经过特殊设计的步进电机。步进电机的速度取决于施加在其上的电信号的速率。不同的模式可以控制步进电机的方向和旋转类型。主要有两种类型的步进电机,单极和双极。单极型更易于操作,控制和获取。在本教程的此处,我们将步进电机与PIC微控制器PIC16F877A连接。
我们正在为该项目使用28BYJ-48 步进电机,它便宜且容易获得。它是5V DC单极步进电机。我们还使用了随该电机提供的模块,该模块包含ULN2003步进电机驱动器IC。ULN2003是达林顿对阵列,可用于驱动该电机,因为PIC微控制器无法提供足够的电流来驱动。ULN2003A能够以600mA的峰值电流驱动500mA的负载。
步进电机:
让我们从数据表中查看28BYJ-48步进电机的规格。
如何旋转步进电机:
如果我们看到数据手册,我们将看到引脚排列。
电机内部有两个中心抽头线圈。红线是两者的共同点,它们将以VCC或5V连接。
其他4条线粉色,红色,黄色和蓝色将根据电信号控制旋转。此外,根据运动情况,可以分3步控制该电动机。 全驱动模式,半驱动模式和波浪驱动模式。
步进电机的三种驱动方式:
全驱动:如果同时给两个定子电磁体通电,则电动机将以全转矩运行,称为全驱动顺序模式。
步 |
蓝色 |
粉 |
黄色 |
橙子 |
1个 |
1个 |
1个 |
0 |
0 |
2 |
0 |
1个 |
1个 |
0 |
3 |
0 |
0 |
1个 |
1个 |
4 |
1个 |
0 |
0 |
1个 |
半驱动:如果交替给一相和两相通电,则电动机将以半驱动模式运行。它用于提高角度分辨率。缺点是在此运动中产生的扭矩较小。
步 |
蓝色 |
粉 |
黄色 |
橙子 |
1个 |
1个 |
0 |
0 |
0 |
2 |
1个 |
1个 |
0 |
0 |
3 |
0 |
1个 |
0 |
0 |
4 |
0 |
1个 |
1个 |
0 |
5 |
0 |
0 |
1个 |
1个 |
6 |
0 |
0 |
0 |
1个 |
7 |
1个 |
0 |
0 |
1个 |
8 |
1个 |
0 |
0 |
0 |
波形驱动:在此模式下,一个定子电磁铁打开。它遵循与全驱动模式相同的4个步骤。它以低扭矩消耗了低功率。
步 |
蓝色 |
粉 |
黄色 |
橙子 |
1个 |
1个 |
0 |
0 |
0 |
2 |
0 |
1个 |
0 |
0 |
3 |
0 |
0 |
1个 |
0 |
4 |
0 |
0 |
0 |
1个 |
我们之前已经将步进电机与其他微控制器连接:
步进电机也可以在没有任何微控制器的情况下进行控制,请参阅此步进电机驱动器电路。
ULN2003步进电机驱动器:
让我们了解由ULN2003 IC组成的分线板。了解针脚非常重要。
在黄色部分是用来连接的电动机,该红色部分则呈现出跳线,它放置跳线,它将使电机续流二极管的保护是非常重要的。在粉红色的输入是针对微控制器连接。
我们将在顺时针方向以全驱动模式旋转电动机,然后在逆时针方向以波驱动模式再次旋转电动机。最后查看演示视频。
所需组件
- 图片16F877A
- 编程套件
- 面包板
- 20Mhz晶体
- 33pF圆盘电容器– 2个
- 4.7k电阻
- 伯格电线和大头针
- ULN2003A接线板以及28BYJ-48步进电机。
- 连接其他电线
- 5V电源设备或额定500mA的壁式适配器
电路图和说明
在电路图中,左侧显示了PIC16F877A,右侧显示了ULN2003A连接。ULN2003和步进电机部件在分支板内部。
从分线板到微控制器的连接将是-
A. IN1 => Pin33
B. IN2 => Pin34
C. IN3 => Pin35
D. IN4 => Pin36
我已连接好所有组件和您的硬件,以使用PIC微控制器旋转步进电机。
如果您不熟悉PIC单片机,请按照PIC单片机入门指南中的说明操作。
代码说明
本教程的末尾提供了演示视频,给出了基于PIC的步进电机驱动器的 完整代码。和往常一样,我们需要在pic微控制器中设置配置位,然后从 void main 函数开始 。
这些是微控制器单元和库头文件的配置位的宏。
#define _XTAL_FREQ 200000000 //延迟中使用的晶体频率 #define speed 1 //速度范围10到1 10 =最低,1 =最高 #define step 250 //将要走多少步 #define顺时针0 //顺时针方向宏 #define anti_clockwise 1 //逆时针方向宏
在第一行中,我们定义了延迟例程所需的晶体频率。其他宏用于定义与用户相关的选项。
如果您看到该代码,则定义了三个功能,可以在顺时针和逆时针方向的三种模式下驱动电动机。这是三个功能:
1. void full_drive(字符方向)
2. void half_drive(字符方向)
3. void wave_drive(字符方向)
在下面给出的完整代码中检查这些函数的定义:
现在处于 空主 功能中,我们将根据步长使用全驱动模式顺时针驱动电动机,并在几秒钟的延迟后,再次使用波形驱动模式逆时针旋转电动机。
void main(void) { system_init(); while(1){ / *顺时针以全驱动模式驱动电动机* / for(int i = 0; i
这就是我们可以使用PIC单片机旋转步进电机的方法。步进电机在CNC机器,机器人和其他嵌入式应用中非常有用。