2022年步进电机控制系统 .pdf
I 届别学 号毕业设计基于单片机的步进电机控制系统设计姓名系别、专业导 师 姓 名、职 称完成时间名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 31 页 -II 摘要随着微电子和计算机技术的发展,步进电机的需求量与日俱增,它广泛用于打印机、电动玩具等消费类产品以及数控机床、工业机器人、医疗器械等机电产品中,其在各个国民经济领域都有应用。研究步进电机的控制系统,对提高控制精度和响应速度、节约能源等都具有重要意义。步进电机是一种能将电脉冲信号转换成角位移或线位移的机电元件,步进电机控制系统主要由步进控制器,功率放大器及步进电机等组成。采用单片机控制,用软件代替上述步进控制器,使得线路简单,成本低,可靠性大大增加。软件编程可灵活产生不同类型步进电机励磁序列来控制各种步进电机的运行方式。本设计是采用 STC89C52单片机对步进电机的控制,通过 IO 口输出的时序方波作为步进电机的控制信号,信号经过芯片ULN2003 驱动步进电机;同时,用 4个按键来对电机的状态进行控制,并用4 个 LED发光二极管显示电机的转速。系统由硬件设计和软件设计两部分组成。其中,硬件设计包括 STC89C52 单片机的最小系统、电源模块、键盘控制模块、步进电机驱动(集成达林顿ULN2003)模块、LED指示灯模块。软件采用在Keil 软件环境下编辑。关键字:STC89C52、步进电机、ULN2003驱动名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 31 页 -1 1 绪论1.1 课题的背景当今社会,电动机在工农业生产、人们日常生活中起着十分重要的作用。步进电机是最常见的一种控制电机,在各领域中得到广泛应用。步进电机作为执行元件,是机电一体化的关键产品之一,广泛应用在各种自动化控制系统中。随着微电子和计算机技术的发展,步进电机的需求量与日俱增,在各个国民经济领域都有应用。步进电机是一种将电脉冲转化为角位移的执行机构。当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(称为“步距角”),它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。步进电机可以作为一种控制用的特种电机,其优点是结构简单、运行可靠、控制方便。尤其是步距值不受电压、温度的变化的影响、误差不会长期积累的特点,给实际的应用带来了很大的方便。它广泛用于消费类产品(打印机、照相机、雕刻机)、工业控制(数控机床、工业机器人)、医疗器械等机电产品中。研究步进电机的控制和测量方法,对提高控制精度和响应速度、节约能源等都具有重要意义。控制核心采用C51芯片,它以其独特的低成本,小体积广受欢迎,当然其易编程也是不可多得的优点为此,本文设计了一个单片机控制步进电机的控制系统,可以实现对步进电机转动速度和转动方向的高效控制。1.2 研究的主要内容本设计的目的是以单片机为核心设计出一个单片机控制步进电机的控制系统。本系统采用 STC89C52 作为控制单元,通过键盘实现对步进电机转动方向及转动速度的控制,并且将步进电机的转动用四个LED灯指示。名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 31 页 -2 2 总体方案设计本步进电机控制系统,按照系统设计功能的要求,确定系统由 4 个模块组成:主控制器、电机驱动模块、LED指示灯电路、键盘电路。温度无线采集报警系统结构框图如图1 所示图 1 系统结构框图2.1 方案的选择2.1.1 主控芯片方案方案一:采用传统的 STC89C52 单片机作为主控芯片。此芯片价格便宜、操作简便,低功耗,比较经济实惠。方案二:采用 TI 公司生产的 MSP430F149 系列单片机作为主控芯片。此单片机是一款高性能的低功耗的16 位单片机,具有非常强大的功能,且内置高速12 位 ADC。但其价格比较昂贵,而且是TPFQ 贴片封装,不利于焊接,需要PCB制板,大大增加了成本和开发周期。方案三:采用宏晶科技有限公司的STC12C5A60S2 增强型 51单片机作为主控芯片。此芯片内置 ADC 和 SPI 总线接口,且内部时钟不分频,可达到 1MPS。而且价格适中。按键电路电机驱动电源STC89C52 单片机步进电机LED指示灯名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 31 页 -3 考虑到此系统需要不用到ADC,从性能和价格上综合考虑我们选择方案一,即用 STC89C52 作为本系统的主控芯片。2.1.2 步进电机驱动方案方案 1:采用继电器对电动机的开或关进行控制,通过开关的切换对小车的速度进行调整.此方案的优点是电路较为简单,缺点是继电器的响应时间慢,易损坏,寿命较短,可靠性不高。方案 2:采用电阻网络或数字电位器调节电动机的分压,从而达到分压的目的。但电阻网络只能实现有级调速,而数字电阻的元器件价格比较昂贵。更主要的问题在于一般的电动机电阻很小,但电流很大,分压不仅会降低效率,而且实现很困难。方案 3:采用 ULN2003达林顿管电机驱动芯片,ULN2003芯片是高耐压、大电流达林顿阵列,由 7 组达林顿晶体管阵列和相应的电阻网络以及钳位二极管网络构成,具有同时驱动 7 组负载的能力,为单片双极型大功率高速集成电路。功率电子电路大多要求具有大电流输出能力,以便于驱动各种类型的负载。功率驱动电路是功率电子设备输出电路的一个重要组成部分。ULN2003芯片高压大电流达林顿晶体管阵列产品属于可控大功率器件。对步进电机控制方便灵活。因此我们选用了方案3。2.1.3 显示模块方案方案一:选择主控为 ST7920的带字库的 LCD12864来显示信息。12864 是一款通用的液晶显示屏,能够显示多数常用的汉字及ASCII 码,而且能够绘制图片,描点画线,设计成比较理想的结果。方案二:采用四个 LED发光二极管显示,其成本低,简单明了,容易显示控制。综合以上方案,我们选择了经济实惠LED来作为速度级别显示。名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 31 页 -4 3 硬件系统的设计与实现3.1 步进电机3.1.1 步进电机概述步进电机是一种能够将电脉冲信号转换成角位移或线位移的机电元件,它实际上是一种单相或多相同步电动机。单相步进电动机有单路电脉冲驱动,输出功率一般很小,其用途为微小功率驱动。多相步进电动机有多相方波脉冲驱动,用途很广。使用多相步进电动机,单路电脉冲信号可先通过脉冲分配器转换为多相脉冲信号,在经功率放大后分别送入步进电动机各相绕组。每输入一个脉冲到脉冲分配器,电动机各相的通电状态就发生变化,转子会转过一定的角度(称为步距角)。正常情况下,步进电机转过的总角度和输入的脉冲数成正比;连续输入一定频率的脉冲时,电动机的转速与输入脉冲的频率保持严格的对应关系,不受电压波动和负载变化的影响。由于步进电动机能直接接收数字量的输入,所以特别适合于微机控制。3.1.2 步进电机的特性步进电机转动使用的是脉冲信号,而脉冲是数字信号,这恰是计算机所擅长处理的数据类型。从 20世纪 80 年代开始开发出了专用的IC 驱动电路,今天,在打印机、磁盘器等的 OA装置的位置控制中,步进电机都是不可缺少的组成部分之一。总体上说,步进电机有如下优点:1不需要反馈,控制简单。2与微机的连接、速度控制(启停和反转)及驱动电路的设计比较简单。3没有角累积误差。4停止时也可保持转距。5没有转向器等机械部分,不需要保养,故造价较低。6即使没有传感器,也能精确定位。7根椐给定的脉冲周期,能够以任意速度转动。但是,这种电机也有自身的缺点:1难以获得较大的转矩2.不宜用作高速转动名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 31 页 -5 3在体积重量方面没有优势,能源利用率低。4超过负载时会破坏同步,高速工作时会发出振动和噪声。3.1.3 步进电机的种类目前常用的步进电机有三类:表 1 步进电机分类类别结构步距力矩动态性能反应式步进电动机(VR)采用高导磁材料构成齿状转子和定子小小较差永磁式步进电动机(PM)转子采用多磁极圆筒形的永磁铁,其外侧配置齿状定子吸引和排斥力产生转动大大好混合步进电动机(HB)这是 PM和 VR的复合产品,其转子采用齿状的稀土永磁材料,定子则为齿状的突起结构小大好3.1.4 永磁步进电机的控制原理在本设计以常用的永磁式步进电机为例,用单片机控制步进电机。图2-1 是CZ-2801型永磁步进电机的外形图,图2-2 是该电机的接线图。图 2-1 CZ-2801型永磁步进电机外形图图 2-2 CZ-2801型永磁步进电机接线图名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 31 页 -6 从图中可以看出,电机共有四组线圈,四组线圈的一个端点连在一起引出,这样一共有 5 根引出线。要使用步进电机转动,只要轮流给各引出端通电即可。将 COM 端标识为 C,只要 AC、BC或/AC、/BC,轮流加电就能驱动步进电机运转,加电的方式可以有多种,如果将 COM 端接正电源,那么只要用开关元件(如三极管),将 A、B或/A、/B 轮流接地。不难设计出控制电路,因其工作电压为 12V,因此用一块开路输出达林顿驱动器(这里用 ULN2003,关于 ULN2003 将在后面介绍)作为驱动,通过 P1.0、P1.3来控制各线圈的接通与切断。开机时,P1.0、P1.3 均为高电平,依次将 P1.0、P1.2(或 P1.1、P1.3 反向)切换为低电平即可驱动步进电机运行。如果要改变电机的转动速度只要改变两次接通之间的时间。改变转速,只要改变 P1.0、P1.2(或 P1.1、P1.3 反向)轮流变低电平的时间即可达到要求,因为不会影响到其他功能的实现,这个时间可以用延时来实现,。这里以定时的方式来实现。下面首先计算一下定时时间。按要求,最低转速为 20 转/分,而上述步进电机的步距角为 7.5,即每 48 个脉冲为 1 周,即在最低转速时,要求为960脉冲/分,相当于 62.5ms/脉冲。而在最高转速时,要求为 100 转/分,即 48000 脉冲/分,相当于 12.5ms/脉冲。可以列出下表:表 2-2 步进电机转速与定时器定时常数关系转速单 步 时 间(ms)TH0 TL0 20 62.5 1F 0 21 59.52380952 29 B6 22 56.81818182 33 74 23 54.34782609 3C 59 24 52.08333333 44 80 25 50 40 名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 31 页 -7 C 26 48.07692308 52 EC 27 46.2962963 59 55 28 44.64285714 5F 49 93 13.44086022 CF 9C 94 13.29787234 D0 20 95 13.15789474 D0 A1 96 13.02083333 D1 20 97 12.88659794 D1 9B 98 12.75510204 D2 14 99 12.62626263 D2 8B 100 12.5 D3 0 表中不仅计算出了 TH0 和 TL0,而且还计算出了在这个定时常数下,真实的定时时间,可以根据这个计算值来估算真实速度与理论速度的误差值。表中 TH0 和 TL0 是根据定时时间算出来的定时初值,这里用到的晶振是 12.000M。有了上述表格,程序就不难实现了,使用定时/计数器 T0 为定时器,定时时间到后切换输出脚即可。名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 31 页 -8 3.2 步进电机控制系统的组成步进电机控制系统共分为五个模块:单片机最小系统模块、键盘控制模块、LED指示模块、步进电机驱动模块和电源模块。1.单片机最小系统主要由复位电路和时钟电路组成。复位电路为单片机系统提供可靠复位,使单片机能正常启动。时钟电路采用外部时钟方式,保证单片机个功能部件都是以时钟频率为基准,有条不紊地一拍一拍地工作。2.键盘控制模块包括方向控制键、加速键和减速键、启停键,分别与单片机的 P3.4、p3.5、p3.6 和 P3.7 相连。实现对步进电机的控制。3.四个 LED发光二极管显示步进电机的速度等级。分成四个等级,四个LED全亮速度最快,亮一个速度最慢。4.步进电机驱动模块选用七个NPN 达林顿连接晶体管ULN2003 为步进电机提供脉冲信号,驱动步进电机转动。该模块与单片机的P1.0P1.3 相连。5.电源模块 3 接 5 号电池 4.5V 分别供给驱动模块和单片机模块。3.3 主控制模块单片机最小系统包括单片机、复位电路、时钟电路构成。STC89C52 单片机的工作电压范围:4V-5.5V,所以通常给单片机外界5V直流电源。连接方式为单片机中的40 脚 VCC 接正极 5V,而 20 脚 VSS接电源地端。复位电路就是确定单片机的工作起始状态,完成单片机的启动过程。单片机接通电源时产生复位信号,完成单片机启动确定单片机起始工作状态。当单片机系统在运行中,受到外界环境干扰出现程序跑飞的时候,按下复位按钮内部的程序自动从头开始执行。一般有上电自动复位和外部按键手动复位,单片机在时钟电路工作以后,在RESET 端持续给出 2 个机器周期的高电平时就可以完成复位操作。本设计采用的是外部手动按键复位电路,需要接上上拉电阻来提高输出高电平的值。时钟电路好比单片机的心脏,它控制着单片机的工作节奏。时钟电路就是振荡电路,是向单片机提供一个正弦波信号作为基准,决定单片机的执行速度。XTAL1和 XTAL2分别为反向放大器的输入和输出,该反向放大器可以配置为片内振荡器。如采用外部时钟源驱动器件,XTAL2应不接。因为一个机器周期含有6个状态周期,而每个状态周期为2 个振荡周期,所以一个机器周期共有12 个振荡周期,如果外接石英晶体振荡器的振荡频率为12MHZ,一个振荡周期为 1/12us。主控制最小系统电路如图2 所示。名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 31 页 -9 图 2 单片主控电路3.3.1 STC89C52 单片机简介 STC89C52 是一种低功耗、高性能CMOS8 位微控制器,具有8K 在系统可编程 Flash 存储器。使用高密度非易失性存储器技术制造,与工业 80C51 产品指令和引脚完全兼容。片上Flash 允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位 CPU 和在系统可编程Flash,使得 STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。STC89C52 具有以下标准功能:8k 字节 Flash,256字节 RAM,32 位 I/O 口线,看门狗定时器,2 个数据指针,三个 16 位定时器/计数器,一个 6 向量 2 级中断结构,全双工串行口,片内晶振及时钟电路。另外,STC89C52 可降至 0Hz 静态逻辑操作,支持2 种软件可选择节电模式。空闲模式下,CPU停止工作,允许 RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。这一模块以单片机为中心把程序代码烧进去然后外围接上复位电路、振荡电路、键盘控制、LED 显示电路、报警电路等子模块。名师资料总结-精品资料欢迎下载-名师精心整理-第 11 页,共 31 页 -10 3.3.2 单片机的引脚功能描述下面对 AT89C52各引脚的功能进行较为详细的介绍:1)电源引脚 Vcc 和 Vss Vcc(40脚):电源端为+5V Vss(20脚):接地端。2)时钟电路引脚 XTAL1和 XTAL2 XTAL2(18脚):接外部晶体和微调电容的一端。在单片机内部它是振荡电路反向放大器的输出端,振荡电路的频率就是晶体固有频率。若需采用外部时针电路时,该引脚输入外时钟脉冲。要检查89C52的振荡电路是否正常工作,可用示波器查看 XTAL2端是否有脉冲信号输出。XTAL1(19脚):接外部晶体和微调电容的另一端。在片内,它是振荡电路反向放大器的输入端。在采用外部时钟时,该引脚必须接地。3)控制信号脚 RST ALE PSEN 和 EA。RST(9 脚):RST是复位信号输入端,高电平有效。在此输入端保持两个机器周期(24 个时钟振荡周期)的高电平时,就可以完成复位操作。ALE/PROG(30 引脚):地址锁存允许信号端。当 AT89C52上电正常工作后,ALE引脚不断向外输出正脉冲信号。此频率为振荡器频率fosc 的 1/6,当 CPU 访问片外存储器时,ALE输出信号作为锁存低8 位地址的控制信号。在CPU 访问片外数据存储时,每取值一次(一个机器周期)会丢失一个脉冲。平时不访问片外存储时,ALE端也以 1/6 的振荡频率固定输出正脉冲,因而ALE信号可以用作对外输出时钟或定时信号。如果你想看一下AT89C52芯片的好坏,可用示波器查看ALE端是否有脉冲信号输出,如有脉冲信号输出,则AT89C52基本上是好的。ALE的负载驱动能力为 8 个 LS型 TTL(低功耗高速 TTL)。PSEN(29脚);程序存储允许输出信号引脚,在访问片外程序存储器时,此端定时输出负脉冲作为读片外存储器的选通信号。此引脚接 ERROM 的 OE端。PSEN端有效,即允许读出ERROM/ROM中的指令码。CPU 在从外部 ERROM/ROM取指令期间,每个周期 PSEN 两次有效。不过,在访问片外RAM 时,要少产生两次PSEN 负脉冲信号。要检查一个AT89C52 小系统上电后 CPU 能否正常到 ERROM/ROM中读取指令码,也可用于示波器看PSEN 端有无脉冲输出。如有,说明基本上工作正常。EA/VPP(31 脚):外部程序存储器地址允许输入端/固化编程电压输入端。当EA引脚接高电平时,CPU 只访问片内 ERROM/ROM并执行内部程序存储器中的指令。但在 PC(程序计数器)的值超过OFFFH(对 8751/8051 为 4k)时,将自动转向执行片外存储器的程序。当出入信号EA引脚接低电平(接地)时,CPU 只访问外部名师资料总结-精品资料欢迎下载-名师精心整理-第 12 页,共 31 页 -11 ERROM/ROM并执行外部程序存储器中的指令,而不管是否有片内程序存储器。对于无芯片内的 ROM 的 8031或 8032,须外扩 ERROM,此时必须将 EA引脚接地。如果使用有片内 ROM 的 AT89C52,外扩 ERROM 也是可以的,但也要使EA接地。4)I/O(输入/输出端口,P0,P1,P2,P3)P0口:P0口是一个漏极开路的8 位准双向 I/O 端口。P1口:8 位准双向 I/O 端口。P2口:即可以做地址总线输出地址高8 位,也可以做普通 I/O 用,(此时为准双向口)。P3口:双功能口,即可以做普通I/O 口用(此时为准向口,也可以按每位定义实现第二功能操作)。见表 1。表 1 P3 口的第二功能表引脚第二功能P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 INT0(外部中断0)P3.3 INT1(外部中断1)P3.4 T0(定时器0 外部中断)P3.5 T1(定时器1 外部中断)P3.6 WR(外部存储器写选通)P3.7 RD(外部存储器读写通)3.3.3 单片机的时钟电路与复位电路设计本系统采用 stc 系统列单片机,相比其他系列单片机具有很多优点。本系统采用内部方式的时钟电路和加电自复位的复位电路,如下图3 图 4 所示:名师资料总结-精品资料欢迎下载-名师精心整理-第 13 页,共 31 页 -12 图 3 时钟电路图 4 复位电路由于单片机 P0口内部不含上拉电阻,为高阻态,不能正常地输出高/低电平,因而该组 I/O 口在使用时必须外接上拉电阻R6。3.4 电源电路设计供电电源采用 3 接 1.5V 干电池给传感器,单片机供电。电路如图5 所示。P2为电源接线端,SW1 为电源总开关。D4为电源指示灯。图 5 电源电路名师资料总结-精品资料欢迎下载-名师精心整理-第 14 页,共 31 页 -13 3.5 步进电机驱动电路步进电机采用 ULN2003驱动,驱动原理图如图6。图 6 蜂鸣器报警电路图3.6 按键电路系统采用了 4 个,一个启动键,一个停止键,一个速度调节键,一个正反转切换键。电路如图7。图 7 按键电路名师资料总结-精品资料欢迎下载-名师精心整理-第 15 页,共 31 页 -14 3.7 速度等级指示灯电路速度等级采用 LED指示灯指示。接口电路如图8 所示图 8 指示电路名师资料总结-精品资料欢迎下载-名师精心整理-第 16 页,共 31 页 -15 4 软件系统的设计与系统功能实现4.1 软件设计原则及编程思路应用系统中的应用软件是根据系统功能要求设计的,应稳定正确的实现系统的各种功能。在本系统中,软件设计要求做到以下几点:1.软件结构清晰,简捷,流程合理。2.各功能程序实现模块化。这样,即便于调试,链接,又便于移植,修改。3.程序存储区,数据存储区要合理规划,既能节约内存容量,又使操作方便。4.运行状态实现标志化管理。各个功能程序运行状态,运行结果以及运行要求都要设置状态标志以便查询,程序转移,控制都可通过状态标志条件来控制。4.2 程序设计前期准备4.2.1 程序设计平台考虑到程序的易读性和简练,程序设计采用 C语言。程序编辑平台采用 Keil。名师资料总结-精品资料欢迎下载-名师精心整理-第 17 页,共 31 页 -16 图 3-1 Keil软件界面4.2.2 程序设计思路步进电机控制系统的软件需要同时完成读取键盘、处理键盘、控制步进电机转动、控制数码管动态显示等任务,这就必须通过中断技术来实现。在本设计中,主程序采用查询方式扫描键盘端口,检测按键动作是否发生,若有按键动作则处理键盘,根据按键值修改相应参数值,实现键盘的实时处理功能。定时器 0 中断服务程序控制步进电机的转动:根据当前显示的速度进行键盘手动改变 T0定时时间常数,设置TH0和 TL0的值,达到对转速精确控制的目的;根据转动方向控制位的值,控制脉冲信号循环移动的方向,达到对转动方向控制的目的。说明如下:1.单片机接受键盘信息,改变系统内部变量值。2.单片机输出脉冲信号,控制步进电机转动。3.单片机根据步进电机实际转动值,控制数码管显示。名师资料总结-精品资料欢迎下载-名师精心整理-第 18 页,共 31 页 -17 4.3 程序流程图4.3.1 主程序流程图步进电机控制系统的主程序在对整个系统初始化后主要完成读键盘和处理键盘的功能,如图 3-2 所示:图 3-2 步进电机控制系统主程序流程图系统上电复位后,先调用初始化子程序,对步进电机各端口,相关参数进行初始化,设置 T0工作方式控制时间常数。初始化完成后,步进电机处于停止状态,T0定时器处于关闭状态。然后循环调用读键盘子程序和键盘处理子程序,等待中断,以便实现步进电机转动控制。4.3.2 读键盘子程序流程图首先初始化实际键值参数为0FH,然后扫描 P2口,与初始值比较,相等则说明没有键按下,不相等则软件消抖,以便确认是否真的有键按下。延时 10ms后再次扫描 P2口,第二次与初始值比较,若相等则表明前一次比较不相等是由抖动产生;如果相等则表明确实有键按下。执行键盘之程序里的指令,将相应的变量值改变,为键盘处理子程序做准备。名师资料总结-精品资料欢迎下载-名师精心整理-第 19 页,共 31 页 -18 图 3-3 扫描键盘字程序流程图4.3.3 键盘处理子程序流程图按键处理子程序流程图如图3-3 所示:启动否是否 有 键处 理键 盘 子 程是名师资料总结-精品资料欢迎下载-名师精心整理-第 20 页,共 31 页 -19 图 3-3 键盘处理子程序流程图初 始 化开始P2.3是 否P2.2 是否P2.0是 否P2.1是 否退出TR0 取反,通过启停T0 启停步取 反 方 向 控制为,改变电机转修改速度参数值,减速修改速度参数值,加速是是是名师资料总结-精品资料欢迎下载-名师精心整理-第 21 页,共 31 页 -20 步进电机的启停控制通过启停定时器T0来实现,因为定时器T0控制着脉冲信号的输出,关闭定时器T0也就阻止了脉冲信号的输出。4.3.4 电机控制中断程序流程图定时器中断 0 服务程序流程图如图3-4 所示:图 3-4 定时器中断0 服务程序流程图定时器中断 0 服务程序的中断时间由当前的转速决定。进入中断程序后,首先要保护现场,再根据当前值设置TH0和 TL0的值。然后判断转动方向控制位的值,如果是 0 则控制脉冲信号 P1.0、P1.2 输出,如果是 1 则控制脉冲信号 P1.1、P1.3 输出。最后恢复现场,返回,等待下次中断。通过用当前转速控制中断时间,控制了脉冲的输出频率,也就到达了控制步进电机转动速度的目的;通过检测方向控制位的电平,选择脉冲信号P1.0、P1.2与 P1.1、P1.3 间的切换,控制了步进电机各引出端的接通顺序,也就到实现了步进电机转动方向的控制。各模块控制的详细程序附于最后。名师资料总结-精品资料欢迎下载-名师精心整理-第 22 页,共 31 页 -21 5 调试与改进5.1 调试与改进在系统完成后测试系统,检查硬件和软件是否能够协调运行,并对系统出现的情况进行分析,看是否能够达到系统创作之初所设想的效果,如达不到则重新修改系统的硬件结构或者修改软件的程序部分,直到达到设计需要为止。本系统的设计思路为:首先从整体上划分出各功能模块,然后硬件和软件同时进行依次完成各个功能模块,最后将各个模块联系起来完成整个系统。在硬件调试的过程中,遇到了很多问题。主要有:1.确定步进电机的使用方法,和控制模式。此处尤为重要,这是整个系统的基础,也是确定软件是否能控制步进电机思路的开端。2.键盘设计完成后,在多次运行过程中发现按键是否按下难以直观准确判断。软件测试的时候也有些问题,主要有:1.软件去抖方式,和时间的控制。2.控制步进电机转动的程序段完成后,调试发现对步进电机速度的控制范围过小,查阅资料后发现设计思路不太合理,原先的设计思路是用主程序控制步进电机转动,采用延时方式控制步进电机速度,由定时器处理键盘;改进程序,主程序用来处理键盘,由定时器控制步进电机转动,步进电机转动速度由定时器定时时间决定。问题得到解决,不仅扩大了步进电机速度的控制范围,也使得单片机对步进电机速度的控制更加精确。5.2 运行结果连接好硬件电路,上电复位,程序开始运行。1.此时步进电机不转动,LED不显示;按下启停键,步进电机开始转动,LED数码管显示数值当前数值,即当前步进电机的转速为25 转/分;2.此时每按下加速键一次,LED亮的个数值加 1,步进电机转动速度相应增加;此时每按下减速键一次,LED亮的个数值减 1,步进电机转动速度相应减少;此时若按下方向控制键,步进电机立即向相反方向转动,转动速度保持不变。名师资料总结-精品资料欢迎下载-名师精心整理-第 23 页,共 31 页 -22 总结经过老师耐心细致的指导,经过近一个月的努力,本次毕业设计课题步进电机控制系统告一段落。步进电机控制系统主要分为硬件设计和软件设计两个部分:硬件设计主要是把单片机最小系统、键盘控制模块、步进电机驱动模块、数码显示模块、测速模块各个硬件功能模块及其它元件合理搭配并连接起来使其能够为软件运行提供一个硬件平台。软件设计主要是通过编写程序代码,实现对整个系统的控制。在系统上电复位后程序自动运行,通过接受外部的键盘操作修改系统参数值,控制步进电机的启停,以及转速的增减和转动方向的改变;定时器 T0根据系统参数控制步进电机的转动;实现步进电机转动速度的动态显示。本系统具有相当的实用功能,两片单片机分别实现步进电机控制和测速,能基本符合实际应用需求,本次设计由于设计时间较短,个人能力以及精力等因素的限制,加之设计经验的不足,该系统还有许多不尽如人意的地方。该系统未能完全的实现设计的所有功能。如:利用键盘输入转速值实现转速的控制,动态设置最低转速和最高转速等。在把理论设计转换成实物的整个过程,如:电路设计、分析计算、画电路图、焊接电路、检查调试、软件流程控制设计分析、编写调试软件、烧写软件到整个软硬件系统的调试,最后直到系统完成。其中整个系统的前期准备是首先必须做到位的,如控制什么、用什么控制、得到什么结果,进而对各部分应选择具体的芯片作进一步的考虑,以使系统得到最优的表现。名师资料总结-精品资料欢迎下载-名师精心整理-第 24 页,共 31 页 -23 致谢本论文是在*老师的精心指导下完成的。在做毕业设计的整个过程中,得到了*老师的耐心指导,特别是在设计的初始阶段,*老师在需求分析方面给了我很大的帮助,在老师帮助和指导下,使我能很快地就确定了系统的目的和开发方案,在后来的确定步进电机结构和性能方面*老师给了很大的帮助,使后来的程序实现方面使我少走了很多弯路,并提高了我的效率。这对于我以后的工作和学习都有很大的帮助,在此衷心感谢老师的耐心辅导。同时感谢那些在设计中给予帮助的同学,因为有充分的、默契的合作才有更顺利的结果。名师资料总结-精品资料欢迎下载-名师精心整理-第 25 页,共 31 页 -24 参考文献1.宋锦河,步进电机控制系统的快速实现J.鄂州大学学报,2004.10:4 6.2.黄坚,自动控制原理及其应用 M.北京:高等教育出版社,2004:124126.3.徐薇莉,曹柱中.控制理论与设计M .上海:上海交通大学出版社,2003:8788.4.卢超,单片机与 PC机的通信设计 J.工矿自动化,2007(5):116 118.5.王幸之,钟爱琴.AT89 系列单片机原理及接口技术M.北京:北京航天大学出版社,2004.6.王晓明,电动机的单片机控制M .北京:北京航空航天大学出版社,2002:4447.7.先锋工作室.单片机程序设计实例 M.北京:清华大学出版社,2003:1316.8.康华光,陈大钦.模拟电子电路 M.北京:高等教育出版社,2004:7376.9.马潮,詹卫前等,ATMega8原理及应用手册 M.北京:清华大学出版社,2003:3435.10.李华.MCS-51系列单片机实用接口技术M.北京:北京航空航天大学出版社,2001:4244.名师资料总结-精品资料欢迎下载-名师精心整理-第 26 页,共 31 页 -25 附录 1:整体原理图名师资料总结-精品资料欢迎下载-名师精心整理-第 27 页,共 31 页 -26 附录 2:程序源代码#include#define uchar unsigned char/无符号字符型宏定义 变量范围 0255#define uint unsigned int/无符号整型宏定义变量范围065535 unsigned char code zheng4=0 x08,0 x04,0 x02,0 x01;/正转表格unsigned char code fan4=0 x01,0 x02,0 x04,0 x08;/反转表格uchar flag_start;/启动标志位1 为起动步进电机否则关闭电机uchar flag_z_f;/正反标志位0 为顺时钟1 为逆时史上转uchar flag_shudu;/4 种速度0,1,2,3,uint flag_shudu_value=400;void Delay(unsigned int i)/延时 while(-i);/*1ms延时函数*/void delay_1ms(uint z)uint x,y;for(x=z;x0;x-)for(y=120;y0;y-);uchar key_can;/*独立按键程序*/名师资料总结-精品资料欢迎下载-名师精心整理-第 28 页,共 31 页 -27 void key()static uchar key_new;key_can=20;if(P3&0 xf0)!=0 xf0)Delay(5);if(P3&0 xf0)!=0 xf0)&(key_new=1)key_new=0;switch(P3&0 xf0)case 0 xe0:key_can=1;break;/左边第 1 个case 0 xd0:key_can=2;break;/左边第 2 个case 0 xb0:key_can=3;break;/左边第 3 个case 0 x70:key_can=4;break;/左边第 4 个 else key_new=1;void main()unsigned char i;while(1)key();名师资料总结-精品资料欢迎下载-名师精心整理-第 29 页,共 31 页 -28 if(key_can=4)flag_shudu=0;switch(flag_shudu)case 0:flag_shudu_value=500;P2=0 xf0;break;/速度 1 最快case 1:flag_shudu_value=650;P2=0 xf8;break;case 2:flag_shudu_value=830;P2=0 xfc;break;case 3:flag_shudu_value=1000;P2=0 xfe;break;/速度 4 最慢名师资料总结-精品资料欢迎下载-名师精心整理-第 30 页,共 31 页 -29 if(key_can=4)/停止键 flag_start=0;P2=0XFF;if(flag_start=1)for(i=0;i4;i+)/4 相 if(flag_z_f=0)P1=zhengi;/电机正转else P1=fani;/电机反转Delay(flag_shudu_value);/改变这个参数可以调整电机转速 名师资料总结-精品资料欢迎下载-名师精心整理-第 31 页,共 31 页 -