郭天祥51单片机驱动步进电机【内含完整代码提供】

本文介绍了基于郭天祥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 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值