黄工无刷电机学习
直播中

我有一车切糕

11年用户 580经验值
私信 关注
[问答]

51单片机是如何控制步进电机正反转的?

如何采用uln2003模块来链接步进电机?
51单片机是如何控制步进电机正反转的?

回帖(1)

张荷

2021-10-13 14:17:30
此次采用uln2003模块来链接步进电机;
## 步进电机工作原理
步进电机是一种将电脉冲信号转换成相应角位移或线位移的电动机。每输入一个脉冲信号,转子就转动一个角度或前进一步,其输出的角位移或线位移与输入的脉冲数成正比,转速与脉冲频率成正比。
步进电动机的结构形式和分类方法较多,一般按励磁方式分为磁阻式、永磁式和混磁式三种;按相数可分为单相、两相、三相和多相等形式。
因此我们可以控制单片机I/O口的电平来控制步进电机,此次设计中采用四相单拍工作方式,在这种工作方式下,A、B、C、D 三相轮流通电,电流切换三次,磁场旋转一周,转子向前转过一个齿距角。因此这种通电方式叫做四相单四拍工作方式。


  • 电机正转代码 unsigned char code tableZ[8]={0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09};
  • 电机反转代码 unsigned char code tableF[8]={0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08};

代码如下

/=========自动调压控制程序=========================================
   #include //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
   ***it KEY1=P3^3;//高端行程开关自定义
   ***it KEY2=P3^4;//低端行程开关自定义
   ***it LED1=P1^0;//定义电机正转驱动端口
   ***it LED2=P1^1;//定义电机反转驱动端口
  //*------------------------------------------------
                  
//------------ 主函数------------------------------------*/
   void main (void)
   {
P1=0x00;//程序初始化
P1=0xFF;//P1口置1
   LED1=1;
   LED2=0;//初始化电机正机正转
   while (1)   //主循环
   {
   if(!KEY1)//是否检测到高端行程开关若是电机反转
   {
   LED1=0; //电机反转控制
   LED2=1;
  }
           
   if(!KEY2)//电机反转是否检测到低端行程开关
{
   LED1=1;//若是电机正转
   LED2=0;
    }      
  }
}
protel仿真图如下



1 举报

更多回帖

发帖
×
20
完善资料,
赚取积分