您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 综合/其它 > 单片机课程设计-步进电机控制
单片机课程设计说明书设计题目:步进电机控制院系:机电汽车工程学院班级:姓名:学号:指导教师:设计日期:2012年06月08日目录一、绪论1.1设计任务1.2总体方案二、硬件参数简介2.189C512.2ULN2003A芯片2.3数码管2.4步进电机三、步进电机控制系统电路设计3.1控制电路3.2最小系统3.3驱动电路3.4显示电路3.5总体电路四、程序设计4.1方案论证4.2主程序设计4.3定时中断设计4.4外部中断设计4.5整体程序五、仿真与调试六、设计总结七、分工说明一、绪论1.1设计任务1、完成单片机与功率驱动电路及小功率步进电机的连接;2、控制步进电机的转动方向、转动速度及转过指定的角度;3、通过按键改变电机的转向、转速等参数。1.2总体方案单片机控制步进电机,就是利用单片机发出脉冲信号,经过驱动单元驱动步进电机工作,同时可以利用外围电路控制步进电机的状态,显示其工作状态。本设计采用AT89C51,编程实现P1端四个口循环输出脉冲,用ULN2003放大信号,供给四相电机。另外,用按键和开关控制P3口定时中断,使其加速、减速、启动、停止和换向。P0口和P2口输出信号,经数码管显示转向和速度等级。二、硬件参数简介2.189C51AT89C51是一种低功耗/低电压/高性能的8位单片机,其输出引脚指令系统都与MCS-51兼容;片内的FlashROM允许在系统内改编程序或用常规的非易失控型编程器来编程,内部除CPU外,还包括256字节RAM,四个8位并行I/O口,5个中断源,2个中断优先系统,2个16位可编程定时计数器。89C51功能强、灵活性高且价格合理,完全可以满足本系统设计需要。2.2ULN2003芯片进行信号放大。ULN2003内部集成了8组达林顿管,驱动负载电流为500mA,驱动电压50V.八路NPN达林顿连接晶体管阵系列特别适用于低逻辑电平。本设计中,P0口四个端口输出脉冲接到ULN2003芯片进行放大,再供给电机。2.3数码管数码管接口电路原理如下图所示。2.4步进电动机步进电机是数字控制电机,工作原理是将脉冲信号转化成角位移,即给一个脉冲信号,步进电机就转动一个角度,因此非常适合单片机控制。这样,脉冲的数量和频率分别控制了电机的转角和转速,通电顺序控制了电机的转向。当某一相绕组通电时,对应的磁极产生磁场,并与转子形成磁路,这时,如果定子和转子的小齿没有对齐,在磁场的作用下,由于磁通具有力图走磁阻最小路径的特点,则转子将转动一定的角度,使转子与定子的齿相互对齐,由此可见,错齿是促使电机旋转的原因。本设计采用20BY-0型步进电机,四项单四拍,即按A-B-C-D-A顺序供电,步距角为1.5度。三、步进电机控制系统电路设计本设计的电路包括控制电路、最小系统、驱动电路、显示电路四大部分。3.1控制电路根据系统的控制要求,控制输入部分设置了启动/停止控制,换向控制,加速控制和减速控制按钮,分别是开关、换向、加、减,如图3-1所示。通过开关和换向状态变化来实现电机的启动和换向程序,内部程序检测P1.0和P1.1的状态来调用相应的启动和换向程序,发现系统的电机的启动和正反转控制。根据步进电机的工作原理可以知道,步进电机转速的控制主要是通过控制通入电机的脉冲频率,从而控制电机的转速。对单片机而言,主要的方法有:软件延时和定时中断。在此电路中电机的转速控制主要是通过定时器的中断来实现的,该电路控制电机加速度主要是通过加、减的断开和闭合,从而控制外部中断外部按键次数,改变速度值存储区中的数据(该数据为定时器的中断次数),这样就改变了步进电机的输出脉冲频率,从而改变了电机的转速。图3-13.2最小系统单片机最小系统或者称最小应用系统,用最少的原件组成的单片机可以工作的系统,对51系统单片机来说,最小系统一般包括:单片机,复位电路,晶振电路。复位电路:使用了独立式点盘,单片机的P1口键盘的接口。该设计要求只需4个键对步进电机的状态进行控制,但考虑到对控制功能的扩展,使用了6路独立式键盘,复位电路采取手动复位,所谓手动复位,是指通过接通一按钮开关,是单片机进入复位状态,晶振电路使用30PF的电容和一12M晶体振荡组成为整个电路提供时钟皮率,如图3-2所示。图3-2晶振电路:8951单片机的时钟信号通常用两种电路形式得到:内部振荡方式和外部中断方式。在引脚XTAL1和XTAL2外部晶振电路器或陶瓷晶振器,就构成了内部晶振方式。由于单片机内部有一个高增益反相放大器,当外界晶振后,就构成了自激振荡器并产生振荡时钟脉冲。内部振荡方式的外部电路如图5所示。其电容值一般在5-30uf,晶振频率的典型值为12MHZ,采用6MHZ的情况也比较多。内部振荡方式所得的时钟信号比较稳定,实用电路实用较多。3.3驱动电路通过ULN2003构成比较多的驱动电路,电路如图3-3所示,通过单片机的P1.0-P1.3输出脉冲带ULN2003的1B-4B口,经过信号放大后从1C-4C口分别输出到电机的A、B、C、D相。图3-33.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转速依次递增,电路如图3-4所示。图3-43.5总体电路图把各个部分的电路图组合成总电路图,如图3-5所示。图3-5四、程序设计4.1总体方案四相单四拍脉冲分配,ABCD四相依次为1000、0100、0010、0001、1000循环。P1.0~P1.3输出脉冲,用一片2003增加驱动能力。用P0口控制第一数码管用于显示正反转,用P2口控制第二个数码管用于显示转速等级。采用共阳极数码管。总程序分成四个部分,即主程序部分、定时器中断部分、外部中断0和外部中断1部分,其中主程序的功能是系统初始参数的设置及启动开关的检测,若启动开关合上则系统开始工作,反之系统停止工作;定时器部分控制脉冲频率,它决定了步进电机转速的快慢;两个外部中断程序要做的工作都是为了完成改变速度这一功能。4.2主程序设计主程序中要完成的工作主要有系统初始值的设置、系统状态的显示以及各种开关状态的检测判断等。其中系统初始状态的设置内容较多,该系统中,需要初始化定时器、外部中断;对P1口送初值以决定脉冲分配方式,速度值存储区送初值决定步进电机的启动速度,对方向值存储区送初值决定步进电机旋转方向等内容。若初始化P1=11H、速度和方向初始值均设为0,就意味着步进电机按四相单四拍运行,系统上电后在没有操作的情况下,步进电机不旋转,方向值显示“0”,速度值显示“0”。主程序流程图如图4-2所示。4.3定时中断设计步进电机的转动主要是给电机各绕组按一定的时间间隔连续不断地按规律通入电流,步进电机才会旋转,时间间隔越短,速度就越快。在这个系统中,这个时间间隔是用定时器重复中断一定次数产生的,即调节时间间隔就是调节定时器的中断次数,因而在定时器中断程序中,要做的工作主要是判断电机的运行方向、发下一个脉冲,以及保存当前的各种状态。程序流程图如图4-3所示。开始初始化速度值为0?启动开关为0?停止计时器显示启动计时器延时停止计时器图4-2主程序流程图YNYN4.4外部中断设计外部中断所要完成的工作是根据按键次数,改变速度值存储区中的数据(该数据为定时器的中断次数),这样就改变了步进电机的输出脉冲频率,也就是改变了电机的转速。速度增加按钮S2为INT0中断,其程序流程为原数据,当值等于7时,不改变原数值返回;小于7时,数据加1后返回。速度减少按钮S3,当原数据不为0,减1保存数据;原数据为0则保持不变。程序流程图如图4-4所示。中断返回T0中断入口发速度脉冲读方向指示重送相关状态恢复现场保护现场中断次数-1=0?NY图4-3定时中断程序流程图4.5总程序SPEEDEQU10HFXEQU11H外部中断入口保护现场延时去抖中断返回速度值±1恢复现场速度=上或限值?按钮是否弹起?NNNYY图9外部中断程序流程图COUNTEQU12HORG0000HAJMPMAINORG0003HAJMPUPORG0013HAJMPDOWNORG000BHAJMPZDT0ORG0030HMAIN:MOVSP,#60HMOVTMOD,#01HMOVTH0,#0CFHMOVTL0,#2CHMOVCOUNT,#01HSETBET0CLRIT0CLRIT1SETBEX0SETBEX1SETBEAMOVR1,#11HMOVSPEED,#00HMOVFX,#00HXIANS:MOVA,SPEEDMOVDPTR,#LEDMOVCA,@A+DPTRMOVP2,AMOVA,FXCJNEA,#11H,ELSMOVP0,#0F9HAJMPQDELS:CJNEA,#00H,ZHENGMOVP0,#0C0HAJMPQDZHENG:MOVP0,#0BFHQD:JBP3.4,DDCLRTR0MOVP0,#0C0HMOVP2,#0C0HMOVSPEED,#00HMOVFX,#00HAJMPQDDD:MOVA,SPEEDJNZGOCLRTR0AJMPQDGO:SETBTR0ACALLDELAYAJMPXIANSDELAY:MOVR6,#10DEL1:MOVR7,#250HERE1:DJNZR7,HERE1DJNZR6,DEL1RETZDT0:PUSHACCPUSHDPHPUSHDPLMOVTH0,#0D8HMOVTL0,#0F0HDJNZCOUNT,EXITJBP3.5,NIZHUANMOVFX,#11HNIZHUAN:MOVA,FXCJNEA,#11H,FZMOVA,R1MOVP1,ARRAMOVR1,AMOVP1,AAJMPREFZ:MOVA,R1MOVP1,ARLAMOVP1,AMOVR1,ARE:MOVA,SPEEDMOVDPTR,#TABMOVCA,@A+DPTRMOVCOUNT,AJBP3.5,FFXMOVFX,#11HAJMPEXITFFX:MOVFX,#0FEHEXIT:POPDPLPOPDPHPOPACCRETIUP:PUSHACCACALLDELAYJBP3.2,UPEXMOVA,SPEEDCJNEA,#7,SZAJMPUPEXSZ:INCSPEEDUPEX:POPACCHERE2:JNBP3.2,HERE2RETIDOWN:PUSHACCACALLDELAYJBP3.3,DEXMOVA,SPEEDCJNEA,#0,SJAJMPDEXSJ:DECSPEEDDEX:POPACCHERE3:JNBP3.3,HERE3RETITAB:DB0,60,50,35,28,25,21LED:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,98HEND五、仿真调试5.1仿真过程(1)在Protues中画出系统电路图;(2)把程序在keil里编译并生成hex文件;(3)把在keil编译生成的hex文件载入AT89C51芯片中;(4)运行仿真。六、设计总结通过本次单片课程设计,我们巩固了已学单片机原理的基本知识,锻炼了利用所学原理知识解决实际问题的能力。在设计过程中,我们自学了Proteus软件进行了电路图的设计测试,利用Keil软件完成了对程序的设计调试,综合运用了相关学科的知识和设计软件正确地完成了设计任务。在收获知识的同时,我们的团队合作能力得到了有效的锻炼,团队的每一位成员深切感受到合作的重要性。在收获的同时,我们更看到了在课程知识学习上的不足和相关运用能力上的缺失。首先,我们对单片机的一些基本知识了解不够深刻,以致用时感觉困难;其次,我们的读程序和设计程序的能力不强,在有关程序的
本文标题:单片机课程设计-步进电机控制
链接地址:https://www.777doc.com/doc-5565823 .html