锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

单片机学习 10-步进电机

时间:2022-09-19 15:00:00 双极系列电源连接器单极电连接器连接器s10b45a单极连接器

步进电机

本次主要介绍了步进电机的结构、工作原理和电机参数,最通过实验实现步进电机的运动
简单控制。本章的功能是:通过 ULN2003 驱动模块控制 28BYJ48 按下步进电机的运行方向和速度 KEY1 按钮可调节电机旋转方向;按下 KEY2 按钮,电机加速;按下 KEY3 按钮,电机减速。本章可参考上述实验章节。

步进电机简介

步进电机是将电脉冲信号转换为角位移或线位移的开环控制元件。在非超载情况下,电机的速度和停止位置仅取决于脉冲信号的频率和脉冲数量,而不受负载变化的影响,即向电机添加脉冲信号,电机转动步距角。这种线性关系的存在,加上步进电机只有周期性误差,没有累积误差。在速度、位置等控制领域使用步进电机控制变得非常简单。虽然步进电机得到了广泛的应用,但步进电机不能像普通的直流电机那样常规使用。控制系统必须由双环脉冲信号、功率驱动电路等组成。因此,充分利用步进电机并不容易,它涉及机械、电机、电子和计算机等专业知识。下图为混合步进电机组成图。

在这里插入图片描述

步进电机工作原理

当电流通过定子绕组时,定子绕组通常会产生一矢量磁场。磁场驱动转子旋转一定角度,使转子的一对磁场方向与定子的磁场方向一致。当定子的矢量磁场旋转角度时。转子也随磁场转动。每次输入个电脉冲,电机就会转动一个角度。其输出的角位移与输入的脉冲数成正比,速度与脉冲频率成正比。改变绕组通电的顺序,电机就会反转。因此,步进电机的旋转可以控制脉冲的数量、频率和电机各相绕组的通电顺序。具体看下图:

步进电机极性区分

步进电机分为单极步进电机和双极步进电机;如下图所示:

左边是单极步进电机,右边是双极步进电机。从上图不难看出区别。单双极性是指一个步进电机里面有几种电流的流向,左侧的五线四相步进电机就是单极性的步进电机,图中的红色箭头为电流的走向,四根线的电流走向汇总到公共线,所以称之为单极性电机;但是右侧则不同,电机中有两个电流的回路,两个电流的回路自然就是双极性,所以称之为双极性电机。

单极性绕组

单极步进电机采用单极绕组。一个电极上有两个绕组,当一个绕组通电时产生北极磁场;另一个绕组通电时产生南极磁场。它被称为单极绕组,因为从驱动器到线圈的电流不会反向。

双极性绕组

双极步进电机采用双极绕组。绕组中的电流通过使用每个相位的绕组
反向,电磁极性反向。电气原理图和下图中典型的两相双极驱动输出步骤
进一步阐述了步进顺序。如图所示,转换只使用绕组简单地改变电流的方向,
可以改变组的极性。

永磁步进电机包括永磁转子、线圈绕组和导磁定子。只要线圈通电,就会根据电磁铁的原理产生磁场,分为南北极,如上图所示;通过改变步进电机定子的磁场,转子会因磁场的变化而旋转。同样,依次改变通电顺序可以使电机旋转。

双极步进电机驱动原理

下图是步进电机的双极步进顺序。第一步:将 A 根据电磁铁的原理,相通电产生磁性,磁场将转子固定在第一步,因为异性相吸;第二步:当 A 相关闭,B 当相通电时,转子会旋转 90°;第三步:B 相关闭、A 相通电,但极性与第一 1 相反,这促使转子再次旋转 90°。第四步:A 相关闭、B 极性与第相通电 2 步相反。重复这个顺序,促使转子按顺序 90°顺时针旋转步距角。

右手螺旋定则,如果A电流从左向右流动,则电流产生的磁场为N极

上图中显示的步进顺序是单相激励步进,也可以理解为每次通电只有一个磁相,或者 A 相,要么 B 相;但更常用的是双相激励,但在转换过程中,一次只能转换一次,详见下图:

上图显示了两个相同通电的旋转顺序。与单相激励不同,单相通电后固定在与定子对面的绕组极性上,但转子固定在两个绕组极性之间;此时,通电顺序变成 AB 同时通电。

在双相激励的过程中,也可以添加一个关闭相位的状态,产生半步现象,将步进电机的整个步距角分为两个,例如,一个 90°步进电机将每半步移动一次 45°,具体见下图。

  1. A 相通电,B 相不通电

  2. A、B 相同的电流产生相同的磁性

  3. B 相通电,A 断电

  4. B 相通电,A 电流相等,产生相同的磁性

  5. A 相通电,B 断电

  6. A、B 相同的电流产生相同的磁性

  7. B 相通电,A 断电

  8. B 相通电,A 相通电,且电流相等,产生相同磁性

其中 1~4 步与 5~8 步骤的电流方向相反(电流相反,电磁极性相反),导致顺时针旋转。同样,逆时针可以逆转通电顺序。

单极步进电机驱动原理

类似于双极步进电机的驱动,单极步进电机可分为整步和半步驱动模式。不同的是,双极步进电机可以通过改变电流的方向来改变每个阶段的磁场方向,但单极步进电机不能。它有一个公共端,这直接决定了电流的方向。具体旋转顺序见下图:

上图是单极步进电机的整个旋转过程,其中在图中分为 5 根线,分别是 A、B、C、D 和公共端( ),公共端需要一直通电,剩下的 ABCD 只要相要有相通低电平,就可以形成电路产生磁场。图中的通电顺序是 A->B->C->D,可完成上图顺时针旋转,逆时针旋转只需倒序即可。

以上是单相通电产生的整个旋转,也可以产生两相通电。两个相邻的相通电,使两个相邻的相产生电路和磁场。图中的通电顺序为AB->BC->CD->DA,逆时针旋转的顺序也是如此。详见下图:

以上两张图清楚地描述了单极步进电机的通电顺序和旋转过程。综合这两张图是单极步进电机的半步通电顺序。详见下图:

上图兼容了前两张图的所有特征,也可以说前两张图是这张图的子集,图中的通电顺序是:A->AB->B->BC->C->CD->D->DA 转子一次只走半步 45 度,所以这也被称为半步驱动,与整步相比半步的旋转方式旋转起来更加的顺滑。

细分驱动原理

对于细分驱动的原理,不分单极性步进电机,下图以单极性为例:

上图为双相激励;图中(a)为 A 相电流很大,B 相的电流极其微弱,接近 0;图 ? 为 A 相和 B 相电流相同,电流决定磁场,所以 A 相和 B 磁场相也相同,(a) 和(c)可以是极限特殊情况,然后看图片(b)和图(d)这两个是因为 A 相和 B 相的电流产生不同的位置;可以得出结论,改变定子的电流比可以使转子在任何角度停止。细分的原理是,通过改变定子的电流比,改变转子在一个步骤中的不同位置,可以将一个步骤分为多个步骤。

在上图中,一个步骤被分成 4 步来跑,从(a)~(d)是 A 相电流逐渐减小,B 如果驱动器的细分能力强,相电流逐渐增大的过程可分为32 细分、64 细分等;这不仅提高了步进电机旋转的平滑度,也提高了每一步的精度。细分驱动具有旋转平稳、精度高、扭矩大的特点,但控制复杂,一般需要特殊芯片,如东芝 TB67S10xA 系列步进电机细分驱动芯片最多可以使用 1 个整步分为 32 个小步。

步进电机技术指标

静态技术指标

? 相数:产生不同的对极 N、S 磁场的激磁线圈对数也可以理解为步进电机中线圈的组数,其中两相步进电机的步距角为 1.8°,三相步进电机步距角为1.5°,步进电机相数越多,步距角越小。
? 拍数:完成磁场周期性变化所需的脉冲数或导电状态 n 表示或指电机转动齿距角所需的脉冲数。以四相电机为例,有四相四拍运行模式AB-BC-CD-DA-AB,四相八拍操作模式即 A-AB-B-BC-C-CD-D-DA-A。
? 步距角:脉冲信号对应的电机旋转角可以简单地理解为脉冲信号驱动角。它写在电机上,通常 42 步进电机的步距角为 1.8°
? 定位扭矩:电机转子本身的
定扭矩(由磁场齿形的谐波和机械误差引起)。
? 静态扭矩:当电机在额定静态电压下不旋转时,电机轴的锁定扭矩。该扭矩是衡量电机体积的标准,与驱动电压和驱动电源无关。

动态技术指标

? 步距角精度:步进电机转动步距角的理论值与实际值之间的误差。以百分比表示:误差/步距角 *100%。
? 失步:电机运行时的步数不等于理论步数。它也可以被称为失步,通常是由于负载过大或频率过快。例如,发送三个脉冲,只接收两个脉冲。
? 失衡角:转子齿轴偏移定子齿轴角,电机运行存在失调角,由失调角产生的误差,采用细分驱动是不能解决的。
• 最大空载起动频率:在不加负载的情况下,能够直接起动的最大频率。
• 最大空载的运行频率:电机不带负载的最高转速频率。
• 运行转矩特性:电机的动态力矩取决于电机运行时的平均电流(而非静态电流),平均电流越大,电机输出力矩越大,即电机的频率特性越硬。
• 电机正反转控制:通过改变通电顺序而改变电机的正反转。

28BYJ-48 步进电机简介

​ 28BYJ48 步进电机自带减速器,为四相无线步进电机,直径为 28mm,实物如下所示:

​ 28BYJ48 电机内部结构等效图如下所示:

​ 28BYJ48 步进电机旋转驱动方式如下表:

​ 28BYJ48 步进电机主要参数如下所示:

​ 在上图中 28BYJ48 步进电机主要参数中可以看到有一个减速比:1:64,步进角为 5.625/64 度,如果需要转动一圈,那么需要 360/5.625*64=4096 个脉冲信号。

​ 减速比这个和之前介绍的直流减速电机有点类似,所以 28BYJ48 步进电机实际上是:减速齿轮+步进电机组成,28BYJ48 步进电机减速齿轮实物图如下所示:

​ 减速齿轮计算方法如下所示:

硬件设计

VCC连接步进电机的公共端,out分别连接A,B,C,D四个极。

软件编程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iefujD9M-1656508849062)(C:\Users\Administrator.20170218-154935\AppData\Roaming\Typora\typora-user-images\image-20220628223116037.png)]

#include"reg52.h"

typedef unsigned char u8;
typedef unsigned int u16;

//按教程的参数表来分配
sbit IN1_D=P1^0;//橙
sbit IN1_C=P1^1;//黄
sbit IN1_B=P1^2;//粉
sbit IN1_A=P1^3;//蓝

sbit KEY1=P3^0;//这是A5-A7的对应分配.而A2-A4中的P31指定连接KEY1,P30指定连接KEY2
sbit KEY2=P3^1;
sbit KEY3=P3^2;
sbit KEY4=P3^3;

#define KEY1_PRESS 1
#define KEY2_PRESS 2
#define KEY3_PRESS 3
#define KEY4_PRESS 4
#define KEY_UNPRESS 0

#define STEPMOTOR_MAXSPEED 1
#define STEPMOTOR_MINSPEED 5
void delay_1ms(u16 ms)
{ 
        
	u16 i,j;
	for(i=ms;i>0;i--)
		for(j=110;j>0;j--);//注意分号
}
void delay_10us(u16 ten_us)
{ 
        
		while(ten_us--);
}

u8 key_scan(u8 mode)
{ 
        
	static u8 key=1;
	
	if(mode)key=1;//mode为假,单次扫描;mode为真,多次扫描
	if(key==1&&(KEY1==0||KEY2==0||KEY3==0||KEY4==0))
	{ 
        
				delay_10us(10000);//消抖处理10ms
				key=0;
				if(KEY1==0)
					return KEY1_PRESS;
				else if(KEY2==0)
					return KEY2_PRESS;
				else if(KEY3==0)
					return KEY3_PRESS;
				else if(KEY4==0)
					return KEY4_PRESS;
	}else if(KEY1==1&&KEY2==1&&KEY3==1&&KEY4==1)//按键松开
		{ 
        
			key=1;
		}	
		return KEY_UNPRESS;//返回0
}	

void step_motor_28BYJ48_send_pulse(u8 step,u8 dir)//step为步数,dir为方向
{ 
        	
	u8 temp=step;
	if(dir==0)//如果为0就反方向转动
		temp=step-7;
	 switch(temp)
	 { 
        
			case 1: IN1_A=1;IN1_B=0;IN1_C=1;IN1_D=0;break;
			case 2: IN1_A=1;IN1_B=1;IN1_C=0;IN1_D=0;break;
			case 3: IN1_A=1;IN1_B=1;IN1_C=0;IN1_D=1;break;
			case 4: IN1_A=1;IN1_B=0;IN1_C=0;IN1_D=1;break;
			case 5: IN1_A=1;IN1_B=0;IN1_C=1;IN1_D=1;break;
			case 6: IN1_A=0;IN1_B=0;IN1_C=1;IN1_D=1;break;
			case 7: IN1_A=0;IN1_B=1;IN1_C=1;IN1_D=1;break;
			case 8: IN1_A=0;IN1_B=1;IN1_C=1;IN1_D=0;break;
	 }
}
void main()
{ 
        
		u8 key=0;//保存变量返回值
		u8 dir=0;
		u8 step=0;
		u8 speed=STEPMOTOR_MAXSPEED;
		while(1)
		{ 
        
		key=key_scan(0);
		if(key==KEY1_PRESS)
			dir=!dir;
		else if(key==KEY2_PRESS)//加速
		{ 
        
			if(speed>STEPMOTOR_MAXSPEED)
				speed--;
		}
		else if(key==KEY2_PRESS)//减速
		{ 
        
			if(speed<STEPMOTOR_MINSPEED)
				speed++;
		}
		step_motor_28BYJ48_send_pulse(++step,dir);
		if(step==8)step=1;
		delay_1ms(speed);
	}
}
锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章