1、四川大学锦江学院自动化课程设计 ———————————————————————————————— 作者: ———————————————————————————————— 日期: 2 个人收集整理 勿做商业用途
2、 课程设计 题 目 基于18B20与单片机的温度测控系统的设计 专 业 自动化 年级 2008级 学生姓名 陈思羽,杨继波,伍鹏志,范洪博 指导教师 董 慧 2011年10月 - 0 - 基于18B20与单片
3、机的温度测控系统设计 自动化专业 【摘 要】美国Dallas半导体公司的数字化温度传感器DS1820是世界上第一片支持 “一线总线"接口的温度传感器,在其内部使用了在板(ON-B0ARD)专利技术。全部传感元件及转换电路集成在形如一只三极管的集成电路内。“一线总线”独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。现在,新一代的DS18B20体积更小、更经济、更灵活。使你可以充分发挥“一线总线”的优点.同DS1820一样,DS18B20也支持“一线总线"
4、接口,测量温度范围为—55°C~+125°C,在-10~+85°C范围内,精度为±0.5°C。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。与前一代产品不同,新的产品支持3V~5。5V的电压范围,使系统设计更灵活、方便.而且新一代产品更便宜,体积更小。 【关键词】单片机 继电器 温度传感器DS18B20 扬声器 Software design of speed control and detection system of motor 【
5、Abstract】 【Key words】 目 录 绪论 4 1 开发概述 4 1.1 背景 5 1.2 课题来源 6 1。3 国内外研究现状 6 1。4 论文主要工作 7 2总体设计方案 7 2。1方案论证与选择 7 2。1总体架构设计及其功能简述 9 3硬件设计 10 3。1 硬件设计思路 10 3。2 单片机最小系统设计 10 3。3步进电机以及驱动介绍 11 3.4外围电路设计与分析 13 3。4.1 按键电路 13 3。4.2 LCD显示电路 14 3.4。3 电源
6、模块设计 14 3.4。4 检测模块设计电路 14 4 软件设计 15 4.1 软件开发平台 15 4。2 程序设计思路 16 4.3 程序设计流程图 16 4。3。1 主程序流程图 17 4.3。2 定时器T0中断程序设计 17 4.3。2 读键盘子程序流程图 18 4。3。3 显示器程序流程图 19 4。3。4 LCD显示器控制子程序 20 4.3。5 检测电机运行状态设计 21 5 系统调试结论与结果 22 5。1 系统调试与改进 22 5。2 运行结果 23 6总结以及展望 23 参考文献 25 附录:电机的速度控制与检测系统的总电路图与实物图 26
7、 致 谢 27 绪论 在电气时代的今天,电动机一直在现代化的生产和生活中起十分重要的作用。无论是在工农业生产还是在日常生活中的家用电器,都大量地使用着各种各样的电动机,因此对电动机的控制与检测变得越来越重要了。特别是在许多工控设备对电机的位移和角度精确度要求很高,而步进电机在这一点上有无可比拟的优势,由此得到更广泛的应用。 在进行51单片机的学习能够利用51单片机对步进电机进行过简单的控制,在设计中利用ULN2003模块驱动步进电机,通过设定的方向来实现步进电机的方向反转控制,控制电机的速度,也可照设定的转动角度步进电机进行动作,来实现步进电机的实时控制,然后
8、通过LCD液晶屏显示步进电机的设定值与步进电机实际所转过的速度,同时显示步进电机的旋转方向。这次所进行的步进电机转速控制系统是对步进电机的另一种控制,即实现步进电机的角度控制而不是单单的速度和方向控制。驱动电路由脉冲信号来控制,所以调节脉冲信号的频率便可改变步进电机的转速。当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度。通过控制脉冲个数即可以控制角位移量,从而达到准确定位的目的。同时通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。在通过传感器的检测,将其信号输入单片机,通过计算判断也可测出电机的整个运转状态。 1 开发概述 传统的电
9、机作为机电能量转换装置,电动机是将电能转换为机械能,主要光线它的力能指标,即机电能量转换的效率。随着生产技术的发展,除了要求电动机完成机电能量转换的功能还提出运用控制与检测方面的要求,控制的目标是角速度和角位移等,现代高性能运动控制电动机通常认为是:步进电动机、无刷直流电机和交流伺服电动机。其中不经电动机最早成为适应计算机控制的运动控制电动机。 步进电机是一种重要的执行装置,广泛用于工业控制和各种办公设备中,步进电机的稳定可靠运行直接关系到工业控制的精度和设备的质量,特别是在高精度数控系统中更是要求步进电机能够精确运行。如何实现对步进电机的精确可靠控制与实时检测成为工业控制等系统中的关键技术
10、多年来很多专家学者研制出很多性能较好的步进电机控制系统,然而,早期的步进电机控制系统体积大,使用的元器件多,这给系统的可靠运行带来了较大的隐患。随着电子技术的发展,很多功能单元都走向模块化和数字化,并且具有体积小,重量轻,工作可靠性高,成本低等优点,而且能够实现多轴控制,这给步进电机控制系统的设计带来了很大的方便。在此设计中采用四相八拍的步进电机,并运用ULN2003来驱动步进电机,ULN2003是高压大电流达林顿晶体管阵列系列产品,具有电流增益高、工作电压高、温度范围宽、带负载能力强等特点,适应于各类要求高速大功率驱动的系统。 1.1 背景 随着电机行业的快速发展,步进电动机一直在
11、现代化的生产和生活中起着十分重要的作用。无论是在工农业生产、交通运输、国防、航空航天、医疗卫生、办公设备中以及日常家用电器中,都大量地使用着各种各样的电动机。对电动机简易的控制能够很容易实现,但有时往往需要非常精确的控制,然而本论中的电机的速度、角度,方向的控制和速度、方向的实时检测是提高控制系统精度的关键技术。用单片机实时系统数据处理和控制,有利于提高工作效率和产品质量。当前电机控制器的发展方向越来越趋于多样化和复杂化,现有的专用集成电路未必能满足苛刻的新产品开发要求,人们对自动化的要求越来越高,使步进电动机的复杂控制逐渐成为主流。 步进电动机是一种将数字脉冲信号转换成机械角位移或者线位移
12、的数—模转换元件。每当输入一个脉冲,它就相应的运行一步。步进电动机由此而得名。 步进电动机的机理是基于最基本的电磁铁作用,其原始模型起源于1830年至1860年间。1870年前后开始以控制为目的尝试,应用于氢弧灯的电极输送机构中。这被认为是最初的步进电动机。此后,在电话自动交换机中广泛使用了步进电动机。特别是在交流电源的船舶和飞机等独立系统中广泛使用。 20世纪60年代后期,在步进电动机本体方面随着永磁材料的发展,各种实用性步进电动机随之而诞生,而半导体技术的发展则推进了步进电动机在众多领域的应用。在近30年间,步进电动机迅速地发展并成熟起来。 我国步进电动机的研究及制造起始于二十世纪5
13、0年代后期。从50年代后期到60年代后期,主要是高等院校和科研机构为研究一些装置而使用或开发少量产品。这些产品以多段结构三相反应式步进电动机为主。70年代初期,步进电动机的生产和研究有所突破。除反映在驱动器设计方面的长足进步外,对反应式步进电动机本体的设计研究也发展到了一个较高水平。70年代中期至80年代中期成为成品发展阶段,新品种高性能电动机不断被开发。自80年代中期以来,由于对步进电动机精确模型作了大量研究工作,各种混合式步进电动机及驱动器作为产品广泛应用。 步进电动机控制技术的发展:步进电动机不能直接接到交直流电源上工作,而必须使用专用设备—-步进电动机驱动器。步进电动机是纯粹的数字控
14、制电动机,它将电脉冲信号转变成角位移,即给一个脉冲信号,步进电动机就转动一个角度,因此非常适合于单片机控制。单片机介于工业控制计算机和可编程控制器之间,它有较强的控制功能和低廉的成本.人们在选择控制器时,常常是在先满足功能需要的同时,优先选择成本低的控制器。单片机往往成为优先选择的目标,单片机是目前世界上使用量最大的微处理器。 近年来国外单片机控制领域的研究很活跃,发展迅速,相继研究出一些高性能的微步驱动器,对步进电动机进行单片机控制是步进电动机控制技术的发展趋势。 1。2 课题来源 毕业设计,选择此课题的原因有二: 1.本论文选题的意义在于培养和提高大学生综合运用所学的电
15、路基础、模电、数电、单片机、计算机语言、计算机控制、电机基本知识、电子系统综合设计等基础理论、专业知识和基本技能,分析与解决工程实际问题的能力,以及进行科学研究的初步能力,培养工作能力、理论联系实际和严谨求实的工作作风。 2. 结合大学所学课程,自己对C语言较为熟悉,在步进电机的速度控制与检测系统设计深 知软件部分的重要性,在所学知识的基础上,能有一个新的收获以及突破。对于此设计用到的微处理器我会改用自己不曾接触的STC89C52这款芯片,在熟知AT89C51的基础上能对新的芯片功能快速掌握,加深对光电传感器,步进电机以及显示器的灵活运用.在一个系统的设计中,面临着许多复杂的模块设计,同时
16、要考虑各个部分之间的紧密联系,能让自己的思维变得更加缜密,在这个挑战中能突破自己收获更多. 1。3 国内外研究现状 随着数字化技术和工业综合自动化系统整合水平的不断发展,对监控数据传输的实时性、工作状态显示、数据控制的精确度要求越来越高,简单的控制电机的局限性越来越突出。 在工业控制环境下的电机速度控制与检测己成为近年来业界的研究热点之一,其中电动机的控制部分已由模拟控制逐渐让位于以单片机为主的微处理器控制,形成数字和模拟的混合控制系统和纯数字控制的应用,并曾向全数字化控制方向快速发展.而国外交直流系统数字化已经达到实用阶段。步进电动机的技术已很成熟,特别适合于小功率开环定位系统,
17、至今还没有能取代它的更适合的产品,今后将继续稳步发展和完善化,在功率稍大和要求高响应高速度的系统,则更多的让位给交流伺服系统,这是对步进电机相当普遍的认识和看法,但是部分人认为不一定完全是这样,有可能会发展出高效率密度和响应更快的新系列,首先是步进电机有很多优点,既要经济又简单方便,即使在交流伺服系统不断发展和推广的情况下,也相当让人怀念,这就是需要和市场,是促进技术和产品发展的重要动力,当然还不够,事物发展还有它内在的客观规律性,也就是可行性。 随着速度检测技术的发展,各种检测方法的不断涌现,检测的精度和准确度都不断的提升,考虑到检测仪器开发的成本、测量的精度和准确度上以及技术的成熟程度上
18、电机的速度和方向检测采用关电传感器有着无可比拟的优势.光电耦合器具有体积小、使用寿命长、工作温度范围宽、抗干扰性能强、无触点且输入与输出在电气上完成隔离等特点,因而在各种电子设备上得到广泛的应用。在一些特殊的应用场合,会要求输入/输出端实现电气隔离,这样就不能使用传统的电子器件来传输电信号,光耦正是为了适应这样的场合而诞生. 1。4 论文主要工作 本论文是要设计一个电机的速度控制与检测的系统,并且能够根据需要设定电机速度、电机转动方向、电机转动角度,并检测其转动速度和方向,能够自适应的控制电机转速及方向,能显示电机速度及方向. 2总体设计方案 2。1方案论证与选择 1
19、.步进电机的选择 方案一:采用反应式步进电动机(VR) 应式步进电机一般为三相,可实现大转矩输出,步进角一般为1.5°,但噪声和振动都很大.反应式步进电机的转子磁路由软磁材料制成,定子上有多相励磁绕组,利用磁导的变化产生转矩.采用高导磁材料构成齿状转子和定子,其结构简单,生产成本低,步距角可以做的相当小,但动态性能相对较差。 方案二:采用永磁式步进电动机(PM) 转子采用多磁极的圆筒形的永磁铁,在其外侧配置齿状定子。用转子和定子之间的吸引和排斥力产生转动,一般为两相转动步的角度一般是7。5°或15°。它的输出力矩较大,动态性能好;但步距角一般比较大。 方案三:采用混合步进电动机(HB
20、 这是PM和VR的复合产品,其转子采用齿状的稀土永磁材料,定子则为齿状的突起结构。此类电机综合了反应式和永磁式两者的优点,步距角小,出力大,动态性能好,是性能较好的一类步进电动机,运用广泛。 故在此选用混合步进电机。 2.单片机的选择 方案一:采用AT89S52单片机 AT89S52是一种带8K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,俗称单片机。它的可擦除只读存储器可以反复擦除1000次.该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容. 方案二:采用STC89C52单片机 STC89C52单片机的引
21、脚结构同AT89S52类似,但是也有些不同.STC单片机对工作环境要求比较低,3V到5V左右电压都可以工作,内部flash可擦写次数可达10000次以上,RC系列为真正的看门狗,缺省为关闭启动后无法关闭,可放心省去外部看门狗。 由于STC89C52单片机高可靠、低功耗、价格适中,故选择方案二的单片机. 3. 步进电机驱动芯片的选择 方案一 :使用多个功率放大器件驱动电机 通过使用不同的放大电路和不同参数的器件,可以达到不同的放大的要求,放大后能够得到较大的功率。但是由于使用的是四相的步进电机,就需要对四路信号分别进行放大,放大电路很难做到完全一致,当电机的功率较大时运行起来会不稳定,电
22、路制作较复杂. 方案二:使用ULN2003芯片驱动电机 ULN2003的每一对达林顿都串联一个基极电阻,在5V的工作电压下它能与TTL和CMOS电路直接相连,可以直接处理原先需要标准逻辑缓冲器,具有电流增益高、工作电压高、温度范围宽、带负载能力强等特点,适应于各类要求高速大功率驱动的系统。 由于ULN2003结构简单而且能为步进电机提供脉冲信号,进而将脉冲转化为步进角度,从而能控制步进电机转动,故选择ULN2003驱动电机。 4. 显示模块的选择 方案一:采用LED数码管动态扫描,LED数码管价格适中,亮度高,显示数字合适,但是连接复杂,耗电流大,驱动电路复杂。 方案二:采用点阵式
23、数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示简单文字比较适合,如果显示数字则浪费资源,而且价格也相对较高。 方案三:采用LCD液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字,图形,显示多样,清晰可见,并且连接很方便 ,所以在此设计中采用了LCD液晶显示屏. 因此选择方案三,并且采用LCD1602液晶显示屏。 5. 检测模块的选择 方案一:霍尔传感器测速 采用霍尔元器件作为霍尔测速模块的核心,但是由于体积较大,检测时需要至少2—3个,安装不方便. 方案二:光电传感器测速 光电传感器是将被测量的变化转换成光信号的变化,然后利用光电元件进一步将光信号转换成电信号
24、其中光起着媒介的作用。由于内部的光电耦合器抗干扰能力强,容易完成电平匹配和转移,又不受信号源是否接地的限制,所以应用日益广泛。 由于光电检测方法具有精度高、反应快、非接触等优点,所以选择关电传感器测速。 2。1总体架构设计及其功能简述 本系统设计主要包括单片机最小系统、步进电机驱动芯片、键盘控制模块、LCD显示模块、光电传感器检测模块组成.通过按键的设置来对步进电机的速度、方向和角度的控制,同时通过光电传感器的来检测电机的运转,测速电机的速度和方向并动态的显示在LCD液晶屏上。其整体设计框图如下: 光电传感器 STC89C52 (速度的测量计算、输入设定及系统控制)
25、 LCD1602液晶显示屏 按键 ULN2003驱动芯片 步进电 机 串口通信 计算机 图 2-1系统总体框图 单片机最小系统作为整个系统的控制核心,它主要负责产生控制步进电机转动的脉冲,通过单片机的软件编程代替环形脉冲分配器输出控制步进电机的脉冲信号,步进电机转动的角度大小与单片机输出的脉冲数成正比步进电机转动的速度与输出的脉冲频率成正比,而步进电机转动的的方向与输出的脉冲顺序有关。同时单片机系统还负责处理来自光电传感器输出的电信号.与此同时,单片机将会把电机转速,转动方向通过LCD液晶屏显示出来。 电机驱动模块负责将
26、单片机发给步进电机的信号功率放大,从而驱动电机工作。 串口下载模块主要是负责实行计算机和单片机之间的通信,将在计算机里面编写好的程序下载到单片机芯片当中。 LCD显示模块就主要是显示电机转速,电机转向系统的实时信息,同时还可以显示控制电机的角度。 关电传感器模块主要是检测通过电机的转动,然后将检测到的信号送给单片机处理,之后将电机的速度和方向实时显示在显示模块上。 独立按键作为一个外部中断源,和单片机P2端口连接,通过它设置了电机的正转,反转,加速,减速,角度等功能。采用了中断和查询相结合的方法来调用中断服务程序,完成了对步进电机的最佳的及时的控制。 3硬件设计 3.1 硬件设
27、计思路 步进电机控制系统共分为四个模块:单片机最小系统模块、键盘控制模块、LCD显示模块、步进电机驱动模块,步进电机的检测模块则是通过光电传感器来检测.由于该系统中采用的是STC89C52单片机,由于EA管脚内部已上拉到Vcc,上电复位后单片机从内部开始执行程序,使单片机能正常启动。时钟电路采用外部时钟方式,保证单片机个功能部件都是以时钟频率为基准,有条不紊地一拍一拍地工作。 按键控制模块包括方向控制键、确定键、设置状态键、设置电机角度/速度等级加键和设置电机角度/速度等级减键,分别与单片机的P0。0、P0.1、P0。2、P0.3和P0.4相连,实现对步进电机的控制。LCD显示模块与单片机
28、的P3口相连,来动态显示步进电机的实际转动速度和方向。显示器的RS、RW、E三引脚分别接在单片机的P1.5、P1。6、P1。7口。 步进电机驱动模块选用七对NPN达林顿连接晶体管2003为步进电机提供脉冲信号,驱动步进电机转动,该模块与STC89C52单片机的P2.4、P2.5、P2.6、P2.7引脚相连。步进电机的检测模块选用光电传感器将输出信号接到单片机的P1.0和P1.1口。 串口通信模块通过MAX232的一个电平转换,连接至单片机实现核心芯片的烧写。 3。2 单片机最小系统设计 通过多方面比较,最终选的是STC系列的STC89C52单片机。高性能STC系列MCU和SRAM。
29、STC89C52是一种带8K字节闪烁可编程可檫除只读存储器(FPEROM—Flash Programable and Erasable Read Only Memory )的低电压,高性能CMOS8的微处理器,俗称单片机。内部flash可擦写次数可达10000次以上,该器件采用ATMEL搞密度非易失存储器制造技术制造,与工业标准的MCS—51指令集和输出管脚相兼容,由于STC89C52单片机高可靠、低功耗,而被广泛的使用。单片机最小系统的接线如图3-1所示: 图 3-1单片机最小系统 由以上电路可知,STC89C52的
30、复位是采用外部复位电路通过电容的充电来实现的,此设计中采用的是上电自动复位电路,在满足单片机可靠复位的前提下降低了复位引脚的对地阻抗,增强了复位电路的抗干扰能力。 单片机芯片内设有一个反向放大器所构成的振荡器,XTAL1为反向振荡放大器和内部时钟工作电路的输入, XTAL2来自反向振荡器的输出,在XTAL1和XTAL2引脚外接定时元器件,内部振荡电路就会产生自激.本系统采用的定时元器件是石英晶体和电容组成的并联谐振回路,电容的大小可以起到频率微调的作用。 3.3步进电机以及驱动介绍 步进电机是一种将电脉冲转化为角位移的执行机构。步进电动机是纯粹的数字控制电动机,当步进驱动器接收到一个
31、脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(称为“步距角"),它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的,因此非常合适单片机控制,在非超载的情况下,电机的转速停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,电机则转过一个步距角,同时步进电机只有周期性的无累积误差,精度高. 此设计中采用的是四相八拍的电机.四相步进电机有两种运行方式:四相四拍和四相八拍。其四相八拍运行方式下步进电机的转速如果计算,需要先清楚两个基本概念: 1、拍数:完成
32、一个磁场周期性变化所需脉冲数或导电状态用n表示,或指电机转过一个齿距角所需脉冲数,以四相电机为例,有四相四拍运行方式即AB—BC-CD—DA—AB,四相八拍运行方式即 A—AB—B-BC—C-CD-D—DA-A。 2、步距角:对应一个脉冲信号,电机转子转过的角位移用θ表示。θ=360度(转子齿数J*运行拍数),以常规二、四相,转子齿为50齿电机为例。四拍运行时步距角为θ=360度/(50*4)=1.8度(俗称整步),八拍运行时步距角为θ=360度/(50*8)=0.9度(俗称半步)。这两个概念清楚后,我们再来计算转速,以基本步距角1。8°的步进电机为例(现在市场上常规的二、四相混合式步进电机
33、基本步距角都是1。8°,四相八拍运行方式下,每接收一个脉冲信号,转过0.9°,如果每秒钟接收400个脉冲,那么转速为每秒转动的角度为400X0.9°=360°,相当与每秒钟转一圈,每分钟60转. 该步进电机为一四相步进电机,采用单极性直流电源供电。只要对步进电机的各相绕组按合适的时序通电,就能使步进电机步进转动.图3—2是该四相反应式步进电机工作原理示意图. 图 3-2 四相步进电机示意图 开始时,开关SB接通电源,SA、SC、SD断开,B相磁极和转子0、3号齿对齐,同时,转子的1、4号齿就和C、D相绕组磁极产生错齿,2、5号齿就和D、A相绕组磁极产生错齿。 当开关SC接通
34、电源,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方向转动. 四相步进电机按照通电顺序的不同,可分为单四拍、双四拍、八拍三种工作方式。单四拍与双四拍的步距角相等,但单四拍的转动力矩小.八拍工作方式的步距角是单四拍与双四拍的一半,因此,八拍工作方式既可以保持较高的转动力矩又可以提高控制精度. 单四拍、双四拍与八拍工作方式的电源通电时序与波形分别如图2。a、b、c
35、所示: a。 单四拍 b. 双四拍 c八拍 图3-3步进电机工作时序波形图 步进电机不能直接连接到工频交流或直流电源上工作,而必须使用专门的步进电路驱动器,对于步进电机的驱动,该系统采用的是七对NPN达林顿连接晶体管2003芯片。ULN2003是高耐压、大电流达林顿陈列,是一个非门电路,包含7个单元,单独每个单元驱动电流最大可达350mA。其与步进电机的连接图如下所示: 图 3—
36、4驱动模块管脚连接图 3.4外围电路设计与分析 3.4。1 按键电路 本设计中由于按键较少的控制,所以采用的是直接按键设计.在步进电机的控制部分设计中采用的5个单独按键来实现对电机的速度、方向和角度的控制。从下自上,分别连接在单片机的P0.0,P0。1,P0。,2,P0。3,P0。4口,通过软件程序的编写,让其各自的功能为:方向键、确定键、进入设置状态键、设置角度/速度等级的加、设置角度/速度等级减键.在运行过程中,通过单片机系统的处理,能够修改参数,到达预期的目的,按键电路图如下: 图 3-5 按键电路连接图 3。4.
37、2 LCD显示电路 字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,根据设计要求需要能显示速度和电机的动作状态,所以采用的是16*2行模块,即LCD1602液晶屏,能够实时的显示出电机的动向.LCD显示器的引脚可与单片机直接相连,其显示模块图如下: 图 3—6 LCD1602-2液晶屏显示 3.4。3 电源模块设计 该部分的功能是提供电源,其中包括了一个稳压器保持电压的稳定.稳压器:它是一种能自动调整输出电压的供电电路或供电设备,其作用是将波动较大
38、和不合用电器设备要求的电源电压稳定在它的设定值范围内,使各种电路或电器设备能在额定工作电压下正常工作.该设计中采用的是7805稳压芯片,将输入的12V电压转换为需要的5V电压,其电源图如下所示: 图 3-7电源部分 3。4。4 检测模块设计电路 本设计中采用的是2组槽型光电传感器,来检测电机的速度与方向的变化.光电传感器是将被测量的变化通过光信号变化转换成电信号。当发光器发出的光被电机的遮挡片遮挡,光电开关便动作,输出一个开关控制信号,切断或接通负载电流,从而完成一次控制操作。其中检测模块如3-7所示:
39、 图 3-7电机检测模块 4 软件设计 4.1 软件开发平台 在软件开发平台上实现软件编程,然后将其完好的烧写进STC89C52单片机,需要使用到的软件是Keil C51软件和stc—isp下载软件。 1.Keil uVision3 C51集成开发环境 随着单片机开发技术的不断发展,单片机的开发软件也在不断发展,Keil软件是目前流行的用于开发51系列单片机的软件。Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用.用过汇编语言后再使用C来开发,
40、体会更加深刻。 Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面.另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。 2.程序调试 (1)源文件建立 首先启动开发软件,使用菜单“文件”项目窗口右侧打开一个文本编辑界面,可在其中写入C语言程序或将己编辑完成的程序调入,保存。本程序保存为*。c。 (2)建新工程文件 点菜单“工程”,“新建工程”出现对话框,给工程命名为test保存,在弹出对话框选择CPU的型号,选挥At
41、meI公司的89c5I,确定回到主界面,在工程窗门文件页中点“目标1/源代码组1”,添加源文件到“源代码组1”中 (3)编译连接 选择菜单中的编译进行连接,此时编译过程的信息将出现在编译窗口中,出现的语法错误会有提示,根据提示,修改源程序,直到编译通过。 (4)进行调试 编译透过后的源程序,只表示没有语法错误,但是否能够存在逻辑或其他错误,还需要进行仿真才行。编译完成后,打开菜单“调试”对软件模拟调试。在调试中,可以采用单步运行对程序进行检查,修改错误,并通过各参数窗口,观察数值是否与设定值相同。反复修改,直到所有功能完全正确,即可产生*。hex文件,该文件可用编程器烧录到单片机芯片中
42、 3.stc-isp下载软件 此软件用来将其编译好的软件将其烧录到芯片中的一个下载工具.拉菜单中找到单片机型号,此处选择为STC89C52RC。打开电脑的设备管理器查看COM端口号,回到stc软件的界面在箭头所指的下拉菜单中选择相应的端口号,打开已经生成的“hex文件,回到STC界面,单击“Download/下载"之后给单片机系统上电,就可以看到下载的进度,便知是否下载成功。 4。2 程序设计思路 步进电机控制系统的软件需要同时完成读取和处理键盘、控制步进电机转动、控制LCD液晶屏显示等任务,都得通过中断技术来实现。 在本设计中,主程序采用查询方式扫描键盘端口,检测按键动作是
43、否发生,若有按键动作则处理键盘,根据按键值修改相应参数值,实现键盘的实时处理功能。定时器0中断服务程序控制步进电机的转动:根据当前速度进行计算并查表得到T0定时时间常数,设置TH0和TL0的值,达到对转速精确控制的目的;根据转动方向控制位的值,控制脉冲信号循环移动的方向,达到对转动方向控制的目的;根据步进电机的每拍转动的角度,可以通过控制脉冲的个数来控制电机的转动角度。通过传感器输入单片机的信号来计算电机的速度,以及判断传感器脉冲的先后顺序用来完成LCD显示当前的转动方向. 4.3 程序设计流程图 4。3.1 主程序流程图 当给系统上电以后,通过单片机复位电路对系统进行上电复位系
44、统经过初始化以后,电机不停的运转,最小系统单片机则开始执行按键查询等待相应的操作,当有按键按下的时候程序便调用并执行相应的子程序,其具体的主流程图4-1如下所示: 开始 系统初始化 判断按键 执行相应按键子程序 执行相应的显示子程序 设置相应参数检测电机 LCD实时动态显示 结束 否 是 图 4-1 主程序流程图 4.3。2 定时器T0中断程序设计 定时器中断0服务程序的中断时间由当前的转速决定.进入中断程序后,首先要保护现场,再根据当前速度进行计算并查表得到T
45、0定时时间常数,设置TH0和TL0的值。然后判断转动方向控制位的值,如果0则控制脉冲信号循环左移并输出,如果是1则控制脉冲信号循环右移并输出。最后恢复现场,返回,等待下次中断。 通过用当前转速控制中断时间,控制了脉冲的输出频率,也就到达了控制步进电机转动速度的目的;通过检测方向控制位的电平,选择脉冲信号的循环左移或循环右移,控制了步进电机各引出端的接通顺序,也就到实现了步进电机转动方向的控制。定时器中断0服务程序流程图如图4-2所示: 进入定时中断 关闭定时器T0 TH0,TL0赋值 启动定时器T0工作 发现有溢出, 进入处理 如果转正没有结束
46、 按方向键调整正转/反转 电机继续运转 有键按下 去抖延时 P0口恢复为1,则判为抖动 处理相应子程序 定时1S计算出速度 退出中断 图 4—2 定时器中断程序流程图 4。3.2 读键盘子程序流程图 在本次设计中采用的是5个单独按键,分别连接在STC89C52单片机的P0口.由下往上依次代表的是:方向键、启动键、设置状态键、角度/速度等级的加、角度/速度等级的减。按键处理子程序的流程图如4-3所示. 键盘处理子程序开始时,当某一按键按下时出现一个低电平,依次同按键存放实际按键值做比较,判断出到底是哪一按键按下,从而转到相应的处理子程序段,完成相
47、应的操作,实现相应的功能后返回。若没有检测到低电平,则返回。 步进电机的启停控制通过启停定时器0来实现,因为定时器0控制着脉冲信号的输出,关闭定时器0也就阻止了脉冲信号的输出,同时通过传感器给单片机引脚的高低电平的判断,来检测电机的转动方向。当进入设置角度状态时,通过30°的角度差来改变角度的大小,通过计算步进电机则会运转到相应的角度。 开始 读取键值 P2.0是否按下 P2.1是否按下 P2.3是否按下 P2.2是否按下 P2.4是否按下 退出 改变电机的转动方向 控制电机的启动 进入设置状态/停 速度等级/角度的加 速度等级/角度的减 Y
48、Y Y Y Y Y y N N N N N N N N N N N 图 4-3 读键子程序流程图 4。3。3 显示器程序流程图 该设计中采用1602显示器,用来实时显示电机的速度、方向和角度.液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。若要显示字符时要先输入显示字符所在的地址。图4-4是1602的内部显示地址。 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E
49、 0F 10 …… 27 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 ……. 67 LCD 16字x2行 图 4—4 内部显示地址 由以上图可知,第一行的第一个字符的地址是00H,若要在第一行第一个字符的位置写入数据,必须要将最高位的D7位为高电平,所以要在此位置写入数据的地址应该是:10000000(80H)+00000000(00H)=80H,同理第二行写入数据的第一个字符的起始地址应该是C0H,在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,无需人工干
50、预。每次输入指令前都要判断液晶模块是否处于忙的状态。 4。3。4 LCD显示器控制子程序 根据设计要求,能控制电机的速度、方向和转动角度,以及能检测出电机运转时候的速度和方向.在此设计中,我将检测出的速度显示在LCD显示器的第一行,检测出的方向现实在第二行;对于修改角度和速度等级,在通过清显示之后,设定第一行显示文字,第二行来改变角度或是速度等级.具体设置流程图如下: 开始 =0,然后清显示 =2,然后清显示 =1,然后清显示 判断进入哪一种设置状态 Set_mode=? 第一行显示文字:speed 第一行显示文字:Set






