天天看点

基于单片机的步进电机调速系统设计(#0509)

电机控制在监控器材、医疗器械、电动阀门、电动窗帘、家用电器、旋转灯具等方面有着广泛的应用,因此设计一款可控性好、精度高的电机控制系统是一件非常有意义的事。

功能描述

1、采用51单片机作为主控制器;

2、采用DC-5V步进减速电机(步进角度5.625°,减速比1/64);

3、采用集成芯片ULN2003作为电机驱动;

4、可通过按键控制正反转及速度;

5、四位数码管:第1位显示电机的正反转,第3位和第4位显示电机运行速度的档数;

6、红色LED:一个电源指示,其他四个灯不同的循环闪烁周期指示电机转速变化。

基于单片机的步进电机调速系统设计(#0509)

按键说明

KEY1:正转控制; KEY2:反转控制;

KEY3:加速控制; KEY4:减速控制;

KEY5:暂停/继续;

整体方案

基于单片机的步进电机调速系统设计(#0509)

电路设计

采用Altium Designer作为电路设计工具。Altium Designer通过把原理图设计、PCB绘制编辑、拓扑逻辑自动布线、信号完整性分析和设计输出等技术的完美融合,为设计者提供了全新的设计解决方案,使设计者可以轻松进行设计,熟练使用这一软件必将使电路设计的质量和效率大大提高。

基于单片机的步进电机调速系统设计(#0509)

仿真设计

主程序设计

void main()
{
  T0_T1_init();
  buf[1] = 10;//不显示
  while(1)
  {
    display();
    if(s1 == 0)
    {
      delay1m(3);
      if(s1 == 0)
      {
        flag1 = 0;//正转
        buf[0] = 0;//最高位显示0
    //    haha = 0x00;//停止
         
      }
      while(!s1) display();
    }
    if(s2 == 0 )
    {
    
      delay1m(3);
      if(s2 == 0)
      {
      
        flag1 = 1;//反转
        buf[0] = 1;//最高位显示1
    //    haha = 0x00;//停止
      }
      while(!s2) display();
    }
    if(s3 == 0)    //速度加1档
    {
      delay1m(3);
      if(s3 == 0)
      {
        k++;
        TR1=1;
        if(k > 10 )
        {
          k = 1;
        }
        buf[2]= k/10;
        buf[3]= k%10;
      } 
      while(!s3) display();
    }
    if(s4 == 0)  //速度减1档
    {
      delay1m(3);
      if(s4 == 0)
      {
        k--;
        TR1=1;
        if(k <= 0)
        {
          k = 10;
        }
        buf[2]= k/10;
        buf[3]= k%10;
      }
      while(!s4) display();
    }
    if(s5==0)
    {
      delay1m(3);
      if(s5==0)
      {
        if(TR1==1)
        {
          pause=k;
          k=0;
          TR1=0;
          a=b=c=d=0;
        }
        else if(TR1==0)
        {
          k=pause;
          TR1=1;
        }
        buf[2]= k/10;
        buf[3]= k%10;
        while(!s5) display();
      }
    }
  } 

}      

源文件获取