IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 单片机学习 10-步进电机 -> 正文阅读

[嵌入式]单片机学习 10-步进电机

步进电机

本次主要从步进电机的结构、工作原理、电机参数分别介绍,最后通过实验来实现步进电机运动的
简单控制。本章所要实现的功能是:通过 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);
	}
}
  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章           查看所有文章
加:2022-07-05 23:38:13  更:2022-07-05 23:39:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/18 14:39:54-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码