搜索
您的当前位置:首页正文

基于单片机的步进电机

来源:好走旅游网
中北大学信息商务学院计算机控制课程设计说明书

1 引言

步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。这一线性关系的存在,加上步进电机只有周期性频率来实现步进电机的调速,因为步进电机每给一个脉冲就的误差而无累积误差等特点。使得在速度、位置等控制领域用步进电机来控制变的非常的简单。步进电机的调速一般是改变输入步进电机的脉冲的转动一个固定的角度,这样就可以通过控制步进电机的一个脉冲到下一个脉冲的时间间隔来改变脉冲的频率,延时的长短来具体控制步进角来改变电机的转速,从而实现步进电机的调速。步进电动机由于用其组成的开环系统既简单、廉价,又非常可行,因此在打印机等办公自动化设备以及各种控制装置等众多领域有着极其广泛的应用。

2 步进电机简介

2.1步进电机概述

步进电动机是用电脉冲信号进行控制,将电脉冲信号转换成相应的角位移或线位移的微电动机,它最突出的优点是可以在宽广的频率范围内通过改变脉冲频率来实现调速,快速起停、正反转控制及制动等,并且用其组成的开环系统既简单、廉价,又非常可行,因此在打印机等办公自动化设备以及各种控制装置等众多领域有着极其广泛的应用。同时,步进电机在工业控制生产以及仪器上应用十分广泛。通常都要对一些机械部件平移和转动,对移动的位移和角度控制要求较高,一般的电机很难实现对位置和角度的精确控制,在一些智能化要求较高的场合,用模拟芯片控制器及信号发生器来控制有一定局限性。而用单片机控制步进电机可以改善性能,步进电机能实现精确的角度和转数,具有良好的步进特性,最适合数字控制。在工控设备中得到了广泛的应用。而单片机具有芯片体积小,兼容性强,低电压地,低功耗等特点,使单片机成为驱动步进电机的最佳空盒子单元。所以单片机控制步进电机系统控制精度高,运行稳定,得以广泛运用。

(1)步进电机的静态指标术语:

1)相数:产生不同对N、S磁场的激磁线圈对数。常用m表示。

第 1 页 共 16 页

中北大学信息商务学院计算机控制课程设计说明书

2)拍数:完成一个磁场周期性变化所需脉冲数或导电状态用n表示,或指电机转过一个齿距角所需脉冲数,以四相电机为例,有四相四拍运行方式即AB-BC-CD-DA-AB,四相八拍运行方式即 A-AB-B-BC-C-CD-D-DA-A.

3)步距角:对应一个脉冲信号,电机转子转过的角位移用θ表示。θ=360°(转子齿数*运行拍数),以常规二相电机、四相电机,转子齿为50齿的电机为例。四拍运行时步距角为θ=360度/(50*4)=1.8度(俗称整步),八拍运行时步距角为θ=360度/(50*8)=0.9度(俗称半步)。

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

5)静转矩:电机在额定静态电作用下,电机不作旋转运动时,电机转轴的锁定力矩。此力矩是衡量电机体积(几何尺寸)的标准,与驱动电压及驱动电源等无关。

虽然静转矩与电磁激磁安匝数成正比,与定齿转子间的气隙有关,但过分采用减小气隙,增加激磁安匝来提高静力矩是不可取的,这样会造成电机的发热及机械噪音。 (2)步进电机动态指标及术语:

1)步距角精度:

步进电机每转过一个步距角的实际值与理论值的误差。用百分比表示:误差/步距角*100%。不同运行拍数其值不同,四拍运行时应在5%之内,八拍运行时应在15%以内。

2)失步:

电机运转时运转的步数,不等于理论上的步数。称之为失步。 3)失调角:

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

4)最大空载起动频率:

电机在某种驱动形式、电压及额定电流下,在不加负载的情况下,能够直接起动的最大频率。

5)最大空载的运行频率:

电机在某种驱动形式,电压及额定电流下,电机不带负载的最高转速频率。 6)运行矩频特性:

电机在某种测试条件下测得运行中输出力矩与频率关系的曲线称为运行矩频特性,

第 2 页 共 16 页

中北大学信息商务学院计算机控制课程设计说明书

这是电机诸多动态曲线中最重要的,也是电机选择的根本依据。电机一旦选定,电机的静力矩确定,而动态力矩却不然,电机的动态力矩取决于电机运行时的平均电流(而非静态电流),平均电流越大,电机输出力矩越大,即电机的频率特性越硬。 要使平均电流大,尽可能提高驱动电压,使采用小电感大电流的电机。

7)电机的共振点:

步进电机均有固定的共振区域,二相感应子式步进电机和四相感应子式步进电机的共振区一般在180-250pps之间(步距角1.8度)或在400pps左右(步距角为0.9度),电机驱动电压越高,电机电流越大,负载越轻,电机体积越小,则共振区向上偏移,反之亦然,为使电机输出电矩大,不失步和整个系统的噪音降低,一般工作点均应偏移共振区较多。

8)电机正反转控制:

当电机绕组通电时序为A-AB-B-BC-C-CD-D-DA时为正转,通电时序为DA-D-CD-C-BC-B-AB-A时为反转。 2.2步进电机的工作原理

步进电机的工作就是步步进电机是纯粹的数字控制电动机。它将电脉冲信号转换成角位移,即给一个脉冲信号,步进电机就转动一个角度,因此非常适合于单片机控制。近几十年来,数字技术、计算机技术和永磁材料的迅速发展,为步进电机的应用开辟了广阔的前景。随着计算机技术的发展,使得以单片机为核心的交流电机全数字化控制系统性能不断提高。单片机可用于逆变器脉冲信号的产生、各种反馈信号的处理、多种计算和控制功能以及故障保护和诊断,具有精度高、速度快、存储量大和逻辑判断功能等特点,改善了系统的可靠性,降低了控制器硬件的成本。

一般步进电机控制器都用硬件实现,虽然电路可以做到了高集成度,可价格较贵,功能相对较单一,并且设计要求有所改变,就得改变整个硬件电路,比较麻烦。而采用单片机的软件和硬件结合进行控制,运用其强大的可编程和运算功能,充分利用单片机的各种资源,能灵活的对步进电机进行控制,实现其不同模式、步数、正反转、转速等控制如果需改变控制要求,一般只需改变软件就能适应新的环境,所以本论文采用以AT89C51单片机位控制核心的设计思路进行的,再加上外围电路的设计,例如显示电路、键盘设计、看门狗复位电路设计及对步进电机保护电路等,能

第 3 页 共 16 页

中北大学信息商务学院计算机控制课程设计说明书

够对步进电机进行灵活的控制。

步进转动,其功用是将脉冲电信号变换为相应的角位移或是直线位移,就是给一个脉冲信号,电动机转动一个角度或是前进一步。步进电机的角位移量与脉冲数成正比,它的转速与脉冲频率(f)成正比,在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。 2.3步进电机的分类与选择

现在比较常用的步进电机包括反应式步进电机(VR)、永磁式步进电机(PM)、混合式步进电机(HB)和单相式步进电机等。

反应式步进电动机采用高导磁材料构成齿状转子和定子,其结构简单,生产成本低,步距角可以做的相当小,一般为三相,可实现大转矩输出,步进角一般为1.5度,但噪声和振动都很大。反应式步进电机的转子磁路由软磁材料制成,定子上有多相励磁绕组,利用磁导的变化产生转矩,但动态性能相对较差。

永磁式步进电机转子采用多磁极的圆筒形的永磁铁,在其外侧配置齿状定子。用转子和定子之间的吸引和排斥力产生转动,它的出力大,动态性能好,但步距角一般比较大。一般为两相,转矩和体积较小,步进角一般为7.5度或15度。

混合式步进电机是指混合了永磁式和反应式的优点。它又分为两相和五相:两相步进角一般为1.8度而五相步进角一般为 0.72度。这种步进电机的应用最为广泛,它是PM和VR的复合产品,其转子采用齿状的稀土永磁材料,定子则为齿状的突起结构。此类电机综合了反应式和永磁式两者的优点,步距角小,出力大,动态性能好,是性能较好的一类步进电动机,在计算机相关的设备中多用此类电机。

步进电机有步距角(涉及到相数)、静转矩、及电流三大要素组成。一旦三大要素确定,步进电机的型号便确定下来了。

3 系统硬件设计

第 4 页 共 16 页

3.1 系统总览 中北大学信息商务学院计算机控制课程设计说明书

第 5 页 共 16 页

中北大学信息商务学院计算机控制课程设计说明书

3.2键盘设计

该系统中只运用到三个控制按钮,即 “正反”,“换挡”,“启停”,由于按钮较少,所以采用独立键电路,这种按键电路的按键结构相对行列式按键电路更简单,更使人易懂。

3.3驱动电路设计

驱动电路可分为:三极管直接驱动,采用斩波恒流驱动方式和芯片驱动电路等。驱动电路的性能直接关系到步进电机走步的准确与稳定。本电路采用驱动芯片ULN2803。ULN2803是一种大电流高电压型器件,外电路简单。

第 6 页 共 16 页

中北大学信息商务学院计算机控制课程设计说明书

3.4状态显示部分

4 系统软件设计

4.1程序流程图

本设计采用Keil C51软件环境,C语言编写。

初始化判断是否到极限值(+—999)是否判断按键是否按下是否开定时器开中断关总中断记录步数中断调用正转或反转子程序修改步数调用显示子程序

图3-1主程序流程图 图3-2正反转流程图

第 7 页 共 16 页

中北大学信息商务学院计算机控制课程设计说明书

重装初值送个、十、百位产生脉冲判断是否到100次脉冲是关定时器否判断步数是否为正否是继续等待中断送正号送负号

图3-3中断子程序流程图 图3-4显示子程序流程图

4.2程序设计

根据要求,可以将程序分为以下几个部分: (1)键盘输入程序设计

本系统使用的键盘较少,因此采用独立式键盘接口设计。独立式键盘适用于按键数量较少的场合。独立键盘工作原理:通过上拉电阻接到+5V上。无按键,处于高电平状态,有键按下电平为低。在消除抖动影响上是可以采用了软件消抖方法:在第一次检测到有键按下时,执行一段延时子程序后(约5ms),再确认电平是否仍保持闭合状态电平,如果保持闭合状态电平,则确认真正有键按下,进行相应处理工作,消除了抖动的影响。

(2)步进电机运行步数控制程序

此方案采用单相和双相交差通电处理方式。此方法具有运行速度稳定,运行步数准确无误等优点。

第 8 页 共 16 页

中北大学信息商务学院计算机控制课程设计说明书

4.3直流电机驱动程序 #include

sbit KEY0=P3^0; //控制按键,为高电平时,直流电机工作。为0时启动步进电机; sbit KEY1 = P3^2; //控制直流电机调速按键 sbit KEY2 = P3^3; //控制步进电机正反转、停机按键 sbit PWM = P1^5; //定义直流电机PWM输出调速端口

unsigned char CYCLE; //定义周期 该数字X基准定时时间 如果是10 则周期是10 x 0.1ms

unsigned char PWM_Num=0;//直流电机速度档位; unsigned char PWM_ON ;//定义高电平时间

unsigned char Flag;//定义步进电机正反转和停止标志位

unsigned char code F_Rotation[4]={0x1f,0x2f,0x4f,0x8f}; //步进电机正转表格 unsigned char code B_Rotation[4]={0x8f,0x4f,0x2f,0x1f}; //步进电机反转表格 /******************************************************************/ /* 延时函数 */ /******************************************************************/ void Delay(unsigned int i)//延时 {

while(--i); }

/******************************************************************/ /* 主函数 */ /******************************************************************/ main() {

unsigned char i; EX0=1;

//外部中断0开,控制直流电机

EX1=1; //外部中断1开,控制步进电机 IT0=1;

//边沿触发

第 9 页 共 16 页

中北大学信息商务学院计算机控制课程设计说明书

IT1=1; //边沿触发 EA=1; //全局中断开 P0=0x06

;

//开机显示直流电机1档位

TMOD|=0x01;//定时器设置 1ms in 12M crystal TH0=(65536-1000)/256;

TL0=(65536-1000)%256;//定时1mS ET0=1; //打开中断 TR0=1;

CYCLE = 10;// 时间可以调整 这个是10步调整 周期10ms,PWM的周期不变,8位PWM就是256步

while(KEY0==1) //P3.0为高电平,则直流电机运转; {

switch(PWM_Num){

case 0:P0=0x06;PWM_ON=0;break;//高电平时长,P0口段码为1; case 1:P0=0x5B;PWM_ON=4;break;//P0口段码为2; case 2:P0=0x4F;PWM_ON=6;break;//P0口段码为3 case 3:P0=0x66;PWM_ON=8;break; //P0口段码为4

case 4:P0=0x6D;PWM_ON=10;break; //P0口段码为停机S

default:break; } }

while(KEY0==0) //KEY0按下,则步进电机工作。 {

while(Flag==0) {

P0=0x71;//显示 F 标示正转 for(i=0;i<4;i++) //4相 {

P2=F_Rotation[i]; //输出对应的相 可以自行换成反转表格

Delay(500); //改变这个参数可以调整电机转速 ,数字越小,转速越大

第 10 页 共 16 页

中北大学信息商务学院计算机控制课程设计说明书

}

}

while(Flag==1) {

P0=0x7C;//显示 b 标示反转 for(i=0;i<4;i++) //4相 {

P2=B_Rotation[i]; //输出对应的相

Delay(500); //改变这个参数可以调整电机转速 ,数字越小,转速越大

}

}

while(Flag==2) //停止 {

P0=0x6D;// 显示 S P2=0x0F; } } }

/******************************************************************/

/* 定时器中断函数,产生PWM波。 */

/******************************************************************/ void tim(void) interrupt 1 using 1 {

static unsigned char count; // TH0=(65536-1000)/256;

TL0=(65536-1000)%256;//定时1mS if (count==PWM_ON) {

第 11 页 共 16 页

中北大学信息商务学院计算机控制课程设计说明书

PWM = 1; }

count++;

if(count == CYCLE) { count=0;

if(PWM_ON!=0) PWM = 0;

} }

/******************************************************************/

/* 中断0入口函数 ,控制直流电机转速 */

/******************************************************************/ void ISR_Key1(void) interrupt 0 using 1 {

//定义档位 Delay(500); if(!KEY1) {

PWM_Num++; //s3按下触发一次 if(PWM_Num==5) PWM_Num=0; } }

/******************************************************************/

/* 中断入口函数,控制步进正反转、停机 */

/******************************************************************/

第 12 页 共 16 页

中北大学信息商务学院计算机控制课程设计说明书

void ISR_Key2(void) interrupt 2 using 1 {

Delay(500); if(!KEY2) {

Flag++; //s3按下触发一次 if(Flag==3) Flag=0; } }

4.4步进电机驱动程序 #include

unsigned char Flag;//定义正反转和停止标志位 sbit KEY = P3^3;

unsigned char code F_Rotation[4]={0xf1,0xf2,0xf4,0xf8}; //正转表格 unsigned char code B_Rotation[4]={0xf8,0xf4,0xf2,0xf1}; //反转表格 /******************************************************************/ /* 延时函数 */ /******************************************************************/ void Delay(unsigned int i)//延时 {

while(--i); }

/******************************************************************/ /* 主函数 */ /******************************************************************/ main() {

unsigned char i;

第 13 页 共 16 页

中北大学信息商务学院计算机控制课程设计说明书

EX1=1; //外部中断0开 IT1=1; //边沿触发 EA=1; //全局中断开

while(Flag==0) {

P0=0x71;//显示 F 标示正转 for(i=0;i<4;i++) //4相 {

P1=F_Rotation[i]; //输出对应的相 可以自行换成反转表格

Delay(500); //改变这个参数可以调整电机转速 ,数字越小,转速越大

}

}

while(Flag==1) {

P0=0x7C;//显示 b 标示反转 for(i=0;i<4;i++) //4相 {

P1=B_Rotation[i]; //输出对应的相

Delay(500); //改变这个参数可以调整电机转速 ,数字越小,转速越大

}

}

while(Flag==2) //停止 {

P0=0x6D;// 显示 S P1=0; } }

/******************************************************************/

第 14 页 共 16 页

中北大学信息商务学院计算机控制课程设计说明书

/* 中断入口函数 */ /******************************************************************/ void ISR_Key(void) interrupt 2 using 1 {

Delay(500); if(!KEY) {

Flag++; //s3按下触发一次 if(Flag==3) Flag=0; } }

5 系统的调试与测试

把编好的程序(包括正反转程序、停止程序、显示程序等)合理安排好结合到一起进行编译。由于编译只能检查是否存在语法错误,所以还要看是否存在逻辑错误。程序修改好以后,当显示编译0错误,0警告的时候,这说明已经没有语法错误了,是否有逻辑错误还要看接上电路板通过仿真以后,步进电机能否正常转动,显示是否正常。

6 结论

计算机控制课程设计是本科学习阶段一次非常难得的理论与实际相结合的机会,通过这次比较完整的单片机系统设计,各种元器件的选用,各种软件的使用方式,信息远距离传输,抗干扰能力强等问题,随着设计的不断深入而不断熟悉并学会应用的。同时,对硬软件的设计问题深入理解。我摆脱了单纯的理论知识学习状态,和实际设计的结合锻炼了我的综合运用所学的专业基础知识,解决实际工程项目问题的能力,同时也提高我查阅文献资料、设计手册、设计规范以及电脑制图仿真等其他专业能力水平,而且通过对整体的掌控,对局部的取舍,以及对细节的斟酌处理,都使我的能力得到了极大的锻炼,经验得到了丰富,并且意志品质力,抗压能力及耐力也都得到了不同程度的提升。

第 15 页 共 16 页

中北大学信息商务学院计算机控制课程设计说明书

参考文献

[1]张友德.单片微型机原理、应用与实验[M].上海:复旦大学出版社,2005. [2]李夙.异步电动机直接转矩控制[M].北京:机械工业出版社,1998. [3]王鸿钰.步进电机控制入门[M].上海:同济大学出版社,1990.

[4]袁任光,张伟武.电动机控制电路选用与258实例[M].北京:机械工业出版社,2005. [5]王秀和.永磁电机[M].北京: 中国电力出版社,2007.

[6]马忠梅,籍顺心,张凯,马岩 单片机的C语言应用程序设计(第三版)北京:北京航空航天大学出版社,2003.11

[7]王东峰,王会良,董馆强 单片机C语言应用100例 北京:电子工业出版社,2009.3 [8]谭浩强 C程序设计(第三版)北京:清华大学出版社,2005.7

第 16 页 共 16 页

因篇幅问题不能全部显示,请点此查看更多更全内容

Top