1、0步进电机控制摘 要:步进电机是将电脉冲信号转变为角位移或线位移的开环控制元步进电机件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当步进驱动器接收到一个脉冲信号,它就驱动 步进电机按设定的方向转动 一个固定的角度,称 为“ 步距角”,它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。关键词:AT89C51 芯片;L298 驱动;数码管;步进电机1 引言单片机的应用正在不断深入和创新,作为一门我们专业相当重要的专业课程,同时
2、带动着传统控制检测日新月异的更新。此次设计利用单片机芯片作为核心部件进行调试与创新,其中对步进电机背景于现状,系 统硬件设计 ,软件设计及其仿真调试过程都做了介绍,是我对步进电机的院里有了深入的了解,也对单片机的设计研发过程以及知识的学习都有了很深的体会和提高。本控制系统的设计采用单片机芯片控制,通过人为按动各开关实现步进电机的开关,另外还增加了正转、反转、加速、减速的功能。2 总体设计方案步进电机是将电脉冲信号转变为角位移或线位移的开环控制元步进电机件。虽然步进电机已被广泛地应用,但步 进电机并不能象普通的直流电机,交流电机在常规下使用。它必须由双环形脉冲信号、功率驱动电路等组成控制系统方可
3、使用。因此用好步进电机却非易事,它涉及到机械、电机、电子及计算机等许 多专业知识。 由此可见:电机的位置和速度由导电次数(脉冲数)和频率成一一对应关系。而方向由导电顺序决定。不难推出:电机定子上有 m 相励磁绕阻,其轴线分 别与转子齿轴线偏移1/m,2/m(m-1)/m,1。并且导电按一定的相序电机就能正反 转被控制这是步进电机旋转的物理条件。只要符合 这一条件我们理论上可以制造任何相的步进电机,出于成1本等多方面考虑,市场上一般以二、三、四、五相为多。拍数:完成一个磁场周期性变化所需脉冲数或导电状态用 n 表示,或指电机转过一个齿距角所需脉冲数,以四相 电机为例,有四相拍运行方式即 AB-B
4、C-CD-DA-AB,四相八拍运动方式即 A-AB-B-BC-C-CD-D-DA-A.注:2 相励磁通过的电流是 1 相励磁时通过电流的 2 倍,转矩也是 1 相励磁的 2 倍。此时电机的振动较小且应答频率升高,目前仍广泛使用此种方式。2.1 设计思路使用、控制步进电机必须由环形脉冲,功率放大等组成的控制系统,其方框 图 2.1如下:脉冲信号信号分配功率放大步进电机负载图 2. 控制系统组成图脉冲信号一般由单片机或 CPU 产生,一般脉冲信号的占空比为 0.3-0.4 左右, 电机转速越高,占空比则越大。功率放大是驱动系统最为重要的部分。步进电机在一定转速下的转矩取决于它的动态平均电流而非静态
5、电流(而样本上的电流均为静态电流)。平均电流越大电机力矩越大,要达到平均电流大这 就需要驱动系统尽量克服电机的反电势。因而不同的场合采取不同的的驱动方式,到目前 为止, 驱动方式一般有以下几种:恒压、恒 压串电阻、高低压驱动、恒流、 细分数等。 为尽量提高电机的动态性能,将信号分配、功率放大组成步进电机的驱动电源。步进电机一经定型,其性能取决于电机的驱动电源。步进电机转速越高,力距越大则要求电机的电流越大,驱动电源的电压越高。控制步进电机的速度如果给步进电机发一个控制脉冲,它就转一步,再发一个脉冲,它会再转一步。两个脉冲的间隔越短,步 进电 机就转得越快。调整单片机发出的脉冲频率,就可以对步进
6、电机 进行调速。 具体实现用延 时时间的长短来决定,程序如下。DELAY: MOV R6,#125 ;延时 50ms2L1: MOV R5,#200L2: DJNZ R5,L2DJNZ R6,L1 RET.、步进电机设计方框图图 2.1AT89c51单片机时钟振荡器及RST信号电机正转反转1 正转 2 反转1 反转 2 正转停止加速减速显示速度3图 2.2本系统是用单片机软件程序来产生脉冲分配信号,即把数字控制计数的高精度等方面的优势有效地应用于步进电机控制系统,同时本系统设计的步进电机控制器硬件电路十分简单,成本低,使用方便。本电路包括开关控制电路,时钟电路,功率放大电路等的选择。3 设计原
7、理分析步进电机是将电脉冲信号转变为角位移或线位移的开环控制元步进电机件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受 负载变化的影响,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,称为“步距角”,它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。AT89C51 芯片简介:AT89C51 是一种带 4K 字节闪烁可编程可擦除 只读存储器(FPEROMFalsh Programmable and Erasabl
8、e Read Only Memory)的低电压,高性能CMOS8 位微处理器,俗称 单片机。该器件采用 ATMEL 高密度非易失存储器制造技术制造,与工业标准的 MCS-51 指令集和输出管脚相兼容。由于将多功能 8 位 CPU 和闪烁存储器组合在单个芯片中,ATMEL 的 AT89C51 是一种高效微控制器,AT89C2051 是它的一种精简版本。AT89C 单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。外形及引脚排列如图 1。XTAL1:振荡 器反相放大器及内部时钟发生器的输入端。XTAL2:振荡 器反相放大器的输出端。时钟振荡器:AT89C51 中有一个用于构成内部振荡器的高
9、增益反相放大器,引起XTAL1 和 XTAL2 分别是 该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器。外接石英晶体及电容 C1、C2 接在放大器的反馈回路中构成并联振荡电路。对外接电容 C1、C2 虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程序及温度稳定性,如果使用石英晶体,推荐使用 30pF 左右,如果使用陶瓷谐振器建议选择440pF 左右。芯片主要特性与 MCS-51 兼容 ,4K 字节可编程闪烁存储器,寿命:1000 写/擦循环,数据保留时间:10 年全静 态工作:0Hz-24Hz三级
10、程序存储器锁定, 128*8 位内部 RAM32 可编程 I/O 线,两个 16 位定时器/计数器, 5 个中断源 可 编程串行通道,低功耗的闲置和掉电模式,片内振荡器和时钟电路5XTAL218XTAL119ALE30EA31PSEN29RST9P0./AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD63P0.7/AD732P1.01P1.2P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD1P3.2/INT012P3./INT113P3.4/T014P3.7/RD17P3
11、.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A92P2./A1023P2.3/A124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51+8.8R110kR210kR310k R410k R510k R610k 正 转反 转加 速减 速R710kC11nFC21nFX1CRYSTALC31nFIN15IN27ENA6OUT12OUT23 ENB1OUT313OUT414IN310IN412SENSA1SENSB15GND8VS4 VC9U2L298.1 硬件设计及调试图 . 步进电机与单片机连接原理图6.2 软件设计及调试结束扫描
12、K1、K3(正加)K1、K4(正减)K2、K3(反加)K2、K4(反减)K5(停止)步数读取按键图. 程序流程图4 总结与体会这次课程设计是我最喜欢的一次,因为这次课程设计需要动脑动手,把自己课堂上学到的软件和硬件知识全部应用进来。要想完成好 这次课程设计,首先要弄懂步进电机的工作原理,与外部电路的连接,单片机原理, 汇编语言等。 这其中有以前课堂上学过的也有需要我们7自学研究的,这不仅考察了自己原来的知识程度还加强了我们独立获取知识并加以运用的能力。这次课程设计我收获很多,因为我学到了很多的东西,还制作了自己的东西,使自己很有成就感。在这么多次课程 设计中这次是我最难忘的一次,因为是三人一组
13、团队完成,使我体会到了分工合作的力量与重要性。虽然电机部分我没有花太多的精力,但通过合理分工,我们仍然按时完成了指定任务,并且通过相互帮助相互指点,使我们对彼此负责的那部分任务都有了更好的了解和掌握。我想通过这次实验,我对电机的了解扩宽了, 对单片机和外围电路的认识也更为清晰了,这为我以后工作提供了坚实的基础。三个星期很快过去了,看着自己的劳动成果,心里 满是欣慰。最后感 谢老师和同学们的悉心指导和帮助。参考文献1 李朝青.单片机原理及接口技术(第三版) .北京:北京航空航天大学出版社,2006.122 石磊.Altium designer8.0 中文版电路设计标准教程. 北京:清华大学教育出
14、版社,2009.113 杨天明,陈 杰.电机拖动北京:北京大学出版社,2006.88附录 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 ;是否到了
15、结束码 00hcpl a ;把 acc 反向mov p1,a ;输出到 p1 开始正转jnb p0.2,stop1 ; 如果 p0.2 按下停止9jnb 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
16、.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 ;放开消除抖动10jmp 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
17、;放开消除抖动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,Aret11fast:mov r5,#150 ;加速d2:mov r6,#148 djnz r6,$djnz r5,d2mov a,#9 ;显示速度mov dp
18、tr,#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:12db 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;end13附录 214附录 3流程图AT89c51单片机时钟振荡器及RST信号电机正转反转1 正转 2 反转1 反转 2 正转停止加速减速显示速度1516