步进电机控制摘要:步进电机是将电脉冲信号转变为角位移或线位移的开环控制元步进电机件。
在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,称为“步距角”,它的旋转是以固定的角度一步一步运行的。
可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
关键词:AT89C51芯片;L298驱动;数码管;步进电机1 引言单片机的应用正在不断深入和创新,作为一门我们专业相当重要的专业课程,同时带动着传统控制检测日新月异的更新。
此次设计利用单片机芯片作为核心部件进行调试与创新,其中对步进电机背景于现状,系统硬件设计,软件设计及其仿真调试过程都做了介绍,是我对步进电机的院里有了深入的了解,也对单片机的设计研发过程以及知识的学习都有了很深的体会和提高。
本控制系统的设计采用单片机芯片控制,通过人为按动各开关实现步进电机的开关,另外还增加了正转、反转、加速、减速的功能。
2 总体设计方案步进电机是将电脉冲信号转变为角位移或线位移的开环控制元步进电机件。
虽然步进电机已被广泛地应用,但步进电机并不能象普通的直流电机,交流电机在常规下使用。
它必须由双环形脉冲信号、功率驱动电路等组成控制系统方可使用。
因此用好步进电机却非易事,它涉及到机械、电机、电子及计算机等许多专业知识。
由此可见:电机的位置和速度由导电次数(脉冲数)和频率成一一对应关系。
而方向由导电顺序决定。
不难推出:电机定子上有m相励磁绕阻,其轴线分别与转子齿轴线偏移1/m,2/m……(m-1)/m,1。
并且导电按一定的相序电机就能正反转被控制——这是步进电机旋转的物理条件。
只要符合这一条件我们理论上可以制造任何相的步进电机,出于成本等多方面考虑,市场上一般以二、三、四、五相为多。
拍数:完成一个磁场周期性变化所需脉冲数或导电状态用n 表示,或指电机转过一个齿距角所需脉冲数,以四相电机为例,有四相拍运行方式即AB-BC-CD-DA-AB,四相八拍运动方式即A-AB-B-BC-C-CD-D-DA-A.注:2相励磁通过的电流是1相励磁时通过电流的2倍,转矩也是1相励磁的2倍。
此时电机的振动较小且应答频率升高,目前仍广泛使用此种方式。
2.1 设计思路使用、控制步进电机必须由环形脉冲,功率放大等组成的控制系统,其方框图2.1如下:图2.1 控制系统组成图脉冲信号一般由单片机或CPU 产生,一般脉冲信号的占空比为0.3-0.4左右,电机转速越高,占空比则越大。
功率放大是驱动系统最为重要的部分。
步进电机在一定转速下的转矩取决于它的动态平均电流而非静态电流(而样本上的电流均为静态电流)。
平均电流越大电机力矩越大,要达到平均电流大这就需要驱动系统尽量克服电机的反电势。
因而不同的场合采取不同的的驱动方式,到目前为止,驱动方式一般有以下几种:恒压、恒压串电阻、高低压驱动、恒流、细分数等。
为尽量提高电机的动态性能,将信号分配、功率放大组成步进电机的驱动电源。
步进电机一经定型,其性能取决于电机的驱动电源。
步进电机转速越高,力距越大则要求电机的电流越大,驱动电源的电压越高。
控制步进电机的速度如果给步进电机发一个控制脉冲,它就转一步,再发一个脉冲,它会再转一步。
两个脉冲的间隔越短,步进电机就转得越快。
调整单片机发出的脉冲频率,就可以对步进电机进行调速。
具体实现用延时时间的长短来决定,程序如下。
DELAY: MOV R6,#125 ;延时50ms脉 冲 信号 信号 分 配 功 率 放 大 步进 电 机负载L1: MOV R5,#200 L2: DJNZ R5,L2 DJNZ R6,L1 RET2.2、步进电机设计方框图图2.1A T89c51 单片机时钟 振荡 器及 RST 信号电机正转反转 1正转2反转 1反转2正转停止 加速减速显示速度图2.2本系统是用单片机软件程序来产生脉冲分配信号,即把数字控制计数的高精度等方面的优势有效地应用于步进电机控制系统,同时本系统设计的步进电机控制器硬件电路十分简单,成本低,使用方便。
本电路包括开关控制电路,时钟电路,功率放大电路等的选择。
3 设计原理分析步进电机是将电脉冲信号转变为角位移或线位移的开环控制元步进电机件。
在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,称为“步距角”,它的旋转是以固定的角度一步一步运行的。
可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
AT89C51芯片简介:AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM —Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
外形及引脚排列如图1。
XTAL1:振荡器反相放大器及内部时钟发生器的输入端。
XTAL2:振荡器反相放大器的输出端。
时钟振荡器:AT89C51中有一个用于构成内部振荡器的高增益反相放大器,引起XTAL1和XTAL2分别是该放大器的输入端和输出端。
这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器。
外接石英晶体及电容C1、C2接在放大器的反馈回路中构成并联振荡电路。
对外接电容C1、C2虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程序及温度稳定性,如果使用石英晶体,推荐使用30pF左右,如果使用陶瓷谐振器建议选择40pF左右。
芯片主要特性〃与MCS-51 兼容,4K字节可编程闪烁存储器,寿命:1000写/擦循环,数据保留时间:10年〃全静态工作:0Hz-24Hz〃三级程序存储器锁定,128*8位内部RAM〃32可编程I/O线,两个16位定时器/计数器,5个中断源〃可编程串行通道,低功耗的闲置和掉电模式,片内振荡器和时钟电路XTAL218XTAL119ALE 30EA31PSEN 29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD 10P3.1/TXD 11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR 16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51+88.8R110kR210kR310kR410kR510kR610k正转反转加速减速R710kC11nFC21nFX1CRYSTALC31nFIN15IN27ENA 6OUT12OUT23ENB 11OUT313OUT414IN310IN412SENSA 1SENSB 15GND8VS 4VCC 9U2L2983.1.1硬件设计及调试图3.1.1 步进电机与单片机连接原理图3.1.2软件设计及调试图3.1.2 程序流程图4 总结与体会这次课程设计是我最喜欢的一次,因为这次课程设计需要动脑动手,把自己课堂上学到的软件和硬件知识全部应用进来。
要想完成好这次课程设计,首先要弄懂步进电机的工作原理,与外部电路的连接,单片机原理,汇编语言等。
这其中有以前课堂上学过的也有需要我们自学研究的,这不仅考察了自己原来的知识程度还加强了我们独立获取知识并加以运用的能力。
结束扫描K1、K3(正加) K1、K4(正减)K2、K3(反加) K2、K4(反减)K5(停止)步数读取按键这次课程设计我收获很多,因为我学到了很多的东西,还制作了自己的东西,使自己很有成就感。
在这么多次课程设计中这次是我最难忘的一次,因为是三人一组团队完成,使我体会到了分工合作的力量与重要性。
虽然电机部分我没有花太多的精力,但通过合理分工,我们仍然按时完成了指定任务,并且通过相互帮助相互指点,使我们对彼此负责的那部分任务都有了更好的了解和掌握。
我想通过这次实验,我对电机的了解扩宽了,对单片机和外围电路的认识也更为清晰了,这为我以后工作提供了坚实的基础。
三个星期很快过去了,看着自己的劳动成果,心里满是欣慰。
最后感谢老师和同学们的悉心指导和帮助。
参考文献[1] 李朝青.单片机原理及接口技术(第三版)[M].北京:北京航空航天大学出版社,2006.12[2] 石磊.Altium designer8.0中文版电路设计标准教程[M].北京:清华大学教育出版社,2009.11[3] 杨天明,陈杰.电机拖动[M]..北京:北京大学出版社,2006.8附录1设计程序代码org 00hjmp disp ;显示初始速度为0stop:orl p1,#0ffh ; 步进电机停止loop:jnb p0.0,for2 ; 如果p0.0按下正转jnb p0.1,rev2 ; 如果p0.1按下反转jnb p0.2,stop1 ; 如果p0.2按下停止jmp loop ;反复监测键盘for:mov r0,#00h ;正转到tab取码指针初值for1:mov a,r0 ;取码mov dptr,#table ;movc a,@a+dptrjz for ;是否到了结束码00hcpl a ;把acc反向mov p1,a ;输出到p1开始正转jnb p0.2,stop1 ; 如果p0.2按下停止jnb p0.1,rev2 ; 如果p0.1按下反转call delay ;转动的速度inc r0 ;取下一个码jmp for1 ;继续正转rev:mov r0,#05h ;反转到tab取码指针初值rev1:mov a,r0mov dptr,#table ;取码movc a,@a+dptrjz rev ;是否到了结束码00hcpl a ;把acc反向mov p1,a ;输出到p1开始反转jnb p0.2,stop1 ; 如果p0.2按下停止 jnb p0.1,rev2 ; 如果p0.1按下反转 call delay ;转动的速度inc r0 ;取下一个码jmp rev1 ;继续反转stop1:call delay ; 按p0.2的消除抖动 jnb p0.2,$ ; p0.2放开否?call delay ;放开消除抖动jmp stopfor2:call delay ; 按p0.0的消除抖动 jnb p0.0,$ ; p0.0放开否?call delay ;放开消除抖动jmp forrev2:call delay ; 按p0.1的消除抖动 jnb p0.1,$ ; p0.0放开否?call delay ;放开消除抖动jmp revdelay:jnb p0.3,fast ;判断p0.3是否按下jnb p0.4,slow ;判断p0.4是否按下mov r1,#250 ;步进电机的转速20msd1:mov r2,#248djnz r2,$djnz r1,d1mov a,#5 显示速度 mov dptr,#tabmovc a,@a+dptrmov p2,amov a,#4mov dptr,#tabMOVC A,@A+DPTRMOV P3,Aretfast:mov r5,#150 ;加速d2:mov r6,#148djnz r6,$djnz r5,d2mov a,#9 ;显示速度 mov dptr,#tabmovc a,@a+dptrmov p2,amov a,#7mov dptr,#tabMOVC A,@A+DPTRMOV P3,Aretslow:mov r3,#75 ;减速d3:mov r4,#48djnz r4,$djnz r3,d3mov a,#1 ;显示速度mov dptr,#tabmovc a,@a+dptrmov p2,amov a,#8mov dptr,#tabMOVC A,@A+DPTRMOV P3,Arettable:db 03h,09h,0ch,06h ;正转表db 00 ;正转结束db 03h,06h,0ch,09h ;反转db 00 ;反转结束disp:mov a,#0 ;显示子程序 mov dptr,#tabmovc a,@a+dptrmov p2,amov a,#0mov dptr,#tabMOVC A,@A+DPTRMOV P3,Ajmp looptab: db 0c0h,0f9h,0a4h,0b0h,99h;数码表db 092h,082h,0f8h,080h,090h;end附录210111213141520191817161514131211102019181716151413121110101112131415161718192040393837363534333231302928272625242322211010附录3流程图A T89c51 单片机时钟 振荡 器及 RST 信号电机正转 反转 1正转2反转 1反转2正转停止 加速减速显示速度。