基于单片机的直流电机调速系统软件设计

更新时间:2024-05-04 06:43:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

论文题目:基于单片机的直流电机调速系统软件设计 专 业:电气工程及其自动化 本 科 生: 指导教师:

(签名)____

(签名)____

摘 要

直流电动机是一种新型,机电一体化电机,具有调速性能好,启动容易,能够重载启动等优点,现已广泛用于工业控制的各个领域。显然对它的控制也越来越重要。

本文主要介绍了基于单片机的直流调速系统,研究了利用89C52单片机控制直流电机并对其进行速度的测量。首先,本文介绍了直流电机的发展以及研究目的。其次,设计出整个系统的方案以及绘制出各模块的硬件电路图。然后,运用软件Keil51设计出相应的测速、电流保护、按键子程序、PWM调速同时给出相应的程序流程图。最后,通过上述设计,并且通过试验,能够完成对直流电机的起停、正反转、刹车、调速等控制,完成整个系统的功能,满足设计要求。

关键词: 单片机系统,直流电机调速,PWM信号

I

Subject: The DC Motor based on Microcontroller control speed Specialty: Electrical Engineering and Automation Name: (Signature)____ Instructor: (Signature)____

ABSTRACT

DC Motor is a new kind of the mechanical and electrical integrated motor, with the advantages of speed alter, high reliability, start easier, and overload starting, high efficiency and good speed performance has been widely used in industrial control fields. It is also clear that the control is the most important.

This article described the DC speed control system, and this always depended on Micro controller. A kind of speed regulation system of Pulse Width Modulation (PWM) for DC motor composed of microcontroller AT89C52 and L298 was designed. Firstly, this article describes the progress of the DC motor and research purposes. Secondly, designed kinds of modules and based on 89C52 control system, then designed the circuit diagram. Thirdly, design using software Keil51 corresponding speed, protection, display, and the speed control of PWM, then give out flow chart. Finally, through the designing and the testing, to complete the DC motor for starting, stopping, rotating, braking and speed control. Meet the design requirements.

KEY WORDS: SCM system,DC Motor Speed Control , PWM signal

II

目 录

第一章 绪论 ........................................................... - 1 -

1.1 课题研究的背景 ................................................. - 1 - 1.2国内发展状况 ................................................... - 1 - 1.3国外发展状况 ................................................... - 2 - 1.4本课题研究的目的及意义 ......................................... - 3 - 第二章 设计方案的选择 ................................................. - 5 -

2.1电动机的供电方案的选择 ......................................... - 5 - 2.2电机调速控制模块 ............................................... - 5 - 2.3 PWM调宽方式 .................................................. - 5 - 2.4 PWM 调速工作方式 .............................................. - 6 - 2.5 显示模块的选择 ................................................ - 6 - 2.6 键盘方案的选择 ................................................ - 6 - 2.7论文主要研究内容 ............................................... - 7 - 第三章 直流电动机调速系统的设计 ....................................... - 8 -

3.1 89C52单片机的简介 ............................................ - 8 - 3.1.1 89C52 单片机的基本组成 .................................... - 8 - 3.1.2 CPU及8个部件的作用功能介绍如下 ......................... - 9 - 3.2 对系统功能的要求 .............................................. - 10 - 3.3 系统的整体框图 ............................................... - 11 - 3.4 直流电动机的简介 ............................................. - 11 - 3.5 直流调速系统的概述 ........................................... - 12 - 3.6直流电机PWM(脉宽调制)调速工作原理 ............................. - 13 - 第四章 主体设计 ...................................................... - 16 -

4.1 详细设计 ...................................................... - 16 - 4.2驱动电路 ...................................................... - 16 - 4.3 显示模块 ...................................................... - 16 -

III

4.4键盘操作模块 .................................................. - 17 - 4.5测速模块 ...................................................... - 17 - 4.6 AD转换电路 ................................................... - 18 - 4.7闭环系统的设计 ................................................ - 19 - 第五章 软件设计 ...................................................... - 20 -

5.1 主程序的设计 .................................................. - 20 - 5.2 电机驱动程序 .................................................. - 22 - 5.3 PWM波程序的设计 .............................................. - 22 - 5.4 按键子程序的设计 ............................................. - 24 - 5.5 LCD1602的显示程序 ........................................... - 24 - 5.6 测速程序的设计 ............................................... - 25 - 5.7 中断程度的设计 ............................................... - 25 - 第六章 系统功能调试 ................................................... - 26 -

6.1 调试软件的介绍 ................................................ - 26 - 6.2 Keil c51 软件的简介 ........................................... - 26 - 6.2.1 Keil C51单片机软件开发系统的整体结构 .................... - 27 - 6.2.3 Keil C51的开发过程 ...................................... - 27 - 6.3直流电机调速功能仿真 .......................................... - 28 - 6.4 电机速度的测量并显示功能仿真 .................................. - 28 - 6.5软件调试的方法 ................................................ - 29 - 第七章 个人总结 ...................................................... - 31 - 致 谢 .................................................... 错误!未定义书签。 参考文献 .............................................................. - 32 - 附 录 一 .............................................................. - 33 - 附录二 ................................................................ - 42 -

IV

第一章 绪论

1.1 课题研究的背景

在现代化的工业生产过程中,电力传动装置的使用十分广泛,随着社会的发展和各种技术的更新,以及生产质量和工艺的不断增长和改善,自动调速已经广泛应用到各行各业中并且对其要求也越来越高。对调速系统的控制,可分为直流调速和交流调速。直流电机的调速具有很好的调速特性,有很大的过载能力,并且可以平滑,快速调速。可以轻易的实现多次正转反转并且能够适应生产和生活中的各种控制要求,至今在机床、造纸机等需要高性能可控电力拖动的领域一直都有广泛的应用, 到目前为止仍是调速系统的主要形式。

直流电机是出现最早的电动机,可以分为有换向器和无换向器两类。虽然直流电机在价格,性能,维护等方面不如交流电动机,但是直流电动机具有调速性能好,启动容易,能够重载启动等优点,所以目前直流电动机的应用很广泛。直流电动机就是因其转速比较灵活,方法简单,且有很多优点。因此在传动控制领域占有很高的地位。研究并制造高性能、高可靠性的直流电机控制系统有着十分重要的现实意义,为此对直流电机的速度调节,我们可以采用多种办法,而有一种通过使用价格低廉、通用性很强单片机为控制芯片的方法,以 PI 调节控制算法为基础,完成直流电机转速的调节,达到了控制性能好、成本低的目的。另外,以单片机为核心的电机调速系统还有维修简单、柔性强等优点。

在直流电机的测速系统中,随着现代技术的发展已经广泛使用PWM技术来对电机的转速进行控制,而且在电机的调速模块中,是从最初的用电位器调整直流电压从而达到电机调速的目的;然后是采用继电器的开关切换对电机进行速度的控制;现在是用封装集成好的H型器件,或是IGBT组成的H型电路,从而对电机进行调速。通过比较发展过程中的电机控制方法可知,在以上三种控制模块里主要以H型电路的驱动最为简单,可以简单控制电机的速度和转向的变化,因此也出现了L298N这些内部H桥型的芯片的封装,从而可以直接利用L298N这些类似芯片直接来驱动电机。

1.2国内发展状况

我国在很早从第一只晶闸管研发成功以后,晶闸管直流调速系统就得到了快速的发

- 1 -

展和广泛的运用。现在,全国各大高校、科研单位和电子生产厂家都在进行数字直流调速系统的开发,同时有了很多关于直流调速系统控制的算法。

(1)直流电动机及直流调速系统的参数辨识的方法。该方法是应用最小二乘法,在系统或某环节的输入输出特性中,可获得系统环节内部参数。

(2)直流电动机调速系统的内模控制方法。该方法是针对双闭环控制所产生的一种,能够取代PI调节器解决超调问题的一种内模控制算法。这种方法比较简单且使系统具有很好的动态和静态性能。

(3)单神经元自适应智能控制方法。这是一种单神经元自适应智能控制的方法。这种方法也具有良好的静,动态性能,还具有很好的自适应性。

(4)模糊控制方法。这种方法在小惯性系统中应有比较广,经1.5kw电机实验证明,模糊控制理论可以用于直流并励电动机的限流起动和恒速运行控制,并能获得理想的控制曲线。

上述的控制方法仅是直流电机调速系统应用和研究的一个侧面,国内外还有许多学者对此进行了不同程度的研究。国内研究直流电机调速已经从最初的简单控制电机的运动上升到开辟新的算法和高速可靠的去控制电机,使直流电机更快更有效地发展。

1.3国外发展状况

直流电机的产生已有一百四十多年的历史。在设计和制造的技术上有了很大进步,新材料、新技术的应用以及整流电源的普及,促进了一般工业所用直流电机的不断扩大,品种的日益繁多。从小至数瓦,大到万余千瓦,广泛地用于冶金、矿山、煤炭、起重运输、机床制造、纺织印染等各个部门中,特别是近几年电子计算技术广泛应用在直流电机设计制造中。从直流电动机的演变历史,也可以纵观直流电动机的发展历史和动向、从四十年代后期到五十年代的前期, 直流电动机的电源主要是采用M-G电动发电机组,六十年代初,电动发电机组电源已被水银整流器逐渐代替,到六十年代后期,由于可控硅整流装置的出现,并得到迅速发展,可控硅整流电源已占统治地位。由于直流电源供电方式的不断更新换代,特别是在最近的十几年期间,进一步促使了直流电动机的单机功率、转速等的不断提高,使直流电机目前朝着高转速、大功率的方向发展。另外,由于绝缘技术和分析技术的进步,直流电动机已迅速向小型,高速,大功率,低惯量等方面发展。

- 2 -

随着各种微处理器的出现和发展,国外对直流电机的数字控制调速系统的研究和开发也在不断的发展和改善,尤其是80年代在这方面的研究最繁荣的鼎盛时期。大型直流电机的调速系统一般采用晶闸管整流来实现,为了提高调速系统的性能,研究工作者对晶闸管触发脉冲的控制算法作了大量的研究,提出了内模控制算法、I-P控制器取代PI调节器的方法、自适应和模糊PID算法等等,其实在这些方面国外和国内都做了很高程度的研究。

目前,国外主要的电气公司,如瑞典ABB公司,德国西门子公司、AEG公司,日本三菱公司、东芝公司、美国GE公司等,均已开发出数字式直流调速装置,有各种各样的系列化、标准化、模板化的应用产品供选用。使得直流电机的发展愈来愈迅速,用途更广,给社会乃至全人类创造更多的财富。

1.4本课题研究的目的及意义

直流电动机具有良好的起动、制动性能,且能实现平稳大范围的调速,在许多需要调速或快速正反转的电力拖动系统中得到了广泛的应用。从控制的角度来看,直流调速还是交流拖动系统的基础。起初直流电动机的控制均以模拟电路为基础,采用运算放大器、非线性集成电路以及少量的数字电路组成,控制系统的硬件部分十分复杂,功能很单一,并且系统非常不灵活,调速困难,阻碍了直流电动机控制技术的发展和使用范围的推广。传统的控制系统采用模拟元件,虽在一定程度上满足了生产要求,但是因其受到器件性能、温度等因素的影响,故系统的运行稳定性、准确性都得不到保证甚至还会出现事故。

随着单片机技术的日新月异,使得许多控制功能及算法可以采用软件技术来完成,为直流电动机的控制提供了更大的灵活性和更广阔的发展空间,并使系统能够达到更高的性能。一种节约了人力资源和降低系统成本的控制系统随着采用单片机构成了新的较简单的控制系统,有效的提高了系统的工作效率。目前,直流电动机调速系统数字化已经走向实用化,伴随着电子技术的高度发展,促使直流电机调速逐步从模拟化向数字化转变,特别是单片机的应用,使直流电机调速技术又进入到一个新的阶段,智能化,高可靠性已成为它发展的必然趋势。

在工业自动化领域,直流电机又有着十分广泛的应用。直流电机以其优良的性能在驱动、控制、牵引等许多场合起到了十分重要的作用。铁路机车直流牵引电机、地铁机

- 3 -

车直流牵引电机、机车直流辅助电机、矿用机车直流牵引电机、船用直流电机、轧钢电机和其它直流电机,由于它们作为国民生活的基础,直流电动机是最早出现的电动机,也是最早实现调速的电动机。长期以来,直流电动机又一直占据着调速控制的统治地位。由于它具有良好的线性调速特性,简单的控制性能,高效率,优异的动态特性,现在仍是大多数调速控制电动机的最优选择。因此研究直流电机的速度控制,有着非常重要的意义。

- 4 -

第二章 设计方案的选择

2.1电动机的供电方案的选择

变压调速是直流调速系统中的最主要的方法,而调节直流电枢供电电压所需的可控制电源通常有3种:旋转交流机组,静止可控整流器,直流斩波器和脉宽调制变换器。 (1)旋转交流机组就是G-M系统,用交流电动机和直流发电机组组成机组,来获得可调的直流电压。适用于调速要求不高,能够可逆运行的系统,但其体积大、费用高。效率低、维护不方便,因此适用面较窄。

(2)静止可控整流器,如晶闸管可控整流器,可以通过调节触发装置来触发脉冲的相位,从而改变平均电压,实现平滑调速,控制作用快同时性能也较好。

(3)直流斩波器和脉宽调制交换器采用的是PWM技术,用不可控整流电源供电或直流电源供电,利用直流斩波器或脉宽调制变换器产生可变的平均电压。与上述两种方法相比此方法有很多的优越性。主电路简单,需要的功率器件较少;谐波少,电机损耗及发热都较小;稳速精度高,调速范围宽;系统频带宽,动态响应快,动态抗干扰能力强。

通过对比以上三种方案的优缺点并且以及我们常用的经验熟悉度,本次设计在根据脉宽调速要求,采用直流PWM调速系统。

2.2电机调速控制模块

(1)可以通过采用继电器对电动机的开和关进行控制,通过不断地切换开关来调整电机的速度。此方案的优点是电路比较简单,缺点是继电器的响应时间较慢、机械结构易被损坏,且成本较高。

(2)采用H桥组成的PWM电路。用单片机来控制H桥使电机工作在占空比可调的开关状态,从而能够精确调整电机的转速,效率很高,可以保证电机实现转速和方向的控制。这个方案调速性优良、调速范围很广并且可以实现平滑调速。 因此经过对比,我们选用第二种方案来驱动电机产生速度和方向的转换。

2.3 PWM调宽方式

PWM的调脉宽的方式有:定频调宽、定宽调频和调宽调频。在这里我们选用了定频调宽的方式,这种方式使电机的运转比较稳定;并且在用单片机产生PWM时用软件

- 5 -

方法产生相对比较简单且易实现。PWM的软件实现方式:

(1)采用软件延时,但这种方式下的精度不高,且占用处理器资源。

(2)直接由软件产生一组二进制数控制PWM波形发生器产生PWM波,但这种方法还需要设计一个波形发生器,需要器件较多,成本较高,比较麻烦。

(3)采用定时器作为脉宽控制的定时方法,且单片机内部自带定时器相对简单,并且产生的脉宽精度极其精确,所以我选用定时器产生PWM。因此,这种方法相对比较简单,且实用,软件设计过程中也易产生及控制PWM波。

2.4 PWM 调速工作方式

(1)双极性工作制。双极性工作制是指在一个脉冲周期内,单片机两端控制两个口输出一个控制信号,两信号高低电平相反,用两信号的高低电平时差来决定PWM波从而驱动电动机的转向和转速的变化。

(2)单极性工作制。单极性工作制是指单片机控制口一端置低电平,另一端输出PWM信号,经过两口输出的切换和对PWM占空比调节,改变端口的高低电平来控制正反转,PWM的占空比的调节来改变电机的转速。

由于单极性工作制电压中的交流成分比双极性工作制的小,其电流的最大波动也比双极性工作制的小,所以我们选用了单极性工作制。

2.5 显示模块的选择

(1)采用 LED 数码管动态扫描,LED 数码管价格适中,亮度高,对于显示数字合适,但是连接复杂,耗电流大,驱动电路复杂。

(2)采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示简单文字比较适合,如显示数字则浪费资源,且价格也相对较高。

(3)采用 LCD 液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字,图形,显示多样,清晰可见,并且连接很方便 ,所以在此设计中采用了 LCD 液晶显示屏。

2.6 键盘方案的选择

(1)采用矩阵式键盘,这种方法可以由较少的I/O口实现数目较多的键盘。但是适合需要较多的键盘。但硬件比较复杂,且程序结构比较繁琐。

(2)使用独立键盘,即每一位I/O口可对应连接成一个键,这种方法比较简单,又

- 6 -

因为本次设计只需要五个按键,所以选择这种不占用多余的I/O口。比较较简单,鉴于系统需要的键盘数不多,且有空余的 I/O 口,所以选用该种方案。

2.7论文主要研究内容

主要介绍系统整体,从选题的背景及直流电机的发展和意义到整体系统的设计。展示整个设计的硬件的选材和软件的思路,以及在做毕设过程中的总结与收获。本课题研究的对象是直流电动机,对其转速进行控制。其基本思想是利用89C52单片,通过单片机的定时中断来产生并且调正PWM的占空比,控制电机的电枢电压,进而控制电机转速。

系统硬件设计为:以89C52为心,由转速环、显示、按键控制等电路组成。 具体内容如下:

(1)介绍直流电动机工作原理及PWM调速方法。 (2)完成以89C52的直流电机数字控制系统硬件设计。

(3)以该系统的特点为基础进行分析,使用PWM控制电机调速。 (4)对该数字式直流电动机调速系统的性能做出总结。

- 7 -

第三章 直流电动机调速系统的设计

3.1 89C52单片机的简介 3.1.1 89C52 单片机的基本组成

8052单片机由CPU和8个部件组成,它们都通过片内单一总线连接,其基本结构依然是通用CPU加上外围芯片的结构模式,但在功能单元的控制上采用了特殊功能寄存器的集中控制方法。其基本组成如下图所示:

图3-1 89C52的基本组成图

并行I/O口 串行口 定时器 CPU 特殊功能寄存器 震荡电路 数据存储器 程序存储器 中断系统 中央处理器CPU:它是单片机的核心,完成运算和控制功能。

内部数据存储器:芯片中共有256个RAM单元,能作为存储器使用的只是前128个单元,其地址为00H—7FH.通常说的的内部数据存储器就是指这前128个单元,简称内部RAM。

特殊功能寄存器:是用来对片内各部分进行管理、控制、监视的控制寄存器和状态寄存器,是一个特殊功能的RAM区,位于内部RAM的高128个单元,其地址为80H—FFH。

内部程序存储器:此芯片内部共有8K个单元,用于存储程序、原始数据或表格,简称内部ROM。

并行I/O口:芯片内部有4个8位的I/O口(P0,P1,P2,P3),以实现数据的并行输入输出。

串行口:它用来实现单片机与其他设备之间的串行数据传送。

- 8 -

定时器:芯片内部有3个16位的定时器,用来实现定时或者计数功能,并且以其定时或计数结果对计算机进行控制。

中断控制系统:该芯片共有5个中断源,即外部中断2个,定时、计数中断3个和串行中断1个。

震荡电路:它外接石英晶体和微调电容即可构成单片机产生时钟脉冲序列的时钟电路。系统允许的最高晶振频率为12MHz。

3.1.2 CPU及8个部件的作用功能介绍如下

89C52单片机个引脚的原理与功能 :VCC:供电电压 ;GND:接地;

P0口:P0口为一个8位漏极开路双向I/O口, 没脚可吸收8个TTL门电路,当做通用I/O口使用时,输出级是漏极开路电阻,故需外接上拉电阻才能有高电平输出,当作地址/数据总线使用时,不需要外接上拉电阻,可是不能做通用的I/O口使用;由输出变换成输入端口作用时需先向端口写入1(为了防止高电平因内部结构被拉成低电平造成误读);在不接片外存储器与不扩展I/O端口时,可作为准双向I/O口。在接有片外存储器或扩展的I/O端口时,P0端口分时复用为低8位地址总线和双向数据总线。 P1口:P1 口是一个内部提供上拉电阻的 8 位双向 I/O 口,P1 口缓冲器能接收输 出4个TTL 门电流。P1口管脚写入 1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故,在 flash 在编程和校验时,P1 口作为第八位地址接收。P1有两个端口有第二功能,P1.0的第二功能是T2时钟的输出,P1.1的第二功能是T2EX(定时/计数器2)。

P2 口:也是一个准双向I/O口,P2口的电路结构与P1口类似,驱动部分与P1口相同,在接有片外存储器或扩展I/O接口且寻址范围超过256KB时,P2端口用作高8位地址总线。能够驱动4个TTL门电路。

P3口 :也是准双向I/O口,输出级接有内部上拉电阻,作输入时,必须先向相应的端口锁存器写入1。P3 口作为AT89c52的一些特殊功能口,管脚备选功能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(外部数据存储器读通道)。

REST:复位输入。当振荡器复位器件时,要保持 REST 脚两个机器周期的高电平时

- 9 -

间。

ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。

图3-2 89C52的最小系统

3.2 对系统功能的要求

(1)通过L298 H 桥驱动,实现控制和调整直流电机转速和转向的功能。并实现由单片机控制实现直流电动机的加速、减速、正转、反转、急停。

(2)用1602液晶显示模块简单的实现电机速度的显示,在 LCD 上显示电机的工作状态,观察电流和转速的变化。

(3)实现闭环调速,测出电机的实际转速,与设定的值相比较形成偏差并且根据偏差调节转速。

(4)实现电流保护的作用。

- 10 -

3.3 系统的整体框图

直流电机的调速系统控制硬件主要包括单片机(AT89C52)控制模块,L298N电机驱

动模块,LCD1602电机速度显示模块,独立式键盘控制模块及测速反馈模块。本系统通过L298驱动电机运转,独立式按键控制电机的运行状态使其分别出现电机的正转,反转,加速,减速,急停。测速反馈模块测出当前电机的转速与给定8052的速度的比较,进而做出相应的改变。系统整体框图如图所示:

晶振模块 单片机 电源模块 L298N 电机 键盘控制模

块 显示模块 测速模块 复位模块

图3-3 系统框图

3.4 直流电动机的简介

电动机是用来驱动生产机械的,根据负载的需要,在生产需要中希望电动机的转速

能在一定或更宽广的范围内进行调节,且要求调节的方法既简单又经济。直流电动机在这些方面都有非常突出的优点。直流电动机按照励磁方式可以为:自励、他励和永励。电动机可以分为控制电动机和功率电动机,其中控制电动机分别为(1)步进电动机;(2)伺服电动机;(3)无刷直流电动机。而功率电动机可以分为直流电动机和交流电动机。

直流电动机的工作原理:将直流电源通过电刷,接通电枢绕组,使电枢道题有电流流过;电动机内部有磁场存在;载流的转子(电枢)导体将受到电磁力的作用;所有导体将产生的电磁力作用于转子,使转子以n(r/min)旋转以便拖动机械负载。 直流电动机的特点:直流电机的启动转矩大,效率高,无励磁损耗,调速性能好。 从直流电动机的转速公式:

- 11 -

Higcount=0XFF00

并且由这两个初值决定了PWM波形的周期是1ms,即频率是1khz。

5.2 电机驱动程序

L298N控制电机的驱动电机运转时有两张方案:(1)利用控制端子IN3和IN4高低电平来控制电机的加减速,当这两个端子的电平不同时分别使电机加速或减速;用ENB端口输出PWM波驱动电机的加减速,当IN3和IN4两端电平相同时电机急停。(2)利用IN3控制驱动电机的正反转,IN4输入PWM波驱动电机的加减速,用ENB使能,高电平时电机运转,低电平时电机停止运动。经过比较选择我们采用第二种方案,因为用使能端单独控制电机的启停即方便又简单,且该方案分别用三个控制端控制实现电机不同功能的驱动,互不干扰影响,简单可行,且易于程序的编写。具体控制思路如下: 通过控制T0,T1两个定时器定时计数器中断实现对PWM波形占空比的控制,使能ENA控制电机的启停。通过L298N来驱动电机的运转,则可根据其三个控制端口IN3、IN4、ENB来控制驱动电机的运行。

当IN3=0,IN4=1 时 电机正转; 当 IN3=1,IN4=0 时 电机反转 ;

当ENB =1, 端口输出的PWM波形发生变化时则分别high 和low 来控制电机的加减速;

当IN3=IN4时, 则电机急停。

在L298N的OUT3和OUT4之间加着负载直流电机,通过霍尔器件对其进行速度的采样和计算,通过数脉冲计算出转速的大小,最终将采集的速度传给单片机的I/O口,并且通过1602显示出该速度值。

5.3 PWM波程序的设计

在PWM波形产生的过程中主要依靠两个定时作用,其中为了使整个波形的频率不变,采用T0控制高电平持续的时间,T1控制低电平的持续时间。在本次设计中定时/计数器选用工作方式1,其中方式1是16位的定时/计数器,加1计数器由TH0(TH1)的8位和TL0(TL1)的8位构成。

在方式1时,计数器的计数值由下式确定:

- 22 -

N=65536-? 计数范围为1~65536.

在编写定时/计数程序时将某一数据送入TH0(TH1)、TL0(TL1)作为初值。TH0(TH1)、TL0(TL1)从初值开始加1计数,直至溢出。所以初值不同,定时时间或计数值也不同。必须注意加法计数器溢出后,必须用程序重新对TH0(TH1)、TL0(TL1)设置初值,否则下一次加法计数器从0开始计数。

开始初始化按键查询正传是否按下反转是否按下加速是否按下减速是否按下急停是否按下正转反转增大矩形占空比缩小矩形占空比电机急停 图5-3 PWM子程序控制图

在本次设计时T1定时为低电平的持续时间,T0为定时高电平的持续时间。给T1的初值为0即满占空的低电平,同时T2的初值为65536高电平为0.中断标志位EA一直开启,通过开关定时器T0,T1来实现输出PWM的方波。当T0的计数初值增加时,则高电平的占空比减少,则转速减少。而T1的初值增加时,则低电平的占空比减少,则转速增加。

- 23 -

5.4 按键子程序的设计

在对按键功能进行编写时,有两种方法非别是扫描法和查询法。在这次设计 中采用了扫描的方式,利用if语句分别对单片机的五个I/O口进行查询,若P1.0=0,则表示电机正转按键按下,经过一个延时消抖,进而调用正转子程序,电机正转;P1.1=0,电机反转;P1.3=0,电机加速;P1.5=0,电机减速;P1.7=0,电机急停。在按键程序中主要不断的循环判断按键的状态,并对按键做好消抖工作即可。不断地扫描和调用以实现电机调速的功能。

5.5 LCD1602的显示程序

LCD显示控制是一个相对复杂的过程,需要首先设置RS,RW,E引脚高低电平,随后对数据输入口进行赋值,实现对应的功能。因此,用inputcom、displaychar 和displaydata 三个函数分别实现LCD写指令、LCD写字符和LCD写数据的功能,用延时程序来判断LCD忙碌状态。

开始初始化成8位口,2行显示,5×7阵列设置自动加1设置光标平移设置显示光标清显示屏

结束 图5-4 LCD 1602 显示流程图

- 24 -

本次设计采用LCD1602,在显示中分别有显示字符和显示数据从而实现转速+单位的显示即(V:+ 20r/min),1602显示主要依靠三个控制端分别为:RS—寄存器选择输入端;R/W—读写信号输入端;E—使能端。

在1602显示字符:是通过用*dat指针来实现的,将指针变量赋给P0口,通过指

针自加,使指针中的字符全部输出,从而实现输出所需要的字符。

1602显示数据:主要是通过传递它所能识别的Ascall码值来传递的,因为我们电机转速最大为6000r/min,可以选用一个数组将这个速度存在里面(i[4]), 又因为0的Ascall码是0X30,可以分别将转速的千、百、十、个位以i[0]?dat1000?0X30的方式,使每个数在0的基础上加上自己本身从而转化成1602可以识别的数字,进而传出并显示。

在编写程序时首先要对1602初始化:

0X01 清屏

0X06 字符不动,光标自动右移一格 0X0C 显示开关设置

0X80 显示第一行首地址

0X38 使用8位数据显示两行,使用5?7字符

根据第三章所介绍的1602的特性对三个控制端口经过单片机的I/O口进行控制。 5.6 测速程序的设计

在一周期内通过霍尔数脉冲计数增加,然后将计数的值送给1602显示。将霍尔元

件的输出口与单片机的外部中断0相连起来,当电机在转一圈时,电机轴末端的小磁片经过霍尔元件一次,则脉冲会发生高低电平的变化从而触发外不中断,当有外部中断时开始计数,又因为测周期内的转速,则定义测速在500次,又因为定时周期为1ms即

要测出500ms的转速,进而再将500ms的转速转化为1min的转速并且显示在1602上。

5.7 中断程度的设计

在整个程序的运行中为了防止因为电流过大,造成芯片发热乃至被烧坏,在此需要用外部中断的方式设置电流保护措施对整个系统进行保护作用。本次设计中选用从L298N的senseB管脚经电阻来采样电流,将采集的模拟量经AD0809转换为数字量,并且传送给液晶显示来显示具体电流数值的大小。

- 25 -

第六章 系统功能调试

6.1 调试软件的介绍

Proteus软件是英国Labcenter electronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前在国内的应用范围比较小,但已受到单片机研究者们的热爱、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。在编译方面,它也支持IAR、Keil和MPLAB等多种编译。

Proteus主要由ISIS和ARES两部分组成,ISIS主要功能是原理图的设计及电路原理图的交互仿真,ARES主要用于印制电路板设计。Proteus实现了单片机仿真和SPICE电路仿真的完美结合。它提供了30个元器件库,数千中元器件。还可以通过内部原型或使用厂家的SPICE文件设计仿真器件。元器件涉及数字电路和模拟电路、交流电路和直流电路等多多种类型。具有模拟电路仿真、数字电路仿真、单片机及其外围电路仿真功能。

Proteus提供多种激励源,丰富的虚拟仪器,生动的仿真显示,提供了实验室无法相比的元器件库,提供了修改电路设计的灵活性、提供了实体实验室在数量、质量上难以相比的虚拟仪器、仪表,主要还能支持第三方的软件编译和调试环境,因此我们选用Proteus来仿真。我们可以在该软件下很快的绘制出我们的电路原理图,进而在该原理图下可以自己进行较简单的模拟仿真,最后可以联调显示模拟调试的功能。

6.2 Keil c51 软件的简介

Keil c51是单片机应用系统开发中使用最多的一种开发工具,它功能强大、简单易用,特别适合初学者。Keil uVision4 是美国Keil Software公司出品的51系列单片机C语言集成开发系统,与汇编语言相比,C语言在功能上,结构性、可读性、可维护性上有明显的优势,因而易学易用并且容易掌握。此开发系统提供了丰富的库函数和功能

- 26 -

强大的集成开发调试工具,另外重要的一点是它生成目标代码效率非常高,多数语句生成的汇编代码很紧凑,容易理解。 Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。下面详细介绍Keil C51开发系统各部分功能和使用。

6.2.1 Keil C51单片机软件开发系统的整体结构

C51工具包的整体结构,uVision与Ishell分别是C51 for Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。

Keil uvision3是一套在windows环境下,8051单芯片整合开发的借口软件,它具备完善的项目管理系统,提供编辑器以编写程序及说明文件,可以协助编写,翻译,除错和测试嵌入式系统程序。

6.2.3 Keil C51的开发过程

(1)新建或开发项目。新建立的项目必须设定Target的Device,即选用芯片的公司和型号。

(2)在项目中加入程序文件。项目内的程序文件来源有两种方式,一种是将已经存在的程序文件直接加入项目中;另一种是选择File菜单中的New指令,建立一个新的新档案。档案的附属名称使用“*.c”若使用A51编译器,档案的附属名称使用“*.a” (3)编译、修改程序。已加入项目的文件,可以直接在项目窗口中双击该程序的文件名,即可开启该档案的程序编译窗口。若未加入项目的程序文件,执行File/Open菜单指令,加载程序编辑窗口,进行编辑与修改。 (4)编译与链接。

(5)调试与在线仿真。经过编译之后,则会出现一些信息的提示比如说一些警告和错误提示,可以根据程序的标注中的提示然后进行主次修改,直到没有任

- 27 -

何出错信息,然后可以和proteus联调进行仿真。

6.3直流电机调速功能仿真

调速的过程中当按下某一按键时,则电机开始工作,若需要加速则按下加速键,电机加速;相反减速时按下减速键电机减速直到转速变为需要的转速为止。也可以分别按下两个转向键使之分别实现电机的正转和反转,以达到改变电机转向的目的。当需要电机急停时按下停止键方可使电机停止运行。

6.4 电机速度的测量并显示功能仿真

对电机转速的显示,为使用者提供了更为直观的界面,用户可以根据液晶显示屏上的数字,调整电机的转速,为调速提供方便。同时从显示数字的稳定程度也可以判断电机转速的稳定性,若显示数字几乎不变,则说明电机工作十分稳定;反之,显示数字不停的变化,则说明电机工作非常不稳定。

图6-2 直流电机调速系统的Proteus图

调速前的正转波形图

- 28 -

图6-3 电机正转是的脉冲波形占空比图

调速后的波形图

图6-4电机减速后的脉冲波形占空比图

6.5软件调试的方法

软件设计完成后要进行软件调试。软件调试的任务是通过对系统进行应用程序的汇编、连接、执行来发现程序中的语法以及逻辑错误,并加以修改。对于大多数程序的运行依赖于硬件,因此,应用程序必须在联机状态下进行仿真调试。

(1)先单步、断点,后连续。通过单步运行可以准确的观察出程序中的每条指令执行情况,从而确定是硬件错误、数据错误还是程序设计错误。对于较长的程序,采用但单步运行比较麻烦,可以根据需要将大的程序分为多个程序段,在每段的结束处设置断点,利用断点调试。这样,当程序运行到断点处停止,提供该程序段运行的结果。若产生错误,再对错误的程序进行单步调试,以确定错误所在。单步调试完成后,就可以把多个模块一起调试,可以准确并快速的查找出错误所在原因。

(2)先独立,后联合。在软件设计中,一般都采用模块化结构设计。因此,可将各个软件模块独立仿真调试。当各个程序模块都调试成功后,再将所用模块连接起来进行联调,以解决在程序模块连接中可能出现的逻辑错误。在这种调试方式的优点是,各程序模块在独立调试的过程中排除了内部语法错误和逻辑错误,在系统联机调试时的错误

- 29 -

将大大减少,调试的成功性大大提高,而系统的硬件错误在系统联调时也容易发现和排除。

综合调试:软硬件完成后,还要进行综合调试。对于单片机应用系统而言,大多数程序模块的运行都依赖于硬件,没有相应的硬件支持,软件也将无法实现其功能。

- 30 -

第七章 个人总结

这是大学最后一次,也是我们这四年来对所学的知识和动手能力共同积累的一个检

验,我们需要在大四充分的安排我们的时间来完成毕业设计,并且做好进入社会的过渡。在本次选题的过程中我选择了单片机的软件设计方面的毕业设计,单片机的功能是十分强大的,同时也是非常值得我们研究的,无论在学校的继续学习深造还是即将走上工作岗位,从程序的编写以及单片机内部资源的合理利用,比如电源、晶振、复位、最重要的I/O口的充分利用到整个系统的整合都需要引起我们的高度重视。

我们一个从事软件设计,一个做硬件设计来设计基于单片机的电机调速,起初我们就很认真的开始写开题报告并且将自己做毕设的时间合理的规划好。我们主要是通过L298N来驱动电机的运转,从而使电机呈现出正转、反转、加速、减速等功能其中还有一些辅助设计如电流保护、测速、显示、闭环调速等。整个设计都是基于我们付出了一番努力,首先整理资料,然后开始绘制简单的驱动电路,进而不断地仿真调试,最终使电机能够平稳的实现其调速的功能。

- 31 -

参考文献

[1] 柴钰. 单片机原理及应用[M]. 西安:西安电子科技大学出版社,2009.

[2] 唐继贤.51单片机应用系统开发实例精解[M].上海:上海科学技术出版社,2012. [3]常喜茂,孔英会,付小宁.C51基础与应用实例[M].北京:电子工业出版社,2009 [4]皮大能,南广群,刘金华.单片机课程设计指导书[M].北京:北京理工大学出版社,2010

[5]杨欣,王玉凤,张延强.51单片机应用实例详解[M].北京:清华大学出版社,2010 [6] 李全利,迟荣强. 单片机原理及接口技术[M]. 北京:高等教育出版社,2004. [7] 余永权. ATMEL 89系列单片机应用技术[M]. 北京:北京航空航天大学出版社,2002.

[8] 胡汉才. 单片机原理及系统设计[M]. 北京:清华大学出版社,2002.

[9]谢维成,杨加国.单片机原理与应用及C51程序设计[M].北京:清华大学出版社,2009 [10]唐颖.单片机原理应用C51程序设计[].北京:北京大学出版社,2008

[11]马斌,韩忠华,王长涛,夏兴华.单片机原理及应用[M]:C语言程序设计与实现[M]-北京:人民邮电出版社,2009

[12]李玮,赵江,刘建业.一种实用的单片机控制的数字式调速系统。

[ 13] 浦龙梅, 李私. 单片机控制的直流PWM 调速装置的研究[ J] . 变频器世界, 2006, ( 03): 48) 51.

[ 14]王志良. 电力电子新器件及其应用技术[M ].北京:工业出版社, 1995.

[15]何涛.数字式电机调速系统的设计与分析[D].西安交通大学硕士学位论文,2002 [16]王立红.基于单片机的直流电机控制系统设计[J].知识与经济,2011 [17]邸春芳.车载MP3的系统设计[D].西南石油大学硕士学位论文,2006

- 32 -

附 录 一

参考程序清单

主程序清单:

#include

unsigned int HigCount = 0xFF00; unsigned int LowCount = 0xFA00; unsigned int SpeedCount = 0; unsigned int DisplayCount = 0; float FI;

unsigned int NI; int FLAG_DIS = 0;

unsigned char ID7,ID6,ID5,ID4,ID3,ID2,ID1,ID0,ID; //unsigned char ID;

void Inittimer(void) //定时器初始化 {

TMOD = 0X11; //两个定时器都是方式1 EA = 1; ET0 = 1; ET1 = 1; TR0 = 0; TR1 = 0; IT0 = 1; //外部中断是脉冲触发方式的 }

void time0_int(void) interrupt 1 using 3 //TIMER0_ISR {

TR0=0; //停定时器0 ENB = 1;

TH1 = HigCount/256; TL1 = HigCount%6; TR1=1; //开定时器1 DisplayCount++; //测速计数的变量 if(DisplayCount>=0x1F4) { EX0 = 0; TR1 = 0; START = 0; START = 1;

- 33 -

START = 0; while(EOC==1){} //AD转换的输出高组态 while(EOC==0){} // AD转换结束 ChuLi(); SpeedCount = SpeedCount * 120; if(FLAG_DIS ==0) displaydata_SP(); SpeedCount = 0; DisplayCount = 0; EX0 = 1; TR1 = 1; } }

void time1_int(void) interrupt 3 using 3 {

TR1=0; ENB = 0; TH0 = LowCount/256; TL0 = LowCount%6; TR0=1; }

void INT0_ISR(void) interrupt 0 using 3 { SpeedCount++; }

void ChuLi(void) { OE = 1; delay(1); ID7 = P0<<7 & 0x80; ID6 = P0<<5 & 0x40; ID5 = P0<<3 & 0x20; ID4 = P0<<1 & 0x10; ID3 = P0>>1 & 0x08; ID2 = P0>>3 & 0x04; ID1 = P0>>5 & 0x02; ID0 = P0_7;

//TIMER1_ISR //INT0_ISR - 34 -

ID = ID7|ID6|ID5|ID4|ID3|ID2|ID1|ID0; //将模数转换出来的值变成一个8位数 FI = ID * 4.78; //转换求出所求的电压 NI = FI; OE = 0; P0 = 0XFF; displaydata_I(); if(NI<100||NI>210) P1_2=1; }

void main(void) {

ENB = 0; OE = 0; Inittimer(); inputcom(0x80); displaychar(\ while(1) { if(P1_0==0) { delay(500); ZhengZ(); } if(P1_1==0) { delay(500); FanZ(); } if(P1_3==0) { delay(500); SpeedUp(); } if(P1_5==0) { delay(500); SlowDown(); }

- 35 -

if(P1_7==0) { delay(500); STOP(); } } }

驱动程序清单:

#include extern speed; extern HigCount; extern LowCount; extern FLAG_DIS;

void ZhengZ(void) {

IN3 = 0; IN4 = 1; EX0 = 1; FLAG_DIS = 0; init1602() ; inputcom(0x80); displaychar(\ }

void FanZ(void) {

IN3 = 1; IN4 = 0; EX0 = 1; FLAG_DIS = 0; init1602(); inputcom(0x80); displaychar(\ }

void STOP(void) {

IN3 = 1; IN4 = 1;

//正转处理 \//反转处理 \//急停 - 36 -

本文来源:https://www.bwwdw.com/article/izhg.html

Top