- 2.14 MB
- 2022-09-27 发布
- 1、本文档由用户上传,淘文库整理发布,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,请立即联系网站客服。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细阅读内容确认后进行付费下载。
- 网站客服QQ:403074932
南京工程学院康尼学院本科毕业设计(论文)题目:单轴运动控制器设计专业:自动化(数控技术)班级:K数控092学号:学生姓名:指导教师:高级工程师起迄日期:2013.2~2013.6设计地点:微机原理与应用实验中心\nGraduationDesign(Thesis)TheDesignoftheUniaxialMotionControllerBySupervisedbySeniorEngineerSchoolofConniecollegeNanjingInstituteofTechnologyJune,2013\n摘要随着现代科技的发展,单轴运动控制已广泛应用于日常生活之中,在各行各业都有着极其重要的应用。本文描述了基于AT89S52的单轴运动控制器设计与实现过程。通过单片机连接步进电机驱动器,控制步进电机的进行,并通过数码管显示器显示出来。工作时,通过键盘输入给定速度,加速度或位移值,从而控制步进电机按指定的速度,加速度和位移值进给。单轴运动控制系统的设计包括硬件设计和软件设计两大部分,根据具体情况,硬件设计包括以下模块:主控电路,键盘输入模块,脉冲发生模块,数码管显示模块,复位电路,isp下载电路,电源电路等。软件设计则主要包括主控程序设计,键盘显示程序设计,控制参数的输入与计算,电机控制程序设计等。键词:单片机;步进电机;单轴运动IV南京工程学院自动化学院本科毕业设计(论文)IV\n南京工程学院自动化学院本科毕业设计(论文)ABSTRACTWiththedevelopmentofmoderntechnology,single-axismotioncontrolhasbeenwidelyusedindailylife,inallwalksoflifehaveaveryimportantapplication.ThispaperdescribestheAT89S52basedonthesingle-axismotioncontrollerdesignandimplementationprocess.Throughthemicrocontrollerconnectedsteppermotordriver,steppermotorcontrolfor,andthroughthedigitaldisplayappears.Work,throughthekeyboardinputgivenspeed,accelerationordisplacement,soastocontrolasteppermotortothespecifiedspeed,accelerationordisplacementfeed.Single-axismotioncontrolsystemdesignincludeshardwaredesignandsoftwaredesigntwoparts,dependingonthecircumstances,thehardwaredesignincludesthefollowingmodules:themaincontrolcircuit,keyboardinputmodule,pulsegeneratormodule,LEDdisplaymodule,resetcircuit,ispdownloadcircuit,powersupplycircuit.Softwaredesignmainlycomprisesamaincontrolprogramdesign,thekeyboarddisplayprogramdesignedtocontroltheparametersoftheinputandcalculation,motorcontrolprogramdesign.Keywords:microcomputer;Steppingmotor;UniaxialmotionIV\n南京工程学院自动化学院本科毕业设计(论文)目录第一章绪论................................................................................................11.1引言11.1.1设计背景及意义11.1.2设计任务与要求21.1.3发展现状及前景21.2本文结构3第二章系统方案提出与设计42.1系统功能概述42.2总体方案设计4第三章系统硬件电路设计.........................................................................53.1单片机系统模块.......................................................................................53.1.1AT89S52特点及特性53.1.2管脚及功能说明.........................................................................................63.1.3单片机最小系统83.2键盘输入模块...............................................................................................93.2.1键盘设计方案及论述..................................................................................93.2.2独立键盘测................................................................................................103.2.3键盘连接原理图........................................................................................113.3数码管显示模块...........................................................................................123.3.174HC595芯片介绍...................................................................................123.3.2数码管显示连接电路................................................................................153.4串行通信模块................................................................................................163.4.1串行通信原理...........................................................................................163.4.2MAX232芯片介绍...................................................................................173.4.3RS-232接口介绍......................................................................................183.4.4串行接口原理图.......................................................................................193.5在线下载模块…............................................................................................203.6电机控制模块...............................................................................................213.6.1ULN2803特点及特性...............................................................................213.6.2电机驱动模块电路图...............................................................................2256\n南京工程学院自动化学院本科毕业设计(论文)3.7电源电路模块.............................................................................................223.7.1LM7805特点...........................................................................................223.7.2电源电路原理图......................................................................................23第四章系统软件设计.........................................................................................244.1系统软件设计概述........................................................................................244.2Keil开发软件介绍.........................................................................................244.3系统主控程序流程图....................................................................................254.4键盘控制流程图............................................................................................264.5步进电机控制流程图....................................................................................27第五章步进电机与驱动器的控制...............................................................305.1步进电机选型.............................................................................................305.2步进电机的控制方法....................................................................................305.3驱动器选型...................................................................................................32第六章结论........................................................................................................366.1论文总结.....................................................................................................366.2感想.............................................................................................................366.3致谢...............................................................................................................38参考文献.................................................................................................................39附录A硬件设计原理图与PCB图..........................................................................40附录B软件程序清单.............................................................................................4656\n南京工程学院自动化学院本科毕业设计(论文)第一章绪论 1.1引言单轴运动控制器,成本低,性能好,参数设计灵活,方便,能在不同位移、速度、加速度下实现步进电机精确、快速、有效的定位控制,有一定市场应用价值。目前单轴运动控制器在自动流水生产线、小型钻孔设备等生产设备上得到了较好的应用。可实现自动化操作,本设计具有很大的实用价值。1.1.1设计背景与意义自20世纪80年代初期,通用运动控制器已经开始在国外多个行业应用,尤其是在微电子行业的应用更加广泛。当时运动控制器在我国的应用规模和应用范围很小,国内也没有厂商开发通用的运动控制器产品。目前,国内的运动控制器生产厂商提供的产品大一致可以分为3类:第一类是以单片机或微处理器作为核心的运动控制器,这类运动控制器运行速度较慢,精度不高,成本相对较低。在一些只需要低速运动控制和对轨迹要求不高的轮廓控制场合应用。第二类是以专用芯片(AsIc)作为核心处理器的运动控制器,这种控制器结构比较简单,但是大多数只能输出脉冲信号,工作于开环控制方式。由于这类控制器不能提供高速连续插补,也没有前赡功能(Looka}lead),特别是对于大量的小线段连续加工的场合,如模具雕铣加工,就不能使用这类控制器。第三类是基于Pc总线的以DsP和FPGA作为核心处理器的开放式运动控制器。这类开放式运动控制器以DsP芯片作为运动控制器的核心处理器,以PC机作为信息处理平台,运动控制器以插卡形式嵌入PC机,即“Pc+运动控制器”的模式。这样将Pc机的信息处理能力和开放式的特点与运动控制器的运动轨迹控制能力有机地结合在一起,具有信息处理能力强、开放程度高、运动轨迹控制准确、通用性好的特点。这类运动控制器充分利用了DsP的高速数据处理功能和FPGA的超强逻辑处理能力,便于设计出功能完善、性能优越的运动控制系统。56\n南京工程学院自动化学院本科毕业设计(论文)步进电机是开环伺服系统的执行元件,它将脉冲信号转换成直线或角位移,具有较好的控制性能,其启动、停车、反转及其它任何运行方式的改变都可在少数脉冲内完成,且可获得较高的控制精度,因此在经济型数控机床及自动化设备中得到了广泛的应用。目前,步进电机的控制方法是多种多样的,有传统方式的,也有采用PLC控制的,而单片机是介于工控计算机和可编程控制器之间的一种新型控制器,它控制功能强,灵活性和适应性好,成本低廉,正逐渐成为步进电机的主要控制装置,使电机的控制方式由模拟控制逐渐让位于以单片机为核心的数字控制。本文具体讨论了由单片机实现的步进电机的单轴运动控制问题,并结合实例给出实现的方法。1.1.2设计任务与要求本设计是基于AT89S52的单轴运动控制.通过单片机连接步进电机驱动器来控制步进电机并通过数码管显示器显示出来。工作时,通过选择开关,选定工作方式,键盘输入给定速度,加速度或位置值,从而控制外设进行电机控制调节。设计内容包括单片机测控系统电路原理设计,电路板设计,单片机测控软件设计、软硬件调试等。单轴运动控制系统的设计包括硬件设计和软件设计两大部分,根据具体情况,硬件设计包括以下模块:主控电路,键盘输入模块,脉冲发生模块,数码管显示模块,复位电路,isp下载电路,电源电路等。软件设计则主要分为以下几个部分:包括主控程序设计,键盘显示程序设计,控制参数的输入与计算,电机控制程序设计等。1.1.3发展现状及前景由于运动控制器的应用范围越来越广泛,为了适应新的情况、特定环境和对象,不断会有新的运动规划、多轴插补和控制滤波算法出现。从我国的经济发展的情况来看,通用运动控制器的应用市场仅仅是刚刚启动。与美国和欧洲发达国家相比,我国在运动控制器技术开发上政府的投入很少,在该领域没有形成统一的产品标准。高等院校的教育还没有跟上,没有培养出一大批能够开发和应用运动控制器的人才,使得运动控制器的应用工作受阻,售后技术支持难度加大。从欧美品牌的功能最完善、最强大;日本和国产的大多数伺服驱动器是执行一个放大器的功能,即称作“ServoAmplifier”,作运动控制时需要接收上位运动控制器发送的脉冲列或者模拟量信号。而欧美伺服驱动器的位置控制接口一般可以由网络通讯给定,具有强大的独立运动控制的能力,并且具有完备的逻辑控制功能,所以它们往往能够脱离上位运动控制器而独立驱动,这也是造成欧美伺服驱动器价格比日系、国产昂贵的一个原因.国内的一些伺服驱动器也提供单轴运动控制的功能,例如广州数控的DA98B驱动器,它可以让用户自行编辑单轴运动程序,并按照程序做单轴循环运行及输入、输出信号的处理。伺服驱动器通过解释程序段中用户编辑的运动指令,将其转换为相应的位置指令、速度指令和相应的IO点处理[10]。但实际上伺服驱动器只实现了类似PLC顺序控制的逻辑功能,并不带有轨迹规划的性质,因而其应用范围也受到很大的限制,与国外的产品存在一定的差距。[1][2][3]56\n南京工程学院自动化学院本科毕业设计(论文)1.2本文的结构本文以单轴运动控制器的设计项目作为应用背景,对步进电机控制及单片机控制显示、输入输出等方面进行了研究。全文共分为六章,各章的主要内容如下:第一章扼要地介绍了单轴运动控制器的概念、特点与相关研究背景;第二章研究了整个单轴运动控制功能及其设计方案;第三章对系统的各个功能模块的硬件设计进行了研究,分为主控电路模块,键盘输入模块,脉冲发生模块,数码管显示模块,复位电路模块,isp下载电路模块,电源电路模块等。给出了各模块的工作原理、元件选取及硬件连接原理图。第四章则是根据系统各模块进行软件设计,给出主程序,键盘控制程序,步进电机控制程序等,并绘制系统软件流程图,编写程序。此外还介绍了Keil开发软件的相关内容。第五章对步进电机与驱动器的控制进行了分析。第六章总结了全文的研究工作,给出存在的问题和进一步研究的方向。56\n南京工程学院自动化学院本科毕业设计(论文)第二章系统方案提出与设计2.1系统功能概述本设计以AT89S52为核心,用一片AT89S52单片机控制系统工作。虽然步进电机已经配备了驱动器,但如果直接将单片机端口和驱动器控制接口相连接,端口电压将被拉到0V,因此仅靠单片机端口仍旧不能驱动驱动器,必须在单片机系统中增设驱动装置。本文采用的是专用驱动器,驱动作为高度工业产品,具有可靠性高、驱动能力强、适用性好的特点,而且使用方便。控制系统主要由单片机、键盘、显示、驱动等4个模块组成,其中PC上位机用于编写及烧录程序。控制器通过相应的IO接口,将控制指令发送至驱动电路,可以控制步进电机的运行,完成系统的单轴控制。2.2总体方案设计控制系统可实现以下功能:1、控制步进电机的启动和停止、运行方向、运行速度;2、显示步进电机的运行状态、方向、转速;3、通过软件实现细分控制4、2个硬件限位点(正反向限位);5、简单的键盘操作及上位机编程两种方式;6、坐标参数支持相对坐标和绝对坐标综上要求,系统硬件电路框图如图所示。电源单片机步进电机驱动器步进电机按键输入电路数码管显示电路图2.1单轴运动控制器结构图56\n南京工程学院自动化学院本科毕业设计(论文)第三章系统硬件电路设计3.1单片机系统模块3.1.1AT89S52特点及特性AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在线可编程Flash存储器,使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在线可编程,亦适于常规编程器。在一个芯片上,拥有灵巧的8位CPU和在线可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89S52具有以下标准功能:8K字节的Flash,256字节的RAM,32位I/O口,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件,可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作;掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。[4]AT89S52的主要特性是:l与MCS-51单片机产品兼容l8K字节在系统可编程Flash存储器l1000次擦写周期l全静态操作:0Hz~33Hzl三级加密程序存储器l32个可编程I/O口线l三个16位定时器/计数器l八个中断源l全双工UART串行通道l低功耗空闲和掉电模式l掉电后中断可唤醒l看门狗定时器l双数据指针l掉电标识符56\n南京工程学院自动化学院本科毕业设计(论文)3.1.2管脚功能说明AT89S52引脚如图3.1所示图3.1AT89S52引脚结构图VCC:电源GND:接地P0口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用,在这种模式下,P0具有内部上拉电阻。在flash编程时,P0口也用来接收指令字节,在程序校验时,输出指令字节。程序校验时,P0口需要外部上拉电阻。表3.1P1口第二功能P1口:P1口是一个具有内部上拉电阻的8位双向I/O口,P1输出缓冲器能驱动4个TTL逻辑电平。对P1端口写“1”56\n南京工程学院自动化学院本科毕业设计(论文)时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX),具体如表3.1所示。在flash编程和校验时,P1口接收低8位地址字节。P2口:P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX@DPTR)时,P2口送出高八位地址。在这种应用中,P2口使用很强的内部上拉发送1。在使用8位地址(如MOVX@RI)访问外部数据存储器时,P2口输出P2锁存器的内容。在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。P3口:P3口是一个有内部上拉电阻的8位双向I/O口,P3输出缓冲器能驱动4个TTL逻辑电平。对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。P3口亦作为AT89S52特殊功能(第二功能)使用,如表3.2所示。在flash编程和校验时,P3口也接收一些控制信号。表3.2P3口第二功能RST:复位输入。晶振工作时,RST脚持续2个机器周期高电平将使单片机复位。看门狗计时完成后,RST脚输出96个晶振周期的高电平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。ALE/PROG:地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。在flash编程时,此引脚(PROG)也用作编程输入脉冲。在一般情况下,ALE56\n南京工程学院自动化学院本科毕业设计(论文)以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。如果需要,通过将地址为8EH的SFR的第0位置“1”,ALE操作将无效。这一位置“1”,ALE仅在执行MOVX或MOVC指令时有效。否则,ALE将被微弱拉高。这个ALE使能标志位(地址为8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效。PSEN:外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。当AT89S52从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN将不被激活。EA/VPP:访问外部程序存储器控制信号。为使能从0000H到FFFFH的外部程序存储器读取指令,EA必须接GND.为了执行内部程序指令,EA应该接VCC。在flash编程期间,EA也接收12V的VPP电压。XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。XTAL2:振荡器反相放大器的输出端。3.1.3单片机最小系统单片机最小系统,或者称为单片机最小应用系统,是指用最少的元件组成的,使单片机可以工作的系统。对于51单片机来说,最小系统能够运行的必要条件是:电源,晶振和复位电路。在单片机系统里,晶振全称叫做晶体振荡器,它结合单片机内部电路产生单片机所需的时钟频率,单片机晶振提供的时钟频率越高,那么单片机运行速度就越快,单片接的一切指令的执行都是建立在单片机晶振所提供的时钟频率之上的。在通常工作条件下,普通的晶振频率绝对精度可达百万分之五十,高级的精度更高。晶振运用一种能把电能和机械能相互转化的晶体,使其在共振的状态下工作,以提供稳定,精确的单频振荡。[5]晶振与单片机的XTAL1和XTAL2引脚构成的振荡电路中会产生谐波,会降低电路的时钟振荡器的稳定性,为了电路的稳定性起见,在晶振的两引脚处接入两个10pf-50pf的瓷片电容接地来削减谐波对电路的稳定性的影响。本系统采用AT89S52单片机,晶振为11.0592MHz,接入两片30pf的电容。XTAL1与XTAL2端分别于单片机的XTAL1、XTAL2相接。晶振电路如图3.2所示。56\n南京工程学院自动化学院本科毕业设计(论文)图3.2晶振电路系统采用按键手动复位方式,相对来讲,这种复位方式更加方便,更加人性化,不必要切断电源即可对系统进行复位。复位电路如图3.3所示图3.3复位电路复位时高电平有效,而电容具有两端的电压不能突变的特性,所以刚开机的时候因为VCC上有5V电压,因为电容两端电压不能突变的特性,RST引脚的电压也被拉到5V,但是因为RST脚又通过电阻R下拉,电阻两端有电压差,电容缓慢通过电阻对地放电,电压慢慢降低最后变成低电平,完成复位。当需要手动复位时,则只需按下复位键,RET引脚就会置为高电平,进行复位。3.2键盘输入模块3.2.1键盘设计方案论述键盘非为编码键盘和非编码键盘。键盘上闭合键的识别用专门的编码器实现,并产生键值的位编码键盘;而靠软件编程来识别的键盘成为非编码键盘,在单片机的系统中,非编码键盘用的较多,非编码键盘又分为独立键盘和矩阵键盘。56\n南京工程学院自动化学院本科毕业设计(论文)独立键盘,是每个按键的电路是独立的,每一个I/O口上只接一个按键,按键的另一端接电源或接地。按键较多时,独立键盘占用I/O口较多,则可采用矩阵键盘,以4*4的为例,将16个按键排成4行4列,每一行将每个按键的一端连接在一起构成行线,每一列将每个按键的另一端连接在一起构成列线,这样便一共有4行4列共8根线,将这8根线连接到单片机的I/O口上,通过程序扫描键盘就可检测到16个键。矩阵键盘的扫描原理是:先确定是否有键按下,再判断所按下键的行列位置。具体的分,有逐点扫描法、逐行扫描法、全局扫描法等。考虑到本设计有串行通信和键盘输入两种工作方式,需要键盘输入温度设定值,可配数码管合显示,采用数值增减的方式,所需的键盘数不多,所以采用独立键盘。3.2.2独立键盘检测独立键盘实际上就是一组按键,键的按下与释放是通过机械触点的闭合与断开实现的,弹性按键按下时闭合,松手后自动断开。独立键盘的实现方法是利用单片机I/O口读取口的电平高低来判断是否有键按下,如把按键的一端接地,另一端与单片机的某个I/O口相连,开始时先给该I/O口赋一高电平,然后让单片机不断地检测该I/O口是否变为低电平,当按键闭合时,既相当于该I/O口通过按键与地相连,变成低电平,程序一旦检测到I/O口变为低电平,则说明按键被按下,然后执行相应指令。但在键盘按下时,存在键盘抖动的问题,是当键盘在未按到按下的临界区产生的电平不稳定现象,如图3.4所示。图3.4按键电压变化抖动时间的长短和按键的机械特性有关,一般为5~10ms,手动按下键再立即释放,这个动作中,稳定的时间不会超过20ms,单片机在检测键盘是否按下时都要加上去抖动操作,有专门的去抖动电路和芯片,但一般可以用软件延时的方法达到去抖动的效果。按键检测流程图如图3.5所示。56\n南京工程学院自动化学院本科毕业设计(论文)图3.5按键检测流程图3.2.3键盘连接原理图P00~P07分别接K0~K7。P20~P27分别接K8~K16。k0键是调节电机方向,上电DIR默认为0,表示反向(D2灯灭),为K0按下第一次DIR=1表示正向(D2灯亮),再次按下K0,DIR=0;K1按下时会有一个50HZ,占空比为50%的脉冲方波信号从PULS端口(D1亮)输出,可以测试电机用;K8是反向限位,即在电机在DIR=0时运动,一旦K8按下,电机立刻停止;K9是正向限位,即在电机在DIR=1时运动,一旦K9按下,电机立刻停止;K12是启动按钮,即按下该按键,电机就按照设定的速度,加速度,脉冲运转,默认设置是V=1000HZ,A=5000HZ/S*S,PULS=1000个。键盘连接原理图如图3.6所示56\n南京工程学院自动化学院本科毕业设计(论文)图3.6键盘连接原理图3.3数码管显示模块3.3.174HC595芯片介绍74HC595芯片是一种串入并出的芯片,在电子显示屏制作当中有广泛的应用。74HC595是8位串行输入/输出或者并行输出移位寄存器,具有高阻、关、断状态,三态。特点:8位串行输入8位串行或并行输出存储状态寄存器,三种状态输出寄存器可以直接清除100MHz的移位频率输出能力并行输出,总线驱动串行输出;标准:中等规模集成电路应用串行到并行的数据转换Remotecontrolholdingregister.描述595是告诉的硅结构的CMOS器件,兼容低电压TTL电路,遵守JEDEC标准。595是具有8位移位寄存器和一个存储器,三态输出功能。移位寄存器和存储器是分别的时钟。数据在SCHcp的上升沿输入,在STcp的上升沿进入的存储寄存器中去。如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个脉冲。56\n南京工程学院自动化学院本科毕业设计(论文)移位寄存器有一个串行移位输入(Ds),和一个串行输出(Q7’),和一个异步的低电平复位,存储寄存器有一个并行8位的,具备三态的总线输出,当使能OE时(为低电平),存储寄存器的数据输出到总线。CPD决定动态的能耗,PD=CPD×VCC×f1+∑(CL×VCC2×f0)F1=输入频率,CL=输出电容f0=输出频率(MHz)Vcc=电源电压引脚说明符号引脚描述内部结构结合引脚说明就能很快理解595的工作情况74HC595引脚图,引脚图如图3.7图3.774HC595引脚图74595的数据端:QA--QH:八位并行输出端,可以直接控制数码管的8个段。QH':级联输出端。我将它接下一个595的SI端。SI:串行数据输入端。74595的控制端说明:SRCLR(10脚):低点平时将移位寄存器的数据清零。通常我将它接Vcc。SRCK(11脚):上升沿时数据寄存器的数据移位。QA-->QB-->QC-->...-->QH;下降沿移位寄存器数据不变。(脉冲宽度:5V时,大于几十纳秒就行了。我通常都选微秒级)RCK(12脚):上升沿时移位寄存器的数据进入数据存储寄存器,下降沿时存储寄存器数据不变。(通常我将RCK置为低电平,)当移位结束后,在RCK端产生一个正脉冲(5V时,大于几十纳秒就行了。我通常都选微秒级),更新显示数据。G(13脚):高电平时禁止输出(高阻态)。如果单片机的引脚不紧张,用一个引脚控制它,可以方便地产生闪烁和熄灭效果。比通过数据端移位控制要省时省力。56\n南京工程学院自动化学院本科毕业设计(论文)表3.374HC595引脚功能表管脚编号管脚名管脚定义功能1、2、3、4、5、6、7、15QA—QH三态输出管脚8GND电源地9SQH串行数据输出管脚10SCLR移位寄存器清零端11SCK数据输入时钟线12RCK输出存储器锁存时钟线13OE输出使能14SI数据线15VCC电源端1)74164和74595功能相仿,都是8位串行输入转并行输出移位寄存器。74164的驱动电流(25mA)比74595(35mA)的要小,14脚封装,体积也小一些。2)74595的主要优点是具有数据存储寄存器,在移位的过程中,输出端的数据可以保持不变。这在串行速度慢的场合很有用处,数码管没有闪烁感。与164只有数据清零端相比,595还多有输出端时能/禁止控制端,可以使输出为高阻态。3)595是串入并出带有锁存功能移位寄存器,它的使用方法很简单,在正常使用时SCLR为高电平,G为低电平。从SER每输入一位数据,串行输595是串入并出带有锁存功能移位寄存器,它的使用方法很简单,如下面的真值表,在正常使用时SCLR为高电平,G为低电平。从SER每输入一位数据,串行输入时钟SCK上升沿有效一次,直到八位数据输入完毕,输出时钟上升沿有效一次,此时,输入的数据就被送到了输出端。入时钟SCK上升沿有效一次,直到八位数据输入完毕,输出时钟上升沿有效一次,此时,输入的数据就被送到了输出端。74HC595时序图如下图3.856\n南京工程学院自动化学院本科毕业设计(论文)图3.874HC595时序图3.3.2数码管显示连接电路根据设计要求和数码管控制方式,该系统共8位共阳数码管,数码管的驱动采用两片74HC595级联驱动,其中第一片驱动段选,第二片位选,具体显示的数字需要预先编码,然后传输上去才可显示。74HC595是一款串入并出的芯片,可以大大节省IO的使用,如果采用级联模式,就是把上一个芯片的数据输出”Q7”连接在下一个芯片的DS端,SCK,RCK,CLR,OE等控制管脚全部对应连接在一起,串行数据在DS端在SCK的上升沿传输进去,一个上升沿右移一位,一个芯片可容载8位数据,驱动数码管需要16位数据。所以要先把8位位选数据传输到第二片,再把8位段选数据传输到第一片,传输完成后,需要一个RCK的上升沿才可以把位移寄存器的数据存到数据端口,位选和段选的编码采用数组形式。数码管连接电路图如图3.9所示56\n南京工程学院自动化学院本科毕业设计(论文)图3.9数码管显示电路3.4串行通信模块3.4.1串行通信原理串行通信是将数据字节分成一位一位的形式在一条传输线上逐个地传送,此时只需要一条数据线,外加一条公共信号地线和若干控制信号线。因为一次只能传送一位,所以对于一个字节的数据,至少要分8位才能传送完毕,如图3.11所示。56\n南京工程学院自动化学院本科毕业设计(论文)发送设备接收设备D0D78位顺次发送图3.10串行通信方式串行通信的必要过程是:发送时,要把并行数据变成串行数据发送到线路上去,接收时,要把串行信号再变成并行数据,这样才能被计算机及其他设备处理。串行通信传输线少,长距离传送时成本低,且可以利用电话网等现成的设备,但数据的传送控制比并行通信复杂。串行通信有两种方式:异步串行通信和同步串行通信。异步串行通信是指通信的发送与接收设备使用各自的时钟控制数据的发送和接收过程。异步通信以字符(构成的帧)为单位进行传输,字符与字符之间的间隙是任意的,但每个字符中的各位是以固定的时间传送的,每一帧字符信息由4个部分组成:起始位、数据位、奇偶校验位和停止位。异步通信不要求收发双方时钟严格的一致,实现容易,设备开销较小,但每个字符要附加2~3位,用于起止位、校验位和停止位,各帧之间还有间隔,因此传输效率不高。同步通信是要建立发送方时钟对接收方时钟的直接控制,使双方达到完全同步。此时,传输数据的位之间的距离均为“位间隔”的整数倍,同时传送的字符间不留间隙,既保持位同步关系,也保持字符同步关系。发送方对接收方的同步可以通过外同步和自同步两种方法实现。串行通信有三种制式,分别为单工、半双工和全双工。单工指数据传输仅能沿一个方向,不能实现反向传输;而半双工是指数据传输可以沿两个方向,但需要分时进行;全双工则是数据可以同时进行双向传输。[6]3.4.2MAX232芯片介绍由于单片机和RS232的电平标准不一样,单片机的电平标准为TTL电平:+5V表示1,0V表示0;而RS232的电平标准为:+3~+15V表示1,-15V~-3V表示0。所以单片机与PC进行串行通信就应该在单片机与上位机给出的RS232接口之间通过电平转换电路实现TTL电平与RS232电平之间的转换。MAX232芯片是MAXIM公司生产的包含两路接收器和驱动器的IC芯片,引脚结构图如图3.12所示。56\n南京工程学院自动化学院本科毕业设计(论文)图3.11MAX232芯片引脚结构图它的内部有一个电源电压变换器,可以把输入的+5V电源电压变换成为RS-232输出电平所需的+10V电压。所以,采用芯片接口的串行通信系统只需单一的+5V电源就可以了。其主要特点有:l单5V电源工作lLinBiCMOSTM工艺技术l两个驱动器及两个接收器l±30V输入电平l低电源电流:典型值是8mAl符合甚至优于ANSI标准EIA/TIA-232-E及ITU推荐标准V.28lESD保护大于MIL-STD-883标准的2000V3.4.3RS-232接口介绍RS-232接口就是串口,电脑机箱后方的9芯插座,旁边一般有"|O|O|"样标识。其9个引脚的信号内容见表3.3。在串行通讯时,要求通讯双方都采用一个标准接口,使不同的设备可以方便地连接起来进行通讯。RS-232-C接口(又称EIARS-232-C)是目前最常用的一种串行通讯接口。它是在1970年由美国电子工业协会(EIA)联合贝尔系统、调解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准,全名是“数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准”,该标准规定采用一个25个脚的DB25连接器,对连接器的每个引脚的信号内容及信号电平加以规定,实际上RS-232-C的25条引线中有许多是很少使用的,在计算机通讯中一般只使用3-9条引线,本设计中所用的就是9条引脚的借口,即DB9。而在通信过程中只有两个脚参与通信。2脚:计算机的输入RXD3脚:计算机的输出TXD56\n南京工程学院自动化学院本科毕业设计(论文)5脚:接地表3.4RS-2329个引脚的信号通过2、3脚就可以实现全双工的串行异步通信,而对于单片机而言,单片机的P3口有两个复用接口P3.0(RXD)和P3.1(TXD),这是单片机进行串行通信的收发口,对应连接到电脑的TDX、RDX上。PC串口与单片机串口连接方式如图3.12所示。串口设备交叉连接DB9插座电平转换DB9插座PC机图3.12串口连接方式3.4.4串行口连接原理图串行口连接原理图如图3.13所示。56\n南京工程学院自动化学院本科毕业设计(论文)图3.13串行通信原理图C1、C2、C4、C5及V+、V-是电源变换电路部分,电容采用0.1uF的非极性瓷片电容;T1IN、T2IN可直接连接TTL/COMS电平的51单片机串行发送端TXD,R1OUT、R2OUT可直接连接TTL/COMS电平的51单片机串行接收端RXD,T1OUT、T2OUT可直接连接PC机的RS-232串口的接收端RXD,R1IN、R2IN可直接连接PC机的RS-232串口的发送端TXD。从MAX232芯片两路发送、接收中任选一路作为接口,其发送、接收引脚要对应,T2IN连接单片机发送端TXD,PC机的RS-232接收端RXD一定要连接T2OUT,R2OUT连接单片机串行接收端RXD,PC机的RS-232发送端TXD一定要连接R2IN。其数据传输过程为:MAX232的T2IN引脚接单片机TXD端P3.1,TTL电平从单片机的TXD端发出,经过MAX232转换为RS-232电平后,从MAX232的T2OUT引脚发出,再连接到实验板上串口的第3脚,再交叉串口线后,连接至PC机串口座的第2脚RXD端,至此计算机接收到数据。PC机发送数据时,从PC机串口座的第3脚TXD端发出,再逆向流向单片机的RXD端P3.0接收数据。3.5在线下载模块ISP(In-SystemProgramming)在系统可编程,指电路板上的空白器件可以编程写入最终用户代码,而不需要从电路板上取下器件,已经编程的器件也可以用ISP方式擦除或再编程。AT89S52单片机可以通过I/O口P1.5、P1.6、P1.7进行在线下载编程。原理图如图3.14所示。56\n南京工程学院自动化学院本科毕业设计(论文)图3.14在线下载原理图MOSI:输出,AVRISP到目标芯片的指令或数据;MISO:输入,目标芯片到AVRISP的数据;SCK:输出,由AVRISP控制的串行时钟;RET:输出,由AVRISP控制的复位。3.6电机驱动模块3.6.1ULN2803特点及特性ULN28038个NPN达林顿晶体管,连接在阵列非常适合逻辑接口电平数字电路(例如TTL,CMOS或PMOS上/NMOS)和较高的电流/电压,如电灯,电磁阀,继电器,打印锤或其他类似的负载,广泛的使用范围:计算机,工业和消费应用。所有设备功能由集电极输出和钳位二极管瞬态抑制。该ULN2803是专为符合标准TTL,而制造ULN2804适合6至15V的高级别CMOS或PMOS上。该电路为反向输出型,即输入低电平压,输出端才能导通工作。图3.15引脚图1-8引脚:输入端11-18引脚:输出端9引脚:地端10引脚:电源+图3.15ULN2803引脚图56\n南京工程学院自动化学院本科毕业设计(论文)图3.16ULN2803内部电路图图3.17ULN2804内部电路图3.6.2电机控制模块电路图为了能输出稳定的驱动电流,采用8路达林顿ULN2803芯片,可以很方便实现晶体管集电极开路输出,UNL2803是类似NPN三极管,一共8路,高电平导通,低电平截止,脉冲管脚高电平可以导通对应的UNL2803其中一路。外接功率器件时必须有5V的电压经过负载再接入UNL2803的输出管脚,这是集电极开路的特点,由于外部驱动器的内部是5V光耦,所以可以很方便驱动。电机驱动模块电路图见图3.18图3.18电机控制模块电路图3.7电源电路模块3.7.1LM7805特点用lm78/lm79系列三端稳压IC来组成稳压电源所需的外围元件极少,电路内部还有过流、过热及调整管的保护电路,使用起来可靠、方便,而且价格便宜。该系列集成稳压IC型号中的lm78或lm79后面的数字代表该三端集成稳压电路的输出电压,如lm7806表示输出电压为正6V,lm7909表示输出电压为负9V。因为三端固定集成稳压电路的使用方便,电子制作中经常采用。最大输出电流1.5A,LM78XX系列输出电压分别为:5V;6V;8V;9V;10V;12V;15V;18V;24V。LM7805元器件如图3.19所示。56\n南京工程学院自动化学院本科毕业设计(论文)图3.19LM7805外形图3.7.2电源电路原理图电源电路原理图如图所示,该系统输入电压可以再8V-24V之间,采用三端线性稳压芯片LM7805稳压,输出5V的电压供给单片机以及外围器件。所有芯片的VCC和GND都连在一起,电源电路还加了适当的旁路滤波电容,净化电源,增强了抗干扰能力。电源电路原理图如图图3.20。图3.20电源电路原理图56\n南京工程学院自动化学院本科毕业设计(论文)第四章系统软件设计4.1系统软件设计概述根据系统所需实现的功能,软件设计可主要分为以下几个部分:主程序,显示程序,键盘程序,电机控制程序等。与汇编语言相比,C语言具有良好的模块化,易阅读和维护等优点,用其编写的程序具有很好的可移植性,功能化的代码能够很方便地从一个工程移植到另一个工程,从而可以减少开发时间,用C语言编写程序比用汇编语言更符合人们的思考习惯,很多处理器支持C语言编译器,故本设计的软件设计采用C语言进行编写。[7]4.2Keil开发软件介绍KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,提供了丰富的库函数和功能强大的集成开发调试工具。我们进行软件编程,需要通过汇编软件将所编写的源程序变为CPU可以执行的机器码。随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前最流行开发MCS-51系列单片机的软件,Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境将这些部份组合在一起。Keil可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及A51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,可以直接写入程序存贮器如E2PROM中。Keil软件开发流程:(1)建立工程;(2)为工程选定目标芯片;(3)设置工程的配置参数(4)打开/建立程序文件;(5)编译和连接文件;(6)纠正和修改程序中的书写和语法错误并重新编译连接;(7)将生成的HEX文件烧入单片机,运行调试。56\n南京工程学院自动化学院本科毕业设计(论文)4.3系统主控程序流程图根据设计要求,本设计的软件部分应实现的系统工作过程为:系统上电,对步进电机驱动器、数码管等进行初始化;进行工作方式选择,依次对速度,加速度和脉冲进行设定,若为键盘输入方式,则按下“设定”键,进入通道选择,选定后,对该系统的速度,脉冲和加速度进行设定。系统主控程序流程图如图4.1所示。K1按下则一直产生500hz的,50%的测试脉冲,松开K1,脉冲停止进入脉冲频率设定界面K0按下切换电机方向K12按下电机转动K13按下进入加速度设定界面K14按下进入脉冲个数设定界面限位开关,电机停止K11按下?主函数开始按钮判断K1按下K11按下系统初始化YNYNYNYNNYYNYNNYYN图4.1系统主控程序流程图56\n南京工程学院自动化学院本科毕业设计(论文)4.4键盘控制流程图根据设计要求,本程序实现的要求满足电机启动控制和参数的设置。如图4.2键盘控制流程图开始RUN是否按下电机按设定值运行限位开关,电机停止SET是否按下进入脉冲设定界面扫描UP键扫描DOWN键LEFT键是否按下RIGHT键是否按下SET键是否再次按下YNYYNYNN图4.2键盘控制流程图56\n南京工程学院自动化学院本科毕业设计(论文)4.5步进电机控制流程图步进电机加减速通常有三种方法:直线加减速、指数加减速、抛物线加减速,后两种方法,步进电机可能因为升降速太快而丢步,影响定位精度,下文介绍了精确定位过程的实现。任意直线加减速的方法,如图4.3所示,设位移设定值是已Pn、最大速度是Vmax、加速度是Acc,根据公式V=2×Acc×Pn,Vn为实时速度,可得Vn=,Pn=n(1)图4.3同步启动加速曲线图4.4延时启动加速曲线此公式,CPU根本无法实时计算出该值。这里介绍一种延时启动直线加减速脉冲生成方法。如图4.4所示。曲线1表示速度加速曲线,现把该设定曲线延时时间,即曲线2,在曲线2初始时刻发首个脉冲,此时速度值由图4.4可知。56\n南京工程学院自动化学院本科毕业设计(论文)所以由此可知:图4.5有匀速过程的速度位移曲线图4.6无匀速过程的速度位移曲线t0取值越小,则实际加速曲线越逼近给定加速曲线,这里为计算方便取t0为0.1s,由式(4)很容易求出初始时刻v1(一般将v1放大10倍,以避免浮点数乘除运算),根据式(8)、(5)分别求出vi、ti,由ti求出装载定时器T0的初始值。同样可以分析得出减速过程中匀减速初始时刻vi-1就是加速过程中达到的速度最大值。在加减速过程中,用户设置的位移值、加速度值可能较小,最大速度值又可能较大,所以单片机在运算过程中要判断是否有匀速运动过程,如图4.5、图4.6所示,具体方法如下:首先计算中间位移点Pm=Ps/2,并对定时器T0输出脉冲数进行计数,设计数变量为j,当j<Pm时,实时判断当前速度是否到达设定的最大速度值,若到达,则记录当前输出脉冲数P1,根据对称性,可知在第(Ps-P1)个脉冲开始减速。若j=Pm时,当前度依旧小于设定的最大速度值,则系统随即开始减速,两者都直至输出Ps个脉冲后停止。综上所述,定时器T0流程如图4.7所示,右侧是加速段流程,中间是匀速段流程,左侧是减速段流程。如图4.7步进电机控制流程图56\n南京工程学院自动化学院本科毕业设计(论文)图4.7步进电机控制流程图56\n南京工程学院自动化学院本科毕业设计(论文)第五章步进电机与驱动器的控制5.1步进电机选型本系统中,步进电机选用2相4线的42BYGH系列电机。该电机的主要参数如下:步距角(°)------------------------------------------1.8°绝缘电阻(Ω)----------------------------------------500VDC100MΩMin环境温度(℃)----------------------------------------—20~+50温 升(℃)------------------------------------------80径向跳动(mm)--------------------------------------0.02轴向跳动(mm)--------------------------------------0.1-0.3机身长(mm)-----------------------------------------34相电压(V)--------------------------------------------12相电流(A)--------------------------------------------0.4相电阻(Ω)-------------------------------------------30相电感(mH)------------------------------------------37静力矩(g.cm)-----------------------------------------2600引线数(NO.)------------------------------------------4转动惯量(g.c㎡)-------------------------------------34定位力矩(g.cm)--------------------------------------200重量(kg)-----------------------------------------------0.25.2步进电机的控制方法在运动控制系统中,既要对运动轨迹严格控制,也要对运动速度严格控制,以保证所生产的产品的精度及系统的生产效率。在高速运动时,为避免在启动和停止阶段发生冲击、失步、超程和振荡,运动控制系统需要对运动速度进行加减速控制。(1)脉冲增量插补算法的进给速度控制脉冲增量插补的输出形式是脉冲,器频率与进给速度成正比。因此可通过控制插补运算的频率来控制进给速度。常用的方法有:软件延时法和中断控制法。本设计采用中断控制法,即根据编程进给速度计算出定时器/计数器(CTC)的定时时间常数,以控制CPU中断,在中断服务中进行一次插补运算并发出进给脉冲,CPU等待下一次中断,如此循环进行,直到插补完毕。56\n南京工程学院自动化学院本科毕业设计(论文)这种方法使得CPU可以在两个进给脉冲时间间隔内做其它工作,如输入、译码、显示等。进给脉冲频率由定时器定时常数决定,定时到,插补运算一次输出进给脉冲。(2)加减速度控制为了保证控制精度,在进给速度突变时必须对送到进给电动机的脉冲频率进行加减速控制。当速度突然升高时,应保证加在伺服进给电动机上的进给频率逐渐增大;当速度突降时,应保证加在伺服电动机上的进给脉冲频率逐渐减小。本系统采用直线加减速控制算法,快速进给时速度变化范围大,平稳性好。速度变化曲线如图5.1所示。ABCDOvcpV(t)KL图5.1直线加减速直线加减速控制需经5个过程:1)加速过程若输入速度与上一个采样周期的输出速度vi-1之差大于一个速度常数KL,即vc-vi-1>KL,则必须进行加速控制,使本次采样周期的输出速度增加一个KL值:vi=vi-1+KL,KL为速度阶跃因子。显然,在加速过程中,输出速度vi沿斜率为=的直线上升,为采样周期。2)加速过渡过程当输入速度vc与上次采样周期的输出速度vi-1之差满足下式时:0KL,则进行减速控制,是本次采样周期的输出速度vi减小一个KL值,即:vi=vi-1–KL。显然,在减速过程中,输出速度沿直线为的直线下降。3)输出脉冲的计算输出脉冲数是指传动装置将物体从起始位置传送到目标位置所需要提供给步进电机的脉冲数。必要脉冲数按下面公式计算:5.3驱动器选型2M2046混合式步进电机驱动器,该驱动器的电器参数:输入电源:AC40V-60V 50/60HZ 2A(MAX) ;电流输出:0.25A~4A;驱动方式:PWM(脉宽调制)恒流斩波,两相正弦波电流输出;适配电机:7、85、86、90系列两相混合式步进电机;工作环境:0℃~50℃ 15~85%RH、不结露。无腐蚀性、易燃、易爆、导电性气体、液体和粉尘;存放环境 :0℃~50℃ 15~85%RH、不结露;外形尺寸:152*84*60mm(见外观尺寸)(长*宽*高);重 量:0.3Kg ;(1).控制信号定义(2)PLS/CW+:步进脉冲信号输入正端或正向步进脉冲信号输入正端PLS/CW-:步进脉冲信号输入负端或正向步进脉冲信号输入负端DIR/CCW+:步进方向信号输入正端或反向步进脉冲信号输入正端DIR/CCW-:步进方向信号输入负端或反向步进脉冲信号输入负端ENBL+:脱机使能复位信号输入正端ENBL-:脱机使能复位信号输入负端脱机使能信号有效时复位驱动器故障,禁止任何有效的脉冲,驱动器的输出功率元件被关闭,电机无保持扭矩。(2).控制信号连接控制器的控制信号可以高电平有效,也可以低电平有效。当高有效时,把所有控制信号的负端连在一起作为信号地,低有效时,把所有控制信号的正端连在一起作为信号公共端。现在以集电极开路和NPN输出为例,接口电路示意图如图5.2所示:56\n南京工程学院自动化学院本科毕业设计(论文)图5.2输入接口电路(共阳极接法)注意:VCC值为5V时,R短接;VCC值为12V时,R为1K,大于1/8W电阻;VCC值为24V时,R为2K,大于1/8W电阻;R必须接在控制器信号端。(3).设置电机每转步数驱动器可将电机每转的步数分别设置为400、500、800、1000、1250、1600、2000、2500、3200、4000、5000、6400、8000、10000、12800步。用户可以通过驱动器正面板上的拨码开关的SW5、SW6、SW7、SW8位来设置驱动器的步数(如表5.1):表5.1驱动器的步数对照表SW5状态OFFONOFFONOFFONOFFONOFFONOFFONOFFONOFFSW6状态ONOFFOFFONONOFFOFFONONOFFOFFONONOFFOFFSW7状态ONONONOFFOFFOFFOFFONONONONOFFOFFOFFOFF56\n南京工程学院自动化学院本科毕业设计(论文)SW8状态ONONONONONONONOFFOFFOFFOFFOFFOFFOFFOFF步数400800160032006400128002560010002000400050008000100002000025000(4).控制方式选择拨码开关SW4位可设置成两种控制方式:当设置成“OFF”时,为有半流功能。当设置成“ON”时,为无半流功能。(5).设置输出相电流为了驱动不同扭矩的步进电机,用户可以通过驱动器面板上的拨码开关SW1、SW2、SW3位来设置驱动器的输出相电流(有效值)单位安培,各开关位置对应的输出电流,不同型号驱动器所对应的输出电流值不同。具体见表5.2。表5.2驱动器输出电流参照表输出电流(A)SW1SW2SW3PEAKRMSONONON1.000.71OFFONON1.461.04ONOFFON1.911.36OFFOFFON2.371.69ONONOFF2.842.03OFFONOFF3.312.36ONOFFOFF3.762.69OFFOFFOFF4.203.004).半流功能半流功能是指无步进脉冲500ms后,驱动器输出电流自动降为额定输出电流的70%,用来防止电机发热。(6).DC+,DC-:连接驱动器电源DC+:直流电源正级,电源电压直流16~50V。最大电流是5A。DC-:直流电源负级。(7).A+A-B+B-:连接两相混合式步进电机驱动器和两相混合式步进电机的连接采用四线制,电机绕组有并联和串联接法,并联接法,高速性能好,但驱动器电流大(为电机绕组电流的1.73倍),串联接法时驱动器电流等于电机绕组电流。一个完整的步进电机控制系统应含有步进驱动器、直流电源以及控制器(脉冲源)。系统接线图如图5.3所示:56\n南京工程学院自动化学院本科毕业设计(论文)图5.3系统接线图56\n南京工程学院自动化学院本科毕业设计(论文)第六章结论6.1论文总结单轴运动控制应用于生活中的很多行业种,是自动化领域的典型应用。在对自动化要求很高的工业领域,更显得尤为重要。本设计主要是步进电机、单片机和步进电机驱动器的基本运用,旨在为今后进一步的研究打好基础,也为其他研究者提供一个借鉴。经过几个月的努力,已取得部分成果,同时保存了完整的记录档案。相关工作总结如下。一、主要工作及结论(1)熟悉AltiumDesigner印制板绘制软件的基本应用方法,掌握了绘制电路原理图及其PCB图的方法,能够较为熟练地完成印制板的规则设定和布线,并且能够自行创建元件库,根据实际元件尺寸,绘制元件封装。(2)将完成的PCB图送制,能够根据所绘电路图。(3)第一次使用独立键盘进行设计,键盘扫描较为简单,但编程时就需要注意各键功能之间的逻辑关系,才能使系统较为完善。(4)设计中采用了串行通信,复习单片机课上所学的定时器工作方式、波特率、串口中断服务等相关内容,也对MAX232芯片的电平转换功能有了一定了解。二、存在的问题(1)由于实践经验不足,原理上正确的,实际操作起来却不一定。(2)在连接电路原理图,会遇到有些芯片元件库里没有,就需要自己封装,遇到一些麻烦,但是在导师的帮助下都一一解决了。(3)电路原理图在仿真调试中遇到一些错误,以及一些不注意电路没连接好。自己在导师的帮助下慢慢修改好,提高自己做事的认真仔细的程度。6.2感想这次设计对我来说是对所学知识的一种实践应用,是一个全新的领域。我要将所学的知识运用起来,还要接触AT89S52、74HC595、MAX232等一些没有用过的器件,然而,对于自动化这门学科来说,这些却又是基础中的基础。这反映出我们所学的只是最基本的东西,要想真正掌握一门学科,就必须付诸于实践。我选择了这个课题,不但可以巩固课上所学的知识,还使得自己拥有了一次锻炼实践能力的机会,拓宽了我的知识面,拓展了视野和思维。56\n南京工程学院自动化学院本科毕业设计(论文)在设计中,我查阅相关资料,构思真个设计框架,选择要用的器件类型,有针对性地进一步深入理解。相较于有的同学来说,我的课题在大体思路上还是很好理解的,通过和老师的交流,我很快就有了几个想法,开始考虑方案的可行性,在老师的建议下,我进一步修改设计方案,绘制原理图,思路愈发清晰起来。敲定原理图后,就面临绘制PCB图的问题,我们以往在课上所学的只是绘制的方法,但在实际操作中,我们需要考虑到有用元件的型号,大小,选择合适的封装,在非标准器件的情况下,就需要自行测量其尺寸,进行绘制。这一过程中,每一个引脚号都要十分注意,必须和实物对应起来,否则,所制的印制板可能就无法使用。在布线的时候,还存在电源线、地线需要加粗的情况,这都是与实际所用电源大小息息相关的,规则设置里,也要考虑到很多细枝末节的地方,焊盘大小、走线间距等等,经过反复的检查,才最终完成PCB图。出现了问题,只能不断地尝试解决,思考改良方案。经过此次设计,对于理论和实践的差别,我真的是深有感触,而软件与硬件相互配合,一旦硬件出了问题,软件的调试也就无法下手,没有实际运行,不会知道哪儿会有问题。尽管整个过程中,坎坷不断,但我还是从中受益良多。我这段时间内学到了大量的专业知识,将以前所学的部分内容也能用起来,只有将理论与实践联系起来,这些知识才真正的属于我,学的才更加深刻、更加牢靠。这些都将有益于我今后的学习和工作。56\n南京工程学院自动化学院本科毕业设计(论文)致谢本设计设计调试工作是在我的导师孙来业高级工程师的精心指导和悉心关怀下完成的,在我的学业和设计工作中无不倾注着导师辛勤的汗水和心血。孙老师在设计期间给我提出很多设计建议,也灌输一些设计理念,并引出很多生活中的应用实例,让我受益匪浅。在毕业设计期间,孙老师时时提醒并督促我抓紧毕业设计,每天按时完成毕业设计日志并定期交给孙老师检查,充分利用了几个月的设计时间,在孙老师的指导下按时完成了毕业设计任务。导师的严谨治学态度、渊博的知识、无私的奉献精神使我深受的启迪。从尊敬的导师身上,我不仅学到了扎实、宽广的专业知识,我不仅学到了扎实、宽广的专业知识,也提高了自己的实践能力,以及待人处事的一种责任心。在此我要向我的导师致以最衷心的感谢和深深的敬意。在我的设计(论文)撰写过程中,实验室的屈老师等提出了宝贵意见和建议,对于我提出的问题都一一耐心解答,使我们能够极大地利用实验室的资源,在这里我向他们表示深深的感谢。在多年的学习生活中,还得到了许多学院领导、系领导和老师的热情关心和帮助。中期检查时,老师认真负责,对我的设计方案提出意见,使得本设计更加完善。最后,向所有关心和帮助过我的领导、老师、同学和朋友表示由衷的谢意!衷心地感谢在百忙之中评阅我的设计论文和参加答辩的各位老师!于少龙二一三年六月于南京56\n南京工程学院自动化学院本科毕业设计(论文)参考文献参考文献:[1]运动控制器在国内的应用及发展吴孜越,胡东方,杨丙乾(河南科技大学机电工程学院,河南洛阳)[2]单轴运动控制器的设计姓名:杨凯峰华中科技大学硕士学位论文[3]简易单轴运动控制器的设计刘汉忠,周伯荣,李宏胜(南京工程学院自动化学院,南京)[4]ATMEL公司.AT89S52数据手册[Z][5]赵德安等.单片机原理及应用[M].北京.机械工业出版社.2009.4[6]赵志诚,王宏刚,齐向东,孙志毅等.串行通信的实现及在测控系统中的应用[J].控制工程,ControlEngineeringofChina.2003[7]谭浩强.C程序设计[M].北京:清华大学出版社.1999[8]基于单片机的步进电机驱动贺莹,武淑娟(天津大学仁爱学院机械工程系天津)[9]基于AT89C52单片机的步进电机控制系统研究何冲王淑红侯胜伟牛慧文(太原理工大学电气与动力工程学院,太原)[10]基于单片机控制的步进电机控制器刘雪(新乡华源电力勘察设计有限公司河南新乡)[11]基于单片机控制的步进电机广州华商职业学院 吴文英56\n南京工程学院自动化学院本科毕业设计(论文)附录A:硬件设计原理图与PCB图56\n南京工程学院自动化学院本科毕业设计(论文)56\n南京工程学院自动化学院本科毕业设计(论文)56\n南京工程学院自动化学院本科毕业设计(论文)56\n南京工程学院自动化学院本科毕业设计(论文)附录B:软件程序清单56\n南京工程学院自动化学院本科毕业设计(论文)//******************************************************////毕业设计:单轴运动控制器设计////K数控092于少龙////******************************************************//#include#defineuint32_tunsignedlong#defineuint16_tunsignedshort#defineuint8_tunsignedchar#defineF_CPU///12/2#defineCOUNT_ADD10#defineF_min200#definePuls_Circ400voidPlan_Acceler_Curve();//规划加减速数组voidTimer_ON(void);//启动定时器开始产生脉冲voidTimer_OFF(void);//voidrun_some_step(uint16_tfmax,uint16_tfadd,uint16_tstep);//跑一些设定好的脉冲voidshift_595(uint16_twei,uint16_tnum);//数码管底层驱动voiddelay_ms(uint16_tdelay_ms);//延时msvoiddisplay_speed(uint16_tdat);//显示速度值,voiddisplay_step(uint16_tdat);//显示脉冲个数voiddisplay_key(uint8_tflag,uint16_tdat);//显示按键设定信息voidkeyscan();//按键检测程序voidcheck_data_set(uint8_tflag);//检查参数设定的范围///////////////////////////////////////////////////////////////////////////////////////uint8_tcodeWEI[9]={0X40,0x80,0x10,0x20,0x04,0x08,0x01,0x02,0x00};//0-9共阳数码管uint8_tcodeDUAN[12]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xBF,0XFF};///*-*/uint8_tcodeDUAN_DIAN[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,};//带小数点的编码sbitPULS=P1^0;sbitDIR=P1^1;sbitEN=P1^2;sbitLED_RUN=P1^3;sbitLED_ERROR=P1^4;sbitBEEP=P3^4;sbitDS_595=P3^7;sbitSCK_595=P3^6;sbitRCK_595=P3^5;56\n南京工程学院自动化学院本科毕业设计(论文)sbitKEY0=P0^0;sbitKEY1=P0^1;sbitKEY2=P0^2;sbitKEY3=P0^3;sbitKEY4=P0^4;sbitKEY5=P0^5;sbitKEY6=P0^6;sbitKEY7=P0^7;sbitKEY8=P2^7;sbitKEY9=P2^6;sbitKEY10=P2^5;sbitKEY11=P2^4;sbitKEY12=P2^3;sbitKEY13=P2^2;sbitKEY14=P2^1;sbitKEY15=P2^0;sbitKEY_DIR=P0^0;sbitKEY_NOT=P2^7;sbitKEY_POT=P2^6;sbitKEY_UP=P2^5;sbitKEY_SET=P2^4;sbitKEY_RUN=P2^3;sbitKEY_LEFT=P2^2;sbitKEY_DOWN=P2^1;sbitKEY_RIGHT=P2^0;uint8_tflag_dir;///////////下面参数都是关于脉冲产生先关的///////////////////////////////////////uint32_tSize_Circ;//8MM/r//uint16_tPuls_Circ;//400pul/r//uint32_tL_um;//longCurrt_Post_Puls;//uint16_tT_add;//ms//uint8_tflag_add;//uint16_tF_min;//uint8_tTH_add;//T0进中断的设定值TH0uint8_tTL_add;//T0进中断的设定值TL0uint8_tTH_f;//T1进中断的设定值TH1uint8_tTL_f;//T1进中断的设定值TL1charCount_T;//进T0中断的次数uint8_tF_TH[COUNT_ADD];//规划的10级加减速中每级的频率溢出值TH1uint8_tF_TL[COUNT_ADD];//规划的10级加减速中每级的频率溢出值TL1uint8_tflag_over;//脉冲发生完成标志,完成为1,没完成为0uint16_tF_now;//电机即时速度,单位:r/minuint32_tPuls_All;//设定的脉冲的个数uint32_tF_max;//设定的脉冲的最大频率,hz56\n南京工程学院自动化学院本科毕业设计(论文)uint32_tADD;//设定的脉冲的加速度,hz/s^2uint32_tPuls_up;//加速阶段的脉冲数,uint32_tPuls_down;//减速级段的脉冲数longCount_Puls;//进入T1中断的次数0到Puls_All//////主函数main(void),程序的入口,必须有///////////////////////////////////////voidmain(void){F_max=1000;//ADD=5000;//Puls_All=2000;//初始化默认设定一些参数F_now=0;//电机速度为0PULS=0;//脉冲端口关闭DIR=0;//方向默认为0EN=0;//使能驱动器LED_RUN=1;//run指示灯亮LED_ERROR=0;//错误指示灯灭BEEP=0;//蜂鸣器关闭while(1){keyscan();display_speed(F_now);display_step(Count_Puls);while(KEY1==0){PULS=1;delay_ms(1);PULS=0;delay_ms(1);}}}////////////////////////////////////voidkeyscan(){uint8_tflag_set=0;//uint16_tfv=F_max,add=ADD,step=Puls_All;///////////////////////if(KEY_RUN==0)//如果启动RUN按键按下,电机就开始转动{delay_ms(7);//按键防抖if(KEY_RUN==0){run_some_step(F_max,ADD,Puls_All);}56\n南京工程学院自动化学院本科毕业设计(论文)}/////////////////////if((KEY_DIR==0)&&(flag_dir==1))//如果dir{delay_ms(7);//按键防抖if((KEY_DIR==0)&&(flag_dir==1)){flag_dir=0;DIR=0;while(KEY_DIR==0)//松手检测{display_speed(F_now);display_step(Count_Puls);}}}elseif((KEY_DIR==0)&&(flag_dir==0))//如果dir{delay_ms(7);//按键防抖if((KEY_DIR==0)&&(flag_dir==0)){flag_dir=1;DIR=1;while(KEY_DIR==0)//松手检测{display_speed(F_now);display_step(Count_Puls);}}}///////////////////////////////////////////////////////////////////if(KEY_SET==0){delay_ms(7);//按键防抖if(KEY_SET==0)//set键按下后进入设定模式1:最大速度设定{flag_set=1;F_now=0;Count_Puls=0;while(KEY_SET==0)//松手检测{display_key(flag_set,F_max);}while(flag_set==1){display_key(flag_set,F_max);//扫描数码管if(KEY_SET==0)//再次按下SET键就跳出设定模式,跳出大循环{delay_ms(7);//按键防抖if(KEY_SET==0){flag_set=0;while(KEY_SET==0)//松手检测{shift_595(WEI[7],DUAN[flag_set]);//扫描数码管}}56\n南京工程学院自动化学院本科毕业设计(论文)}if(KEY_UP==0)//加键+100{F_max+=100;check_data_set(flag_set);while(KEY_UP==0){display_key(flag_set,F_max);//扫描数码管}}if(KEY_DOWN==0)//减键-100{F_max-=100;check_data_set(flag_set);while(KEY_DOWN==0)//松手检测{display_key(flag_set,F_max);//扫描数码管}while(KEY_UP==0)//松手检测{display_key(flag_set,F_max);//扫描数码管}}if(KEY_LEFT==0)//left键按下后进入设定模式2:加速度设定{delay_ms(7);//按键防抖if(KEY_LEFT==0){flag_set=2;while(flag_set==2){display_key(flag_set,ADD);if(KEY_SET==0)//再次按下SET键就跳出设定模式,跳出大循环{delay_ms(7);if(KEY_SET==0){flag_set=0;while(KEY_SET==0)//松手检测{shift_595(WEI[7],DUAN[flag_set]);//扫描数码管}}}if(KEY_UP==0){ADD+=1000;check_data_set(flag_set);while(KEY_UP==0)//松手检测{display_key(flag_set,ADD);//扫描数码管}}if(KEY_DOWN==0){ADD-=1000;56\n南京工程学院自动化学院本科毕业设计(论文)check_data_set(flag_set);while(KEY_DOWN==0)//松手检测{display_key(flag_set,ADD);//扫描数码管}}if(KEY_RIGHT==0)//right键按下后进入设定模式2:脉冲个数设定{delay_ms(7);if(KEY_RIGHT==0){flag_set=3;while(flag_set==3){display_key(flag_set,Puls_All);//扫描数码管if(KEY_SET==0)//再次按下SET键就跳出设定模式,跳出大循环{delay_ms(7);if(KEY_SET==0){flag_set=0;while(KEY_SET==0)//松手检测{shift_595(WEI[7],DUAN[flag_set]);//扫描数码管}}}if(KEY_UP==0){Puls_All+=100;check_data_set(flag_set);while(KEY_UP==0)//松手检测{display_key(flag_set,Puls_All);//扫描数码管}}if(KEY_DOWN==0){Puls_All-=100;check_data_set(flag_set);while(KEY_DOWN==0)//松手检测{display_key(flag_set,Puls_All);//扫描数码管}}}}}}56\n南京工程学院自动化学院本科毕业设计(论文)}}}}}}////////////////////////////////////////////////voidcheck_data_set(uint8_tflag)//检查一些参数是否设定不合法,有大小限制{switch(flag){case1:if(F_max>4000)F_max=4000;elseif(F_max<200)F_max=200;break;case2:if(ADD>50000)ADD=50000;elseif(ADD<2000)ADD=2000;break;case3:if(Puls_All>60000)Puls_All=60000;elseif(Puls_All<200)Puls_All=200;break;default:break;}}////////////////////////////voidshift_595(uint16_twei,uint16_tnum)//功能描述:可以向某一位wei显示一个数据num;{//75HC595是串转并芯片,可以通过时序把数据通过一个DS_595管脚,传输到芯片的8个数据管脚上,还可以级联下去,//因此极大的减少了IO的使用,本数码管采用2片,一片驱动段选,一片驱动位选;uint8_tj;uint16_tcom;com=(wei<<8)|num;//,56\n南京工程学院自动化学院本科毕业设计(论文)for(j=0;j<16;j++){SCK_595=0;if(com&0x8000)DS_595=1;elseDS_595=0;com=com<<1;//595,SCK_595=1;//移位数据}SCK_595=0;//RCK_595=0;//RCK_595=1;//锁存输出RCK_595=0;//}voiddisplay_key(uint8_tflag,uint16_tdat){shift_595(WEI[7],DUAN[flag]);shift_595(WEI[0],DUAN[dat%10]);//取dat的个位shift_595(WEI[1],DUAN[dat%100/10]);//取dat的十位shift_595(WEI[2],DUAN[dat%1000/100]);//取dat的百位shift_595(WEI[3],DUAN[dat%10000/1000]);//取dat的千位shift_595(WEI[4],DUAN[dat/10000]);//取dat的个位shift_595(WEI[8],DUAN[11]);//全部关闭一次显示可以消除最后一位显示过亮问题}voiddisplay_speed(uint16_tdat){if(flag_dir==0)shift_595(WEI[3],DUAN[10]);//如果是负向,速度显示为负值-300r/minshift_595(WEI[0],DUAN[dat%10]);shift_595(WEI[1],DUAN[dat%100/10]);shift_595(WEI[2],DUAN[dat%1000/100]);shift_595(WEI[8],DUAN[11]);//消除最后一位显示过亮问题}voiddisplay_step(uint16_tdat){shift_595(WEI[4],DUAN[dat%10]);shift_595(WEI[5],DUAN[dat%100/10]);shift_595(WEI[6],DUAN[dat%1000/100]);shift_595(WEI[7],DUAN[dat/1000]);shift_595(WEI[8],DUAN[11]);//消除最后一位显示过亮问题}////////////////////////////////////////voidrun_some_step(uint16_tfmax,uint16_tfadd,uint16_tstep){//T_add=400;//msCount_Puls=0;//脉冲计数变量清零Count_T=0;//加速时间段清零56\n南京工程学院自动化学院本科毕业设计(论文)flag_over=0;//脉冲完成标志清零表示未完成F_max=fmax;//把参数复制到相应变量中ADD=fadd;//Puls_All=step;//Plan_Acceler_Curve();//开始规划加速数组while(flag_over==0)//等待脉冲发送完毕{display_speed(F_now);//在等待过程中显示实时速度和脉冲个数display_step(Count_Puls);F_now=F_CPU*60/(65536-(TH_f*256+TL_f))/Puls_Circ;//Puls_Circ是电机转一圈需要的脉冲数,计算出速度单位r/min//F_now=F_CPU/(65536-(TH_f*256+TL_f));if((KEY_NOT==0)&&(flag_dir==0)){Timer_OFF();//检测如果碰到相应的限位开关就停止产生脉冲}if((KEY_POT==0)&&(flag_dir==1)){Timer_OFF();}}F_now=0;//最后脉冲发送完毕,速度自然就又等于0}///////////////////////////////voidPlan_Acceler_Curve(){uint16_tF_fpwm[COUNT_ADD];uint8_ti;uint16_tt;t=(F_max-F_min)*1000/ADD;//ms100-450MS,本系统的加速时间不可以超过450ms//根据匀加速公式可以算出加速时间tif(40Puls_down){//减速阶段Count_T--;//加速次数递减if(Count_T>=0)//如果10级减速还没完成,继续反向赋值减速{TH_f=F_TH[Count_T];TL_f=F_TL[Count_T];}else//如果10级减速完毕就停止计时,关闭中断{ET0=0;TR0=0;}}}voidTimer1_puls(void)interrupt3using1{TH1=TH_f;//先装载溢出值TL1=TL_f;PULS=1;//高电平,产生高脉冲,打开ULN2803,进而控制驱动器的脉冲端Count_Puls++;//进一次中断,脉冲个数变量加一if(Count_Puls>=Puls_All)//如果发送完了就关闭T1,T0置位flag_over{//EN=1;ET1=0;TR1=0;ET0=0;TR0=0;flag_over=1;EA=0;56\n南京工程学院自动化学院本科毕业设计(论文)//Count_Puls=0;}PULS=0;//最后还有置0,目的是形成一个完整脉冲,脉冲宽度即中断函数执行时间,7us左右}///////////////////////////////////////////////////////////////////////////////////////////voidPlan_Acceler_Curve2()//{//uint16_tF_fpwm[COUNT_ADD];//uint8_ti;//uint16_ta;////Puls_All=(L_um*Puls_Circ/Size_Circ);//计算要走的脉冲个数//Puls_up=(F_min+F_max)*T_add/2/1000;//加速区步数Sadd=(V0+V1)*t/2;//Puls_down=Puls_All-Puls_up;//////减速区步数S-Sadd//TH_add=(uint8_t)((65536-(F_CPU*(T_add/COUNT_ADD)/1000))/256);//计算定时器0即加速时间/10//TL_add=(uint8_t)((65536-(F_CPU*(T_add/COUNT_ADD)/1000))%256);////if(Puls_up<=(Puls_All/2))//{//F_fpwm[0]=F_min;//F_TH[0]=(uint8_t)((65536-(F_CPU/F_fpwm[0]))/256);////F_TL[0]=(uint8_t)((65536-(F_CPU/F_fpwm[0]))%256);////a=(F_max-F_min)/COUNT_ADD;//等分成COUNT_ADD级加速//for(i=0;i