一、实物图(四相五线步进电机,型号: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_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;
}
}
十、流程设计
首先初始化引脚,然后初始化定时器,在定时器中断函数中进行步进电机八步解析,然后根据正转或反转标志位决定正反转。另外,通过比较时间计数值决定步进电机转速,比较节拍数决定步进电机转动角度。