资源描述
基于AT89S51单片机的单轴步进电机控制器设计The Design of Single Axis Stepper Motor Controller Based on AT89S51 MCU目 录摘要IAbstractII引言1第一章 设计背景21.1 步进电机发展史21.2 我国步进电机的发展21.3 步进电机的发展趋势3第二章 方案设计42.1 提出设计课题42.2 步进电机的工作原理52.3 步进电机的控制62.3.1 步进电机的驱动62.3.2 步进电机的调速92.3.3 步进电机的开环控制112.4 确定设计方案11第三章 硬件设计143.1 单片机最小系统143.2 步进电机驱动电路143.3 显示电路193.4 独立按键电路21第四章 软件设计234.1 系统主程序234.2 系统初始化子程序254.3 按键子程序274.4 显示子程序30第五章 仿真调试32结论33致谢34参考文献35附录36附录A:整体设计原理图36附录B:整体仿真图37附录C:C源程序代码41基于AT89S51单片机的单轴步进电机控制器设计摘要:本文阐述了步进电动机的驱动、调速、开环控制的原理,并对步进电机控制器进行了设计。步进电机是一种进行精确步进运动的机电执行元件,是将电脉冲信号转变为角位移或线位移的开环控制元件。通过单片机对步进电机的转速进行控制,在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响。这一现行关系的存在加上步进电机只有周期性的误差而无积累等特点,使得在速度、位置等控制领域得到了广泛应用。本设计中采用AT89S51型单片机、L297步进电机专用控制器以及L298N驱动芯片组成步进电机控制电路实现对步进电机的控制。通过按键设置行程,由按键控制步进电机正转前进、停止以及反转复位,并可以由相应按键控制步进电机以加减速方式前进和复位。再由液晶LCD1602显示定位行程、转动方向、当前行程值和状态。设计中主要使用Altium designer软件绘制原理图,使用Proteus软件进行程序代码的仿真和功能的理论验证,从而完成对步进电机控制器的设计。关键词:AT89S51单片机;L297;L298N;步进电机;LCD1602;仿真The Design of Single Axis Stepper Motor Controller Based on AT89S51 MCUAbstract: This paper has described the control principle of the stepper motor speed, angle, torque, and made the corresponding design of the stepping motor controller. Stepper motor is a precision electromechanical stepping motion of the Executive Yuan, it is the electric pulse signal into open-loop control components of angular displacement or linear displacement of the. Through the microcontroller to control the stepper motor speed, in the non-overload case, the motor speed, stop location only depends on the pulse signal frequency and pulse number, regardless of load changes. Characteristics and only a periodic error of stepper motors without the accumulation of the current relationship, makes the speed, position and other areas controlled by stepper motor control becomes very simple. The design uses AT89S51 MCU, L297 step motor controller and L298N driver chip dedicated stepper motor control circuit to achieve the control of stepper motor. Traveling through the key, the keys control the stepper motor to move forward, stop and reverse reset, and by the corresponding buttons control the stepper motor acceleration and deceleration forward and reset. The liquid crystal display LCD1602 positioning travel, rotating direction, the stroke value and status. Altium designer software is mainly used to draw schematic in the design, the theoretical simulation and functional verification code using the Proteus software, completed the design of the stepper motor controller.Key words: AT89S51; L297; L298N; stepping motor; LCD1602; simulation引 言步进电机是机电数字控制系统中常用的执行元件,由于其精度高、体积小、控制方便灵活,因此在智能仪表和位置控制中得到了广泛的应用,大规模集成电路的发展以及单片机技术的迅速普及,为设计功能强,价格低的步进电机控制驱动器提供了先进的技术和充足的资源。步进电机驱动器,它是把控制系统发出的脉冲信号转化为步进电机的角位移,或者说控制系统每发一个脉冲信号,通过驱动器就使步进电机旋转一个步距角。也就是说步进电机的转速与脉冲信号的频率成正比。所以控制步进脉冲信号的频率,就可以对电机精确调速,控制步进脉冲的个数,就可以对电机精确定位。为使系统的可靠性、通用性、可维护性以及性价比最优,根据控制系统功能要求及步进电机应用环境,确定设计系统硬件和软件的功能划分,从而实现了基于8051单片机的四相步进电机的开环控制系统。控制系统通过单片机存储器、I/O接口、中断、键盘、LCD显示器的扩展、步进电机的环形分频器、驱动及保护电路、人机接口电路、中断系统及复位电路、等的设计,实现了步进电机的正反转、急停、定位等功能。随着单片机技术的不断发展,单片机在日用电子产品中的应用越来越广泛,六十年代初期以来,步进电机的应用得到很大的提高。人们用它来驱动时钟和其他采用指针的仪器,打印机、绘图仪,磁盘光盘驱动器、各种自动控制阀、各种工具,还有机器人等机械装置。伴随着微电子和计算机技术的发展,它的需要量与日俱增,被广泛应用在各种自动化控制系统中,在各个国民经济领域发挥着不可或缺的作用。在现代科学技术的进步以及现代工业的快速发展,数字控制技术得到了广泛而深入的应用。电机仍旧作为工业发展不可缺少的一大要素,扮演着重要的角色。电机的应用不仅在动力应用反面不断扩大,而且在控制领域的使用范围也在不断扩大。随着控制电机重要性的增加,控制电机的使用量也逐年增加。其应用主要以处理办公业务能力很强的机器和工厂自动化机器为核心,并广泛的应用于医疗器械、计量仪器、汽车、游戏机等方面。第一章 设计背景1.1步进电机发展史步进电机最早是在1920年由英国人所开发。1950年后期晶体管的发明也逐渐应用在步进电机上,这对于数字化的控制变得更为容易。此后,在电话自动交换机中广泛使用了步进电动机。不久又在缺乏交流电源的船舶和飞机等独立系统中广泛使用。20世纪60年代后期,随着永磁性材料的发展,各种实用性步进电动机应运而生,而半导体技术的发展推进了步进电动机在众多领域的应用。在近30年间,步进电动机技术迅速地发展并成熟起来。从发展趋向来讲,步进电动机已经能与直流电动机、异步电动机,以及同步电动机并列,从而成为电动机的一种基本类型。以后经过不断改良,使得今日步进电机已广泛运用在需要高定位精度、高分解性能、高响应性、信赖性等灵活控制性高的机械系统中。在生产过程中要求自动化、省人力、效率高的机器中,我们很容易发现步进电机的踪迹,尤其以重视速度、位置控制、需要精确操作各项指令动作的灵活控制性场合步进电机用得最多。步进电机的需求量与日俱增,在各个国民经济领域中扮演着越来越重要的角色。1.2我国步进电机的发展我国开展步进电机的研究工作相对较晚,上世纪50年代才开始对步进电机进行研究和制造,到目前为止已有六十多年。我国步进电动机研究的初始阶段,主要以高等院校的理论研究为主,随着微电子技术和数字控制技术的快速发展,解决了长久以来限制步进电动机大量应用在工业自动化中的关键问题制造优质的驱动控制电源,同时工业自动化系统本身的发展也不断推进步进电动机的改进以适应工业应用的要求。此时我国在步进电动机研究方面生机勃勃,这一阶段是我国步进电机的研究和发展最为迅猛的阶段。目前,对步进电机在技术和生产应用都已经较为成熟。小型化、机电一体化、电机优化设计、提高电机效率、降低生产成本等是这一阶段乃至今后步进电机发展的趋势和方向。在我国,由于历史缘由,磁阻式步进电机还在一定的场合里使用,但混合式步进电机在工业自动化系统中的优势越来越明显,市场占有率随之不断提高。因此,开展混合式步进电机的研究依然有其重要的意义。1.3步进电机的发展趋势步进电机技术,历经上世纪几十年的发展,已成为相对成熟的技术但随着应用范围的推广和新工艺、新技术的不断出现,步进电机技术仍然在不断发展完善中。主要表现在步进电机本身的改进以及驱动技术的多样化和精密化等几个方面。现阶段,最有发展前景的当属混合式步进电动机,而混合式电动机又向以下四个方向发展:(1)小型化方向发展,随着电动机本身应用领域的拓宽以及各类整机的不断小型化,要求与之配套的电动机也必须越来越小。(2)改圆形电动机为方形电动机。由于电动机采用方型结构,使得转子有可能设计得比圆形大,因而其力矩体积比将大为提高。(3)一体化设计,即把转子位置传感器,减速齿轮等和电动机本体综合设计在一起,这样使其能方便地组成一个闭环系统,因而具有更加优越的控制性能。(4)向五相和三相电动机方向发展,目前广泛应用的二相和四相电动机,其旋转磁场和电磁转矩不完全对称,振动和噪声较大,而五相和三相电动机则是完全对称的,因此更具有优势性。(5)步进电机细分驱动技术的应用。细分驱动是将电机绕组中的电流细分,由常规的矩形波供电改为阶梯波供电。减少步距角,减少步进误差,即提高了分辨率和步距精度。再者,随着网络技术的深入发展,对步进电机的研究也逐步从单机运行转向网络化控制。如果将各种数控加工设备通过总线联网,构成DNC系统,实现集成化控制和管理,是步进电机很有前途的发展方向之一。第二章 方案设计2.1提出设计课题步进电机是将电脉冲信号变换成角位移或直线位移的执行部件。可以直接用数字信号驱动,使用非常方便。在没有脉冲输入时,在绕组电源的激励下气隙磁场能使转子保持原有位置处于定位状态,因此非常适合于控制。步进电机还具有快速启动、精确步进和定位等特点,因而在数控机床、绘图仪、打印机以及光学仪器中得到广泛的应用。在人类社会进入电气化时代的今天,传统电动机已不能满足工业自动化和办公自动化等各种运动控制系统的要求。一方面步进电机的发展与计算机工业密切相关。自从步进电机在计算机外围设备上取代小型电动机以后,使其设备的性能提高,很快的促进了步进电机的发展。另一方面,微型计算机和数字控制技术的发展,又将为数控系统执行部件的步进电机推广应用到其他领域。为了进一步研究步进电机的控制,对步进电机控制原理以及驱动电路有更深的了解,通过单片机硬件与软件的结合,提出设计一个简单实用的步进电机控制器。此步进电机控制器应具有以下相关功能和性能指标。(1)按键设置步进电机所要走的行程值(即线位),由显示器直观显示出来,按下启动键后步进电机由原点前进到达所需位置。步进电机在前进过程中已走的行程数值和前进的状态也需通过显示电路实时动态显示。(2)步进电机在正向前进过程中可以随时停止,停止时显示出当前行程值。并可以随时启动前进、复位返回原点。在到达指定位置后也能通过按键复位返回。(3)前进后退是步进电机控制器所必须具备的基本功能,设计中增加步进电机加减速前进以及复位功能,在步进电机启动前进、复位时和行进过程中都可以加速复位以及减速前进,并到达指定位置。(4)此设计不仅需要对步进电机驱动电路进行设计,还需要有键盘以及相关的显示电路,通过它们可以通过显示器实时的观察到步进电机当前的运行状态,并可以实时地控制步进电机。基于此上功能分析提出设计一个基于单片机的单轴步进电机控制器。通过对步进电机控制器的设计,可以更深刻地理解步进电机的工作原理,而且由此设计我们可以举一反三,对此类相关设计积累一定经验。2.2步进电机工作的原理步进电机在结构上是由定子和转子组成,可以对旋转角度和转动速度进行高精度控制。当电流流过定子绕组时,定子绕组产生一个矢量磁场,该矢量场会带动转子旋转一个角度,使得转子的一对磁极磁场方向与定子的磁场方向一着该磁场旋转一个角度。因此,控制电机转子旋转实际上就是以一定的规律控制定子绕组的电流来产生旋转的磁场。每来一个脉冲,转子就旋转一个步距角,称为一步。根据脉冲的分配方式,步进电机各相绕组的电流轮流切换,在供给连续脉冲时,就能一步一步地连续转动,从而使电机旋转。四相步进电机如图2.1所示。图2.1 四相步进电机该步进电机为一四相步进电机,采用单极性直流电源供电。开关SB接通电源,其余断开,B相磁极和转子0、3号齿对齐,同时,转子的1、4号齿就和C、D相绕组磁极产生错齿,2、5号齿就和D、A相绕组磁极产生错齿。当开关SC接通电源,SB、SA、SD断开时,由于C相绕组的磁力线和1、4号齿之间磁力线的作用,使转子转动,1、4号齿和C相绕组的磁极对齐。而0、3号齿和A、B相绕组产生错齿,2、5号齿就和A、D相绕组磁极产生错齿。依次类推,A、B、C、D四相绕组轮流供电,则转子会沿着A、B、C、D方向转动。四相步进电机按照通电顺序的不同,可分为单四拍、双四拍、八拍三种工作方式。单四拍与双四拍的步距角相等,但单四拍的转动力矩小。八拍工作方式的步距角是单四拍与双四拍的一半,因此,八拍工作方式既可以保持较高的转动力矩又可以提高控制精度。单双八拍工作方式:A-AB-B-BC-C-CD-D-DA (即一个脉冲,转 3.75度)八拍运行时步距角为=360度/(50*8)=0.9度(俗称半步)。四相步进电机单四拍、双四拍与八拍工作方式的电源通电时序与波形分别如图2.2所示。a 单四拍 b双四拍 c八拍图2.2 步进电机工作时序图通过对步进电机的脉冲信号进行控制,改变其频率以及个数。每一个脉冲信号就可使步进电机旋转一个固定的角度.脉冲的数量决定了旋转的总角度 ,脉冲的频率决定了电机运转的速度.当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(称为“步距角”),它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。2.3步进电机的控制2.3.1步进电机的驱动本设计是基于单片机的单轴步进电机控制器设计,所谓单轴步进电机就是指控制一个步进电机。步进电机控制器设计主要是步进电机驱动电路的设计。使用步进电机时,只需要将单路电脉冲信号先通过脉冲分配器转变为电动机所需求的多路(单路)脉冲信号,再经过功率放大后分别送入步进电机各相绕组,即可使步进电动机准确运行。在正常情况下,步进电机转过的总角度和输入的脉冲数成正比。由于步进电机能直接接受数字量输入,所以它特别适合于微机控制。由于微机控制系统的输出脉冲电流往往都是毫安级的,而步进电机的电子绕组需要很大的电流步进电机控制脉冲电流才可以驱动其旋转,所以步进电机不能直接接到直流电源或者微机上工作,必须使用专用的步进电机驱动电路来进行驱动。步进电机驱动电路一般由环形分配器、信号放大与处理级、推动级、驱动级等各部分组成,步进电机的驱动器还要有多种保护电路。步进电机驱动电路如图2.3所示。驱动级推动级环形分配器信号放大与处理级保护级 图2.3 步进电机驱动电路步进电机接受来自控制器的CP脉冲,并按步进电机状态转换表要求的状态顺序产生各相导通或截止的信号。每来一个CP脉冲,环形分配器的输出转换一次。因此步进电机转速的高低、升速或降速、启动或停止都取决于CP脉冲的有无或频率。同时环形分配器还必须接受控制器的方向信号,从而决定其输出的状态是按正序或者按逆序转换,进而决定步进电机的转向。从环形分配器输出的各相导通或截止的信号送入信号放大与处理级。信号放大的作用是将环分输出信号加以放大,变成足够大的信号送入推动级,这中间一般既需电压放大,也需电流放大。信号处理是指实现信号的某些转换、合成等功能,产生斩波、抑制等特殊功能的信号,从而产生特殊功能的驱动。本级还经常与各种保护电路、各种控制电路组合在一起,形成较高性能的驱动输出。推动级的作用是将较小的信号加以放大,变成足以推动驱动级输入的较大信号。有时,推动级还承担电平转换的作用。保护级的作用是保护驱动级的安全。一般可根据需要设置过电流保护、过热保护、过压保护、欠压保护等。有时还需要对输入信号进行监护,发现输入异常时也可以提供保护动作。驱动级直接与步进电机各相绕组连接,它接受来自推动级的信号,控制电动机各相绕组的导通与截止,同时也绕组承受的电压和电流进行控制驱动级常见的驱动方式有单极性驱动和双极性驱动等。单极性驱动电路包括有单电压功率驱动电路、高低电压功率驱动电路。这两种驱动电路分别应用于不同的步进电机。下面介绍两种驱动电路的原理以及工作方式。 (1)单电压功率驱动电路:对于反应式步进电机,绕组电流只要求向一个方流动,因此其驱动电路采用单极性驱动。单电压驱动是指电动机绕组在工作时,只用一个电压电源对绕组供电,它的特点是电路最简单。步进电机使用脉冲电源工作,脉冲电源的获得可通过下图说明,单电压功率驱动电路如图2.4所示。图2.4 单电压功率驱动电路电动机绕组串有电阻RS,使绕组回路的时间常数减少,缩短了绕组中电流上升的过渡时间。RS还能缓解电动机的低频共振现象。在单电压驱动电路情况下,步进电机单步相应曲线如图2.5所示。图2.5 步进电机单步响应曲线图中1不串电阻RS的响应曲线,2是串电阻RS并调高电源电压以保持绕组静态电流相同的响应曲线,显然曲线2比曲线1好。但由于RS引起了附加的损耗,故一般这种方法只适用于小功率步进电机。(2)高低压功率驱动电路:高低压驱动的设计思想是,不论电机工作频率如何,均利用高电压Uh供电来提高导通相绕组的电流前沿,而在前沿过后,用低电压Ul来维持绕组的电流。这一作用同样改善了驱动器的高频性能,而且不必再串联电阻RS,消除了附加损耗。高低压驱动法是目前普遍应用的一种方法,由于这种驱动在低频时电流有较大的上冲,电动机低频噪声较大,低频共振现象存在,使用时要注意。高低压功率驱动电路如图2.6所示。图2.6 高低压功率驱动电路(3)双极性驱动电路:永磁式或混合式步进电机,由于工作时要求定子磁极的极性交变,所以通常要求其绕组由双极性驱动电路驱动,即绕组电流能正、反向流动。由于双极性桥式驱动电路较为复杂,所以过去仅用于大功率步进电机。近年来出现了集成化的双极性驱动芯片,它能方便地对采用双极性驱动电路的步进电机极性控制。如L298N双H桥驱动器,是一款集成的高电压、高电流、双路全桥式电动机驱动芯片。2.3.2步进电机的调速要使步进电机正常工作,必须按照该种电机的励磁状态转换表所规定的状态和顺序一次对各相进行通电或断电控制。各相驱动信号来源于环形分配器。同时,由于电机有正反转要求,所以这种环形分配器的输出既是周期性的,又是可逆的。因此,环形分配器是一种特殊的可逆循环计数器。步进电机驱动电源的环形分配器有硬件和软件两种形式。硬件环形分配器可分为集成触发器型、专用集成电路芯片型等。集成元器件的使用,使环形分配器的体积大大缩小,可靠性和抗干扰能里提高,并具有较好的响应速度,而且显示直观、维护方便。软件环形分配器采用微机的软件实现脉冲分配,因此它往往受到微机运算速度的限制,有时难以满足高速实时控制的要求。(1)专用集成电路芯片型环形分配器:集成触发器型环形分配器的硬件电路复杂,使用较少。目前使用广泛的是专用集成电路芯片环形分配器,如CH250和L297等。其中,CH250专用于三相步进电机有A、B、C三个输出端,当输入端CL或EN加上时钟脉冲后,其输出电流能力为0.5mA,经推动级、驱动级放大后即可驱动电机绕组。CH250如图2.7所示。图2.7 CH250(2)软件环形分配器:出了采用硬件环形分配器外,在微机系统资源及任务允许的情况下,还可以采用软件环形分配器脉冲的方法。在这种方法中,脉冲分配器的功能全部由软件来完成。一次循环输出驱动三相反应式步进电机所需的六个状态:A-AB-B-BC-C-CA,这样,三相步进电机就进入了三相六拍的运行状态。软件环形分配器如图2.8所示。步进电机 P1.0 P1.1 P1.28051A 功率驱动B 接口电路C图2.8 软件环形分配器采用这种纯软件方法,需要在微机的程序存储器中开辟一个存储空间以存放这6种状态,形成一张状态表。控制系统的应用软件按照电动机正、反转的要求,顺序将状态表的内容取出来送至8051的P1口。对于步进电机调速,实际上就是控制系统发出CP脉冲的频率或者换相的周期。控制系统可用两种方法确定CP脉冲的周期,一种是软件延时法,另一种是定时器延时法。(1)软件延时法:这种方法是在每次换相之后,调用一个延时子程序,延时结束后再次执行换相。这样周而复始,即可发出一定频率的CP脉冲,从而控制步进电机按照某一确定的转速运转。可以计算得出,延时子程序的延时时间与换相子程序所用时间的和即是CP脉冲的周期,也是步进电机的步进频率的倒数。这种方法的有点是程序简单,占用片内资源少,全部由软件实现,且调用不同的延时子程序就可以实现不同的速度运行。缺点是占用CPU时间太多,不能在运行中处理其他的工作,显然,这种方法虽然简单,但也只能在较的控制过程中采用。(2)定时器延时法:微机系统一般均带有几个定时器、计数器。在步进电机的转速控制中,可利用其中某个定时器加载适当的定时值,经过一定的时间,定时器溢出,产生中断信号,暂停主程序的执行,转而执行定时器中断服务程序,于是产生硬件延时效果。若将步进电机换相子程序放在定时器中断服务程序之中,则定时器每中断一次,电动机就换相一次,定时器定时的大小就决定了电动机换相的频率,从而可实现电动机的速度控制。当然,对于高精度要求的转速控制场合,只考虑定时器的定时值是不够的,还要考虑诸如加载定时器、开关定时器、中断响应等待时间、中断响应进出时间等对转速的影响,从而对定时器的定时值进行合理的修正。2.3.3步进电机的开环控制对步进电机进行微机定位控制,有开环控制和闭环控制两类。开环控制时没有位置检测反馈,不需要光电编码器之类的位置传感器,因此控制系统的价格比较便宜。但是为了保证定位不出错,设计系统时要留出足够的裕度。这就是说,电动机的机械负载不能太重。因为一旦负载短时超重而导致步进电机失步,则整个机电传动系统的定给就会出错。步进电机开环控制如图2.9所示。工作台步进电机功率驱动器微机指令图2.9 步进电机开环控制2.4确定设计方案由前面对与步进电机的工作原理、驱动、调速、开环控制等的介绍,针对所提出的设计问题,确定相关的设计方案。步进电机控制器设计主要在于步进电机驱动电路以及调速的设计,辅以相关的按键和显示电路。步进电机控制是一个比较精确的控制,步进电机开环控制系统具有成本低、简单、控制方便等优点,在采用单片机的步进电机开环系统中,控制系统的CP脉冲的频率或者换向周期实际上就是控制步进电机的运行速度。系统可用两种办法实现步进电机的速度控制。一种是延时,一种是定时。 步进电机的驱动一般有两种方法,一种是通过CPU直接来驱动,这种方法一般不宜采用,因为CPU的输出电流脉冲是特别小的它不能足以让步进电机的转动。另一种是通过专用的驱动电路进行驱动,由前面的介绍可知步进电机的驱动方式有单极性驱动和双极性驱动。单极性驱动适用于反应式步进电机,双极性驱动适用于永磁式和混合式步进电机。常用的集成化驱动芯片有L298N、ULN2003等。步进电机的脉冲分配有软件环形分配器和硬件环形分配器两种形式。软件环形分配器是通过单片机内部的定时器改变CP脉冲的频率从而实现对步进电机的转速控制,实现调速、快速起停、正反转控制等。再者步进电机的运行状态应有响应的显示电路进行显示,且可以通过不同的按键控制步进电机状态的改变。由上述阐述可知步进电机控制设计有多种不同的设计思路和不同的方案可供选择。简述三种设计方案并从中选择出适合的方案,再进行硬件以及软件的设计。 (1)方案一:单片机选择AT89S51型单片机,步进电机的驱动选择L298N集成驱动芯片,显示电路选择七段数码管,再辅以相应的按键电路。步进电机的脉冲使用软件环形分配的形式。此设计方案通过单片机内部的定时器改变CP脉冲输入各相的顺序从而改变步进电机的正反转、起停。通过改变控制系统发出CP脉冲的频率或者换相的周期就可以改变步进电机运行的速度。外部的按键可以控制步进电机状态的改变,并通过数码管显示出来。(2)方案二:步进电机驱动芯片选择L298N集成驱动芯片,显示电路选择液晶LCD1602,加上相应的按键电路。此设计方案中显示换成了LCD1602, LCD1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。LCD1602是指显示的内容为16*2,即可以显示两行,每行16个字符液晶模块。LCD1602可以显示更多的内容,而且比较直观。脉冲分配仍旧通过软件环形分配的形式实现。(3)方案三:此设计方案选择硬件环形分配的形式,硬件环形分配器选择L297集成芯片,L297是步进电机专用控制器,能产生4相控制信号。可用于微机控制的两相双极和四相单极步进电机。能够用单四拍、双四拍、四相八拍方式控制步进电机。显示电路选用LCD1602,实时显示步进电机的工作状态。并辅以相关的按键电路对步进电机进行实时控制。由于设计是针对步进电机的控制器设计,在显示电路实时显示的是步进电机所走的直线位移,即把回转运动通过计算转变成直线位移量进行显示。这样更加方便直观。通过对比上面三种设计方案,方案一中选用软件环形分配器的形式,但由于这种方法占用了微机控制系统的大部分时间及精力,所以只能用于微机系统资源比较宽松且微机控制任务不是很繁重的系统中。而且数码管显示电路所能显示的内容比较单一。方案二选用了LCD1602液晶显示,可是显示较多的内容,比较直观,但是仍旧是软件环形分配器的形式。方案三中选用了L297硬件集成环形分配器,可以产生四相驱动信号控制步进电机。显示电路则选用了LCD1602使显示内容更加丰富。比较上面三种设计方案不难发现方案三更加简单合理,方案三的硬件环形分配器减少了占用微机系统资源,液晶显示也能显示更丰富的内容,于是选择方案三作为本次课题的方案设计。根据设计方案画出整体设计的框图,整体框图如图2.10所示。 单 片 机 显示电路电源电路 键盘电路 时钟电路 驱动电路 步进电机 复位电路图2.10 整体框图第三章 硬件设计3.1单片机最小系统单片机最小系统作为基于单片机设计所必须的,也是整个控制系统的核心。单片机最小系统包括晶振电路、复位电路、电源电路。其中晶振电路为单片机工作提供时钟信号;复位电路是单片机复位程序重新开始执行;电源电路为单片机提供电源。在最小系统中EA/VPP引脚接高电平,CPU访问内部存储器的指令。单片机最小系统如图3.1所示。图3.1 单片机最小系统3.2步进电机驱动电路 设计中采用L298N作为步进电机的驱动芯片,其为步进电机专用的驱动芯片内部采用双极性驱动电路来驱动步进电机工作。其中用12V电源来驱动步进电机,L297作为硬件环形分配器,设计中采用的是57BYG007型四相步进电机,工作方式为四相八拍。L298N是ST公司生产的一种高电压、大电流电机驱动芯片。该芯片采用15脚封装。主要特点是:工作电压高,最高工作电压可达46V;输出电流大,瞬间峰值电流可达3A,持续工作电流为2A;额定功率25W。内含两个H桥的高电压大电流全桥式驱动器,可以用来驱动直流电动机和步进电动机、继电器线圈等感性负载;采用标准逻辑电平信号控制;具有两个使能控制端,在不受输入信号影响的情况下允许或禁止器件工作有一个逻辑电源输入端,使内部逻辑电路部分在低电压下工作;可以外接检测电阻,将变化量反馈给控制电路。使用L298N芯片驱动电机,该芯片可以驱动一台两相步进电机或四相步进电机。L298N芯片引脚如图3.2所示。图3.2 L298N芯片引脚其中VS为步进电机供电设计中接12V,VSS为芯片工作电源接5V,OUT1-OUT4为输出接步进电机四相绕组。IN1-IN4输入控制电位来控制电机的正反转,ENA,ENB为使能控制端则控制电机停转。L297是意大利SGS半导体公司生产的步进电机专用控制器,它能产生4相控制信号,内部集成电路采用模拟/数字兼容的I2L技术,使用5V的电源电压。L297芯片引脚如图3.3所示。图3.3 L297芯片引脚L297的内部变换器是一个重要组成部分。变换器由一个三倍计算器加某些组合逻辑电路组成,产生一个基本的八格雷码。由变换器产生4个输出信号送给后面的输出逻辑部分,输出逻辑提供禁止和斩波器功能所需的相序。为了获得电动机良好的速度和转矩特性,相序信号是通过2个PWM斩波器控制电动波器包含有一个比较器、一个触发器和一个外部检测电阻,晶片内部的通用振荡器提供斩波频率脉冲。每个斩波器的触发器由振荡器的脉冲调节,当负载电流提高时检测电阻上的电压相对提高,当电压达到Uref时(Uref是根据峰值负载电流而定的),将触发器重置,切断输出,直至第二个振荡脉冲到来、此线路的输出(即触发器Q输出)是一恒定速率的PWM信号,L297的CONTROL端的输入决定斩波器对相位线A、B、C、D或抑制线INH1和INH2起作用。CONTROL为高电平时,对A、B、C、D有抑制作用;为低电平时,则对抑制线INH1和INH2有抑制作用,从而可对电动机和转矩进行控制。对L297多使用到的各个引脚功能进行说明:(1)4 、6、7、9引脚为四相驱动输出信号。(2)5、8引脚控制A相和B相的驱动极。当此引脚为低电平时,A相、B相驱动控制被禁止;当线圈级断电时,双极性桥用这个信号使负载电源快速衰减。若CONTROL端输入是低电平时,用斩波器调节负载电流。C相、D相绕组电流检测电压反馈输入端。(3)14、13引脚为A、B、C、D相绕组电流检测电压反馈输入端。复位输入端。此引脚输入负脉冲时,变换器恢复初始状态 (ABCD=0101)。(4)20引脚为复位输入端。此引脚输入负脉冲时,变换器恢复初始状态 (ABCD=0101)。(5)15引脚为斩波器基准电压输入端。加到此引脚的电压决定绕组电流的峰值。(6)10引脚为L297的使能输入端。当它为低电平时,INH1、INH2、A、B、C、D都为低电平。当系统被复位时用来阻止电机驱动。(7)17引脚为方向控制端。步进电机实际旋转方向由绕组的连接方法决定。当改变此引脚的电平状态时,步进电机反向旋转。(8)18引脚(CLOCK)步进时钟输入端。该引脚输入负脉冲时步进电机向前步进一个增量,该步进是在信号的上升沿产生。(9)19引脚为半步、全步方式 选择端。此引脚输入高电平时为半步方式(四相八拍),低电平时为全步方式。如选择全步方式时变换器在奇数状态,会得到单相工作方式(单四拍)。在本次设计中选用的步进电机型号为57BYG007,其为混合式步进电机。整步运行时步距角为1.8度,半步运行时步距角为0.9度。设计中把步进电机的回转运动转换成直线位移。步进电机轴直径为6.35mm,轴周长约为20mm。采用单双八拍工作方式:A-AB-B-BC-C-CD-D-DA (即一个脉冲,转 3.75度)八拍运行时步距角为=360度/(50*8)=0.9度(俗称半步),其中50为步进电机转子的齿数。这样给步进电机一个信号脉冲步进电机就转过0.9度,转动一周即360度需要400个脉冲,通过计算则位移1mm则需要20个脉冲值。步进电机外型如图3.4所示。图3.4 步进电机外型设计当中所使用的为57BYG007型四相步进电机,步进电机技术参数如表3.1所示。表3.1 步进电机技术参数型号相数电压电流电阻电感静转矩机身长出轴长重量单位VAmHKg.cmmmmmKg57BYG4121.532303.541210.45由以上分析知设计中使用了L297与L298N共同组成的步进电机驱动电路,由于步进电机在工作中需要正转反转等工作方式,设计中还应该加上保护电路以免电机正反转交替时产生的感应电流对电路产生危害。L297加L298N驱动器组成的步进电机控制器电路具有以下优点:使用元件少,组件的损耗低,可靠性高,体积小,软件开发简单,并且单片机硬件费用大大减少。L297与L298N配合使用控制双极性步进电机工作电流可大2.5A。L297的特性是只需要时钟。方向和模式输入信号。因此可以减轻单片机和程序设计的负担。步进电机驱动电路中L297芯片的EN、CW/CCW、CLK、HALF/FULL引脚分别接到单片机的P1.0-P1.2四个并行I/O口上。通过P1.0-P1.2发出高低电平信号使L297产生步进电机工作所需的相序以及工作方式信号。L297的A、B、C、D四相输出连接到L298N的IN1-IN4四个输入端,并把信号输出给步进电机。由于步进电机需要在正反转运动状态之间来回转换,会产生感应电动势,产生的感应电动势因此会产较大的感应电流。故需要在驱动电路中加上二极管保护电路,用来避免因步进电机突然的正反转而产生的感应电流流入L298N芯片烧坏L298N,用于保护驱动电路的正常工作。L297和L298N组合控制驱动的步进电动机可用于如打印机的托架后置、记录仪的进给结构以及打字机、数控机床、软盘驱动器、机器人、绘图机、复印机、电动阀门等设备和装置。步进电机驱动电路如图3.5所示。图3.5 步进电机驱动电路由步进电机驱动电路图可知L298N芯片VS引脚接的为12V电压。这是给步进电机供电的,步进电机工作电压为12V,在设计硬件电路中应该再设计一个电源电路向步进电机供电,步进电机12V电源电路如图3.6所示。图3.6 步进电机12V电源电路3.3显示电路显示电路为LCD1602组成的相关电路。1602为工业字符型液晶,能够同时显示16*02即32个字符(16列2行)。1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。液晶LCD1602芯片引脚如图3.12所示。图3.7 LCD1602芯片引脚液晶LCD1602由若干个5*7或者5*11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形。1602采用标准的16脚接口,对比度可调,内部有复位电路。LCD1602原理是基于HD44780液晶芯片的,HD44780内置了DDRAM、CGROM 和CGRAM。DDRAM就是显示数据RAM,用来寄存待显示的字符代码。LCD1602共有11条指令包括:清屏指令、光标归位指令、模式设置指令、显示开关控制指令、光标移动方向指令、功能设置指令等。在本设计中LCD1602的作用是显示步进电机当前的工作状态,通过按键电路按下不同的按键,步进电机有不同的工作状态,此状态则通过显示电路显示出来。依据设计方案中所提出的把步进电机所走的角位移转换成直线位移进行显示。设计中通过按键设置步进电机要走的行程值,通过LCD1602实时的显示出来,显示单位为mm级。按下启动按键步进电机正向转动,LCD1602则显示步进电机正向转动的状态,并实时的显示出当前步进电机所走的行程值。当按下不同的按键时显示内容有所不同。其中LCD1602显示芯片各引脚如表3.2所示。表3.2 LCD1602显示芯片各引脚引脚号引脚名电平输入/输出作用1GND电源地2VCC电源(+5V)3VO对比调整电压4RS0/1输入0=输入指令1=输入数据5R/W0/1输入0=向LCD写入指令或数据1=从LCD读取信息6E1,1-0输入使能信号,1时读取信息,1-0(下降沿)执行指令714DB0-DB70/1输入/输出数据总线line8BG VCC+VCCLCD背光电源正极9BG GND接地LCD背光电源负极显示电路中1602的RS、RW、E三个端口分别连接到了AT89S51的P2.0-P2.2端口用来控制向1602读写指令以及数据等信息,数据端DB0-DB7连接到单片机的P0.0-P0.7I/O端口,用来输入/输出数据。VO端口接了一个1K的滑动变阻器用来调节LCD1602的对比度,BG VCC端口接VCC用来把LCD1602的背光打开,以便有更好的显示效果。LCD1602显示电路如图3.8所示。图3.8 LCD1602显示电路3.4独立按键电路 通过设计的键盘电路实现设置步进电机所要走的行程值,控制步进电机正向启动、停止、继续启动、停止、以及加减速启动复位等功能。独立按键电路如图3.9所示。图3.9 独立按键电路设计中一共设计了7个独立按键,其中一个为单片机复位电路按键。其余key1-key4分别连接到单片机的P1.4-P1.7I/O口,四个按键的功能分别为:启动系统工作时key1用来设置步进电机所要走的行程值,key2用来启动步进电机正向转动,key3控制步进电机的停止,key4是复位按键按下此键后步进电机复位到零点,行程值也变为零。Key5-key6两个按键分别连接到AT89S51的P2.3-P2.4I/O口,key5为正向减速转动,因为步进电机前进时考虑到不需要太高的速度故设置此键,key6为加速复位按键,考虑到复位时可以有较高的速度故可以加速复位。独立按键电路的工作原理是按下按键之后就相当于是把对应的端口的电势拉低。在处理按键程序前就先去抖动,防止因按键时产生的机械抖动而错误的重复执行相应程序。所有按键处理程序都是在等按下后执行的。这些在软件编设计部分都会有说明。本章就是通过对整个系统按照各个模块分别讲解来加深对整个系统的硬件部分的理解。各个模块中对所使用到的芯片进行了详细的介绍,然后结合芯片资料完成了对应模块的硬件设计。对以上的单片机最小系统,步进电机驱动电路模块,液晶LCD1602显示电路,按键电路模块,各个部分进行设计论证后然后衔接起来完成了整个硬件部分的设计。第四章 软件设计本系统的软件设计主要分为主程序、系统初始化子程序、按键响应子程序、LCD1602显示子程序四个部分。事实上每一部分都是紧密相关的,每个功能模块对于整体设计都是非常重要,单片机AT89S51通过软件编程才能使系统真正的运行起来,软件设计的好坏也直接决定了系统的运行质量。程序流程图的设计遵循自顶向下的原则,在流程图中把设计者的控制过程梳理清楚。4.1系统主程序系统主程序流程图如图4.1所示。图4.1 系统主程序流程图主程序为整个系统程序的开始,当给系统供电以后,通过单片机复位电路对系统进行上电复位系统经过初始化以后,便开始执行按键查询等待相应的操作,当有按键按下的时候程序便调用并执行相应的子程序执行。本次设计中用C语言进行软件编程。下面对系统主程序进行简单介绍。void main() uchar num1, num2; init_lcd(); /LCD1602显示初始化 for(num1 = 0; num1 16; num1+) /显示启动界面 write_data(table1num1); delay(100); /延时0.1s write_com(0x80 + 0x40); /显示启动界面 for(num2 = 0; num2 16; num2+) write_data(table2num2); delay(100); /延时0.1s init_time0(); /定时器初始化 while(1) keyscan(); /按键扫描程序delay(5); 系统上电完成后,对LCD1602初始化,定时器也进行初始化,启动显示界面等待设置按键按下,进行行程值的设定。然后等待正向启动键按下,当启动键按下后则执行正向启动,步进电机则正向转动。在步进电机正向转动过程中,系统程序则继续执行按键扫描程序,如果有相应的按键按下则转到相应按键子程序去执行。系统启动初始化程序后LCD1602显示启动界面,系统启动显示界面如图4.2所示。图4.2 系统启动显示界面其中在LCD1602显示界面第一行set为所需要设置的行程值,now为执行完相应按键子程序后显示当前已经走的行程值,zt为当前的状态,有设置(sz)、正向启动(zx)、停止(tz)、复位(fw)、正向减速(ja)、加速复位(js)等六个表示状态。相应按键按下后zt会显示当前的状态。4.2系统初始化子程序系统初始化对相应的系统参数进行初始化,包括系统上电默认运行参数设定,包括四相八拍的工作方式,LCD1602显示界面、系统定时器设定、载入定时器初值和默认的工作参数等。其中比较主要的是对定时器的设定,在设计中需要实时的显示出当前的行程值,这就需要设定定时器的中断时间,每次中断时间溢出后将当前已经走的行程值通过调用显示子程序显示出来。设计中采用了定时器T0,工作方式为方式1即16为定时器/计数器,装入定时器的初始值为55536也即计数10000次溢出。单片机外部晶振使用的是12MZH,单片机一个机器周期为12个晶振周期,时钟周期T=1/12us,所以定时器溢出一次的时间为10us本次设计中采用每隔1s(即使定时器溢出100次)取当前步进电机行程值进行显示。系统初始化上电后,没有按键按下,没有设置行程值则步进电机电机不转,不显示当前状态和当前行程值。系统初始化流程图如图4.3所示。图4.3 系统初始化流程图根据初始化流程图编写出系统初始化程序,下面对初始化程序进行简单说明,LCD1602初始化程序。void init_lcd()write_com(0x38);/显示模式设置,设置为16*2显示,5*7点阵,8位数据口write_com(0x08);/显示关闭write_com(0x01);/显示清屏write_com(0x06);/显示光标移动设置(读写一个字符后地址指针加一)write_com(0x0c);/显示开不显示光标且光标不闪烁定时器0初始化程序void init_time0()TMOD=0x01; /定义定时器0的工作方式,为方式1TH0=(65536-10000)/256; /装入定时器初始值55536TL0=(65536-10000)%256; /计数10000次溢出,溢出一次的时间为10usEA=1; /打开总中断ET0=1; /打开定时器0中断TR0=1; /启动定时器工作4.3按键子程序按键响应子程序,在本设计当中按键的一端接地,另一端接单片机的对应端口,所以当按键按下,既是将单片机对应端口电平拉低。所以在编程的时候判断按键按下是低电平有效。按键子程序流程图如4.4所示。图4.4 按键子程序流程图根据子程序流程图编写出子程序,当有按键按下时,按键子程序响应,在程序中用到延时消抖判断按键是否按下。Key2为正向启动按键,key3为停止按键,key4为复位按键,key5为正向减速按键,key6为加速复位按键。下面对按键子程序进行简单说明。void keyscan()P3 =
展开阅读全文