【mcuclub】四相五线步进电机

发布于:2022-11-09 ⋅ 阅读:(11) ⋅ 点赞:(0) ⋅ 评论:(0)

一、实物图(四相五线步进电机,型号:28BYJ-48-5V)

二、原理图

编号 名称 功能
1 IN1 脉冲输入端
2 IN2 脉冲输入端
3 IN3 脉冲输入端
4 IN4 脉冲输入端
8 GND 电源地
9 COM 续流二极管负极的公共端,接电源正
13 OT4 脉冲输出端
14 OT3 脉冲输出端
15 OT2 脉冲输出端
16 OT1 脉冲输出端

三、简介(工作原理)

步进电机是一种将电脉冲信号转换成相应角位移或线位移的电动机。每输入一个脉冲信号,转子就转动一个角度或前进一步,其输出的角位移或线位移与输入的脉冲数成正比,转速和角加速度与脉冲频率成正比(在非超载的情况下)。因此,步进电动机又称脉冲电动机。步进电机作为一种可控制用的特种电机,利用其没有累计误差的特点,广泛的用于各种开环控制。

四、步进电机分类

1、按励磁方式分为:磁阻式(VR)、永磁式(PM)和混磁式(HS);

磁阻式(又称反应式),定子上有绕组、转子由软磁材料组成。结构简单、成本低、步距角小,可达1.2°、但动态性能差、效率低、发热大,可靠性难保证。

永磁式:永磁式步进电机的转子用永磁材料制成,转子的极数与定子的极数相同。其特点是动态性能好、输出力矩大,但这种电机精度差,步矩角大(一般为7.5°或15°)。

混合式:混合式步进电机综合了反应式和永磁式的优点,其定子上有多相绕组、转子上采用永磁材料,转子和定子上均有多个小齿以提高步矩精度。其特点是输出力矩大、动态性能好,步距角小,但结构复杂、成本相对较高。

2、按相数分为:单相、两相、三相和多相等形式;

3、按控制方式来看:开环控制系统、闭环控制系统和半闭环控制系统。

五、步进电机参数

1、相数:步进电机的线圈对数(常见的相数为二、三、四、五相,电机相数不同,步距角也不同)

2、拍数:转子转动一周,定子绕组通电的次数

3、步距角:步进电机接收到一个脉冲信号后,驱动电机按设定的方向转动的一个固定角度。(由转子齿数和运行拍数决定的,一般较大),可以称之为电机固有步距角,并不一定是电机工作时的真正步距角。

步距角θ=360°/mzc

注:m为定子相数;z为转子齿数;c为通电方式(1:单相轮流通电,双向轮流通电;2:单双向轮流通电方式)。

转速公式:n=60f/P(n为转速;f为脉冲频率;P为磁极对数)

扭矩公式:T=9550P/n(P为输出功率,单位Kw;n为电机转速,单位r/min)

4、保持转矩(静转矩):步进电机通电但没有转动时,定子锁住转子的力矩。通常步进电机在低速时的力矩接近保持转矩。步进电机的输出转矩随着速度的增大而不断衰减,输出功率也随着速度的增大而变化。

5、精度:一般步进电机的精度为步进角的3-5%,且不累计。

6、空载启动频率:步进电机在空载情况下能够正常启动的脉冲频率,如果脉冲频率高于该值,电机不能正常启动,可能发生丢步或堵转。在有负载的情况下,电机的启动频率应更低。应经过低启动频率,然后慢慢到达高频。

7、线数:步进电机引出线的条数

8、定位转矩:电机在不通电的状态下,电机转子自身的锁定力矩(由磁场齿形的谐波和机械误差造成的)

9、失调角:转子齿轴线偏移定子齿轴线的角度,电机运转必存在失调角,由失调角产生的误差,采用细分驱动是不能解决的。

六、步进电机的步进方式

1、单拍:(单四拍工作方式)

每次只给一个线圈通电,通过改变每次通电的线圈从而使步进电机转动。以五线四相步进电机为例,假设它的四个线圈叫做 A、B、C、D,那么在单拍工作方式下,线圈的通电方式依次是:A、B、C、D;

2、双拍:(双四拍工作方式)

每次给两个线圈通电,通过改变通电的线圈从而使步进电机转动。

以五线四相步进电机为例,在双拍工作方式下,线圈的通电方式依次是:AB、BC、CD、DA;

3、单双拍(八拍工作方式)

单拍工作方式和双拍工作方式交替进行。

以五线四相步进电机为例,线圈的通电方式依次是:A、AB、B、BC、C、CD、D、DA;

七、步进电机的角度

步距角θ=360°/mzc

注:m为定子相数;z为转子齿数;c为通电方式(1:单相轮流通电,双向轮流通电;2:单双向轮流通电方式)。

以四相八拍步进电机为例,此时步距角最小,为5.625°。但是此步进电机还配有减速齿轮,减速比为1:64。因此,实际上每拍电机转动5.625/64≈0.08789°,即转动一圈需要4096拍。

八:驱动芯片(ULN2003A)

ULN2003是一种新型的七路高耐压、大电流达林顿晶体管驱动IC。可用于驱动继电器、电磁阀、步进电机等。每路输出电流可达500mA。

 九、程序

/****

*******T0计时中断函数

*****/

void Timer0_Handler(void) interrupt 1

{

   static uchar motor_bujin_count = 0;

   static uint motor_step = 0;

   TH0 = (65536-921)/256;           //重新赋初值

   TL0 = (65536-921)%256;

   switch(motor_step % 8)           //步进电机八步解析

   {

      case 0:  MOTOR_IN1=1; MOTOR_IN2=0; MOTOR_IN3=0; MOTOR_IN4=0; break;

      case 1:  MOTOR_IN1=1; MOTOR_IN2=1; MOTOR_IN3=0; MOTOR_IN4=0; break;

      case 2:  MOTOR_IN1=0; MOTOR_IN2=1; MOTOR_IN3=0; MOTOR_IN4=0; break;

      case 3:  MOTOR_IN1=0; MOTOR_IN2=1; MOTOR_IN3=1; MOTOR_IN4=0; break;

      case 4:  MOTOR_IN1=0; MOTOR_IN2=0; MOTOR_IN3=1; MOTOR_IN4=0; break;

      case 5:  MOTOR_IN1=0; MOTOR_IN2=0; MOTOR_IN3=1; MOTOR_IN4=1; break;

      case 6:  MOTOR_IN1=0; MOTOR_IN2=0; MOTOR_IN3=0; MOTOR_IN4=1; break;

      case 7:  MOTOR_IN1=1; MOTOR_IN2=0; MOTOR_IN3=0; MOTOR_IN4=1; break;

   }

   if(flag_bujin_foreward == 1)        //步进电机正转过程

   {

      motor_bujin_count++;

      if(motor_bujin_count > MOTOR_SPEED)

      {

         motor_bujin_count = 0;

         if(motor_step < (MOTOR_ANGLE/180.0*256) * 8)

            motor_step++;

         else

         {

            flag_bujin_foreward = 0;

            flag_bujin_state = 1;

         }

      }

   }

   else if(flag_bujin_reversal == 1)   //步进电机反转过程

   {

      motor_bujin_count++;

      if(motor_bujin_count > MOTOR_SPEED)

      {

         motor_bujin_count = 0;

         if(motor_step > 0)

            motor_step--;

         else

         {

            flag_bujin_reversal = 0;

            flag_bujin_state = 0;

         }

      }

  }

  else                       //步进电机停止

   {

      motor_bujin_count = 0;

      MOTOR_IN1=0; MOTOR_IN2=0; MOTOR_IN3=0; MOTOR_IN4=0;

   }

}

十、流程设计

首先初始化引脚,然后初始化定时器,在定时器中断函数中进行步进电机八步解析,然后根据正转或反转标志位决定正反转。另外,通过比较时间计数值决定步进电机转速,比较节拍数决定步进电机转动角度。