本文介绍了基于郭天祥51开发板控制三相步进电机的实现方法。系统采用LCD1602显示屏、红外遥控模块,通过Keil5开发环境编程。重点阐述了步进电机驱动原理,包括三相步进电机的接线方式(IN1-IN4对应4个IO口)和八拍驱动时序。给出了实现正反转的相序表代码(phaseCW和phaseCCW),以及通过StepperDrive函数将相序值转换为实际引脚电平的逻辑。最后提供了红外控制和矩阵按键控制的完整代码及Proteus仿真图下载链接。
一.红外模块控制步进电机
1.步进电机驱动相关知识:
步进电机的相位>=2,意思是步进电机相位可分位2相(相当于一个正级和负级,两根线),3相(需要搭配驱动板)等等。该课设采用的是三相步进电机。新版的郭天祥开发板已经自带了步进电机驱动口,只需要把步进电机插入口即可。旧版的郭天祥开发板没有自带驱动口,所以需要自己手接步进电机和电源。
驱动板的连接:首先需要给他供5~12v的电压。(IN1,IN2,IN3,IN4)分别接入单片机的4个IO口,通过控制IO口的高低电平顺序,让步进电机里面的转子转动起来,就实现了步进电机转动的效果。
图中的1,2,3,4分别代表着IN1,IN2,IN3,IN4,通过变换器高低电平,实现转动。
上图为4个IN1,IN2,IN3,IN4(也就是四个输入口(IN1,IN2,IN3,IN4)所对应的开发板中的4个不同的IO口)所需要高低电平信号。上面三幅图对应的从左到右对应的是单四拍,双四拍,八拍不同的驱动方法。我们这个程序采用的是八拍的方法。
下面我们逐步分析驱动步进电机所需要给4个IO分别输入什么电平能够把步进电机转动起来。
如上图,我们假设A为IN1,B为IN2,C为IN3,D为IN4,我们要让步进电机连续不断的转起来我们就要从从图中的第1步执行到第8步,然后再从第1步执行到第8步,这样来回的不断执行,就能使得步进电机旋转起来。
第1步 IN1 = 1;IN2 = 0;IN3 = 0;IN4 = 0;
第2步 IN1 = 1;IN2 = 1;IN3 = 0;IN4 = 0;
第3步 IN1 = 0;IN2 = 1;IN3 = 0;IN4 = 0;
第4步 IN1 = 0;IN2 = 1;IN3 = 1;IN4 = 0;
第5步 IN1 = 0;IN2 = 0;IN3 = 1;IN4 = 0;
第6步 IN1 = 0;IN2 = 0;IN3 = 1;IN4 = 1;
第7步 IN1 = 0;IN2 = 0;IN3 = 0;IN4 = 1;
第8步 IN1 = 1;IN2 = 0;IN3 = 0;IN4 = 1;
(对于基础不好的同学再次声明,IN1,IN2,IN3,IN4为接入到51单片机的4个不同的IO口中);
sbit IN1 = P2^4; // 对应ULN2003的IN1
sbit IN2 = P2^5; // 对应ULN2003的IN2
sbit IN3 = P2^6; // 对应ULN2003的IN3
sbit IN4 = P2^7; // 对应ULN2003的IN4
// 四相八拍相序表(28BYJ-48标准相序)
uchar code phaseCW[8] = {0x08,0x0C,0x04,0x06,0x02,0x03,0x01,0x09}; // 正转
uchar code phaseCCW[8] = {0x09,0x01,0x03,0x02,0x06,0x04,0x0C,0x08}; // 反转
void StepperDrive(uchar phase) //将步进电机的相位值转换为实际引脚电平信号
{
IN1 = (phase & 0x01) ; // 取最低位,同学们需要知道“与”的性质
IN2 = (phase & 0x02)>>1; // 取次低位
IN3 = (phase & 0x04)>>2; // 取次高位
IN4 = (phase & 0x08)>>3; // 取最高位
}
void main()
{
while(1)
{
StepperDrive(phaseCW[phase_index]);//驱动步进电机进行旋转
if(++phase_index >= 8) phase_index = 0;//当完成第八步,返回到执行第一步,循环往复
}
}
到这里,就可以实现步进电机正旋转了!!!!!
StepperDrive(phaseCCW[phase_index]);
if(++phase_index >= 8) phase_index = 0;
只要把上面代码替换掉while循环里的代码,步进电机就是反转,可增加按键,对其进行控制。
红外接收控制步进电机完整代码如下:(内含Proteus仿真图)
链接: https://pan.baidu.com/s/112iK3BjcKxlyNCIg1vpgWQ?pwd=http 提取码: http
矩阵按键控制步进电机完整代码如下:(内含Proteus仿真图)
链接: https://pan.baidu.com/s/1jJWO_fq_9Y8tIRdySrAIuw?pwd=http 提取码: http