步进电机驱动设计论文_第1页
步进电机驱动设计论文_第2页
步进电机驱动设计论文_第3页
步进电机驱动设计论文_第4页
步进电机驱动设计论文_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要步进电动机已成为除直流电动机和交流电动机以外的第三类电动机,它是一种将电脉冲转化为角位移的执行机构,可以通过控制电脉冲个数和频率来控制角位移量和转速,从而达到准确定位和调速的目的;步进电机与其他类型电机相比具有易于开环精确控制、无积累误差等优点,在众多领域中获得了广泛的应用。为了得到性能优良的控制结果,出现了很多步进电机控制系统,其中采用单片机作为控制核心的控制系统得到了广泛的应用。本文用的摇杆是简单的计算机摇杆,其功能类似滑动变阻器,使摇杆的运动能转换成计算机能够处理的电子信息。本文主要研究用摇杆来控制步进电机,以实现其正反转,调速等功能。硬件上优先选择了ATMEGA16单片机、计算机摇杆及其L297+L298驱动电路、单极两相四线步进电机,软件则通过编程来最终实现摇杆对步进电机方向,转速的控制,并在PROTEUS上成功仿真。本论文创新之处在于通过ATMEGA16单片机自带A/D转换器的优势实现了从电信号向数字信号的转换,从而提高了操纵杆的精确度。另则,脉冲相序是通过芯片产生的,省去了编程的繁琐。关键字:步进电机摇杆AVR单片机驱动控制A/D转换AbstractThesteppermotorhasbecomethethird-classmotorinadditiontotheoutsideoftheDCmotorandACmotor.Itistheimplementingagencywhichchangesanelectricalpulseintotheangulardisplacementanditshouldcontroltheelectricalimpulsesnumberandfrequencytocontroltheangulardisplacementquantityandspeedsoastoachievethepurposeoftheaccuratepositioningandspeed.Steppingmotorcomparedwithothertypesofmotorwhichiseasytoopenringprecisecontrol,noerroraccumulation,etcandithaswidespreadapplicationinmanyfields.Inordertoobtaingoodcontrolperformanceresults,therehasbeenalotofsteppingmotorcontrolsystem,whichusesmicrocontrollerunitasthecontrolofthecontrolsystemhasbeenwidelyused.Inthispaper,usingthesimplecomputeristhejoystick,itsfunctionsimilarsliderheostat,makethesportscanconvertthecomputertobeabletodealwiththeelectronicinformation.Thistextstudiestherockertocontrolthesteppermotortoachievethereversing,speedcontrolandotherfunctions.HardwarechoseATMEGA16microcontroller,computeranditsL297+L298rockerdrivecircuit,asingle-stagetwo-phasefour-wiresteppermotor.Softwareisprogrammedtofinallyrealizerockertosteppingmotordirection,speedcontrol,andthePROTEUSsuccesssimulation.Inthetext,theinnovationliesinrealizingfromelectricalsignaltoAdigitalsignalconversionsoastoimprovetheaccuracyofthejoystickthroughtheATMEGA16microcontrollerofA/Dconverteradvantage.Anotheradvantageisthatpulsesequenceisproducedbychipeliminatingtheneedforcumbersomeprogramming.Keywords:SteppermotorjoystickpotentiometerAVRmicrocontrollerdrivecontrolA/Dconversion目录1绪论 -1-1.1步进电机概念 -1-1.2步进电机研究现状 -1-1.2.1国内步进电机控制系统 -1-步进电机驱动技术 -3-1.3基于摇杆控制的步进电机应用 -4-1.4本课题研究主要内容 -4-2步进电机原理介绍 -4-2.1步进电机工作原理 -4-2.2步进电机控制原理 -5-2.3步进电机的特点 -5-2.4步进电机的主要性能指标 -6-2.5步进电机的选择 -6-选择依据 -6-本设计对步进电机的选择 -7-3ATMEGA16单片机和驱动芯片 -8-3.1ATMEGA16单片机 -8-3.1.1ATMEGA16单片机特性 -8-中断 -9-3.1.3I/O端口 -10-3.1.4定时/计数器0 -12-3.1.5模数拟转换 -13-逐次逼近式的ADC转换器原理简介: -13-A/D转换器的主要技术指标: -14-AVR单片机内部ADC简介 -14-3.2L297和L298驱动电路 -17-3.2.1L297介绍 -17-3.2.2L298介绍 -21-3.2.3L297与L298组合电路 -22-4软件设计及仿真 -23-4.1PROTEUS仿真环境简介 -23-概述 -23-4.1.2PROTEUS软件的基本操作 -23-4.2系统方案设计 -24-4.3电机驱动电路设计 -24-4.3.1L298单独驱动 -24-4.3.2L297+L298驱动 -25-4.4ATMEGA16编程与仿真 -26-实现模数转换 -26-固定脉冲驱动仿真 -28-改变端口高低电平实现步进电机转动 -30-基于摇杆控制的步进电机的驱动 -32-基于摇杆控制的步进电机的驱动的改进 -34-总结 -36-展望 -36-参考文献 -37-附录 -38-附录1 -38-附录2 -40-附录3 -41-附录4 -43-翻译部分 -47-英文原文 -47-中文译文 -60-致谢 -72-1绪论1.1步进电机概念步进电机是一种将电脉冲转化为角位移的执行机构,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(称为“步距角”)。它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。步进电机可以作为一种控制用的特种电机,利用其没有积累误差(精度为100%)的特点,广泛应用于各种开环控制。现在比较常用的步进电机包括反应式步进电机(VR)永磁式步进电机(PM)混合式步进电机(HB)和单相式步进电机等。步进电动机已成为除直流电动机和交流电动机以外的第三类电动机。传统电动机作为机电能量转换装置,在人类的生产和生活进入电气化过程中起着关键的作用。可是在人类社会进入自动化时代的今天,传统电动机的功能已不能满足工厂自动化和办公自动化等各种运动控制系统的要求。为适应这些要求,发展了一系列新的具备控制功能的电动机系统,其中较有自己特点,且应用十分广泛的一类便是步进电动机。

步进电动机的发展与计算机工业密切相关。自从步进电动机在计算机外围设备中取代小型直流电动机以后,使其设备的性能提高,很快地促进了步进电动机的发展。另一方面,微型计算机和数字控制技术的发展,又将作为数控系统执行部件的步进电动机推广应用到其他领域,如电加工机床、小功率机械加工机床、测量仪器、光学和医疗仪器以及包装机械等。1.2步进电机研究现状国内步进电机控制系统在步进电机的发展过程中,出现了多种控制方案: 1.基于PLC控制PLC也叫可编程控制器,是一种工业上用的计算机。PLC作为新一代的工业控制器,由于具有通用性好、实用性强、硬件配套齐全、编程简单易学和可靠性高等优点而广泛应用于各行业的自动控制系统之中。步进电机控制系统由PLC、环形分配器和功率驱动电路组成。控制系统采用PLC来产生控制脉冲。通过PLC编程输出一定数量的方波脉冲,控制步进电机的转角进而控制伺服机构的进给量,同时通过编程控制脉冲频率来控制步进电机的转动速度,进而控制伺服机构的进给速度。环形脉冲分配器将PLC输出的控制脉冲按步进电机的通电顺序分配到相应的绕组。PLC控制的步进电机可以采用软件环形分配器,也可采用硬件环形分配器。采用软件环形分配器占用PLC资源较多,特别是步进电机绕组相数大于4时,对于大型生产线应该予以考虑。采用硬件环形分配器,虽然硬件结构稍微复杂些,但可以节省PLC资源,目前市场有多种专用芯片可以选用。步进电机功率驱动电路将PLC输出的控制脉冲放大,达到比较大的驱动能力,来驱动步进电机。采用软件来产生控制步进电机的环型脉冲信号,并用PLC中的定时器来产生速度脉冲信号,这样就可以省掉专用的步进电机驱动器,降低硬件成本。但由于PLC的扫描周期一般为但由于PLC的扫描周期一般为几毫秒到几十毫秒,相应的频率只能达到几百赫兹,因此,受到PLC工作方式的限制及其扫描周期的影响,步进电机不能在高频下工作,无法实现高速控制。并且在速度较高时,由于受到扫描周期的影响,相应的控制精度就降低了。2.基于电子电路控制步进电机受电脉冲信号控制,电脉冲信号的产生、分配、放大全靠电子元器件的动作来实现。由于脉冲控制信号的驱动能力一般都很弱,因此必须有功率放大驱动电路。步进电机与控制电路、功率放大驱动电路组成一体,构成步进电机驱动系统。此种控制电路设计简单,功能强大,可实现一般步进电机的细分任务。这个系统由三部分组成:脉冲信号产生电路、脉冲信号分配电路、功率放大驱动电路。此种方案即可为开环控制,也可闭环控制。开环时,其平稳性好,成本低,设计简单,但未能实现高精度细分。采用闭环控制,即能实现高精度细分,实现无级调速。闭环控制是不断直接或间接地检测转子的位置和速度,然后通过反馈和适当的处理,自动给出脉冲链,使步进电机每一步响应控制信号的命令,从而只要控制策略正确电机不可能轻易失步。该方案多通过一些大规模集成电路来控制其脉冲输出频率和脉冲输出数,功能相对较单一,如需改变控制方案,必须需重新设计,因此灵活性不高。3.基于单片机控制采用单片机来控制步进电机,实现了软件与硬件相结合的控制方法。用软件代替环形分配器,达到了对步进电机的最佳控制。系统中采用单片机接口线直接去控制步进电机各相驱动线路。由于单片机的强大功能,还可设计大量的外围电路,键盘作为一个外部中断源,设置了步进电机正转、反转、档次、停止等功能,采用中断和查询相结合的方法来调用中断服务程序,完成对步进电机的最佳控制,显示器及时显示正转、反转速度等状态。环形分配器其功能由单片机系统实现,采用软件编程的办法实现脉冲的分配。本方案有以下优点(1)单片机软件编程可以使复杂的控制过程实现自动控制和精确控制,避免了失步、振荡等对控制精度的影响;(2)用软件代替环形分配器,通过对单片机的设定,用同一种电路实现了多相步进电机的控制和驱动,大大提高了接口电路的灵活性和通用性;(3)单片机的强大功能使显示电路、键盘电路、复位电路等外围电路有机的组合,大大提高系统的交互性。基于以上优点,本次设计采用基于单片机的控制方案。步进电机驱动技术步进电机的工作必须使用专用设备——步进电机驱动器。驱动器针对每一个步进脉冲,按一定的规律向电机各相绕组通电(励磁),以产生必要的转矩,驱动转子转动。步进电机、驱动器和控制器构成了不可分割的3大部分。步进电机驱动系统性能除了于电机自身的性能有关外,很大程度上取决于驱动器的性能的优劣。当电机和负载确定后,整个系统的性能完全取决于控制方法。步进电机驱动方式的发展先后有单电压驱动、高低压驱动、斩波恒流驱动、调频驱动和细分驱动等。。单电压驱动是通过改变电路的时间常数以提高电机的高频特性。该驱动的优点是结构简单、成本低,缺点是串接电阻器的做法将产生大量的能量损耗,尤其是在高频工作时更加严重,因而它只适用于小功率或对性能指标要求不高的步进电机驱动方面。单电压串电阻驱动是在单电压驱动技术的基础上为电枢绕组回路串入电阻,用以改善电路的时间常数以提高电机的高频特性。它提高了步进电机的高频响应、减少了电动机的共振,也带来了损耗大、效率低的缺点。这种驱动方式目前主要用于小功率或启动、运行频率要求不高的场合。高低压驱动电路在六十年代末出现,是随着对步进电机要求大功率驱动和高频工作而出现的。这种电路主要是加大绕组电流的注入量以提高出力,而不是通过改善电路的时间常数来使矩频性能得以提高,这种电路的特点是电流波形得到了很大改善。电机的转矩特性很好,启动和运行频率得到很大的提高。由于绕组回路中的串接若干个较小的电阻,所以电源功耗较小。为了弥补高低压电路中电流波形的下凹,提高输出转矩,七十年代中期研制出斩波电路,该电路由于采用斩波技术,使绕组电流在额定值上下成锯齿形波动,流过绕组的有效电流相应增加,故电机的输出转矩增大,而且不需外接电阻,整个系统的功耗下降,效率较高,因而恒流斩波电路得到了广泛应用。为了进一步提高驱动系统的高频响应,可采用升频升压功率驱动接口。这种接口对绕组提供的电压与电机的运行频率成线性关系。它的主回路实际上是一个开关稳压电源,利用频率-电压变换器,将驱动脉冲的频率转换成直流电平,并用此电平去控制开关稳压电源的输入,这就构成了具有频率反馈的功率驱动接口。细分驱动电路在七十年代中期由美国学者首次提出。它是建立在步进电机的各相绕组理想对称和距角特性严格正旋的基础上的,它通过控制电动机各相绕组中电流的大小和比例。使步距角减小到原来的几分之一至几十分之一。实际上,加工误差致使细分后的步距角精度并不高。但是,细分驱动能极大地改善步进电机运行的平稳性、提高匀速性、减轻甚至消除振荡。近几年来,由于微处理机技术的发展,细分电路获得了广泛应用。1.3基于摇杆控制的步进电机应用一般所说的摇杆指设计为飞行模拟类游戏使用的摇杆,也有为赛车设计的。绝大多数是直接采用飞机飞行控制杆作为原型去设计的,可以说具有很强的仿真度。其基本原理是将塑料杆的运动转换成计算机能够处理的电子信息。摇杆已在各种机械设备上得到应用,包括F-15喷气式战斗机、挖掘机和轮椅。本文用到的摇杆(即摇杆电位器),是一种简单的计算机摇杆,只进行一维运动,功能上类似于一个滑动变阻器所实现的功能。通过改变滑动变阻器的阻值的大小可以改变输入到单片机的电压信号,通过单片机内部转换进而去控制输出单片机的数字信号,最后将数字信号转换成脉冲信号,这样就可以经过驱动芯片实现对步进电机转向、转速以及停转的控制。本文设计摇杆控制步进电机可以在很多方面得到应用。在科研方面,可以利用本设计控制小车、机器人的行走;在生活方面,可以用来制造利于行走的辅助设备;在工业生产方面,可以用来控制轧钢机的运行,控制机床的运行等等。1.4本课题研究主要内容本课题以设计一款步进电机的驱动控制设备为目的,主要内容有:(1)摇杆电位器输出电压模拟信号到单片机,作为控制系统的输入端。(2)采用ATMEGA16单片来采集输入的模拟信号,并通过AD转换器将模拟信号转换为数字信号,产生脉冲信号输入到驱动电路中。驱动电路由L297和L298组合构成,通过输入的脉冲信号产生步进电机的驱动序列驱动步进电机转动。(3)通过PROTUES仿真。2步进电机原理介绍2.1步进电机工作原理步进电机的工作就是步进转动,其功用是将脉冲电信号变换为相应的角位移或是直线位移,就是给一个脉冲信号,电动机转动一个角度或是前进一步。步进电机的角位移量与脉冲数成正比,它的转速与脉冲频率(f)成正比,如两相步进电机设定为半步的情况下(电机转一圈400个脉冲=60f/200(转/分)。步进电机是将给定的电脉冲信号转变为角位移或线位移的开环控制元件。给一个电脉冲信号,步进电机转子就转过相应的角度,这个角度就称作该步进电机的步距角。目前常用步进电机的步距角大多为1.8°(俗称一步)或0.9°(俗称半步)。以步距角为0.9°的进步电机来说,当我们给步进电机一个电脉冲信号,步进电机就转过0.9°,给两个脉冲信号,步进电机就转过1.8°。以此类推,连续给定脉冲信号,步进电机就可以连续运转。由于电脉冲信号与步进电机转角存在的这种线性关系,使得步进电机在速度控制、位置控制等方面得到了广泛的应用。步进电机的使用至少需要三个方面的配合,一是电脉冲信号发生器,它按照给定的设置重复为步进电机输送电脉冲信号,目前这种信号大多数由可编程控制器或单片机来完成;二是驱动器(信号放大器),它除了对电脉冲信号进行放大、驱动步进电机转动以外,还可以通过它改善步进电机的使用性能,事实上它在步进电机系统中起着重要的作用,一般一种步进电机可以根据不同的工况具有多种驱动器;三是步进电机,它有多种控制原理和型号,现在常用的有反应式、感应子式、混合式等。步进电机的速度控制是通过输入的脉冲频率快慢实现的。当发生脉冲的频率减小时,步进电机的速度就下降;当频率增加时,速度就加快。步进电机的位置控制是靠给定的脉冲数量控制的。给定一个脉冲,转过一个步距角,当停止的位置确定以后,也就决定了步进电机需要给定的脉冲数。2.2步进电机控制原理步进电机是数字控制电机,它将脉冲信号转变成角位移,即给一个脉冲信号,步进电机就转动一个角度,因此非常适合于单片机控制。步进电机区别于其他控制电机的最大特点是,它是通过输入脉冲信号来进行控制的,即电机的总转动角度由输入脉冲数决定,而电机的转速由脉冲信号频率决定。步进电机的驱动电路根据控制信号工作,控制信号由单片机产生。其基本原理作用如下:(1)控制换相顺序通电换相这一过程称为脉冲分配。例如:三相步进电机的三拍工作方式,其各相通电顺序为A-B-C-D,通电控制脉冲必须严格按照这一顺序分别控制A,B,C,D相的通断。(2)控制步进电机的转向如果给定工作方式正序换相通电,步进电机正转,如果按反序通电换相,则电机就反转。(3)控制步进电机的速度如果给步进电机发一个控制脉冲,它就转一步,再发一个脉冲,它会再转一步。两个脉冲的间隔越短,步进电机就转得越快。调整单片机发出的脉冲频率,就可以对步进电机进行调速。2.3步进电机的特点1.一般步进电机的精度为步进角的3%~5%且不累积。2.步进电机外表允许的最高温度。3.步进电机温度过高首先会使电机的磁性材料退磁,从而导致力矩下降乃至于失步,因此电机外表允许的最高温度应取决于不同电机磁性材料的退磁点;一般来讲,磁性材料的退磁点都在130摄氏度以上,有的甚至高达200摄氏度以上,所以步进电机外表温度在80摄氏度到90摄氏度完全正常。4.步进电机的力矩会随转速的升高而下降。5.当步进电机转动时,电机各相绕组的电感将形成一个反向电动势;频率越高,反向电动势越大。在它的作用下,电机随频率(或速度)的增大而相电流减小,从而导致力矩下降。6.步进电机低速时可以正常运转,但若高于一定速度就无法启动,并伴有啸叫声。2.4步进电机的主要性能指标1、步距角。步进电机的步距角是反映步进电机定子绕组的通电状态每改变一次,转子转过的角度。它是决定步进伺服系统脉冲当量的重要参数。数控机床中常见的反应式步进电机的步距角一般为。步距角越小,数控机床的控制精度越高。2、矩角特性、最大静态转矩和启动转矩。矩角特性是步进电机的一个重要特性,它是指步进电机产生的静态转矩与失调角的变化规律。3、启动频率。空载时,步进电机由静止突然启动,并进入不丢步的正常运行所允许的最高频率,称为启动频率或突跳频率。若启动时频率大于突跳频率,步进电机就不能正常启动。空载启动时,步进电机定子绕组通电状态变化的频率不能高于该突跳频率。4、连续运行的最高工作频率。步进电机连续运行时,它所能接受的,即保证不丢步运行的极限频率,称为最高工作频率。它是决定定子绕组通电状态最高变化频率的参数,它决定了步进电机的最高转速。5、加减速特性。步进电机的加减速特性是描述步进电机由静止到工作频率和由工作频率到静止的加减速过程中,定子绕组通电状态的变化频率与时间的关系。当要求步进电机启动到大于突跳频率的工作频率时,变化速度必须逐渐上升;同样,从最高工作频率或高于突跳频率的工作频率停止时,变化速度必须逐渐下降。逐渐上升和下降的加速时间、减速时间不能过小,否则会出现失步或超步。2.5步进电机的选择选择依据步进电机有步距角(涉及到相数)、静转矩、及电流三大要素组成。一旦三大要素确定,步进电机的型号便确定下来了。1.步距角的选择电机的步距角取决于负载精度的要求,将负载的最小分辨率(当量)换算到电机轴上,每个当量电机应走多少角度(包括减速)。电机的步距角应等于或小于此角度。目前市场上步进电机的步距角一般有0.36°/0.72°(五相电机)、0.9°/1.8°(二、四相电机)、1.5°/3°(三相电机)等。2.静力矩的选择步进电机的动态力矩一下子很难确定,我们往往先确定电机的静力矩。静力矩选择的依据是电机工作的负载,而负载可分为惯性负载和摩擦负载二种。单一的惯性负载和单一的摩擦负载是不存在的。直接起动时(一般由低速)时二种负载均要考虑,加速起动时主要考虑惯性负载,恒速运行进只要考虑摩擦负载。一般情况下,静力矩应为摩擦负载的2-3倍内好,静力矩一旦选定,电机的机座及长度便能确定下来(几何尺寸)。3.电流的选择静力矩一样的电机,由于电流参数不同,其运行特性差别很大,可依据矩频特性曲线图,判断电机的电流(参考驱动电源、及驱动电压)。本设计对步进电机的选择混合式步进是指混合了永磁式和反应式的优点。它又分为两相和五相:两相步进角一般为1.8度而五相步进角一般为

0.72度。我们这里介绍的常州市运控电子有限公司生产的35BYGH1.8°步进电机就是单极两相四线的步进电机。实物如图2.1所示图2.1步进电机机械尺寸和绕线图如图2.2,2.3所示图2.2机械尺寸图图2.3绕线图3ATMEGA16单片机和驱动芯片3.1ATMEGA16单片机ATMEGA16单片机特性ATmega16有如下特点:16K字节的系统内可编程Flash(具有同时读写的能力,即RWW),512字节EEPROM,1K字节SRAM,32个通用I/O口线,32个通用工作寄存器,用于边界扫描的JTAG接口,支持片内调试与编程,三个具有比较模式的灵活的定时器/计数器(T/C),片内/外中断,可编程串行USART,有起始条件检测器的通用串行接口,8路10位具有可选差分输入级可编程增益(TQFP封装)的ADC,具有片内振荡器的可编程看门狗定时器,一个SPI串行端口,以及六个可以通过软件进行选择的省电模式。工作于空闲模式时CPU停止工作,而USART、两线接口、A/D转换器、SRAM、T/C、SPI端口以及中断系统继续工作;掉电模式时晶体振荡器停止振荡,所有功能除了中断和硬件复位之外都停止工作;在省电模式下,异步定时器继续运行,允许用户保持一个时间基准,而其余功能模块处于休眠状态;ADC噪声抑制模式时终止CPU和除了异步定时器与ADC以外所有I/O模块的工作,以降低ADC转换时的开关噪声;Standby模式下只有晶体或谐振振荡器运行,其余功能模块处于休眠状态,使得器件只消耗极少的电流,同时具有快速启动能力;扩展Standby模式下则允许振荡器和异步定时器继续工作。ATMEGA16L工作电压为2.7-5.5V,速度等级为0-8MHZ,正常模式:1.1mA,空闲模式:0.35mA,掉电模式<1μA。而ATMEGA16则工作电压为4.5-5.5V,速度等级为0-16MHz。中断ATMEGA16单片机有2个8位中断屏蔽寄存器,即GIMSK——通用中断屏蔽寄存器和TIMSK——定时/计数中断屏蔽寄存器。当某一中断发生时,全局中断使能位I位被清空(0),则全部中断禁止。用户软件可以将I位改为1来对中断使能。当执行RETI,从中断指令返回时,I位被设为1。由于维持静态的时间引发中断(即输出比较寄存器1与定时器/计数器1的值相匹配),当事件发生时,中断标志位被设置。若中断位被清空,且中断条件维持原状,标志直到下次事件发生时才被设置。当程序计数器指向现行中断时,执行中断处理程序,硬件将相应的产生中断的标志位清空。ATMEGA16复位和中断向量如表3.1所示。表3.1ATMEGA16复位和中断向量向量号程序地址中断源中断定义1$000RESET外部引脚电平引发的复位2$002INT0外部中断请求03$004INT1外部中断请求04$006TIMER2COMP定时器/计数器2比较匹配5$008TIMER2OVF定时器/计数器2溢出6$00ATIMER1CAPT定时器/计数器1事件捕获7$00CTIMER1COMPA定时器/计数器1比较匹配A8$00ETIMER1COMPB定时器/计数器1比较匹配B9$010TIMER1OVF定时器/计数器1溢出10$012TIMER0OVF定时器/计数器0溢出11$014SPI,STCSPI串行输出结束12$016USART,RXCUSART,RX结束13$018USART,UDREUSART数据寄存器空14$01AUSRAT,TXCUSART,TX结束15$01CADCADC转换结束16$01EEE_RDYEEPROM就绪17$020ANA_COMP模拟比较器18$022TWI两线串行接口19$024INT2外部中断请求220$026TIMWE0CPMP定时器/计数器0比较匹配21$028SPM_RDY保存程序存储器内容就绪3.1.3I/O端口作为通用数字I/O使用时,所有AVRI/O端口都具有真正的读-修改-写功能。这意味着用SBI或CBI指令改变某些管脚的方向(或者是端口电平、禁止/使能上拉电阻)时不会无意地改变其他管脚的方向(或者是端口电平、禁止/使能上拉电阻)。输出缓冲器具有对称的驱动能力可以输出或吸收大电流,直接驱动LED。所有的端口引脚都具有与电压无关的上拉电阻。I/O引脚等效原理图如图3.1所示。图3.1I/O引脚等效原理图每个端口引脚都具有三个寄存器位:DDxn、PORTxn和PINxn。DDxn位于DDRx寄存器,PORTxn位于PORTx寄存器,PINxn位于PINx寄存器。DDxn用来选择引脚的方向。DDxn为“1”引脚配置为输入时,若PORTxn为“1”,上拉电阻将使能。如果需要关闭这个上拉电阻,可以将PORTxn清零,或者将这个引脚配置为输出。复位时各引脚为高阻态,即使此时并没有时钟在运行。当引脚配置为输出时,若PORTxn为“1”,引脚输出高电平(“1”),否则输出低电平(“0”)。在(高阻态)三态({DDxn,PORTxn}=0b00)输出高电平({DDxn,PORTxn}=0b11)两种状态之间进行切换时,上拉电阻使能({DDxn,PORTxn}=0b01)或输出低电平({DDxn,PORTxn}=0b10)这两种模式必然会有一个发生。通常,上拉电阻使能是完全可以接受的,因为高阻环境不在意是强高电平输出还是上拉输出。如果使用情况不是这样子,可以通过置位SFIOR寄存器的PUD来禁止所有端口的上拉电阻。ATMEGA16中I/O口设置(n=7,6,…,1,0)如表3.2所示。表3.2ATMEGA16中I/O口设置(n=7,6,…,1,0)DDRxnPORTxnPUDI/O模式内部上拉电阻引脚状态说明00X输入无效三态(高阻)010输入有效外部引脚拉低时输出电流011输入无效三态(高阻)10X输出无效低电平推挽输出,吸收电流(≤20mA)11X输出无效高电平推挽输出,输出电流(≤20mA)通用I/O口主要特点:1都具备真正的读-修改-写(R-M-W)。2双向,可独立位控制。3大电流驱动(≤20mA),可直接驱动LED。4可控制上拉电阻。定时/计数器0定时/计数器0可以采用CLK的分频或外部时钟作为技术源。此外,它还可以在定时/计数器0的控制寄存器(TCCR0)中设置为停用方式。溢出状态标志位在定时/计数器的终端标志寄存器(TIFR)中,中断使能控制在定时/计数器的中断屏蔽寄存器(TIMSK)中。定时/计数器0如图3.2所示。图3.28位定时计数器定时/计数器0控制寄存器TCCR0用于控制定时计数器0的工作参数,其格式如表3.3。表3.3控制定时计数器0的工作参数76543210-F0C0-WGM00-COM01-COMO2-WGM01CS02CS01CS00D7~D3(保留位)(该位的功能在设计中用不到,所以保留)CS02、CS01、CS00(定时/计数器0的时钟源选择位)CS02、CS01、CS00用于选择定时/计数器0的计数分频比例如表3.4所示。表3.4定时/计数器0的计数分频比例CS12CS11CS10说明000无时钟源(T/C停止)001CLK/1(无预分频)010CLK/8(来自预分频器)011CLK/64(来自预分频器)100CLK/256(来自预分频器)101CLK/1024(来自预分频器)110外部下降沿信号111外部上升沿信号定时/计数器0中8位计数寄存器TCNT0用于存储当前的计数值,格式如表3.5所示。表3.5定时/计数器0计数寄存器的位76543210BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0该计数寄存器是一个可读/写的加1计数器。当计数寄存器的计数值溢出时,定时、计数器终端标志寄存器(TIFR)中的TOV0置为“1”,若此时定时计数器中断屏蔽寄存器(TIMSK)中的TOIE0和和全局中断使能都为“1模数拟转换逐次逼近式的ADC转换器原理简介:为模拟输入电压,为数字参考电压,利用D/A转换器输入模拟量,和进行比较,若小时,N位寄存器的数值就增大,接着进行转换以得到新的模拟量,直到和相等,停止比较,N位寄存器数字输出得到数字量。ADC转换器原理图如图3.3。图3.3逐次逼近式的ADC转换器原理图A/D转换器的主要技术指标:分辨率ADC的分辨率是指使输出数字量变化一个相邻数码所需输入模拟电压的变化量。常用二进制的位数表示。例如12位ADC的分辨率就是12位,或者说分辨率为满刻度FS的。一个10V满刻度的12位ADC能分辨输入电压变化最小值是10V×=2.4mV。转换速率ADC的转换速率是能够重复进行数据转换的速度,即每秒转换的次数。而完成一次A/D转换所需的时间(包括稳定时间),则是转换速率的倒数。AVR单片机内部ADC简介ATmega16有一个10位的逐次逼近型ADC。ADC与一个8通道的模拟多路复用器连接,能对来自端口PA的8路单端输入电压进行采样。单端电压输入以0V(GND)为基准。本器件也可选择7路差分通道进行电压采样,本论文选用的是单端输入进行电压采样。每次ADC转换结果见公式3.1,端口A的第二功能分布如图3.4。图3.4ATmega16端口功能分配图(3.1)ATmega16单片机内部AD寄存器主要有ADC多工选择寄存器—ADMUX、ADC控制和状态寄存器A--ADCSRA、ADC数据寄存器-ADCL及ADCH。通过这三个寄存器的功能配合来实现模数转换。ADC多工选择寄存器—ADMUX主要用于ADC的参考电压的选择和模拟信号进入输入通道的选择。ADMUX格式参数如表3.6,ADC的参考电压选择和输入通道选择如表3.7和表3.8.表3.6ADC多工选择寄存器—ADMUX的工作参数REFS1REFS0ADLARMUX4MUX3MUX2MUX1MUX0表3.7ADC的参考电压选择REFS1REFS0参考电压选择00AREF,内部Vref关闭01AVCC,AREF引脚外加滤波电容10保留112.56V的片内基准电压源,AREF引脚外加滤波电容表3.8输入通道选择MUX4…0单端输入0000ADC00001ADC10010ADC20011ADC30100ADC40101ADC50110ADC60111ADC7ADC控制和状态寄存器A—ADCSRA主要包含中断功能位,在程序中用于发生中断使能。ADCSRA的格式参数和各位的功能介绍如表3.9。表3.9ADCSRA的格式参数ADENADECADATEADIFADIEADPS2ADPS1ADPS0ADC使能ADC开始转换ADC自动触发ADC中断标志ADC中断使能——————ADC预分频选择ADPS2…0为预分频选择位,可置相应的值来确定XTAL与ADC输入时钟之间的分频因子。ADC数据寄存器—ADCL及ADCH主要用于存取转化后的数据。ADMUX寄存器的ADLAR会影响转换结果在数据寄存器中的表示方式。如果ADLAR值为1,那么结果为左对齐;反之(系统缺省设置),结果为右对齐。本论文选择的是右对齐方式如表3.10。表3.10ADLAR=0时数据寄存器的表示方式————————————ADC9ADC8ADCHADC8ADC7ADC6ADC5ADC4ADC3ADC2ADC1ADCLADC转换结束后,转换结果存于这两个寄存器之中,读取ADCL之后,ADC数据寄存器一直要等到ADCH也被读出才可以进行数据更新。因此,如果转换结果为左对齐,且要求的精度不高于8比特,那么仅需读取ADCH就足够了。否则必须先读出ADCL再读ADCH。ADMUX寄存器的ADLAR及MUXN会影响转换结果在数据寄存器中的表示方式。如果ADLAR为1,那么结果为左对齐;反之(系统缺省设置),结果为右对齐。3.2L297和L298驱动电路3.2.1L297介绍L297的工作原理介绍L297是意大利SGS半导体公司生产的步进电机专用控制器,它能产生4相控制信号,可用于计算机控制的两相双极和四相单相步进电机,能够用单四拍、双四拍、四相八拍方式控制步进电机。芯片内的PWM斩波器电路可开关模式下调节步进电机绕组中的电机绕组中的电流。该集成电路采用了SGS公司的模拟/数字兼容的I2L技术,使用5V的电源电压,全部信号的连接都与TFL/CMOS或集电极开路的晶体管兼容。L297的芯片引脚特别紧凑,采用双列直插20脚塑封封装,其引脚见图3.5,内部方框见图3.6。图3.5L297引脚图图3.6L297内部框图在图3.6所示的L297的内部方框图中。变换器是一个重要组成部分。变换器由一个三倍计算器加某些组合逻辑电路组成,产生一个基本的八位格雷码(顺序如图3.7所示)。由变换器产生4个输出信号送给后面的输出逻辑部分,输出逻辑提供禁止和斩波器功能所需的相序。为了获得电动机良好的速度和转矩特性,相序信号是通过2个PWM斩波器控制电动波器包含有一个比较器、一个触发器和一个外部检测电阻,如图3.8所示,晶片内部的通用振荡器提供斩波频率脉冲。每个斩波器的触发器由振荡器的脉冲调节,当负载电流提高时检测电阻上的电压相对提高,当电压达到Uref时(Uref是根据峰值负载电流而定的),将触发器重置,切断输出,直至第二个振荡脉冲到来、此线路的输出(即触发器Q输出)是一恒定速率的PWM信号,L297的CONTROL端的输入决定斩波器对相位线A,B,C,D或抑制线INH1和INH2起作用。CONTROL为高电平时,对A,B,C,D有抑制作用;为低电平时,则对抑制线INH1和INH2有抑制作用,从而可对电动机和转矩进行控制。图3.7八位格雷码顺序图图3.8内部电路图L297能产生单四拍、双拍和四相八拍工作需要的适当相序。3种方式的驱动相序都可以很容易的根据变换器输出的格雷码的顺序产生,格雷码的顺序直接与四八拍(半步方式)相符合,只要在脚19输入一高电平即可得到。其波形图如图3.9所示。图3.9四八拍波形图通过交替跳过在八步顺序中的状态就可以得到全步工作方式,此时需在脚19接一低电平,前已述及根据变换器的状态可得到四拍或双四拍2种工作模式,如图3.10,3.11所示。图3.10四拍波形图图3.11四八拍波形图3.2.2L298介绍L298N为SGS-THOMSONMicroelectronics所出产的双全桥步进电机专用驱动芯片(DualFull-BridgeDriver),内部包含4信道逻辑驱动电路,是一种二相和四相步进电机的专用驱动器,可同时驱动2个二相或1个四相步进电机,内含二个H-Bridge的高电压、大电流双全桥式驱动器,接收标准TTL逻辑准位信号,可驱动46V、2A以下的步进电机,且可以直接透过电源来调节输出电压;此芯片可直接由单片机的IO端口来提供模拟时序信号,但在本驱动电路中用L297来提供时序信号,节省了单片机IO端口的使用。L298引脚如图3.12所示,Pin1和Pin15可与电流侦测用电阻连接来控制负载的电路;OUTl、OUT2和OUT3、OUT4之间分别接2个步进电机;input1~input4输入控制电位来控制电机的正反转;Enable则控制电机停转。图3.12L298引脚图3.2.3L297与L298组合电路297加驱动器组成的步进电机控制电路具有以下优点:使用元件少,组件的损耗低,可靠性高体积小,软件开发简单,并且计算机(或单片机)硬件费用大大减少。L297与L298配合使用控制双极步进电机工作电流可达2.5A;如与L293E配套使用,步进电机绕组电流。图3.13为L297和L298组成的控制驱动器的线路图。L297的特性是只需要时钟、方向和模式输入信号。相位是由内部产生的,因此可减轻计算机(或单片机)和程序设计的负担。图3.13L297和L298组成的控制驱动器的线路图L297和L298组合控制驱动的步进电机可用于如打印机的托架位置、记录仪的进给机构,以及打字机、数控机床、软盘驱动器、机器人、绘图机、复印机、阀门等设备和装置。4软件设计及仿真4.1PROTEUS仿真环境简介概述ProteusISIS是英国Labcenter公司开发的电路分析与实物仿真软件。它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:①实现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。②支持主流单片机系统的仿真。目前支持的单片机类型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。③提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如KeilC51uVision2等软件。④具有强大的原理图绘制功能。总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。PROTEUS软件的基本操作在Proteus软件中,会经常用到如下操作:1.选中:用鼠标指向对象并点击左键可以选中该对象。该操作选中对象并使其高亮显示,然后可以进行编辑。选中对象时该对象上的所有连线同时被选中。要选中一组对象,可以通过依次在每个对象右击选中每个对象的方式。也可以通过右键拖出一个选择框的方式,但只有完全位于选择框内的对象才可以被选中。2.移动:用鼠标指向选中的对象并用左键拖曳可以拖动该对象。该方式不仅对整个对象有效,而且对对象中单独的labels也有效。3.复制:用鼠标选中的对象后菜单Edit—copytoclipboard或用鼠标左键点击Copy图标。4.旋转:许多类型的对象可以调整朝向为0,90,180,270,360或通过x轴y轴镜象。当该类型对象被选中后,“RotationandMirror”图标会从蓝色变为红色,然后就可以来改变对象的朝向或者使用右键菜单中的旋转命令完成器件旋转。5.删除:用鼠标指向选中的对象并点击右键可以删除该对象,同时删除该对象的所有连线。Proteus与其他的仿真软件相比较,在下面的优点:1.能仿真模拟电路、数字电路、数模混合电路;2.能绘制原理图、PCB图;3.几乎包括实际中所有使用的仪器;4.其最大的亮点在于能够对单片机进行实物级的仿真。从程序的编写,编译到调试,目标版的仿真一应俱全。支持汇编语言和C语言的编程。还可配合KeilC实现程序的联合调试,将Proteus中绘制的原理图作为实际中的目标板,而用KeilC集成环境实现对目标板的控制,与实际中通过硬件仿真器对目标板的调试几乎完全相同,并且支持多显示器的调试,即Proteus运行在一台计算机上,而KeilC运行在另一台计算机上,通过网络连接实现远程的调试。4.2系统方案设计本设计的要求是通过摇动摇杆电位器来控制步进电机的正反转以及转速。总体设计方案如图4.1所示。图4.1系统设计总体方案本系统由摇杆、ATMEGA16单片机,驱动电路(L297+L298组成),步进电机组成,摇杆控制的电压,由ATMEGA16接收并经过A/D转换、中断等程序产生脉冲信号直接连接到L297+L298驱动电路从而驱动步进电机正反转,在这里,我采用的是双四拍的驱动相序,而电机的正反转也是有程序控制的,中断则用的是单片机内部时钟,充分利用了ATMEGA16的资源配置。4.3电机驱动电路设计4.3.1L298单独驱动L298为SGS-THOMSONMicroelectronics所出产的双全桥步进电机专用驱动芯片(DualFull-BridgeDriver),内部包含4信道逻辑驱动电路,是一种二相和四相步进电机的专用驱动器,可同时驱动2个二相或1个四相步进电机,内含二个H-Bridge的高电压、大电流双全桥式驱动器,接收标准TTL逻辑准位信号,可驱动46V、2A以下的步进电机,且可以直接透过电源来调节输出电压;此芯片可直接由单片机的IO端口来提供模拟时序信号。仿真电路图如图4.2所示。图4.2仿真图Pin1和Pin15可与电流侦测用电阻连接来控制负载的电路;OUTl、OUT2和OUT3、OUT4之间接1四线的个步进电机;input1~input4输入控制电位来控制电机的正反转;Enable则控制电机停转。L297加驱动器组成的步进电机控制电路具有以下优点:使用元件少,组件的损耗低,可靠性高体积小,软件开发简单,并且计算机(或单片机)硬件费用大大减少。但是相对与编程来说就麻烦了不少,因为这需要用软件来实现,鉴于这种情况,我们采用L298+L297来驱动步进电机。4.3.2L297+L298驱动为了解决软件编程带来的麻烦,这里我使用了一个相序生成器即L297来产生相序,在L298与电机之间加了8个二极管,这主要起保护作用,仿真图如图4.3所示图4.3L297+L298仿真图这里要注意的是第19号管脚HALF/,这是半步、全步方式选择端。此引脚输入高电平时为半步方式(四相八拍),低电平时为全步方式。如选择全步方式时变换器在奇数状态,会得到单相工作方式(单四拍)。通过交替跳过在八步顺序中的状态就可以得到全步工作方式,此时需在脚19接一低电平,前已述及根据变换器的状态可得到四拍或双四拍2种工作模式。我们这里接的是低电平,所以生成相序是:0110010110011010。只要通过程序改变CW/就可以改变其转向,低电平为正转,高电平为反转。L297的特性是只需要时钟、方向和模式输入信号。相位是由内部产生的,因此可减轻计算机(或单片机)和程序设计的负担。L298芯片是一种高压、大电流双H桥式驱动器。L297和L298组合控制驱动的步进电机用起来更方便,更易操作。4.4ATMEGA16编程与仿真实现模数转换摇杆改变的是电压信号,要实现摇杆控制电机则要先实现电压信号向数字信号的转换。ATMEGA16单片机本身具有A/D转换功能,我们利用它的模数转换器来实现模数转换。用滑动变阻器代替摇杆,改变电阻大小产生的电压信号将通过模数转换器转换成数字量并在数码管上显示。这里用到了延时程序,显示程序,和模数转换程序,其仿真结果如图4.4,程序见附录1。图4.4模数转换固定脉冲驱动仿真固定脉冲仿真就是利用Proteus软件中的脉冲源,产生一个固定频率、幅值的脉冲源,直接输送到驱动电路。本设计仿真,旨在对驱动电路进行仿真。驱动电路是由L197和L298组合成的,在编写程序仿真之前,要先对驱动电路进行仿真,只有在驱动电路正确才能保证下一步的仿真顺利进行。固定脉冲驱动仿真电路图如图4.5所示。图4.5固定脉冲驱动仿真电路说明:在Proteus仿真软件提供脉冲源,将脉冲源幅值设置为5V,频率设置为1Hz,脉宽设置为50%。此外,驱动电路的各引脚按照L297/L98经典组合电路连接。这里,对于L298的4引脚因为仿真软件不提供36V直流电压,所以用VCC代替,这样会减小转动力矩但是不影响仿真效果。将L297的HALF/FULL和CW/CCW接到低电平(也可接高电平),是默认驱动步进电机全步、反方向转动。在Proteus仿真软件中,点击“开始”,可以看到步进电机一步步转动起来。而实际上脉冲信号是要通过控制摇杆在端口实现的,而不是通过固定脉冲发生器实现,下面先通过简单的改变端口高低电平来实现脉冲的输出进入驱动电机。改变端口高低电平实现步进电机转动由步进电机的原理可知,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,根据改变端口高低电平产生脉冲驱动步进电机是一种控制电机的简单的方法。其仿真结果如图4.6,程序见附录2。图4.6改变端口高低电平驱动电机说明:这里只是一个很简单的程序,用到的只是端口的高低电平互换来模拟脉冲,所以在这里只需对端口进行变换即可,还有就是延时程序,ATMEGA16单片机内部含有8MHZ的晶振,所以这里的延时程序只是依靠循环运行的WHILE循环来达到的时间差,具体的时间还是非常不准确的。在完成上面任务的基础上便可以实现通过控制摇杆来完成对步进电机的驱动。基于摇杆控制的步进电机的驱动摇杆电位器相当于一个滑动变阻器,两端分别接地和5V直流电压,当摇动摇杆时,就相当滑动滑动变阻器的滑片,相应的输出电压也会随之发生变化。输出电压接到ATmega16单片机的PA0端口(该端口作为AD转换的输入端),单片机经过AD转换,会将输入的模拟量转化为数字量,通过定时/计数器产生定时,在一定时间内扫描数字量的变化并通过程序产生一系列的脉冲,输入到步进电机驱动芯片L297。通过L297和L298的组合驱动,会产生可以使步进电机转动的相序,如图4.7所示。这样就实现了摇杆对步进电机的控制。仿真结果如图4.8,程序见附录3电压模拟信号ATmega16电压模拟信号ATmega16单片机摇杆电位器 摇杆电位器脉冲脉冲步进电机L297+步进电机L297+L298驱动电路循环相序循环相序电源电路电源电路电源电路图4.7系统实现流程图说明:定时/计数机0根据对单片机内部时钟计数产生溢出中断,定时/计数器0是8位的即最大值可达到,ATmega16时钟频率是,本程序中T/C0采样64分频,从而可计算出中断时间:图4.8摇杆控制的步进电机驱动4.4.4基于摇杆控制的步进电机的驱动的改进对滑动变阻器改变的电压进行实时跟踪,并以数字量的形式呈现在仿真中,以更为直接的观察摇杆如何控制电机。为此,只需通过模数转换将电压信号转换成数字信号,并在数码管内显示。仿真结果如图4.9,程序见附录4图4.6摇杆控制的步进电机驱动总结本次设计主要是基于摇杆对步进电机进行控制,通过这次设计我不仅了解了步进电机的研究现状,而且对它的的基本原理和使用方法,有了进一步的了解,此外还能够根据电机的性能指标进行设备选型。在单片机选择上我主要采用的是ATMEGA16单片机,其最大的优点是其内部具有独立的16MHZ,8MHZ的晶振和A/D转换器,这就免去了51单片机要在外部接晶振的麻烦以及对硬件的要求,使电路更加简单。在驱动方面我采用的是L297+L298,两个驱动芯片同时驱动步进电机,这样就省去了单用一片L298带了的软件编程的麻烦,而且对于正反转,L297上有专门的引脚,所以这里很容易通过简单程序来实现。通过这次设计不仅丰富了我的理论知识,还加强了我在软件编程和仿真技术这方面的操纵能力,也让我对在大学所学的主要的专业课知识有了很好的梳理和综合应用。展望针对于本次设计还存在着一些不足之处,还需要进一步提高。本次设计重在软件编程与仿真,但仿真成功并不一定能应用到硬件上的成功设计。首先在对于步进电机的正反转和转速控制是通过给出的脉冲的数量和频率来实现的,这在软件仿真上没有任何问题,但在硬件上要加外围电路,不是很容易实现。其次步进电机的步距角精度对系统的控制精度会造成很大的影响。实际上,当步进电机接收到一个脉冲信号转过一个角度时都会产生步距角误差。在设软件时,我没作考虑,下次设计时可加以修正。同时,我深知自己所作的工作还很不够,程序不够简化,精度还需进一步提高,相关的理论知识和数据不够丰富。我会在现有的基础上不断汲取有关的知识和方法,以进一步巩固和深化我的研究。可以肯定,随着技术的不断发展,步进电机的控制应用前景将越来越广阔。参考文献[1]于天敏,翟国兴.实战AVR单片机C语言.机械出版社,2009[2]毕绍新.步进电机驱动控制的应用研究.天津大学硕士论文2003[3]金春林,邱慧芳,张皆喜.AVR系列单片机C语言编程与应用实例.清华大学出版社,2003[4]姚明武,邹红雨.步进电机工作原理的探讨.技术交流,2008[5]周明安,朱光忠,宋晓华等.步进电机驱动技术发展及现状.机电工程技术,2005[6]徐孝.同步进电机的驱动技术.煤炭技术,2004[7]董里扬.浅谈步进电机的工作原理.杭州师范学院.2007[8]李峻,李学全.步进电机的运动控制系统及其应用.微特电机,2000[9]丁伟雄.步进电机的控制原理及其单片机控制实现.煤矿机械2005[10]刘兴辉,毕国玲.步进电机的单片机控制系统研制.辽宁大学学报2007[11]王宗培,孔昌平,李楚武.步进电机及其控制系统.哈尔滨工业大学出版社,1984[12]曹国清.数字电路与逻辑设计.中国矿业大学出版社,2003[13]张继和,张润敏,梁海峰.电动机控制与供电基础.西南交通大学出版社,2000[14]方爱平.基于单片机的步进电机控制系统设计与实现.浙江工业大学,2008[15Blauch.Andrew.J.High-SpeedParameterEstimationofStepperMotors.IEEETransactionsoncontrolSystemTechnolgy,2006[16].StepMotionControl1985:DigitalIncrementalwithServo-likePerformanceControlEngineering,1985[17]F.Faduletallows~CostMSIControllerforStepperMotors.ComputerinIndustry,2005[18].LesseningtheGapBetweenIncrementalandContinuousmotionControl.ControlEngineering,1999附录附录1#include<iom16v.h>

#include<macros.h>

#defineucharunsignedchar

#defineuintunsignedint

uintADC_rel;

unsignednum[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c};

voiddelay(unsignedintms)

{

unsignedinti,j;

for(i=0;i<ms;i++)

{

for(j=0;j<1141;j++);

}

}

voidxianshi(unsignedinta)

{

unsignedcharled[4];

led[0]=a%10;

led[1]=a/10%10;

led[2]=a/100%10;

led[3]=a/1000%10;

PORTB=0x0e;

PORTD=num[led[0]];

delay(1);

PORTB=0x0d;

PORTD=num[led[1]];

delay(1);

PORTB=0x0b;

PORTD=num[led[2]];

delay(1);

PORTB=0x07;

PORTD=num[led[3]];

delay(1);

}

unsignedintmega16_ad()//AD转换

{uintaddata;

DDRA&=~BIT(PA0);

PORTA&=~BIT(PA0);

ADMUX=0;

ADCSR=0X80;

ADCSR|=BIT(ADSC);

while(!(ADCSR&(BIT(ADIF))));

addata=ADCL;

addata=addata+ADCH*256;

returnaddata;

}

voidmain()

{

unsignedintm;

DDRB=0xff;

PORTB=0xff;

DDRD=0xff;

PORTD=0xff;

SEI();

while(1)

{

ADC_rel=mega16_ad();

xianshi(ADC_rel);

delay(1);

DDRB=0XFF;

}

}附录2#include<iom16v.h>//加载头文件voiddelay(unsignedinti)//延时1ms子程序{ while(--i);}Voidmain()//主程序{while(1){DDRA=0x01;//将PORTA口的低一位设置为输出PORTA=0x01;//设置端口为高电平delay(160000);//调用的延时程序PORTA=0x00;//设置端口为低电平,这样一高一低就模拟了脉冲的输入delay(160000);}}附录3#include<iom16v.h>

#include<macros.h>

#defineucharunsignedchar

#defineuintunsignedint

uintOReg;

voiddelay(unsignedintms)//延时1ms

{

unsignedinti,j;

for(i=0;i<ms;i++)

{

for(j=0;j<1141;j++);

}

}

unsignedintmega16_ad()

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论