基于单片机的步进电机控制.docx
《基于单片机的步进电机控制.docx》由会员分享,可在线阅读,更多相关《基于单片机的步进电机控制.docx(27页珍藏版)》请在冰点文库上搜索。
基于单片机的步进电机控制
基于单片机的步进电机控制
前言
摘要:
步进电机是一种进行精确步进运动的机电执行元件,它广泛应用于工业机械的数字控制,为使系统的可靠性、通用性、可维护性以及性价比最优,根据控制系统功能要求及步进电机应用环境,确定了设计系统硬件和软件的功能划分,从而实现了基于8051单片机的四相步进电机的开环控制系统。
控制系统通过单片机存储器、I/O接口、中断、键盘、LED显示器的扩展、步进电机的环形分频器、驱动及保护电路、人机接口电路、中断系统及复位电路、单电压驱动电路等的设计,实现了四相步进电机的正反转,急停等功能。
为实现单片机控制步进电机系统在数控机床上的应用,系统设计了两个外部中断,以实现步进电机在某段时间内的反复正反转功能,也即数控机床的刀架自动进给运动,随着单片机技术的不断发展,单片机在日用电子产品中的应用越来越广泛,自六十年代初期以来,步进电机的应用得到很大的提高。
人们用它来驱动时钟和其他采用指针的仪器,打印机、绘图仪,磁盘光盘驱动器、各种自动控制阀、各种工具,还有机器人等机械装置。
此外作为执行元件,步进电机是机电一体化的关键产品之一,被广泛应用在各种自动化控制系统中,随着微电子和计算机技术的发展,它的需要量与日俱增,在各个国民经济领域都有应用。
步进电机是机电数字控制系统中常用的执行元件,由于其精度高、体积小、控制方便灵活,因此在智能仪表和位置控制中得到了广泛的应用,大规模集成电路的发展以及单片机技术的迅速普及,为设计功能强,价格低的步进电机控制驱动器提供了先进的技术和充足的资源。
关键词:
步进电机;驱动机构;变频调速;单片机;转动
目录
一、步进电机的介绍3
1、步进电机概述3
2、步进电机的工作原理3
3、步进电机的特点4
4、步进电机的分类与选择5
二、AT89C51简介5
三、系统硬件设计6
1、控制电路7
2、最小系统7
3、驱动电路7
4、显示电路8
四、系统软件设计8
1、主程序设计8
2、定时中断设计9
3、外部中断设计10
五、系统调试与检测12
1、程序编译时的错误与解决方法12
2、步进电机转动错误及解决方法12
六、设计总结12
七、参考文献:
13
附录Ⅰ:
14
附录Ⅱ:
16
一、步进电机的介绍
1、步进电机概述
步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。
在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。
这一线性关系的存在,加上步进电机只有周期性的误差而无累积误差等特点。
使得在速度、位置等控制领域用步进电机来控制变的非常的简单。
正常情况下,步进电机转过的总角度和输入的脉冲数成正比;连续输入一定频率的脉冲时,电动机的转速与输入脉冲的频率保持严格的对应关系,不受电压波动和负载变化的影响。
由于步进电动机能直接接收数字量的输入,所以特别适合于微机控制。
步进电机的基本参数:
1、相数:
产生不同对N、S磁场的激磁线圈对数。
常用m表示。
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、步进电机的工作原理
步进电机的工作就是步进转动,其功用是将脉冲电信号变换为相应的角位移或是直线位移,就是给一个脉冲信号,电动机转动一个角度或是前进一步。
步进电机的角位移量与脉冲数成正比,它的转速与脉冲频率(f)成正比,在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。
如下所示的步进电机为一四相步进电机,采用单极性直流电源供电。
只要对步进电机的各相绕组按合适的时序通电,就能使步进电机步进转动。
图1是该四相反应式步进电机工作原理示意图1。
图1 四相步进电机步进示意图
开始时,开关SB接通电源,SA、SC、SD断开,B相磁极和转子0、3号齿对齐,同时,转子的1、4号齿就和C、D相绕组磁极产生错齿,2、5号齿就和D、A相绕组磁极产生错齿。
当开关SC接通电源,SB、SA、SD断开时,由于C相绕组的磁力线和1、4号齿之间磁力线的作用,使转子转动,1、4号齿和C相绕组的磁极对齐。
而0、3号齿和A、B相绕组产生错齿,2、5号齿就和A、D相绕组磁极产生错齿。
依次类推,A、B、C、D
四相绕组轮流供电,则转子会沿着A、B、C、D方向转动。
单四拍、双四拍与八拍工作方式的电源通电时序与波形分别如图2-2所示:
图2步进电机工作时序波形图
3、步进电机的特点
1步进电机的角位移与输入脉冲数严格成正比,因此当它转一转后,没有累计误差,具有良好的跟随性。
2由步进电机与驱动电路组成的开环数控系统,既非常方便、廉价,也非常可靠。
同时,它也可以有角度反馈环节组成高性能的闭环数控系统。
3步进电机的动态响应快,易于启停、正反转及变速。
4速度可在相当宽的范围内平滑调节,低速下仍能保证获得很大的转矩,因此一般可以不用减速器而直接驱动负载。
5步进电机只能通过脉冲电源供电才能运行,它不能直接用交流电源或直流电源。
6步进电机自身的噪声和振动比较大,带惯性负载的能力强。
4、步进电机的分类与选择
现在比较常用的步进电机包括反应式步进电机(VR)、永磁式步进电机(PM)、混合式步进电机(HB)和单相式步进电机等。
反应式步进电动机采用高导磁材料构成齿状转子和定子,其结构简单,生产成本低,步距角可以做的相当小,一般为三相,可实现大转矩输出,步进角一般为1.5度,但噪声和振动都很大。
反应式步进电机的转子磁路由软磁材料制成,定子上有多相励磁绕组,利用磁导的变化产生转矩,但动态性能相对较差。
永磁式步进电机转子采用多磁极的圆筒形的永磁铁,在其外侧配置齿状定子。
用转子和定子之间的吸引和排斥力产生转动,它的出力大,动态性能好,但步距角一般比较大。
一般为两相,转矩和体积较小,步进角一般为7.5度或15度。
混合式步进电机是指混合了永磁式和反应式的优点。
它又分为两相和五相:
两相步进角一般为1.8度而五相步进角一般为0.72度。
这种步进电机的应用最为广泛,它是PM和VR的复合产品,其转子采用齿状的稀土永磁材料,定子则为齿状的突起结构。
此类电机综合了反应式和永磁式两者的优点,步距角小,出力大,动态性能好,是性能较好的一类步进电动机,在计算机相关的设备中多用此类电机。
步进电机有步距角(涉及到相数)、静转矩、及电流三大要素组成。
一旦三大要素确定,步进电机的型号便确定下来了。
二、AT89C51简介
Atmel公司生产的89C51单片机是一种低功耗/低电压‘高性能的8位单片机,它采用CMOS和高密度非易失性存储技术,而且其输出引脚和指令系统都与MCS-51兼容;片内的FlashROM允许在系统内改编程序或用常规的非易失性编程器来编程,内部除CPU外,还包括256字节RAM,4个8位并行I/O口,5个中断源,2个中断优先级,2个16位可编程定时计数器,89C51单片机是一种功能强、灵活性高且价格合理的单片机,完全满足本系统设计需要。
主要特性:
·与MCS-51兼容
·4K字节可编程闪烁存储器
·全静态工作:
0Hz-24Hz
·三级程序存储器锁定
·128*8位内部RAM
·32可编程I/O线
·两个16位定时器/计数器
·5个中断源
·可编程串行通道
·低功耗的闲置和掉电模式
·片内振荡器和时钟电路
图3单片机的引脚排列
三、系统硬件设计
本设计的硬件电路只要包括控制电路、最小系统、驱动电路、显示电路四大部分。
最小系统只要是为了使单片机正常工作。
控制电路只要由开关和按键组成,由操作者根据相应的工作需要进行操作。
显示电路主要是为了显示电机的工作状态和转速。
驱动电路主要是对单片机输出的脉冲进行功率放大,从而驱动电机转动。
1、控制电路
根据系统的控制要求,控制输入部分设置了启动控制,换向控制,加速控制和减速控制按钮,分别是K1、K2、S2、S3,控制电路如图4所示。
通过K1、K2状态变化来实现电机的启动和换向功能。
当K1、K2的状态变化时,内部程序检测P1.0和P1.1的状态来调用相应的启动和换向程序,发现系统的电机的启动和正反转控制。
根据步进电机的工作原理可以知道,步进电机转速的控制主要是通过控制通入电机的脉冲频率,从而控制电机的转速。
对于单片机而言,主要的方法有:
软件延时和定时中断在此电路中电机的转速控制主要是通过定时器的中断来实现的,该电路控制电机加速度主要是通过S2、S3的断开和闭合,从而控制外部中断根据按键次数,改变速度值存储区中的数据(该数据为定时器的中断次数),这样就改变了步进电机的输出脉冲频率,从而改变了电机的转速。
2、最小系统
单片机最小系统或者称为最小应用系统,素质用最少的元件组成的单片机可以工作的系统,对51系列单片机来说,最小系统一般应该包括:
单片机、复位电路、晶振电路。
复位电路:
使用了独立式键盘,单片机的P1口键盘的接口。
该设计要求只需4个键对步进电机的状态进行控制,但考虑到对控制功能的扩展,使用了6路独立式键盘。
复位电路采用手动复位,所谓手动复位,是指通过接通一按钮开关,使单片机进入复位状态,晶振电路用30PF的电容和一12M晶体振荡器组成为整个电路提供时钟频率。
如图5示。
晶振电路:
8051单片机的时钟信号通常用两种电路形式电路得到:
内部震荡方式和外部中断方式。
在引脚XTAL1和XTAL2外部接晶振电路器(简称晶振)或陶瓷晶振器,就构成了内部晶振方式。
由于单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自激振荡器并产生振荡时钟脉冲。
内部振荡方式的外部电路如图5示。
其电容值一般在5~30pf,晶振频率的典型值为12MHz,采用6MHz的情况也比较多。
内部振荡方式所得的时钟信号比较稳定,实用电路实用较多。
3、驱动电路
通过ULN2803构成比较多的驱动电路,电路图如图6所示。
通过单片机的P1.0~P1.3输出脉冲到ULN2803的1B~4B口,经信号放大后从1C~4C口分别输出到电机的A、B、C、D相。
4、显示电路
在该步进电机的控制器中,电机可以正反转,可以加速、减速,其中电机转速的等级分为七级,为了方便知道电机的运行状态和电机的转速的等级,这里设计了电机转速和电机的工作状态的显示电路。
在显示电路中,主要是利用了单片机的P0口和P2口。
采用两个共阳数码管作显示。
第一个数码管接的a、b、c、d、e、f、g、h分别接P0.0~P0.7口,用于显示电机正反转状态,正转时显示“1”,反转时显示“一”,不转时显示“0”。
第二个数码管的a、b、c、d、e、f、g、h分别接P2.0~P2.7口,用于显示电机的转速级别,共七级,即从1~7转速依次递增,“0”表示转速为零。
四、系统软件设计
通过分析可以看出,实现系统功能可以采用多种方法,由于随时有可能输入加速、加速信号和方向信号,因而采用中断方式效率最高,这样总共要完成4个部分的工作才能满足课题要求,即主程序部分、定时器中断部分、外部中断0和外部中断1部分,其中主程序的主要功能是系统初始参数的设置及启动开关的检测,若启动开关合上则系统开始工作,反之系统停止工作;定时器部分控制脉冲频率,它决定了步进电机转速的快慢;两个外部中断程序要做的工作都是为了完成改变速度这一功能。
下面分析主程序与定时器中断程序及外部中断程序。
1、主程序设计
主程序中要完成的工作主要有系统初始值的设置、系统状态的显示以及各种开关状态的检测判断等。
其中系统初始状态的设置内容较多,该系统中,需要初始化定时器、外部中断;对P1口送初值以决定脉冲分配方式,速度值存储区送初值决定步进电机的启动速度,对方向值存储区送初值决定步进电机旋转方向等内容。
若初始化P1=11H、速度和方向初始值均设为0,就意味着步进电机按四相单四拍运行,系统上电后在没有操作的情况下,步进电机不旋转,方向值显示“0”,速度值显示“0”,主程序流程图如图4所示。
2、定时中断设计
步进电机的转动主要是给电机各绕组按一定的时间间隔连续不断地按规律通入电流,步进电机才会旋转,时间间隔越短,速度就越快。
在这个系统中,这个时间间隔是用定时器重复中断一定次数产生的,即调节时间间隔就是调节定时器的中断次数,因而在定时器中断程序中,要做的工作主要是判断电机的运行方向、发下一个脉冲,以及保存当前的各种状态。
程序流程图如图5所示。
3、外部中断设计
外部中断所要完成的工作是根据按键次数,改变速度值存储区中的数据(该数据为定时器的中断次数),这样就改变了步进电机的输出脉冲频率,也就是改变了电机的转速。
速度增加按钮S2为INT0中断,其程序流程为原数据,当值等于7时,不改变原数值返回,小于7时,数据加1后返回;速度减少按钮S3,当原数据不为0,减1保存数据,原数据为0则保持不变。
程序流程图如图6所示。
五、系统调试与检测
1、程序编译时的错误与解决方法
把编好的程序(包括正反转程序、停止程序、显示程序等)合理安排好结合到一起进行编译。
由于编译只能检查是否存在语法错误,所以还要看是否存在逻辑错误。
程序修改好以后,当显示编译0错误,0警告的时候,这说明已经没有语法错误了,是否有逻辑错误还要看接上电路板通过仿真以后,步进电机能否正常转动,显示是否正常。
2、步进电机转动错误及解决方法
步进电机一开始不能正常转动,以为是电路焊接有问题,为了防止再次出现虚焊,首先将电路板用万用表检查了一遍,没问题。
程序也是正确的。
后来仔细看了步进电机工作原理,原来步进电机要正常实现正反转,四个相序必须弄清。
把电机接上电源,用高电平分别接触电机的引线,每接触一下电机就会向前或向后转动一下,经过几次试验,终于搞清了电机的四个相序,排列顺序分别是1—A,2—C,3—B,4—D。
弄清了相序,把电路板重新布线,焊接好,结果电机能够正常转动了。
六、设计总结
为期一周的单片机课程设计已经结束了,虽然感到时间有点儿紧,但是我还是圆满地完成了这次设计。
通过本次设计使我对步进电动机有了深入的了解,平时我们接触的电动机主要是直流电动机和交流电动机,很少见到步进电动机,所以我对步进电机几乎是一无所知。
在辅导老师指导下,然后自己在图书馆翻阅有关书籍和上网,搜集到了不少有关步进电动机的知识。
经过我的不懈努力,把步进电机的结构、工作原理及控制其正、反转等一一弄明白了,但是这离课程设计需要掌握的知识相差甚远,我只能不断的向老师和同学请教,然后仔细的揣摩。
在这次课程设计中,通过用单片机控制步进电机的正、反转,我也对单片机的知识也进行了复习和巩固。
在学习单片机的时候觉得学了一点用都没有,通过这次设计让我明白了单片机的功能如此的强大。
实践是检验真理的唯一标准,学习再多的理论也只能纸上谈兵,只有把理论应用到实践中,才能检验出理论的真伪。
通过这次的课程设计,我不仅把单片机的有关知识系统的复习了一遍,而且学会了各种设计电路的软件,提高自己的实际动手能力和独立思考的能力,这次设计实在是让我获益匪浅。
七、参考文献:
1.张毅坤、陈善久、裘雪红:
单片微型计算机原理及应用,西安电子科技大学出版社
2.汪道辉:
单片机系统设计与实践,电子工业出版社出版
3.胡辉:
单片机原理及应用设计,中国水利水电出版社
4.张靖武、周灵彬:
单片机系统的PROTEUS设计与仿真,电子工业出版社出版
5、张家生:
电机原理与拖动基础,北京邮电大学出版社
6、余辉晴:
模拟电子技术基础,北京电子工业出版社
7、单片机原理、应用与PROTEUS仿真,北京电子工业出版社
附录Ⅰ:
附录Ⅱ:
系统源程序:
SPEEDEQU40H;SPEED为转速等级标志,共10级,即1~10
COUNTEQU41H;COUNT中断次数标志
FXEQU11H;FX为方向标志
STAOSTEQUP3.4;启动/停止位
FAXIAEQUP3.5;方向个改变位
QIEHUANEQUP3.6;用于点动和自动的切换
ZUODEQUP3.0
YOUDEQUP3.1
ORG0000H
LJMPSTART
ORG0003H;外部中断0入口地址,加速子程序
LJMPUP
ORG000BH;定时器0中断入口地址,控制中断次数来达到控制转速
LJMPDTQ0
ORG0013H;外部中断1入口地址,减速子程序
LJMPDOWN
ORG0100H
;/*****程序开始,初始化*****/
START:
MOVSPEED,#00H;
MOV20H,#0AAH;用于转速等级显示存储器
MOV21H,#0AH;用于方向标志位显示存储器
MOV22H,#0AH;用于旋转速度显示存储器
MOV23H,#0AH
MOV24H,#0AH
MOVR1,#33H
MOVR2,#11H
MOVFX,#00H
MOVTMOD,#01H;工作于定时、软件置位启动!
模式1(16位计时器)
MOVTH0,#0F8H
MOVTL0,#0F0H
MOVCOUNT,#01H
SETBET0;定时/计数器允许中断
SETBIT0;外部中断为电平触发方式,低电平有效
SETBIT1
SETBEX0;外部允许中断
SETBEX1
MOVSP,#60H;重设堆栈指针
;/*****主程序*****/
MAIN1:
LCALLDISPLAY
MAIN2:
JBSTAOST,DG
CLRTR0;停止定时
LJMPSTART
DG:
JBQIEHUAN,FUCK
CLREA
LCALLDIANDONG;可能还要延时
LCALLDISPLAY2
LJMPMAIN2
FUCK:
SETBEA;开总中断
LCALLQIDONG
LJMPMAIN1
;/*****显示子程序1*****/
DISPLAY:
MOVA,20H
ANLA,#0FH
MOV2FH,A;转换等级低位,存入2FH
MOVA,20H
ANLA,#0F0H
SWAPA
MOV2EH,A;转换等级高位,存入2EH
MOVA,21H
ANLA,#0FH
MOV2DH,A;
MOVA,22H;
ANLA,#0FH;
MOV2CH,A;转换速度低位,存入2CH
MOVA,20H;
ANLA,#0F0H;
SWAPA;
MOV2BH,A;转换速度高位,存入2BH
;/*****数码管动态扫描显示*****/
DISP:
MOVDPTR,#LED
MOVA,2FH
MOVCA,@A+DPTR
MOVP0,A
CLRP2.6
LCALLDELAY1
SETBP2.6;显示转速级别低位
MOVA,2EH
MOVCA,@A+DPTR
MOVP0,A
CLRP2.7
LCALLDELAY1
SETBP2.7;显示转速级别高位
MOVA,2DH
MOVCA,@A+DPTR
MOVP0,A
CLRP2.5
LCALLDELAY1
SETBP2.5;显示电机转向
MOVA,22H
MOVCA,@A+DPTR
MOVP0,A
CLRP2.4
LCALLDELAY1
SETBP2.4;显示速度百位
MOVA,23H
MOVCA,@A+DPTR
MOVP0,A
CLRP2.3
LCALLDELAY1
SETBP2.3;显示速度十位
MOVA,24H
MOVCA,@A+DPTR
MOVP0,A
CLRP2.2
LCALLDELAY1
SETBP2.2;显示速度个位
JBQIEHUAN,SMD
MOVA,#98H
MOVP0,A
CLRP2.1
LCALLDELAY1
SETBP2.1
SMD:
RET
;/*****显示子程序2*****/
DISPLAY2:
MOVA,#0A1H
MOVP0,A
CLRP2.7
LCALLDELAY1
SETBP2.7
MOVA,#092H
MOVP0,A
CLRP2.6
LCALLDELAY1
SETBP2.6
MOVA,#0BFH
MOVP0,A
CLRP2.5
LCALLDELAY1
SETBP2.5
MOVA,#0F9H
MOVP0,A
CLRP2.4
LCALLDELAY1
SETBP2.4
MOVA,#080H
MOVP0,A
CLRP2.3
LCALLDELAY1
SETBP2.3
MOVA,#0C6H
MOVP0,A
CLRP2.2
LCALLDELAY1
SETBP2.2
RET
;/*****延时子程序1*****/
DELAY1:
MOVR5,#0F0H
DJNZR5,$
RET
;/*****启动/停止电机服务子程序*****/
QIDONG:
SETBTR0;开启定时/计数器
JBFAXIA,DG1
MOV21H,#0AH;显示“-”
MOVDPTR,#TSUDU1
MOVA,SPEED
MOVCA,@A+DPTR
MOV22H,A
MOVDPTR,#TSUDU2
MOVA,SPEED
MOVCA,@A+DPTR
MOV23H,A
MOVDPTR,#TSUDU3
MOVA,SPEED
MOVCA,@A+DPTR
MOV24H,A
MOVA,SPEED
CJNEA,#10,SH
MOVA,SPEED
ADDA,#06H
MOV20H,A
LJMPOUT
SH:
MOV20H,SPEED
LJMPOUT
DG1:
MOV21H,#0BH;显示“H”表示正向旋转
MOVDPTR,#TSUDU1
MOVA,SPEED
MOVCA,@A+DPTR
MOV22H,A
MOVDPTR,#TSUDU2
MOVA,SPEED
MOVCA,@A+DPTR
MOV23