
摘 要
介绍了步进电动机的发展史,及国内的现状和步进电动机未来的应用前景。并且阐述了步进电动机转速、角度、转矩的控制原理。本文阐述了一种步进电机控制器的设计方案,并绘制了原理图和PCB板图,撰写了程序源代码。实现了对步进电动机转速、角度的控制,并完成了实物的制作。这期间主要使用protel99se软件绘制原理图和制板,使用proteus7.1软件进行程序代码的仿真和功能的理论验证。最后通过硬件的调试验证程序代码的实际功能,完成对控制器的设计。
关键词:步进电动机;控制器。
Abstract
Introduction step enter electric motor of development history, and local present condition and step enter electric motor future of application foreground.And elaborated a step to enter electric motor to turn soon, angle, turn Ju of control principle.This text elaborated a kind of step enter electrical engineering controller of design project, and drew principle diagram and PCB plank diagram, composed a procedure source a code.Realization to step enter the electric motor turn soon, angle of control, and completion real object of creation.This period main usage the protel 99 se the software draw principle diagram and make plank, usage proteus 7.1 softwares carry on an imitate of procedure code true with the theories of the function verification.The end experiment certificate procedure a code through an adjust of hardware of actual function, completion design controller.
Key words
Stepper Motor; Controller.
第一章、引 言
1.1步进电机发展史
步进电机又称电动机或阶跃电动机,国外一般称为 Step motor或Stepping motor 等。步进电机的机理是基于最基本的电磁铁作用,其原始模型起源于1830年至1860年间。1870年前后开始以控制为目的的尝试,应用于氩弧灯的电极输送机构中。这被认为是最初的步进电动。此后,在电话自动交换机中广泛使用了步进电动机。不久又在缺乏交流电源的船舶和飞机等系统中广泛使用。
20世纪60年代后期,随着永磁性材料的发展,各种实用性步进电动机应运而生,而半导体技术的发展则推进了步进电动机在众多领域的应用。在近30年间,步进电动机迅速地发展并成熟起来。从发展趋向来讲,步进电动机已经能与直流电动机、异步电动机,以及同步电动机并列,从而成为电动机的一种基本类型。
1.2我国步进电机发展
我国步进电动机的研究及制造起始于本世纪50年代后期。从50年代后期到60年代后期,主要是高等院校和科研机构为研究一些装置而使用或开发少量产品。这些产品以多段结构三相反应式步进电动机为主。70年代初期,步进电动机的生产和研究有所突破。除反映在驱动器设计方面的长足进步外,对反应式步进电动机本体的设计研究发展到一个较高水平。70年代中期至80年代中期为成品发展阶段,新品种高性能电动机不断被开发。自80年代中期以来,由于对步进电动机精确模型做了大量研究工作,各种混合式步进电动机及驱动器作为产品广泛利用。
1.3步进电机的应用前景
目前,随着电子技术、控制技术以及电动机本体的发展和变化,传统电机分类间的界面越来越模糊。步进电机必然会成为机电一体化元件组件的必然趋势。由于步进电机具有控制方便、体积小等特点,所以在数控系统、自动生产线、自动化仪表、绘图机和计算机外围设备中得到广泛应用。微电子学的迅速发展和微型计算机的普及与应用,为步进电动机的应用开辟了广阔前景,使得以往用硬件电路构成的庞大复杂的控制器得以用软件实现,既降低了硬件成本又提高了控制的灵活性,可靠性及多功能性。市场上有很多现成的步进电机控制机构,但价格都偏高。应用SGS公司推出的L297和L298两芯片可方便的组成步进电机驱动器,并结合Atmega16L单片机可以构成很好的步进电机控制系统。
第2章 步进电机概述
2.1 步进电机的分类
步进电动机的种类很多,从广义上讲,步进电机的类型分为机械式、电磁式和组合式三大类型。按结构特点电磁式步进电机可分为反应式(VR)、永磁式(PM)和混合式(HB)三大类;按相数分则可分为单相、两相和多相三种。目前使用最为广泛的为反应式和混合式步进电机[7]。
(1)反应式步进电机(Variable Reluctance,简称VR)反应式步进电机的转子是由软磁材料制成的,转子中没有绕组。它的结构简单,成本低,步距角可以做得很小,但动态性能较差。反应式步进电机有单段式和多段式两种类型;
(2)永磁式步进电机(Permanent Magnet,简称PM)永磁式步进电机的转子是用永磁材料制成的,转子本身就是一个磁源。转子的极数和定子的极数相同,所以一般步距角比较大。它输出转矩大,动态性能好,消耗功率小(相比反应式),但启动运行频率较低,还需要正负脉冲供电;
(3)混合式步进电机(Hybrid,简称HB)混合式步进电机综合了反应式和永 磁式两者的优点。混合式与传统的反应式相比,结构上转子加有永磁体,以提供软磁材料的工作点,而定子激磁只需提供变化的磁场而不必提供磁材料工作点的耗能,因此该电机效率高,电流小,发热低。因永磁体的存在,该电机具有较强的反电势,其自身阻尼作用比较好,使其在运转过程中比较平稳、噪声低、低频振动小。这种电动机最初是作为一种低速驱动用的交流同步机设计的,后来发现如果各相绕组通以脉冲电流,这种电动机也能做步进增量运动。由于能够开环运行以及控制系统比较简单,因此这种电机在工业领域中得到广泛应用。由于本设计的设计目的更注重整个系统的有机结合,所以只采用反应式步进电机[7]。
2.2 步进电机的工作原理
2.2.1 结构及基本原理
步进电机在结构上也是由定子和转子组成,可以对旋转角度和转动速度进行高精度控制。当电流流过定子绕组时,定子绕组产生一矢量磁场,该矢量场会带动转子旋转一角度,使得转子的一对磁极磁场方向与定子的磁场方向一着该磁场旋转一个角度。因此,控制电机转子旋转实际上就是以一定的规律控制定子绕组的电流来产生旋转的磁场。每来一个脉冲电压,转子就旋转一个步距角,称为一步。根据电压脉冲的分配方式,步进电机各相绕组的电流轮流切换,在供给连续脉冲时,就能一步一步地连续转动,从而使电机旋转。电机将电能转换成机械能,步进电机将电脉冲转换成特定的旋转运动。每个脉冲所产生的运动是精确的,并可重复,这就是步进电机为什么在定位应用中如此有效的原因。
通过电磁感应定律我们很容易知道激励一个线圈绕组将产生一个电磁场,分为北极和南极,见图2.1所示。定子产生的磁场使转子转动到与定子磁场对直。通过改变定子线圈的通电顺序可使电机转子产生连续的旋转运动。
图2.1 激励线圈产生电磁场
2.2.2 两相电机的步进顺序
1、两相电机的单相通电步进顺序
在图2.2中我们很清晰的展示了在单相通电时一个两相步进电机的典型的步进顺序。在第1步中,两相定子的A相通电,因异性相吸,其磁场将转子固定在图示位置。当A相关闭、B相通电时,转子顺时针旋转90°。在第3步中,B相关闭、A相通电,但极性与第1步相反,这促使转子再次旋转90°。在第4步中,A相关闭、B相通电,极性与第2步相反。重复该顺序促使转子按90°的步距角顺时针旋转[8] [9]。
图2.2 两相电机的单相通电步进顺序
2、两相电机的双相通电步进顺序
图2.2中显示的步进顺序称为“单相激励”步进。更常用的步进方法是“双相激励”,其中电机的两相一直通电。但是,一次只能转换一相的极性,见图2.3所示。在第1步中,两相定子的A相和B相同时通电,因异性相吸,再加上力的相互作用关系,其磁场将转子固定在图示step1位置。在第2步中,两相定子的A相关闭,而B和a相(此时的a相通电极性与第1步A相反)同时通电,因异性相吸,再加上力的相互作用关系,其磁场将转子固定在图示step2位置。在第3步中,两相定子的a相和b相同时通电,因异性相吸,再加上力的相互作用关系,其磁场将转子固定在图示step3位置。在第4步中,两相定子的b相和A相同时通电,因异性相吸,再加上力的相互作用关系,其磁场将转子固定在图示step4位置。按照这样的通电方式电机就转过了一周[8] [9]。
两相步进时,转子与定子两相之间的轴线处对直。由于两相一直通电,本方法比“单相通电”步进多提供了41.1%的力矩,但输入功率却为2倍。
图2.3 两相电机的双相通电步进顺序
3、步进电机的半步工作方式
电机也可在转换相位之间插入一个关闭状态而走“半步”。这将步进电机的整个步距角一分为二。例如,一个90°的步进电机将每半步移动45°,见图2.4。但是,与“两相通电”相比,半步进通常导致15%~30%的力矩损失(取决于步进速率)。在每交换半步的过程中,由于其中一个绕组没有通电,所以作用在转子上的电磁力要小,造成了力矩的净损失。
从原理图我们很容易看到半步工作方式其实就是将两相电机的单相通电工作方式和两相电机的双相通电工作方式相互结合起来。
两相步进电机的工作模式有两相四拍和两相八拍等两种,其中我们在图2.2和图2.3中展示的都叫做两相四拍工作模式,而下面的2.4图展示的就是两相八拍工作模式[8] [9]。
图2.4 两相电机的半步步进顺序
2.3 步进电机的工作特点
本设计选用了型号为42BYG型的感应子式步进电机,它与传统的反应式步进电机相比结构上转子加有永磁体,以提供软磁材料的工作点,而定子激磁只需提供变化的磁场而不必提供磁材料工作点的耗能,因此该电机效率高,电流小,发热低。因永磁体的存在,该电机具有较强的反电势,其自身阻尼作用比较好,使其在运转过程中比较平稳、噪音低、低频振动小。就目前步进电机的应用情况来说,步进电机的自身特点具体归纳起来有[10]:
(1) 电机必须加驱动才可以运转,驱动信号必须为脉冲信号,没有脉冲的时候步进电机静止,如果加入适当的脉冲信号,步进电机就会以一定的角度(称为步角)转动。转动的速度和脉冲的频率成正比。
(2) 步进电机具有瞬间启动和急速停止的优越特性。
(3) 改变驱动器输入脉冲的顺序,可以方便的改变电机的转动方向。
(4) 位移与输入脉冲信号数相对应,步距误差不长期积累,可以组成结构较为简单而又具有一定精度的开环控制系统,也可以要求更高精度时组成 闭环控制系。
(5) 电机停止转动的时候具有自锁功能。
(6) 步距角选择范围大,可在几十角分至180度大范围内选择。在小步距情况下,通常可以在越低速下以高转矩运行,因而可以不经减速器直接驱动负载工作。
(7) 步进电机不能使用普通的交流电源驱动。
(8) 一般步进电机的精度是步进角的3%~5%,且步距误差不会长期积累。
(9) 步进电机的力矩会随转速的升高而下降:当步进电机转动时,电机各相绕组的电感将形成一个反向电动势;频率越高,反向电动势越大。在它的作用下,电机随频率(或速度)的增大而相电流减小,从而导致力矩下降。
(10) 步进电机低速时可以正常运转,但若高于一定频率就无法启动,并伴有啸叫声.步进电机有一个技术参数:空载启动频率,即步进电机在空载情况下能够正常启动的脉冲频率,如果脉冲频率高于该值,电机不能正常启动,可能发生丢步或堵转。在有负载的情况下,启动频率应更低。如果要使电机达到高速转动,脉冲频率应该有加速过程,即启动频率较低,然后按一定加速度升到所希望的高频(电机转速从低速升到高速)。
第3章 系统的硬件设计
3.1 系统设计方案
3.1.1 系统的方案简述与设计要求
本设计采用单片机ATS51来作为整个步进电机控制系统的运动控制核心部件,采用了电机驱动芯片L298及其外围电路构成了整个系统的驱动部分,再加上作为执行部件的步进电机来构成了一个基本的步进电机控制系统。系统的具体功能和要求如下:
1.单片机最小系统板的设计;
2.设计兼有两相两拍和两相四拍的脉冲分配器;
3.实现步进电机的启停、正转、反转控制;
4.驱动电路可提供电压为12V,电流为0.3A的驱动信号;
5.能实现步进电机的转速调节,最低转速为25转/分,最高转速为100转/分;
6.步进电机的转速由数码管显示;
7.键盘扫描电路的设计
3.1.2 系统的组成及其对应功能简述
整个系统的组成包括单片机最小系统,电机驱动模块,串口下载模块,数码管显示模块,电机驱动电流检测模块,按键等模块组成。具体框图如图3.1所示:
图3.1 系统总体框图
单片机最小系统作为整个系统的控制核心,它主要负责产生控制步进电机转动的脉冲,通过单片机的软件编程代替环形脉冲分配器输出控制步进电机的脉冲信号,步进电机转动的角度大小与单片机输出的脉冲数成正比步进电机转动的速度与输出的脉冲频率成正比,而步进电机转动的的方向与输出的脉冲顺序有关。同时单片机系统还负责处理来自电机驱动电流检测模块检测到的电流值。与此同时,单片机将会把电机转速,电机的转动方向,以及电流检测模块检测到的电机驱动的电流通过数码管显示出来。
电机驱动模块负责将单片机发给步进电机的信号功率放大,从而驱动电机工作。
串口下载模块主要是负责实行计算机和单片机之间的通信,将在计算机里面编写好的程序下载到单片机芯片当中。
数码管显示模块就主要是显示电机转速,电机转向,和通过电机的电流等系统的实时信息。
电机驱动电流检测模块主要是检测通过电机驱动芯片的电流,然后通过运放将检测到的信号放大,最后将放大后的信号通过模数转换芯片ADC0804处理后送给单片机。
按键作为一个外部中断源,和单片机端口连接,通过它设置了电机的正转,反转,加速,减速,显示电机电流等功能。采用了中断和查询相结合的方法来调用中断服务程序,完成了对步进电机的最佳的及时的控制。
本节主要是在第一章和第二章的基础上引出了本论文将要采用的设计方案,并详细的清楚的一条条列出了设计要实现的基本设计要求。然后是基于我的设计方案,比较简单的但有条理的描述了系统的各个部分的组成以及其对应的基本功能。通过这一章的内容,我们能对本设计有一个简单的总体的把握,既是能清楚的知道本题目的设计内容,设计方法,以及最终的预期目标。
3.2 单片机最小系统
3.2.1 ATS51简介
ATS51是美国ATMEL 公司生产的低功耗,高性能CMOS8位单片机,片内含4kbytes 的可系统编程的Flash只读程序存储器,器件采用ATMEL 公司的高密度、非易失性存储技术生产,兼容标准8051指令系统及引脚。它集Flash程序存储器既可在线编程(ISP)也可用传统方法进行编程及通用8位微处理器于单片芯片中,功能强大。
1、主要性能参数
·与MCS-51 产品指令系统完全兼容
·4k 字节在系统编程(ISP)Flash 闪速存储器
·1000 次擦写周期
·5.0-5.5V 的工作电压范围
·全静态工作模式:0Hz-50MHz
·三级程序加密锁
·128×8 字节内部RAM
·32 个可编程I/O口线
·2 个16 位定时/计数器
·6 个中断源
·全双工串行UART 通道
·低功耗空闲和掉电模式
·中断可从空闲模唤醒系统
·看门狗(WDT)及双数据指针
·掉电标识和快速编程特性
·灵活的在系统编程(ISP 字节或页写模式)
2、功能特性概述
ATS51 提供以下标准功能:4k 字节Flash 闪速存储器,128 字节内部RAM,32 个I /O 口线,看门狗(WDT),两个数据指针,两个16 位定时/计数器,一个5 向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,ATS51 可降至0Hz 的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU 的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。
3、引脚功能说明
图3.2 ATS51
该设计使用到的单片机芯片对应管脚名称位置等如图3.2的引脚功能图详细说明。
·VCC:电源电压
·GND:地
·P0 口:P 0口是一组8位漏极开路型双向I/0口,也即地址/数据总线复用口。作为输出口用时,每位能驱动8 个TTL逻辑门电路,对端口写“l”可作为高阻抗输入端用。在和数据总线复用,在访问期间激活内部上拉电阻。在F1ash 编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8 位)。
·P1 口:Pl 是一个带内部上拉电阻的8 位双向I /O 口,Pl 的输出缓冲级可驱动(吸收或输出电流)4 个TTL逻辑门电路。对端口写“l”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流 (IIL )。
·P2 口:P2 是一个带内部上拉电阻的8 位双向I /O 口,P2 的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流 (IIL )。在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX@DPTR 指令)时,P2 口送出高8 位地址数据。在访问8 位地址的外部数据存储器(如执行MOVX@Ri 指令)时,P2 口线上的内容 (也即特殊功能寄存器(SFR)区 P2 寄存器的内容),在整个访问期间不改变。Flash 编程或校验时,P2 亦接收高位地址和其它控制信号。
· P3 口:P3 口是一组带有内部上拉电阻的8 位双向I /O口。P3口输出缓冲级可驱动 (吸收或输出电流)4 个TTL逻辑门电路。对P3口写入“l”时,它们被内部上拉电阻拉高并可作为输入端口。作输入端时,被外部拉低的P3口将用上拉电阻输出电流 (IIL )。P3口除了作为一般的I /O口线外,更重要的用途是它的第二功能,如下表所示: P3 口还接收一些用于Flash 闪速存储器编程和程序校验的控制信号。具体功能如表3.1所示
表3.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(外部数据存储器读选通) |
·ALE /PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。即使不访问外部存储器,ALE仍以时钟振荡频率的1 /6 输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE 脉冲。对F1ash 存储器编程期间,该引脚还用于输入编程脉冲 (PROG)。如 必要,可通过对特殊功能寄存器(SFR)区中的8EH 单元的D0 位置位,可禁止ALE 操作。该位置位后,只一条M0VX 和M0VC 指令ALE 才会被激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE 无效。
·PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当ATS51由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN 有效,即输出两个脉冲。当访问外部数据存储器,没有两次有效的PSEN信号。
·EA /VPP:外部访问允许。欲使CPU 仅访问外部程序存储器(地址为0000H-FFFFH),EA 端必须保持低电平(接地)。需注意的是:如果加密位LB1 被编程,复位时内部会锁存EA 端状态。
如EA 端为高电平(接Vcc 端),CPU则执行内部程序存储器中的指令。
F1ash 存储器编程时,该引脚加上+12V 的编程电压Vpp 。
·XTALl:振荡器反相放大器及内部时钟发生器的输入端。
·XTAL2:振荡器反相放大器的输出端。
·存储器结构 :MCS-51 单片机内核采用程序存储器和数据存储器空间分开的结构,均具KB外部程序和数据的寻址空间。
·程序存储器 :如果EA引脚接地(GND),全部程序均执行外部存储器。在ATS51,假如EA 接至Vcc(电源+),程序首先执行地址从0000H-0FFFH (4KB)内部程序存储器,再执行地址为1000H-FFFFH (60KB)的外部程序存储器。
·数据存储器:ATS51的具128字节的内部RAM,这128字节可利用直接或间接寻址方式访问,堆栈操作可利用间接寻址方式进行,128字节均可设置为堆栈区空间。
4、晶体振荡器特性
ATS51一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1 和XTAL2 分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器。
外接石英晶体(或陶瓷谐振器)及电容Cl、C2 接在放大器的反馈回路 构成并联振荡电路。对外接电容Cl、C2 虽然没 十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程序及温度稳定性。如果使用石英晶体,我们推荐电容使用30pF±10pF,而如使用陶瓷谐振器建议选择40pF ±10pF。
用户也可以采用外部时钟。这种情况下,外部时钟脉冲接到XTAL1端,即内部时钟发生器的输入端,XTAL2则悬空。
由于外部时钟信号是通过一个2分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。
5、Flash 闪速存储器的并行编程
ATs51单片机内部4k字节的可快速编程的Flash存储阵列。编程方法可通过传统的EPROM编程器使用高电压(+12V)和协调的控制信号进行编程。
ATS51的代码是逐一字节进行编程的。
编程方法:
编程前,须设置好地址、数据及控制信号,ATS51 编程方法如下:
1.在地址线上加上要编程单元的地址信号。
2.在数据线上加上要写入的数据字节。
3.激活相应的控制信号。
4.将EA /Vpp 端加上+12V 编程电压。
5.每对Flash 存储阵列写入一个字节或每写入一个程序加密位,加上一个ALE /PROG编程脉冲。每个字节写入周期是自身定时的,大多数约为50us。改变编程单元的地址和写入的数据,重复1-5 步骤,直到全部文件编程结束。
3.2.2 单片机最小系统设计
采用ATS51单片机构成了控制系统的核心,其基本模块就主要包括复位电路和晶体震荡电路。在本设计当中,单片机的P 0口、P 1口、P 2口、P 3口全部参与系统工作,单片机最小系统的接线如图3.3所示:
图3.3 单片机最小系统图
3.2.3 单片机端口分配及功能
1、其中P 0口用于控制数码管的具体显示功能,既是数码管的段选。
2、P 1口主要用于控制电机驱动芯片L298的工作,以及ADC0804芯片的编程的读写控制。
3、P 2口主要用于控制数码管的公共端,既是数码管的位选。与此同时还处理键盘扫描电路的。
4、P 3口主要用于负责处理ADC0804的模数转化芯片的工作。
3.3 串口通信模块
本设计采用串口通信,来实现计算机与单片机的通信。其具体的电路图如图3.4所示。
图3.4 串口通信模块
3.4 数码管显示电路设计
本设计的显示部分可以用液晶显示的方案可供选择,液晶显示和数码管显示的区别主要体现在以下几个方面:数码管显示内容单一,而液晶显示器显示内容丰富,因为液晶一般都是七段八字的只能显示单一的内容,而液晶显示的内容就很丰富;数码管还比液晶显示耗电,而且使用液晶也比使用数码管显得美观。但是控制液晶显示器的时候占用的系统资源多,编程更复杂,最关键的是液晶显示的成本是数码管的几十倍,所以考虑到应用价值,最终还是确定选用数码管实现本设计的显示部分功能。
3.4.1 共阳数码管简介
四位共阳数码管的管脚分配如下图3.5所示:
图3.5 四位共阳数码管管脚定义
数码管的管脚排列:从数码管的正面观看,左下角的那个脚为1脚,从1脚开始,按照逆时针方向排列依次是1脚到12脚,其中12、9、8、6为公共角,为位选信号输入端。剩余的八个脚是段选信号输入端,其对应方式是A-11、B-7、C-4、D-2、E-1、F-10、G-5、DP-3。
只有详细的了解了数码管的管脚定义,以及段选位选情况,我们才能通过编程对其正常的显示进行很好的控制。在本设计当中采用了数码管动态扫描的方式进行显示,下面我们对数码管动态扫描显示作一详细介绍。
数码管动态显示介面是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp "的同名端连在一起,另外为每个数码管的公共极COM增加位元选通控制电路,位元选通由各自的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位元选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位元就显示出字形,没有选通的数码管就不会亮。
通过分时轮流控制各个LED数码管的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位元数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极体的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示资料,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O口,而且功耗更低。
3.4.2 共阳数码管电路图
本设计选用了数码管显示设计,其段选的控制A、B、C、D、E、F、G、DP按照数码管的简介资料选用了P 0口作为其控制端口,其位选部分由于单片机的控制端口输出的电压不足以直接点亮数码管,所以在单片机控制端口和数码管的位选控制端口加入了三极管,其具体的电路连接如图3.6所示。
图3.6 数码管显示电路
3.5 电机驱动模块设计
在第一章的1.2.2中已经详细的介绍了目前的电机的驱动技术的基本类型,考虑要硬件设计驱动电路的方法会电路复杂,调试不方便,而且采用多个元器件搭接,成本高。而直接采用集成的驱动芯片时电路稳定,成本低,易于控制,所以最终本设计是直接采用电机驱动芯片L298作为电机驱动部分的核心部件。
3.5.1 L298简介
L298N为SGS-THOMSON Microelectronics 所出产的双全桥步进电机专用驱动芯片,内部包含4 信道逻辑驱动电路,是一种二相和四相步进电机的专用驱动器,可同时驱动2个二相或1个四相步进电机,内含二个H-Bridge 的高电压、大电流双全桥式驱动器,接收标准:TTL逻辑准位信号,可驱动46V、2A以下的步进电机,且可以直接透过电源来调节输出电压;此芯片可直接由单片机的IO端口来提供模拟时序信号。
L298N 之接脚如图 3.7所示,Pin1 和Pin15 可与电流侦测用电阻连接来控制负载的电路; OUTl、OUT2 和OUT3、OUT4 之间分别接2 个步进电机;input1~input4 输入控制电位来控制电机的正反转;Enable 则控制电机停转。
图3.7 L298管脚图
引脚功能介绍:
1、1;15脚(Sense A;Sense B):电流检测端,分别为两个H桥的电流反馈脚,不用时可以直接接地;
2、2;3脚(Output1;Output2):1Y1、1Y2输出端;
3、4脚(VS):功率电源电压,此引脚与地必须连接 100nF电容器;
4、5;7脚(Input 1; Input):1A1、1A2输入端,TTL 电平兼容;
5、6;11脚(Enable A;Enable B):TTL 电平兼容输入 1EN、2EN 使能端,低电平禁止输出;
6、8脚(GND):GND接地端;
7、9脚(VSS):逻辑电源电压。此引脚必须与地连接100nF电容器;
8、10;12脚(Input3;Input4):2A1,2A2输入端,TTL电平兼容;
9、13;14脚(Out3;Out4):2Y1、2Y2 输出端,监测引脚15;
3.5.2 电机驱动电路设计
如图3.8所示,本设计的电机驱动部分是由驱动芯片L298及其外围电路构成,其中从L298的2、3脚和13、14脚(即芯片的输出端)依次按顺序连成一个插座,分别与步进电机的四根线相连。而5、6、7、10、11、12脚就依次与单片机的P1口的六个管脚相连。通过这一连接实现了单片机与L298以及步进电机的串联控制。
图中很重要的部分是由四个二极管连成的保护电路,其作用是防止由于步进电机的转速提高而产生的自感电动势损坏芯片。由于本设计使用的电机驱动电压是使用了9V (也可以使用12V),所以二极管的负端接9V的参考电压。如果驱动芯片的电压改变,那么这个参考电压也随之一起改变。
图3.8 电机驱动电路图
3.6 驱动电流检测模块设计
本设计的驱动芯片电流检测模块的实际应用意义在于,检测流过电机的电流值并及时显示,对于防止电机过流而损坏电机有一定的意义。从上面的L298的芯片资料当中我们可以知道L298的Pin1和Pin15可与电流侦测电阻连接来侦测电机正常工作的情况下的工作电流。一般检测电流的方法是通过检测电压值,然后通过欧姆定律换算电流值的方法测试电流,本设计也不例外。设计采用的42BYG101反应式步进电机,其额定电流值0.2安,在加上一般常用的电流侦测电阻都是1欧姆或0.1欧姆,这样换算来检测到的电压值一般是在mV级,这样以来,要是直接将检测到的电压值送给ADC0804进行模数转换那么由于精度的原因势必会对检测结果的准确性造成很大的影响。所以考虑到这一原因我们是先将检测到的电流值经过OP07作放大处理后再将信号送给模数转换芯片处理这样保证了检测值的可靠性。ADC0804输出的数字信号再送给单片机的P 3口,经过单片机处理后最后将检测到的数字信号通过数码管显示出来。而在显示这一部分有这样一个问题,就是步进电机的工作电流不是一个恒定值,它是随着时间的变化,会在一个小范围内不停的波动为了使显示出来的电流数据更可靠,我们通过单片编程,采用了取一段时间的电流的平均值显示出来。形象的展示这一模块的整个工作流程就是如下的图3.9所示:
图3.9 电流检测框图
3.6.1 OP07芯片简介
1、OP07功能介绍
Op07芯片是一种低噪声,非斩波稳零的双极性运算放大器集成电路。由于OP07具有非常低的输入失调电压(对于OP07A最大为25μV),所以OP07在很多应用场合不需要额外的调零措施。OP07同时具有输入偏置电流低(OP07A为±2nA)和开环增益高(对于OP07A为300V/mV)的特点,这种低失调、高开环增益的特性使得OP07特别适用于高增益的测量设备和放大传感器的微弱信号等方面。
2、特点
超低偏移:150μV最大
低输入偏置电流:1.8nA
低失调电压漂移:0.5μV/℃
超稳定时间:2μV/month最大
高电源电压范围: ±16V至±30V
3、芯片引脚功能说明
1脚和8脚:是偏置平衡(调零端)
2脚:为反相输入端
3脚:为同向输入端
4脚和7脚:分别为vcc-和vcc+
5脚:悬空
6脚:为输出端
其引脚图如图3.10
图3.10 OP07芯片及管脚图
3.6.2 ADC0804芯片简介
1、芯片主要技术指标
(1) 分辨率:8 位(0~255)
(2) 存取时间:135 ms
(3) 转换时间:100 ms
(4) 总误差:-1~+1LSB
(5) 工作温度:ADC0804C为0度~70度;ADC0804L为-40 度~85 度
(6) 模拟输入电压范围:0V~5V
(7) 参考电压:2.5V
(8) 工作电压:5V
1、芯片引脚功能及说明
接脚说明见下图:ADC0804 为一只具有20引脚8位CMOS连续近似的A/D 转换器。芯片具体引脚图如图3.11所示。
图3.11 ADC0804芯片及管脚图
(1). PIN1 (CS ):Chip Select,与RD、WR 接脚的输入电压高低一起判断读取或写入与否,当其为低位准(low) 时会active。
(2). PIN2 ( RD ):Read。当CS 、RD皆为低位准(low)时,ADC0804会将转换后的数字讯号经由DB7 ~ DB0 输出至其它处理单元。
(3). PIN3 (WR ):启动转换的控制讯号。当CS 、WR 皆为低位准(low) 时ADC0804 做清除的动作,系统重置。当WR由0→1且CS =0 时,ADC0804会开始转换信号,此时INTR 设定为高位准(high)。
(4). PIN4、PIN19 (CLK IN、CLKR):频率输入/输出。频率输入可连接处理单元的讯号频率范围为100 kHz 至800 kHz。而频率输出频率最大值无法大于0KHz,一般可选用外部或内部来提供频率。若在CLKR及CLK IN加上电阻R及电容C,则可产生ADC工作所需的时序,其频率约为(1.1RC)
(5). PIN5 ( INTR ):中断请求。转换期间为高位准(high),等到转换完毕时INTR 会变为低位准(low)告知其它的处理单元已转换完成,可读取数字数据。
(6). PIN6、PIN7 (VIN(+)、VIN(-)):差动模拟讯号的输入端。输入电压VIN=VIN(+) -VIN(-),通常使用单端输入,而将VIN(-)接地。
(7). PIN8 (A GND):模拟电压的接地端。
(8). PIN9 (VREF/2):辅助参考电压输入端
2、ADC0804工作原理
ADC0804是属于连续渐进式(Successive Approximation Method)的A/D转换器,这类型的A/D转换器除了转换速度快(几十至几百us)、分辨率高外,还有价钱便宜的优点,普遍被应用于微电脑的接口设计上。
以输出8位的ADC0804动作来说明“连续渐进式A/D转换器”的转换原理,动作步骤如下表示(原则上先从左侧最高位寻找起)。
第一次寻找结果:10000000 (假设值≤输入值,则寻找位=假设位=1)
第二次寻找结果:11000000 (假设值≤输入值,则寻找位=假设位=1)
第三次寻找结果:11000000 (假设值>输入值,则寻找位=该假设位=0)
第四次寻找结果:11010000 (假设值≤输入值,则寻找位=假设位=1)
第五次寻找结果:11010000 (假设值>输入值,则寻找位=该假设位=0)
第六次寻找结果:11010100 (假设值≤输入值,则寻找位=假设位=1)
第七次寻找结果:11010110 (假设值≤输入值,则寻找位=假设位=1)
第八次寻找结果:11010110 (假设值>输入值,则寻找位=该假设位=0)
这样使用二分法的寻找方式,8位的A/D转换器只要8次寻找,12位的A/D转换器只要12次寻找,就能完成转换的动作,其中的输入值代表图4..10的模拟输入电压Vin。
对8位ADC0804而言,它的输出准位共有28=256种,即它的分辨率是1/256,假设输入信号Vin为0~5V电压范围,则它最小输出电压是5V/256=0.01953V,这代表ADC0804所能转换的最小电压值。
4、分辨率与内部转换频率的计算
对8位ADC0804而言,它的输出准位共有28=256种,即它的分辨率是1/256,假设输入信号Vin为0~5V电压范围,则它最小输出电压是5V/256=0.01953V,这代表ADC0804所能转换的最小电压值。表3.2列出的是8~12位A/D转换器的分辨率和最小电压转换值。
表3.2 A/D转换器的分辨率和最小电压值
| 位数目 | 分辨率 | 最小电压转换值 |
| 8 | 1/256 | 0.01953V |
| 10 | 1/1024 | 0.00488V |
| 12 | 1/4096 | 0.00122V |
图3.12 ADC0804与CPLD&FPGA、8051单片机等典型连接图
频率计算方式是:fCK=1/(1.1×R×C)
若以上图的R=10KΩ、C=150PF为例,则内部的转换频率是fCK=1/(1.1×10 KΩ×150PF)=606KHz
更换不同的R、C值,会有不同的转换频率,而且频率愈高代表速度愈快。但是需要注意R、C的组合,务必使频率范围是在100KHz~1460KHz之间。
3.6.3 电流检测模块电路图
如图3.13所示,OP07的3脚是反向输入端,4脚是同向输入端,6脚输出端。按照如图所示的接法及对应电阻值的大小,我们很容易知道,此连接后的电压放大倍数是80倍,且为同向放大。
OP07放大的信号来源是L298的1脚测电流的小电阻分出来的电压,然后经OP07放大之后的信号送给0804处理。
图3.13 电流检测模块电路图
第4章 系统的软件实现
本系统的软件设计主要分为系统初始化、延时子程序、按键响应程序,数码管显示程序,读ADC0804子程序及控制脉冲输出几部分,事实上每一部分都是紧密相关的,每个功能模块对于整体设计都是非常重要,单片机ATS51通过软件编程才能使系统真正的运行起来,软件设计的好坏也直接决定了系统的运行质量。
程序流程图的设计遵循自顶向下的原则,即从主体遂逐步细分到每一个模块的流程。在流程图中把设计者的控制过程梳理清楚。具体程序的讲解将在本章各节做详细讲解。
4.1 系统软件主流程图
当给系统供电以后,通过单片机复位电路对系统进行上电复位系统经过初始化以后,便开始执行按键查询等待相应的操作,当有按键按下的时候程序便调用并执行相应的子程序,其具体的主流程图4.1如下所示:
图4.1 主程序图
4.2 系统初始化流程图
对相应的系统参数进行初始化,包括系统上电默认运行参数设定,包括两相四拍的工作方式,初始速度档位是30转/分,系统中断设定,定时器设定,载入定时器初值和默认的工作参数等,具体流程图如图4.2所示。
图4.2 系统初始化流程图
4.3 按键子程序
1、延时子程序:在本延时子程序当中每调用一次延时子程序延时1毫秒。
2、按键响应子函数:在本设计当中按键的一端接地,另一端接单片机的对应端口,所以当按键按下,既是将单片机对应端口电平拉低。所以在编程的时候判断按键按下是低电平有效。图4.3画出的是电机增速和减速的子程序框图。
图4.3 增速减速子程序
3、读ADC0804和模式切换程序框图如下图4.4所示,在本设计当中我的模式切换按键只有一个,负责电机的正反转控制,电流控制和电机启动和停止控制。由于编程的时候设置的系统工作的默认状态是正转,转速30转/分。所以通过连续按模式切换键依次实现的功能是电机反转并显示转速,显示电机电流,系统停止工作,系统正转并显示转速依次切换。编程控制ADC0804工作就主要是负责读和写端口的电平来实现的。
图4.4 读ADC0804子程序及模式切换子程序
4、4 源程序代码
#include static unsigned int count; //计数 static int step_index; //步进索引数,值为0-7 static bit turn; //步进电机转动方向 static bit stop_flag; //步进电机停止标志 static int speedlevel; //步进电机转速参数,数值越大速度越慢,最小值为1,速度最快 static int spcount; //步进电机转速参数计数 void delay(unsigned int endcount); //延时函数,延时为endcount*0.5毫秒 void gorun(); //步进电机控制步进函数 void main(void) { count = 0; step_index = 0; spcount = 0; stop_flag = 0; P1_0 = 0; P1_1 = 0; P1_2 = 0; P1_3 = 0; EA = 1; //允许CPU中断 TMOD = 0x11; //设定时器0和1为16位模式1 ET0 = 1; //定时器0中断允许 TH0 = 0xFE; TL0 = 0x0C; //设定时每隔0.5ms中断一次 TR0 = 1; //开始计数 turn = 0; speedlevel = 2; delay(10000); speedlevel = 1; do{ speedlevel = 2; delay(10000); speedlevel = 1; delay(10000); stop_flag=1; delay(10000); stop_flag=0; Turn=!turn; }while(1); } //定时器0中断处理 void timeint(void) interrupt 1 { TH0=0xFE; TL0=0x0C; //设定时每隔0.5ms中断一次 count++; spcount--; if(spcount<=0) { spcount = speedlevel; gorun(); } } void delay(unsigned int endcount) { count=0; do{}while(count void gorun() { if (stop_flag==1) { P1_0 = 0; P1_1 = 0; P1_2 = 0; P1_3 = 0; return; } switch(step_index) { case 0: //0 P1_0 = 1; P1_1 = 0; P1_2 = 0; P1_3 = 0; break; case 1: //0、1 P1_0 = 1; P1_1 = 1; P1_2 = 0; P1_3 = 0; break; case 2: //1 P1_0 = 0; P1_1 = 1; P1_2 = 0; P1_3 = 0; break; case 3: //1、2 P1_0 = 0; P1_1 = 1; P1_2 = 1; P1_3 = 0; break; case 4: //2 P1_0 = 0; P1_1 = 0; P1_2 = 1; P1_3 = 0; break; case 5: //2、3 P1_0 = 0; P1_1 = 0; P1_2 = 1; P1_3 = 1; break; case 6: //3 P1_0 = 0; P1_1 = 0; P1_2 = 0; P1_3 = 1; break; case 7: //3、0 P1_0 = 1; P1_1 = 0; P1_2 = 0; P1_3 = 1; } if(turn==0) { step_index++; if (step_index>7) step_index=0; } else { step_index--; if (step_index<0) step_index=7; } } 结 论 经过为期一学期的学习和努力,本次设计顺利完成,具体结论如下: 1、采用单片机作为控制核心,利用其强大的功能,把键盘电路和数码管显示电路,电机驱动电路,电机电流检测电路有机的结合起来,组成一个操作方便,交互性强的简单系统。 2、通过系统的设计实现了预期的设计目标,完成了全部的设计任务,具体功能如下:完成了整个系统的硬件设计和软件编程,能通过键盘电路控制步进电机的转速控制,能实现启动、正转、反转、加速、减速控制,实现转速最低25转/分,最高转速180转/分;通过编程实现了通过单片机能输出两相四拍和两相八拍的脉冲控制序列。驱动电路能提供12V,0.3A的驱动信号;整个电机的转速,转动方向,检测到的电机电流的大小等都能通过数码管显示出来;整个的成果形式是最终以步进电机控制电路板的形式展示出来了。 3、在本设计中作为电机正常工作比较重要的电机驱动模块,本设计中是采用驱动芯片L298及其外围电路来实现的,其特点是成本低,可靠性高,出现问题容易维护,实现相对容易等特点。 4、在电机工作模式上本设计实现了电机的两相四拍和两相八拍两种脉冲控制方式。 后续工作: 1、在本次设计中更多的是注重整体功能的实现,所以本系统采用了开环控制的方式,电机也是选用的最常用的反应式步进电机。通过在本设计中的学习和查阅资料,想要得到更高性能的控制,可以选用混合式步进电机。 2、本系统在设计的过程中由于没有考虑到单片机的端口有限,所以在本设计中键盘扫描部分只用了四个按键,所以就出现了一个按键叠加很多功能的控制,比如有一个键能同事实现对电机工作模式,电机正反转,电机电流显示,电机停止等的控制,那么这样的情况在实际生产生活中操作起来略显不方便,所以建议以后有做类似设计任务的时候,预先考虑全面,争取一个 键控制一个功能。 参考文献 [1] 谭浩强 .C语言程序设计(第二版).北京:清华大学出版社,2005.1 [2] 李群芳,肖看.单片机原理、接口及应用—嵌入式系统技术基础.北京:清华大学出版社,2005.3 [3] 梅晓榕,柏桂珍等.自动控制元件及线路.北京:科学出版社,2005 [4] 沈文、Eagle lce詹卫.AVR单片机C语言入门指导.北京:清华大学出版社,2003 [5] 佟长福.AVR单片机GCC程序设计.北京:北京航空航天大学出版社,2006.1 [6] 清源计算机工作室.Protel99se电路设计与仿真.北京:机械工业出版社,2001.5 [7] 余家春.Protel99se电路设计设计实用教程.北京:中国铁道出版社,2002.12 [8] 嵌入式系统设计与开发平台研讨会专刊之Proteus仿真教程 [9] L297芯片数据手册 [10] L298芯片数据手册 [11] JHD162A液晶屏技术手册 [12] Atega16单片机数据手册
