直流电机调速系统的设计

毕业论文(设计)

系部名称: 信息工程系 专业班级: 电气071班 学生姓名: 李义洒 学 号: [1**********]8 指导教师: 梁 芬

教师职称:

2011年05月20日

摘 要

本文主要研究了利用MCS-51系列单片机控制PWM 信号从而实现对直流电机转速进行控制的方法。文章中采用了单片机定时器的PWM 信号的发生系统,并且对PWM 信号的原理、产生方法以及如何通过软件编程对PWM 信号占空比进行调节,从而控制其输入信号波形等均作了详细的阐述。此外,文中还采用了H 桥驱动电路作为直流电机正反转调速功率放大电路的驱动模块,并且把它与延时电路相结合完成了在主电路中对直流电机的控制。另外,本系统中使用了霍尔传感器对直流电机的转速进行测量,经过放大电路后,将脉冲输入到单片机,从而实现了对直流电机速度的测试。在软件方面,初始化程序等的编写思路和具体的程序实现。

关键字:PWM 信号,霍尔测速,M/T法测速

The Design of Direct Current Motor speed Regulation

System

Abstract

This article mainly introduces the method to generate the PWM signal by using MCS-51 single-chip computer to control the speed of a D.C. motor. It also clarifies the principles of PWM and the way to adjust the duty cycle of PWM signal. In addition, H bridge driving circuit has been used as an actuating device of the power amplifier circuit which controls the speed of rotation of D.C. motor. What’s more, hall effect sensor is used in this system to measure the speed of D.C. motor. The result of the measurement is sent to the amplify circuit of sensors, and finally the pulse signal is stored in the single-chip computer. As for the software, this article introduces in detail the idea of the programming and how to make it.

Keywords :PWM Signal Hall effect sensor M/T method Speed Measurement

`

目 录

1 引言 .................................................................... 1

1.1 开发背景 ........................................................... 1

1.2 选题的目的和意义 ................................................... 1

1.3 研究方法 ........................................................... 2

2直流电机调速原理 ......................................................... 3

2.1 电枢电路中接入调速电阻 ............................................. 3

2.2 调节电枢电压来调速 ................................................. 3

2.2.1他励电动机 ....................................................... 3

2.2.2 串励电动机 . ...................................................... 4

2.3 调节励磁电流来调速 ................................................. 4

3硬件电路设计 ............................................................. 4

3.1 总体硬件电路设计 ................................................... 4

3.2 8051单片机简介 .................................................... 4

3.3 LCD1602液晶显示器 ................................................. 5

3.4 功率放大驱动电路的设计 ............................................. 7

3.4.1 H桥驱动电路特点 ................................................. 7

3.4.2 H桥驱动电路的设计 ............................................... 9

3.5 电源电路的设计 .................................................... 10

3.5.1 芯片介绍 . ....................................................... 10

3.5.2电源电路的设计 .................................................. 11

3.6 测速电路的设计 .................................................... 12

3.6.1脉冲信号的获得 .................................................. 12

3.6.2硬件电路的设计 .................................................. 13

3.6.3 数据处理 . ....................................................... 13

4系统软件部分设计 ........................................................ 15

4.1 主程序设计 ........................................................ 15

4.2 定时器中断程序设计 ................................................ 15

4.3 PWM的基本原理及程序设计 .......................................... 16

4.3.1 PWM的基本原理 .................................................. 16

4.3.2 PWM信号发生程序设计思路 ........................................ 17

5系统仿真与调试 .......................................................... 18

5.1 系统仿真 .......................................................... 18

5.2 软硬件调速 ........................................................ 18

5.2.1软件程序调试 .................................................... 18

5.2.2 程序在硬件上的调试 . ............................................. 19

结 论 ................................................................... 20

致 谢 ................................................................... 22

参考文献 ................................................................. 23

附录1 .................................................................... 24

附录2 .................................................................... 25

1 引言

1.1 开发背景

现代工业生产中,电动机是主要的驱动设备,目前在直流电动机拖动系统中已大量采用晶闸管(即可控硅) 装置向电动机供电的KZ —D 拖动系统,取代了笨重的发电动一电动机的F —D 系统,又伴随着电子技术的高度发展,促使直流电机调速逐步从模拟化向数字化转变,特别是单片机技术的应用,使直流电机调速技术又进入到一个新的阶段,智能化、高可靠性已成为它发展的趋势。直流电机调速基本原理是比较简单的(相对于交流电机),只要改变电机的电压就可以改变转速了[1]。改变电压的方法很多,最常见的一种PWM 脉宽调制,调节电机的输入占空比就可以控制电机的平均电压,控制转速。

PWM 控制的基本原理很早就已经提出,但是受电力电子器件发展水平的制约,在上世纪80年代以前一直未能实现。直到进入上世纪80年代,随着全控型电力电子器件的出现和迅速发展,PWM 控制技术才真正得到应用。随着电力电子技术、微电子技术和自动控制技术的发展以及各种新的理论方法,如现代控制理论、非线性系统控制思想的应用,PWM 控制技术获得了空前的发展,到目前为止,已经出现了多种PWM 控制技术。

1.2 选题的目的和意义

直流电动机具有良好的起动、制动性能,宜于在大范围内平滑调速,在许多需要调速或快速正反向的电力拖动领域中得到了广泛的应用。从控制的角度来看,直流调速还是交流拖动系统的基础。早期直流电动机的控制均以模拟电路为基础,采用运算放大器、非线性集成电路以及少量的数字电路组成,控制系统的硬件部分非常复杂,功能单一,而且系统非常不灵活、调试困难,阻碍了直流电动机控制技术的发展和应用范围的推广。随着单片机技术的日新月异,使得许多控制功能及算法可以采用软件技术来完成,为直流电动机的控制提供了更大的灵活性,并使系统能达到更高的性能[2]。采用单片机构成控制系统,可以节约人力资源和降低系统成本,从而有效的提高工作效率。

传统的控制系统采用模拟元件,虽在一定程度上满足了生产要求,但是因为元件容易老化和在使用中易受外界干扰影响,并且线路复杂、通用性差,控制效果受到器件性能、温度等因素的影响,故系统的运行可靠性及准确性得不到保证,甚至出现事故。

目前,直流电动机调速系统数字化已经走向实用化,伴随着电子技术的高度发展,促使直流电机调速逐步从模拟化向数字化转变,特别是单片机技术的应用,使直流电机调速技术又进入到一个新的阶段,智能化、高可靠性已成为它发展的趋势。

1.3 研究方法

本文主要研究了利用MCS-51系列单片机,通过PWM 方式控制直流电机调速的方法。PWM 控制技术以其控制简单、灵活和动态响应好的优点而成为电力电子技术最广泛应用的控制方式,也是人们研究的热点。由于当今科学技术的发展已经没有了学科之间的界限,结合现代控制理论思想或实现无谐振软开关技术将会成为PWM 控制技术发展的主要方向之一[3]。

本文就是利用这种控制方式来改变电压的占空比实现直流电机速度的控制。文章中采用了专门的芯片组成了PWM 信号的发生系统,然后通过放大来驱动电机。利用直流测速发电机测得电机速度,经过滤波电路得到直流电压信号,把电压信号输入给A/D转换芯片最后反馈给单片机,在内部进行PI 运算,输出控制量完成闭环控制,实现电机的调速控制。

2直流电机调速原理

电动机是用以驱动生产机械的,根据负载的需要,常常希望电动机的转速能在一定或宽广的范围内进行调节,且调节的方法要简单经济。直流电动机在这些方面有其独到的优点。

从直流电机的转速公式[4]

U -I a R a

C e Φn =

可知,调速方法有两种:

(1) 电枢控制,即用调节电枢电压或者在电枢电路中接入调速电阻来调速。

(2) 磁场控制,即用调节励磁电流来调速。

2.1 电枢电路中接入调速电阻

电枢电路接入调速电阻R Ω后,有公式

U

C e ΦR a C T C e Φ2n = -T e

可知其机械特性将随之增大,它和负载特性

T L +T0的交点将逐步下移,于是电动机的转速

将下降。

这种调速方法虽说简单易行,但是串入

电阻后电枢的铜耗增大,电动机的效率要降

低,气机械特性要变软,负载变动时产生较

大的变化。 图2-1 串入电阻后的机械特性曲线R 2>R1

2.2 调节电枢电压来调速

2.2.1他励电动机

电机的电枢需要由专用的直流电源

(多采用可控整流电源)单独供电励磁则

由另一电源他励,从机械特性表达式和右

图可知提高或降低电枢端电压U (主磁通

Φ保持不变),电动机的机械特性将平行

的上升或下降,使电动机的转速相应地上

升或下降。

2.2.2 串励电动机

串励电动机也可以通过改变电枢电压来

调速,如图表示电枢电压分别是U1和U2

(U1>U2)时串励电动机的机械特性和负载

特性。从图中可以看出提高电枢电压可以提

高速度。

2.3 调节励磁电流来调速

图2-3 改变电枢端电压时串励电

动机的机械特性(U 1>U2)

从转速公式中可知可以看出减小励磁电流时。气隙磁通量Φ将减少,电动机转速将升高。从不同励磁电流时他励或并励电动机的机械

特性曲线中也可以看出。

这种方法所用的设备简单,调节也方便切效

率高。但是随着转速和电枢电流的增加,电机温

升升高,换向变坏,转速过高时会出现不稳定的现象。

本系统的设计就行利用PWM 脉宽调制技术改

变电压占空比来改变平均电枢电压来调速的。 图2-4不同励磁电流时,他励(并励)电动机的机械特性曲线(I 1>I2)

3硬件电路设计

3.1 总体硬件电路设计

本系统采用89C51

控制输出数据,由

单片机定时器直接产生PWM 信号,送到

直流电机,直流电机通过霍尔传感器测

速电路,将脉冲重新送回单片机,从而

实现对电机速度和转向的控制,达到直

流电机调速的目的。[5]

3.2 8051单片机简介

1.8051单片机的基本组成

8051单片机由CPU 和8个部件组成,它们都通过片内单一总线连接,其基本结构依然是通用CPU 加上外围芯片的结构模式,

但在功能单元的控制上采用了特殊功能寄存器的集中控制方法。其基本组成如下图所示:

[6]

2.CPU 及部分部件的作用功能介绍如下

中央处理器CPU :它是单片机的核心,完成运算和控制功能。

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

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

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

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

3.3 LCD1602液晶显示器

1.LCD1602液晶显示

器基本介绍

LCD1602液晶模块是

一种用5x7点阵图形来

显示字符的液晶显示器,

能够同时显示16x02即

32个字符,(16列2行)。

液晶显示器以其微功耗、

体积小、显示内容丰富、

超薄轻巧的诸多优点,在袖珍式仪表和低功耗应用系统中得到越来越广泛的应用。

[7]

5. 寄存器选择控制表

3.4 功率放大驱动电路的设计

功率放大驱动电路有多种,也可以直接用芯片其中较常用的芯片有IR2110和EXB841,为了有较高的性价比,且对于直流电机调速使用起来更加简便[8],因此该驱动电路使用了H 桥放大电路驱动,并且使得该集成电路具有较强的驱动能力和保护功能,且能控制电机的旋转方向。

3.4.1 H桥驱动电路特点

电路得名于“H桥式驱动电路”是因为它的形状酷似字母H 。4个三极管组成H 的4条垂直腿,而电机就是H 中的横杠。H 桥电路的“H”的意思是它实际电路在电路图上是一个字幕H 的样式。如下图:

H 桥是如何控制电机的呢, 举个例子:你手里拿着一节电池,用导线将马达和电池两端对接,马达就转动了;然后如果你把电池极性反过来会怎么样呢?没有错,马达也反着转了。

如图:

当Q1

和Q4导通

时电流从左

上方流过电

机流向右下

方,电机的

旋转方向认

图3-5电机正转

图3-6 电机反转

为正转的话;当Q2和Q3同时导通时电流从右向上方流过电机流向左下方,电机反转。

注意:千万不能将同一侧的两个三极管同时导通,否则会烧坏电路。

如果你将两个高位电路或者两个低位电路同时接通,你的马达会自动制动。这是因为当没有电源供给时,马达在自由转动的情况下是处于发电状态,同位的电路接通,相当于将马达的两端“短接”,那么马达会因为短路而相当与接了一个无限大功率的电炉即一个很大的负载,所以马达就会产生“电”制动;当你把马达两端悬空后,它就恢复自由了。

为了以避免马达的反电动势的危害,我们仍然需要在晶体管两端接二极管,因为马达线圈在电路开闭瞬间产生的反向电动势通过会高过电源,这样对晶体管和电路会有很大的影响甚至烧毁零件。如图在两端接入二极管后

图3-7 加入二极管的H 桥

半导体晶体管本身有导通电阻,在通过大电流时会明显发热,如果没有散热措施会很容易烧毁。这样就会限制电路功率的增加。

Mosfets (金属氧化物半导体场效应晶体管),这里简称MOS 管,由于结构和原理的不同,导通电阻远比普通三极管低,允许流过更大的电流。而且MOS 管都内置有反向二极管来保护管子本身。所以采用MOS 管连接H 桥不但效率可以提高,电路也可以简化。

使用MOS 管搭建H 桥,高位电路要用P 沟道管;低位要用N 沟道管。因为N 沟道管比P 沟道管便宜的多,所以有人用N 沟道管在高位,加上削波电路来抑制反电动势。

应用H 桥的关键是四个电路开闭状态的准确。一旦在电源和地之间出现通路,毫无

疑问会立刻产生短路,让你的晶体管变成一枚小炸弹。下面我们介绍一些H 桥的集成电路,这样我们可以更容易更安全的使用H 桥。

常用H 桥集成电路

L293内置两个H 桥,每个桥提供1A 的额定工作电流,和最大2A 的峰值电流。它能驱动的马达一般是不超过35毫米照片胶卷筒大小。

L298内置两个H 桥,每个桥提供1A 的额定工作电流,和最大3A 的峰值电流。它能驱动的马达不超过可乐罐大小。

LMD18200内置1个H 桥,工作电流2~3A,峰值电流6A 。它驱动可乐罐大小的马达。

3.4.2 H桥驱动电路的设计

如下图

:

左端两个输入接单片机输入PWM 脉冲波控制H 桥三极管的导通截止,PWM 脉冲由单片机P2.6、P2.7两个端口输出,其中由程序设定同时只有一个端口输出PWM 脉冲波来控制电机的转动方向[9]。

当PWM1为脉冲波时,PWM2为低电平,三极管Q2为截止状态,经上拉电源H 桥右端高电平,右上方三极管导通,右下方三极管截止,当PWM1为高电平时Q1导通,H 桥左端接地为低电平,左上方三极管截止,左下方三极管导通,电机有电流经左上右下流过,电机旋转,当PWM1为低电平时Q1截止,H 桥左端为高电平,左上方三极管导通,左下方三极管截止,由于电机中储存能量,电机通过左上右下二极管放电续流,等下一个PWM

脉冲周期供电。反之当PWM2为PWM 脉冲波时,电机中有从左向右的电流,电机反转。

3.5 电源电路的设计

稳压电源的分类方法繁多,按输出电源的类型分有直流稳压电源和交流稳压电源;按稳压电路与负载的连接方式分有串联稳压电源和并联稳压电源;按调整管的工作状态分有线性稳压电源和开关稳压电源;按电路类型分有简单稳压电源和反馈型稳压电源。

稳压电源电路分为线性稳压电源,集成稳压电源,晶体管稳压电源,交流稳压电源。本文介绍的是使用三端稳压集成电路78××线性稳压电源

3.5.1 芯片介绍

7805三端稳压集成电路lm7805。电子产品中,常见

的三端稳压集成电路有正电压输出的lm78 ×× 系列和

负电压输出的lm79××系列。顾名思义,三端IC 是指这

种稳压用的集成电路,只有三条引脚输出,分别是输入端、

接地端和输出端。它的样子象是普通的三极管,TO- 220

的标准封装,也有lm9013样子的TO-92封装。用78/79

系列三端稳压IC 来组成稳压电源所需的外围元件极少,

电路内部还有过流、过热及调整管的保护电路,使用起来

可靠、方便,而且价格便宜。该系列集成稳压IC 型号中

的78或79后面的数字代表该三端集成稳压电路的输出电

压,如7806表示输出电压为正6V ,7909表示输出电压为

负9V ,因为三端固定集成稳压电路的使用方便,电子制

作中经常采用[10]。

图3-9 7805实物图

在实际应用中,应在三端集成稳压电路上安装足够大的散热器(当然小功率的条件下不用)。当稳压管温度过高时,稳压性能将变差,甚至损坏。当制作中需要一个能输出

1.5A 以上电流的稳压电源,通常采用几块三端稳压电路并联起来,使其最大输出电流为N 个1.5A ,但应用时需注意:并联使用的集成稳压电路应采用同一厂家、同一批号的产品,以保证参数的一致。另外在输出电流上留有一定的余量,以避免个别集成稳压电路失效时导致其他电路的连锁烧毁。

在78 ** 、79 ** 系列三端稳压器中最常应用的是TO-220 和TO-202 两种封装。这两种封装的图形以及引脚序号、引脚功能如附图所示。

从正面看①②③引脚从左向右按顺序标注,接入

电路时①脚电压高于②脚,③脚为输出位。如对于78**正

压系列,①脚高电位,②脚接地,;对与79**负压系列,

①脚接地,②脚接负电压,输出都是③脚。如附图所示。

此外,还应注意,散热片总是和接地脚相连。这

样在78**系列中,散热片和②脚连接,而在79**系列中,

散热片却和①脚连接。 图3-10引脚图

7805典型应用电路图:78XX系列集成稳压器的典型应用电路如下图所示,这是一个输出正5V 直流电压的稳压电源电路。IC 采用集成稳压器7805,C1、C2分别为输入端和输出端滤波电容,RL 为负载电阻。当输出电流较大时,7805应配上散热板。

3.5.2电源电路的设计

电路图:

图3-13 电源电路的设计

由于电路中需要两个电压:12V 和5V ,电源中用了7812和7805两个三端集成稳压块,先用变压器220V~12V将输出12V 交流电,经过整流二极管全波整流,滤波后通过7812输出12V 稳压直流电,再通过7805转化为5V 直流电。

图中D5、D6在电路中气保护作用,为了电路的稳定工作,在一般情况下,还需要接二极管作为保护电路,防止电路中的电容放电时的高压把集成稳压器烧坏。

3.6 测速电路的设计

测速是工农业生产中经常遇到的问题,学会使用单片机技术设计测速仪表具有很重要的意义。要测速,首先要解决是采样的问题。在使用模拟技术制作测速表时,常用测速发电机的方法,即将测速发电机的转轴与待测轴相连,测速发电机的电压高低反映了转速的高低。使用单片机进行测速,可以使用简单的脉冲计数法。只要转轴每旋转一周,产生一个或固定的多个脉冲,并将脉冲送入单片机中进行计数,即可获得转速的信息。

本文用3144设计信号获取电路,通过电压比较器实现计数脉冲的输出,既可在单片机实验箱进行转速测量,也可直接将输出接到频率计或脉冲计数器,得到单位时间内的脉冲数,进行换算即可得电机转速。

3.6.1脉冲信号的获得

霍尔传感器是对磁敏感的传感元件,常用于开

关信号采集的有CS3020、CS3040、OH3144等,这种

传感器是一个3端器件,外形与三极管相似,只要

接上电源、地,即可工作,输出通常是集电极开路

(OC )门输出,工作电压范围宽,使用非常方便。

如图1所示是CS3144的外形图,将有字面对准自己,

三根引脚从左向右分别是Vcc ,地,输出。 使用霍尔传感器获得脉冲信号,其机械结构也可以做得较为简单,只要在转轴的圆周上粘上一粒磁钢,让霍尔开关靠近磁钢,就有信号输出,转轴旋转时,就会不断地产生脉冲信号输出[11]。如果在圆周上粘上多粒磁钢,可以实现旋转一周,获得多个脉冲输出。在粘磁钢时要注意,霍尔传感器对磁场方向敏感,粘之前可以先手动接近一下传感器,如果没有信号输出,可以换一个方向再试。这种传感器不怕灰尘、油污,在工业现场应用广泛。

3.6.2硬件电路的设计

图3-15 霍尔脉冲隔离 霍尔传感器通过感应电机轴上的电磁铁磁场变化产生一个输出电压,一满足后续电路的触发信号,触发信号通过差分放大器和反相器产生一个满足单片机输入脉冲的方波信号,由于霍尔传感器输出的电压信号高电平在电源电压(11--12)V 之间,低电平在0V 左右,这个信号的电压值不符合单片机的借口要求,可以利用哟个三极管整形电路处理电压信号,使其满足单片机的接受要求,当三极管的输入为“1”时,三极管的发射极、集电极都正偏,三极管处于饱和状态,气输出约为“0”; 当三极管的输入为0时,三极管的发射极反偏,三极管处于截止状态,气输出电压约为+5V这样经过处理产生的方波即可满足单片机的要求。

3.6.3 数据处理

速度检测一般有三种方法:M 法测速、T 法测速、M/T法测速。

1.M 法测速:是在规定时间T c 内[12],对位置脉冲信号是个数m 1进行计数,从而得到

转速的测量值, n =60m 1

P N T c

P N 是每个位置周期所含有的信号脉冲数,适用于高速运行时的测速,低速时精度较低

2.T 法测速:测出相邻两个位置信号的间隔时间来计算转速的一种方法,而时间的测量是借助计数器对已知频率的时钟脉冲计数实现的,设时钟频率f ,两个位置脉冲间的时钟脉冲个数为m 2, 则电机转子位置脉冲信号的周期T 为

m 2f 60Tp N T = n = = 60f p N m 2

P N 是每个位置周期所含有的信号脉冲数,适用于低速运行时的测速,高速时每个位置周期的时钟脉冲数m 2小,测得的精度较低

3.M/T法综合了以上两种方法的优点,既可在低速段可靠的测速,又在高速段具备较高的分辨能力,因此在较宽的转速范围内都有很好的检测精度。即在稍大于规定时间T c 的某一时间T d 内,分别对位置信号的脉冲个数m 1和高频时钟脉冲个数m 2进行计数。于是:n = 60m 1f

p N m 2

由于调速关系本文采用M/T法测速以使测速的准确性,即在

所转的转数,

n = 60m1

其中f = 100,m 2 = 100,PN = 1

100个PWM 周期内电机

4系统软件部分设计

软件由1个主程序和1个定时器中断程序,1个外部中断计数程序组成。

4.1 主程序设计

主程序是一个循环程序,其主要思路是,先设定好占空比初始值,出控制系数给PWM 发生电路改变波形的占空比,进而控制电机的转速。其程序流程图如图所示。软件由1个主程序和1个定时器中断程序,1个外部中断计数程序组成。主程序是一个循环程序,其主要思路是由单片机P0口进行键盘扫描,根据按键输入信息选择进行操作的函数,进行控制电机。

4.2 定时器中断程序设计 1程序思路:定时器程序通过选择判断来输出PWM 脉冲波的高低电平,其中两个参数cycle 、PWM_ON分别控制PWM 脉冲波的周期和高电平的占空比。同时通过计数处理输出速度。

2. 中断程序流程图

图4-2 定时器中断流程图

4.3 PWM 的基本原理及程序设计

4.3.1 PWM的基本原理

PWM (脉冲宽度调制)是通过控制固定电压的直流电源开关频率,改变负载两端的电压,从而达到控制要求的一种电压调整方法。PWM 可以应用在许多方面,比如:电机调速、温度控制、压力控制等等。

在PWM 驱动控制的调整系统中,按一个固定的频率来接通和断开电源,并且根据需要改变一个周期内“接通”和“断开”时间的长短。通过改变直流电机电枢上电压的“占空比”来达到改变平均电压大小的目的,从而来控制电动机的转速[13]。也正因为如此,PWM 又被称为“开关驱动装置”。如图2-8所示:

设电机始终接通电源时,电机转速最大为Vmax ,设占空比为D= t1 / T,则电机的平均速度为Va = Vmax * D ,其中Va 指的是电机的平均速度;Vmax 是指电机在全通电时的最大速度;D = t1 / T是指占空比。

由上面的公式可见,当我们改变占空比D = t1 / T时,就可以得到不同的电机平均速度Vd ,从而达到调速的目的。严格来说,平均速度Vd 与占空比D 并非严格的线性关系,但是在一般的应用中,我们可以将其近似地看成是线性关系。

4.3.2 PWM信号发生程序设计思路

利用单片机内部定时器中断产生PWM 脉冲波,程序中通过两个参数控制占空比,根据中断次数控制输出高电平的占空比[14]。

cycle 和PWM_ON分别记录一个周期中断次数和高电平的中断次数

如下图:

这样就可以根据PWM_ON的值从1~100控制占空比

5系统仿真与调试

5.1 系统仿真

仿真软件选择Proteus ,在Proteus 中画出系统电路图,当程序在Keil C 中调试通过后,会生成以hex 为扩展名的文件,这就是使系统能够在Proeus 中成功进行仿真的文件。将些文件加载到单片机仿真系统中,验证是否能完成对直流电机的速度调节。若不成功,则重新回到软件调试步骤,进行软件调试。找出错误所在,更正后重新运行系统。硬件仿真电路的设计完全按照论文设计方案进行。在仿真的过程中也遇到了很多问题,比如元件选择、电路设计等,在元件选择方面,有的芯片是我以前学习的时候所没有遇到过的,所以在寻找和使用的过程中也遇到很多麻烦,但经过自己的努力,并借鉴从互联网上找到的资料,我逐渐掌握这些元件的使用方法和原理,为系统设计和仿真提供了良出的基础。另外,在进行仿真的时候,也经常出现程序没有错误了,但是仿真通不过的情况,这些大部分原因是在管脚定

义上,很多系统仿真的问题都出在这。

经过这段时间的努力,使我对仿真软

件以及系统设计电路有了更深一步的

认识,也为系统的成功奠定了基础。

如图是在protues 上的仿真结果,DUTYF 是占空比,图中显示的是50%,STEP

百分数,SPEED 是通过测速显示的速度大小,每秒计算并刷新一次。

5.2 软硬件调速

5.2.1软件程序调试

在程序编写的过程中,出现了很多问题,包括键盘扫描处理、PWM 信号发生程序的控制、以及单片机控制直流电机的转动方向等问题,虽然问题不是很大,但是也让我研究了好长时间,在解决这些问题的时候,我不断向老师和同学请教,希望能通过大家一块的努力把软件编写的更完整,让系统的功能更完备。经过多天的努力探索,也经过老师的指导,大部分问题都已经解决,就是程序还是不能实现应该实现的功能,这让我很着急。后来经过一点一点的调试,并认真总结,发现了问题其实在编写中断处理程序时出现了错误,修改后即可实现直流电机调速的目的。总结这次软件调试,让我认识到了做软件调试的基本方法与流程:

(1)认真检查源代码,看是否有文字或语法错误

(2)逐段子程序进行设计,找出错误出现的部分,重点排查

(3)找到合适的方法,仔细检查程序,分步调试直到运行成功

(4)改进程序算法,提高程序执行效率,减少出错可能性

5.2.2 程序在硬件上的调试

虽说在protues 上仿真时能正常运行了,硬件的制作完成后,结合硬件又发现了很多问题。

(1) 因为单片机的问题,使复位电路上的电容烧坏,单片机运行出错

(2) 因为程序算法问题,在电机转动时,出现停顿现象

(3) 按键问题

为了方便,硬件板与板这件用杜邦线相连

硬件实物图

(1)电源与驱动

(2)显示与键盘

(3)霍尔测速

结 论

本系统研制历时近半年,通过和老师、同学充分合作共同努力已完成并验收。在直流电机调速系统的设计中,完成的是硬件设计、制作及调试实验,同时完成软件设计方面的工作。在硬件设计中主要工作是:设计硬件的结构框图,完成硬件的设计。如电源电路、驱动电路、接收放大电路设计及制作。在选择构成系统电路的元器件时,应着重考虑其是否会影响系统的稳定性。在硬件的制作过程中,应尽量减小电源的波动对系统的影响。

受时间和经验限制,本系统有不足和需改进的地方:

1.更复杂的算法可以作研究尝试,但从实际效果考虑上,更好的办法可能是改进外围电路设计,本系统的外围电路设计还有很大的改善空间。

4.本系统只考虑了电机的速度控制的输出,没有反馈,没有考虑负载的情况,以后可以从系统反馈方面来考虑系统整体的设计。

致 谢

这次毕业设计,凝结了很多人的心血,在此我表示由衷的感谢。没有他们的帮助,我将无法顺利完成这次设计。

首先,我要特别感谢梁芬老师对我的悉心指导,在毕业设计期间梁老师指导我、帮助我收集文献资料,理清设计思路,完善操作方法,并对我所做的设计提出有效的改进方案。老师渊博的知识、严谨的作风、诲人不倦的态度和学术上精益求精的精神让我受益终生。作为一个本科生的毕业设计,由于经验的匮乏,难免有许多考虑不周全的地方,如果没有导师的督促指导,想要完成这个设计是难以想象的。因此,特别需要感谢曲培新老师给予的耐心细致的指导,在此,再一次向梁芬教师以及关心帮助我的教师同学表示最诚挚的谢意!

其次,学校在这方面也给我们提供了很大的支持和帮助,学校领导比较重视,每个设计小组配有专门的指导老师,帮助我们能顺利完成整个设计。对于学校和老师为我的毕业设计所提供的极大帮助和关心,在此我致以衷心的感谢!

最后,还要感谢同学四年来对我的关心与支持,感谢各位老师在学习期间对我的严格要求。同时也要感谢身边朋友的热心帮助,没有你们的关心与支持,我不可能这么快完成我的毕业设计!这几个月的岁月是我学生生涯中最有价值的一段时光,也将会成为我以后永远的美好的回忆,在这里有治学严谨而不失亲切的老师,也有互相帮助情同骨肉的同学,更有和谐、融洽的学习生活氛围,这里将是我永远向往的地方。借此论文之际,我想向所有人表达我的最诚挚的谢意,愿我们将来都越来越好。

参考文献

[1]张友德等,单片机原理应用与实验[M],复旦大学出版社1992.

[2]张毅刚,彭喜源,谭晓钧,曲春波.MCS -51单片机应用设计[M].哈尔滨工业大学出版社2001.1.

[3]宋庆环,才卫国,高志,89C51单片机在直流电动机调速系统中的应用[M]。唐山学院,

2008.4

[4]陈 锟 危立辉,基于单片机的直流电机调速器控制电路[J],中南民族大学学报(自

然科学版) ,2003.9.

[5]李维军 韩小刚 李 晋,基于单片机用软件实现直流电机PWM 调速系统[J],维普资讯,

2007.9

[6]曹巧媛. 单片机原理及应用[M].北京,电子工业出版社,1997.

[7]刘大茂,严飞. 单片机应用系统监控主程序的设计方法[J].福州大学学报(自然科学福

建农林大学硕士论文版) ,1998.2.

[9]朱定华,戴汝平编著. 单片机原理与应用[M].清华大学出版社北方交通大学出版社,2003.8.

[11]薛钧义 张彦斌编著. MCS—51/96系列单片微型计算[M].西安交通大学出版社,1997.8

[12]陈国呈 编著.PWM 逆变技术及应用[M].中国电力出版社.2007年7月

[13]马忠梅 等编著. 单片机的C 语言应用程序设计(第4版)[M],北京航天航空大学出版社.2007. 4

[14]刘昌华,易逵编著.8051单片机的C 语言应用程序设计与实践[M].国防工业出版社2007.9

系统设计总电路图

#include

#define uchar unsigned char

#define uint unsigned int

sbit lcden=P2^2;

sbit lcdrs=P2^0;

sbit xie=P2^1;

sbit forward=P2^6;

sbit reverse=P2^7;

bit flag=1,flag1=1;

uchar speed,m1=0,m2=0;

uchar tens,ones,hunds,step=9;

uchar code table[]={"DUTYF: %STEP: "};

uchar code table1[]={"SPEED: r/min "};

uchar code table2[]={"0123456789"};

uchar num=0;

uchar cycle=100;

uchar PWM_ON=50;

unsigned char const

dofly[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,

0x77,0x7c,0x39,0x5e,0x79,0x71};//0-F //输入数字用 /*******************延时程序***键盘扫描用***********************/ void delay1(uint i) //延时函数

{

}

/*------------------------------------------------

键盘扫描程序

------------------------------------------------*/

uchar keyscan(void) //键盘扫描函数,使用行列反转扫描法

{

while(i--);

uchar cord_h,cord_l;//行列值中间变量 P0=0x0f; //行线输出全为0 cord_h=P0&0x0f; //读入列线值 if(cord_h!=0x0f) //先检测有无按键按下 {

delay1(100); //去抖 if(cord_h!=0x0f) {

cord_h=P0&0x0f; //读入列线值 P0=cord_h|0xf0; //输出当前列线值 cord_l=P0&0xf0; //读入行线值

return(cord_h+cord_l);//键盘最后组合码 }

}

}return(0xff); //返回该值

/***********************正转反转调节函数***************************** void roll(flag) { }

if(flag) { } else { }

reverse=0;

forward=P2^7; reverse=P2^6; forward=P2^6; reverse=P2^7;

********************************************************************/ /***************延时程序液晶显************示器用********************/ void delay(uint z) { }

/************************************/

void write_com(uchar com)//根据写时序图写出指令程序 { }

void write_data(uchar date)//根据写时序图写出数据程序 { }

/********自定义写入数据************用于写入速度***************/ void write_speed() {

write_com(0x80+0x46);

uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--);

lcdrs=0; P1=com; delay(5); lcden=1; delay(5); lcden=0;

lcdrs=1; P1=date; delay(5); lcden=1; delay(5); lcden=0;

}

speed=speed%100; tens=speed/10; ones=speed%10;

write_data(table2[hunds]); delay(50);

write_data(table2[tens]); delay(50);

write_data(table2[ones]);

/*****************步长显示*******************************/

void write_step() { }

/*************占空比显示**********************************/ void write_duty() {

tens=PWM_ON/10; ones=PWM_ON%10;

write_data(table2[tens]); delay(50);

write_com(0X80+0x0e); tens=step/10; ones=step%10;

write_data(table2[tens]); delay(50);

write_data(table2[ones]);

write_com(0X80+0x06);

}

//write_digital(tens,ones);

/*****************步长输入************************************/ void change(int value) { }

/**********液晶显示器初始化*********************/ void init() { }

/***********定时器中断(开始)************************/ void InitTimer0(void) {

TMOD = 0x01;

//定时器1设置 10us in 12M crystal

if(flag1==1) { } else { }

flag1=!flag1;

//个位 十位 区分标志

step=step+value; //然后是个位 step=value*10;

//先输入十位

lcden=0; //使能端为低电平 write_com(0x38);//显示模式设置

write_com(0x0c);//开显示,显示光标,光标闪烁

write_com(0x06);//地址指针自动+1且光标+1,写字符屏幕不会移动 write_com(0X01);

write_com(0X80+0x00);//初始化指针在显示屏的第二个字符位置

//定时器中断

TH0 = 0x0FF; TL0 = 0x0CE;

//赋初值

EA = 1;

//总中断打开

ET0 = 1; TR0 = 1; }

//定时器中断打开 按开始键 开始计时 电机转动 //定时器开关打开

EX1=1; //外部中断1开

IT1=1; //外部中断1边沿触发,下降沿触发,IT1=0表示电平触发

/**************定时器设置函数(停止中断)*******************/ void InitTimer1(void) {

// TMOD = 0x01; // TH0 = 0x0FC; // TL0 = 0x18; EA = 0;

//总中断关闭

//定时器1设置 0.1ms in 12M crystal //赋初值 //定时器中断

ET0 = 0; TR0 = 1; }

forward=0; reverse=0;

//按停止键 定时器中断关闭 开始计时 电机转动 //定时器开关打开

void speeding(bit seed) {

if(seed==1&&PWM_ON+step

else if(seed==1&&PWM_ON+step>=100) {

PWM_ON=99;

PWM_ON=PWM_ON+step;

}

else if(seed==0&&PWM_ON>step) { }

else if(seed==0&&PWM_ON

PWM_ON=1;

PWM_ON=PWM_ON-step;

/*************主程序函数************************************/ void main() {

uchar key; xie=0; init();

for(num=0;num

//write_com(1);//清行

write_com(0x80+0x40);//换行 而且指针在屏幕外 for(num=0;num

for(num=0;num

write_data(table[num]); delay(50);

write_data(table1[num]); delay(50);

write_com(0x1f); //又与视频上的不同 1f是右移18是左移 这个地方也是自己

不断尝试出来的

} */ reverse=0; forward=0;

delay(50);

// InitTimer0(); 值

case 0x7d:flag=0;forward=0;break;//反转

case 0x7b:write_step();write_duty();InitTimer0();break;//开始 case 0x77:InitTimer1();break;//停止 case

while(1) {

key=keyscan(); //调用键盘扫描, switch(key) {

case 0x7e:flag=1;reverse=0;break;//正转 按下相应的键显示相对应的码

0xbe:change(3);write_step();while(key==0xbe)key=keyscan();break;//数字3

case

0xbd:change(6);write_step();while(key==0xbd)key=keyscan();break;//数字6

case

0xbb:change(9);write_step();while(key==0xbb)key=keyscan();break;//数字9

case

0xb7:speeding(0);write_duty();while(key==0xb7)key=keyscan();break;//减速

case

0xde:change(2);write_step();while(key==0xde)key=keyscan();break;//数字2

case

0xdd:change(5);write_step();while(key==0xdd)key=keyscan();break;//数字5

case

0xdb:change(8);write_step();while(key==0xdb)key=keyscan();break;//数字8

case

0xd7:speeding(1);write_duty();while(key==0xd7)key=keyscan();break;//加速

case

0xee:change(1);write_step();while(key==0xee)key=keyscan();break;//数字1

case

0xed:change(4);write_step();while(key==0xed)key=keyscan();break;//数字4

case

0xeb:change(7);write_step();while(key==0xeb)key=keyscan();break;//数字7

case

0xe7:change(0);write_step();while(key==0xe7)key=keyscan();break;//数字0 }

/************外部中断1 **************************/ void ISR_Key(void) interrupt 2 using 0 { }

/****************定时器中断1 *******************/ void Timer0Interrupt(void) interrupt 1 using 1 {

}

}

if(m2==100) { }

speed=60*m1; write_speed(); m1=0; m2=0;

m1++;

//add your code here! cycle++; if(flag) { if(cycle==PWM_ON) {

forward=0; // reverse=0;

}

else if(cycle==100) {

forward=1; // reverse=0; m2++; cycle=0; }

} else { if(cycle==PWM_ON) {

reverse=0; // forward=0;

}

else if(cycle==100) {

reverse=1; // forward=0; m2++;

cycle=0;

}

}

TH0 = 0x0FF; //赋初值

TL0 = 0x0CE; }

毕业论文(设计)

系部名称: 信息工程系 专业班级: 电气071班 学生姓名: 李义洒 学 号: [1**********]8 指导教师: 梁 芬

教师职称:

2011年05月20日

摘 要

本文主要研究了利用MCS-51系列单片机控制PWM 信号从而实现对直流电机转速进行控制的方法。文章中采用了单片机定时器的PWM 信号的发生系统,并且对PWM 信号的原理、产生方法以及如何通过软件编程对PWM 信号占空比进行调节,从而控制其输入信号波形等均作了详细的阐述。此外,文中还采用了H 桥驱动电路作为直流电机正反转调速功率放大电路的驱动模块,并且把它与延时电路相结合完成了在主电路中对直流电机的控制。另外,本系统中使用了霍尔传感器对直流电机的转速进行测量,经过放大电路后,将脉冲输入到单片机,从而实现了对直流电机速度的测试。在软件方面,初始化程序等的编写思路和具体的程序实现。

关键字:PWM 信号,霍尔测速,M/T法测速

The Design of Direct Current Motor speed Regulation

System

Abstract

This article mainly introduces the method to generate the PWM signal by using MCS-51 single-chip computer to control the speed of a D.C. motor. It also clarifies the principles of PWM and the way to adjust the duty cycle of PWM signal. In addition, H bridge driving circuit has been used as an actuating device of the power amplifier circuit which controls the speed of rotation of D.C. motor. What’s more, hall effect sensor is used in this system to measure the speed of D.C. motor. The result of the measurement is sent to the amplify circuit of sensors, and finally the pulse signal is stored in the single-chip computer. As for the software, this article introduces in detail the idea of the programming and how to make it.

Keywords :PWM Signal Hall effect sensor M/T method Speed Measurement

`

目 录

1 引言 .................................................................... 1

1.1 开发背景 ........................................................... 1

1.2 选题的目的和意义 ................................................... 1

1.3 研究方法 ........................................................... 2

2直流电机调速原理 ......................................................... 3

2.1 电枢电路中接入调速电阻 ............................................. 3

2.2 调节电枢电压来调速 ................................................. 3

2.2.1他励电动机 ....................................................... 3

2.2.2 串励电动机 . ...................................................... 4

2.3 调节励磁电流来调速 ................................................. 4

3硬件电路设计 ............................................................. 4

3.1 总体硬件电路设计 ................................................... 4

3.2 8051单片机简介 .................................................... 4

3.3 LCD1602液晶显示器 ................................................. 5

3.4 功率放大驱动电路的设计 ............................................. 7

3.4.1 H桥驱动电路特点 ................................................. 7

3.4.2 H桥驱动电路的设计 ............................................... 9

3.5 电源电路的设计 .................................................... 10

3.5.1 芯片介绍 . ....................................................... 10

3.5.2电源电路的设计 .................................................. 11

3.6 测速电路的设计 .................................................... 12

3.6.1脉冲信号的获得 .................................................. 12

3.6.2硬件电路的设计 .................................................. 13

3.6.3 数据处理 . ....................................................... 13

4系统软件部分设计 ........................................................ 15

4.1 主程序设计 ........................................................ 15

4.2 定时器中断程序设计 ................................................ 15

4.3 PWM的基本原理及程序设计 .......................................... 16

4.3.1 PWM的基本原理 .................................................. 16

4.3.2 PWM信号发生程序设计思路 ........................................ 17

5系统仿真与调试 .......................................................... 18

5.1 系统仿真 .......................................................... 18

5.2 软硬件调速 ........................................................ 18

5.2.1软件程序调试 .................................................... 18

5.2.2 程序在硬件上的调试 . ............................................. 19

结 论 ................................................................... 20

致 谢 ................................................................... 22

参考文献 ................................................................. 23

附录1 .................................................................... 24

附录2 .................................................................... 25

1 引言

1.1 开发背景

现代工业生产中,电动机是主要的驱动设备,目前在直流电动机拖动系统中已大量采用晶闸管(即可控硅) 装置向电动机供电的KZ —D 拖动系统,取代了笨重的发电动一电动机的F —D 系统,又伴随着电子技术的高度发展,促使直流电机调速逐步从模拟化向数字化转变,特别是单片机技术的应用,使直流电机调速技术又进入到一个新的阶段,智能化、高可靠性已成为它发展的趋势。直流电机调速基本原理是比较简单的(相对于交流电机),只要改变电机的电压就可以改变转速了[1]。改变电压的方法很多,最常见的一种PWM 脉宽调制,调节电机的输入占空比就可以控制电机的平均电压,控制转速。

PWM 控制的基本原理很早就已经提出,但是受电力电子器件发展水平的制约,在上世纪80年代以前一直未能实现。直到进入上世纪80年代,随着全控型电力电子器件的出现和迅速发展,PWM 控制技术才真正得到应用。随着电力电子技术、微电子技术和自动控制技术的发展以及各种新的理论方法,如现代控制理论、非线性系统控制思想的应用,PWM 控制技术获得了空前的发展,到目前为止,已经出现了多种PWM 控制技术。

1.2 选题的目的和意义

直流电动机具有良好的起动、制动性能,宜于在大范围内平滑调速,在许多需要调速或快速正反向的电力拖动领域中得到了广泛的应用。从控制的角度来看,直流调速还是交流拖动系统的基础。早期直流电动机的控制均以模拟电路为基础,采用运算放大器、非线性集成电路以及少量的数字电路组成,控制系统的硬件部分非常复杂,功能单一,而且系统非常不灵活、调试困难,阻碍了直流电动机控制技术的发展和应用范围的推广。随着单片机技术的日新月异,使得许多控制功能及算法可以采用软件技术来完成,为直流电动机的控制提供了更大的灵活性,并使系统能达到更高的性能[2]。采用单片机构成控制系统,可以节约人力资源和降低系统成本,从而有效的提高工作效率。

传统的控制系统采用模拟元件,虽在一定程度上满足了生产要求,但是因为元件容易老化和在使用中易受外界干扰影响,并且线路复杂、通用性差,控制效果受到器件性能、温度等因素的影响,故系统的运行可靠性及准确性得不到保证,甚至出现事故。

目前,直流电动机调速系统数字化已经走向实用化,伴随着电子技术的高度发展,促使直流电机调速逐步从模拟化向数字化转变,特别是单片机技术的应用,使直流电机调速技术又进入到一个新的阶段,智能化、高可靠性已成为它发展的趋势。

1.3 研究方法

本文主要研究了利用MCS-51系列单片机,通过PWM 方式控制直流电机调速的方法。PWM 控制技术以其控制简单、灵活和动态响应好的优点而成为电力电子技术最广泛应用的控制方式,也是人们研究的热点。由于当今科学技术的发展已经没有了学科之间的界限,结合现代控制理论思想或实现无谐振软开关技术将会成为PWM 控制技术发展的主要方向之一[3]。

本文就是利用这种控制方式来改变电压的占空比实现直流电机速度的控制。文章中采用了专门的芯片组成了PWM 信号的发生系统,然后通过放大来驱动电机。利用直流测速发电机测得电机速度,经过滤波电路得到直流电压信号,把电压信号输入给A/D转换芯片最后反馈给单片机,在内部进行PI 运算,输出控制量完成闭环控制,实现电机的调速控制。

2直流电机调速原理

电动机是用以驱动生产机械的,根据负载的需要,常常希望电动机的转速能在一定或宽广的范围内进行调节,且调节的方法要简单经济。直流电动机在这些方面有其独到的优点。

从直流电机的转速公式[4]

U -I a R a

C e Φn =

可知,调速方法有两种:

(1) 电枢控制,即用调节电枢电压或者在电枢电路中接入调速电阻来调速。

(2) 磁场控制,即用调节励磁电流来调速。

2.1 电枢电路中接入调速电阻

电枢电路接入调速电阻R Ω后,有公式

U

C e ΦR a C T C e Φ2n = -T e

可知其机械特性将随之增大,它和负载特性

T L +T0的交点将逐步下移,于是电动机的转速

将下降。

这种调速方法虽说简单易行,但是串入

电阻后电枢的铜耗增大,电动机的效率要降

低,气机械特性要变软,负载变动时产生较

大的变化。 图2-1 串入电阻后的机械特性曲线R 2>R1

2.2 调节电枢电压来调速

2.2.1他励电动机

电机的电枢需要由专用的直流电源

(多采用可控整流电源)单独供电励磁则

由另一电源他励,从机械特性表达式和右

图可知提高或降低电枢端电压U (主磁通

Φ保持不变),电动机的机械特性将平行

的上升或下降,使电动机的转速相应地上

升或下降。

2.2.2 串励电动机

串励电动机也可以通过改变电枢电压来

调速,如图表示电枢电压分别是U1和U2

(U1>U2)时串励电动机的机械特性和负载

特性。从图中可以看出提高电枢电压可以提

高速度。

2.3 调节励磁电流来调速

图2-3 改变电枢端电压时串励电

动机的机械特性(U 1>U2)

从转速公式中可知可以看出减小励磁电流时。气隙磁通量Φ将减少,电动机转速将升高。从不同励磁电流时他励或并励电动机的机械

特性曲线中也可以看出。

这种方法所用的设备简单,调节也方便切效

率高。但是随着转速和电枢电流的增加,电机温

升升高,换向变坏,转速过高时会出现不稳定的现象。

本系统的设计就行利用PWM 脉宽调制技术改

变电压占空比来改变平均电枢电压来调速的。 图2-4不同励磁电流时,他励(并励)电动机的机械特性曲线(I 1>I2)

3硬件电路设计

3.1 总体硬件电路设计

本系统采用89C51

控制输出数据,由

单片机定时器直接产生PWM 信号,送到

直流电机,直流电机通过霍尔传感器测

速电路,将脉冲重新送回单片机,从而

实现对电机速度和转向的控制,达到直

流电机调速的目的。[5]

3.2 8051单片机简介

1.8051单片机的基本组成

8051单片机由CPU 和8个部件组成,它们都通过片内单一总线连接,其基本结构依然是通用CPU 加上外围芯片的结构模式,

但在功能单元的控制上采用了特殊功能寄存器的集中控制方法。其基本组成如下图所示:

[6]

2.CPU 及部分部件的作用功能介绍如下

中央处理器CPU :它是单片机的核心,完成运算和控制功能。

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

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

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

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

3.3 LCD1602液晶显示器

1.LCD1602液晶显示

器基本介绍

LCD1602液晶模块是

一种用5x7点阵图形来

显示字符的液晶显示器,

能够同时显示16x02即

32个字符,(16列2行)。

液晶显示器以其微功耗、

体积小、显示内容丰富、

超薄轻巧的诸多优点,在袖珍式仪表和低功耗应用系统中得到越来越广泛的应用。

[7]

5. 寄存器选择控制表

3.4 功率放大驱动电路的设计

功率放大驱动电路有多种,也可以直接用芯片其中较常用的芯片有IR2110和EXB841,为了有较高的性价比,且对于直流电机调速使用起来更加简便[8],因此该驱动电路使用了H 桥放大电路驱动,并且使得该集成电路具有较强的驱动能力和保护功能,且能控制电机的旋转方向。

3.4.1 H桥驱动电路特点

电路得名于“H桥式驱动电路”是因为它的形状酷似字母H 。4个三极管组成H 的4条垂直腿,而电机就是H 中的横杠。H 桥电路的“H”的意思是它实际电路在电路图上是一个字幕H 的样式。如下图:

H 桥是如何控制电机的呢, 举个例子:你手里拿着一节电池,用导线将马达和电池两端对接,马达就转动了;然后如果你把电池极性反过来会怎么样呢?没有错,马达也反着转了。

如图:

当Q1

和Q4导通

时电流从左

上方流过电

机流向右下

方,电机的

旋转方向认

图3-5电机正转

图3-6 电机反转

为正转的话;当Q2和Q3同时导通时电流从右向上方流过电机流向左下方,电机反转。

注意:千万不能将同一侧的两个三极管同时导通,否则会烧坏电路。

如果你将两个高位电路或者两个低位电路同时接通,你的马达会自动制动。这是因为当没有电源供给时,马达在自由转动的情况下是处于发电状态,同位的电路接通,相当于将马达的两端“短接”,那么马达会因为短路而相当与接了一个无限大功率的电炉即一个很大的负载,所以马达就会产生“电”制动;当你把马达两端悬空后,它就恢复自由了。

为了以避免马达的反电动势的危害,我们仍然需要在晶体管两端接二极管,因为马达线圈在电路开闭瞬间产生的反向电动势通过会高过电源,这样对晶体管和电路会有很大的影响甚至烧毁零件。如图在两端接入二极管后

图3-7 加入二极管的H 桥

半导体晶体管本身有导通电阻,在通过大电流时会明显发热,如果没有散热措施会很容易烧毁。这样就会限制电路功率的增加。

Mosfets (金属氧化物半导体场效应晶体管),这里简称MOS 管,由于结构和原理的不同,导通电阻远比普通三极管低,允许流过更大的电流。而且MOS 管都内置有反向二极管来保护管子本身。所以采用MOS 管连接H 桥不但效率可以提高,电路也可以简化。

使用MOS 管搭建H 桥,高位电路要用P 沟道管;低位要用N 沟道管。因为N 沟道管比P 沟道管便宜的多,所以有人用N 沟道管在高位,加上削波电路来抑制反电动势。

应用H 桥的关键是四个电路开闭状态的准确。一旦在电源和地之间出现通路,毫无

疑问会立刻产生短路,让你的晶体管变成一枚小炸弹。下面我们介绍一些H 桥的集成电路,这样我们可以更容易更安全的使用H 桥。

常用H 桥集成电路

L293内置两个H 桥,每个桥提供1A 的额定工作电流,和最大2A 的峰值电流。它能驱动的马达一般是不超过35毫米照片胶卷筒大小。

L298内置两个H 桥,每个桥提供1A 的额定工作电流,和最大3A 的峰值电流。它能驱动的马达不超过可乐罐大小。

LMD18200内置1个H 桥,工作电流2~3A,峰值电流6A 。它驱动可乐罐大小的马达。

3.4.2 H桥驱动电路的设计

如下图

:

左端两个输入接单片机输入PWM 脉冲波控制H 桥三极管的导通截止,PWM 脉冲由单片机P2.6、P2.7两个端口输出,其中由程序设定同时只有一个端口输出PWM 脉冲波来控制电机的转动方向[9]。

当PWM1为脉冲波时,PWM2为低电平,三极管Q2为截止状态,经上拉电源H 桥右端高电平,右上方三极管导通,右下方三极管截止,当PWM1为高电平时Q1导通,H 桥左端接地为低电平,左上方三极管截止,左下方三极管导通,电机有电流经左上右下流过,电机旋转,当PWM1为低电平时Q1截止,H 桥左端为高电平,左上方三极管导通,左下方三极管截止,由于电机中储存能量,电机通过左上右下二极管放电续流,等下一个PWM

脉冲周期供电。反之当PWM2为PWM 脉冲波时,电机中有从左向右的电流,电机反转。

3.5 电源电路的设计

稳压电源的分类方法繁多,按输出电源的类型分有直流稳压电源和交流稳压电源;按稳压电路与负载的连接方式分有串联稳压电源和并联稳压电源;按调整管的工作状态分有线性稳压电源和开关稳压电源;按电路类型分有简单稳压电源和反馈型稳压电源。

稳压电源电路分为线性稳压电源,集成稳压电源,晶体管稳压电源,交流稳压电源。本文介绍的是使用三端稳压集成电路78××线性稳压电源

3.5.1 芯片介绍

7805三端稳压集成电路lm7805。电子产品中,常见

的三端稳压集成电路有正电压输出的lm78 ×× 系列和

负电压输出的lm79××系列。顾名思义,三端IC 是指这

种稳压用的集成电路,只有三条引脚输出,分别是输入端、

接地端和输出端。它的样子象是普通的三极管,TO- 220

的标准封装,也有lm9013样子的TO-92封装。用78/79

系列三端稳压IC 来组成稳压电源所需的外围元件极少,

电路内部还有过流、过热及调整管的保护电路,使用起来

可靠、方便,而且价格便宜。该系列集成稳压IC 型号中

的78或79后面的数字代表该三端集成稳压电路的输出电

压,如7806表示输出电压为正6V ,7909表示输出电压为

负9V ,因为三端固定集成稳压电路的使用方便,电子制

作中经常采用[10]。

图3-9 7805实物图

在实际应用中,应在三端集成稳压电路上安装足够大的散热器(当然小功率的条件下不用)。当稳压管温度过高时,稳压性能将变差,甚至损坏。当制作中需要一个能输出

1.5A 以上电流的稳压电源,通常采用几块三端稳压电路并联起来,使其最大输出电流为N 个1.5A ,但应用时需注意:并联使用的集成稳压电路应采用同一厂家、同一批号的产品,以保证参数的一致。另外在输出电流上留有一定的余量,以避免个别集成稳压电路失效时导致其他电路的连锁烧毁。

在78 ** 、79 ** 系列三端稳压器中最常应用的是TO-220 和TO-202 两种封装。这两种封装的图形以及引脚序号、引脚功能如附图所示。

从正面看①②③引脚从左向右按顺序标注,接入

电路时①脚电压高于②脚,③脚为输出位。如对于78**正

压系列,①脚高电位,②脚接地,;对与79**负压系列,

①脚接地,②脚接负电压,输出都是③脚。如附图所示。

此外,还应注意,散热片总是和接地脚相连。这

样在78**系列中,散热片和②脚连接,而在79**系列中,

散热片却和①脚连接。 图3-10引脚图

7805典型应用电路图:78XX系列集成稳压器的典型应用电路如下图所示,这是一个输出正5V 直流电压的稳压电源电路。IC 采用集成稳压器7805,C1、C2分别为输入端和输出端滤波电容,RL 为负载电阻。当输出电流较大时,7805应配上散热板。

3.5.2电源电路的设计

电路图:

图3-13 电源电路的设计

由于电路中需要两个电压:12V 和5V ,电源中用了7812和7805两个三端集成稳压块,先用变压器220V~12V将输出12V 交流电,经过整流二极管全波整流,滤波后通过7812输出12V 稳压直流电,再通过7805转化为5V 直流电。

图中D5、D6在电路中气保护作用,为了电路的稳定工作,在一般情况下,还需要接二极管作为保护电路,防止电路中的电容放电时的高压把集成稳压器烧坏。

3.6 测速电路的设计

测速是工农业生产中经常遇到的问题,学会使用单片机技术设计测速仪表具有很重要的意义。要测速,首先要解决是采样的问题。在使用模拟技术制作测速表时,常用测速发电机的方法,即将测速发电机的转轴与待测轴相连,测速发电机的电压高低反映了转速的高低。使用单片机进行测速,可以使用简单的脉冲计数法。只要转轴每旋转一周,产生一个或固定的多个脉冲,并将脉冲送入单片机中进行计数,即可获得转速的信息。

本文用3144设计信号获取电路,通过电压比较器实现计数脉冲的输出,既可在单片机实验箱进行转速测量,也可直接将输出接到频率计或脉冲计数器,得到单位时间内的脉冲数,进行换算即可得电机转速。

3.6.1脉冲信号的获得

霍尔传感器是对磁敏感的传感元件,常用于开

关信号采集的有CS3020、CS3040、OH3144等,这种

传感器是一个3端器件,外形与三极管相似,只要

接上电源、地,即可工作,输出通常是集电极开路

(OC )门输出,工作电压范围宽,使用非常方便。

如图1所示是CS3144的外形图,将有字面对准自己,

三根引脚从左向右分别是Vcc ,地,输出。 使用霍尔传感器获得脉冲信号,其机械结构也可以做得较为简单,只要在转轴的圆周上粘上一粒磁钢,让霍尔开关靠近磁钢,就有信号输出,转轴旋转时,就会不断地产生脉冲信号输出[11]。如果在圆周上粘上多粒磁钢,可以实现旋转一周,获得多个脉冲输出。在粘磁钢时要注意,霍尔传感器对磁场方向敏感,粘之前可以先手动接近一下传感器,如果没有信号输出,可以换一个方向再试。这种传感器不怕灰尘、油污,在工业现场应用广泛。

3.6.2硬件电路的设计

图3-15 霍尔脉冲隔离 霍尔传感器通过感应电机轴上的电磁铁磁场变化产生一个输出电压,一满足后续电路的触发信号,触发信号通过差分放大器和反相器产生一个满足单片机输入脉冲的方波信号,由于霍尔传感器输出的电压信号高电平在电源电压(11--12)V 之间,低电平在0V 左右,这个信号的电压值不符合单片机的借口要求,可以利用哟个三极管整形电路处理电压信号,使其满足单片机的接受要求,当三极管的输入为“1”时,三极管的发射极、集电极都正偏,三极管处于饱和状态,气输出约为“0”; 当三极管的输入为0时,三极管的发射极反偏,三极管处于截止状态,气输出电压约为+5V这样经过处理产生的方波即可满足单片机的要求。

3.6.3 数据处理

速度检测一般有三种方法:M 法测速、T 法测速、M/T法测速。

1.M 法测速:是在规定时间T c 内[12],对位置脉冲信号是个数m 1进行计数,从而得到

转速的测量值, n =60m 1

P N T c

P N 是每个位置周期所含有的信号脉冲数,适用于高速运行时的测速,低速时精度较低

2.T 法测速:测出相邻两个位置信号的间隔时间来计算转速的一种方法,而时间的测量是借助计数器对已知频率的时钟脉冲计数实现的,设时钟频率f ,两个位置脉冲间的时钟脉冲个数为m 2, 则电机转子位置脉冲信号的周期T 为

m 2f 60Tp N T = n = = 60f p N m 2

P N 是每个位置周期所含有的信号脉冲数,适用于低速运行时的测速,高速时每个位置周期的时钟脉冲数m 2小,测得的精度较低

3.M/T法综合了以上两种方法的优点,既可在低速段可靠的测速,又在高速段具备较高的分辨能力,因此在较宽的转速范围内都有很好的检测精度。即在稍大于规定时间T c 的某一时间T d 内,分别对位置信号的脉冲个数m 1和高频时钟脉冲个数m 2进行计数。于是:n = 60m 1f

p N m 2

由于调速关系本文采用M/T法测速以使测速的准确性,即在

所转的转数,

n = 60m1

其中f = 100,m 2 = 100,PN = 1

100个PWM 周期内电机

4系统软件部分设计

软件由1个主程序和1个定时器中断程序,1个外部中断计数程序组成。

4.1 主程序设计

主程序是一个循环程序,其主要思路是,先设定好占空比初始值,出控制系数给PWM 发生电路改变波形的占空比,进而控制电机的转速。其程序流程图如图所示。软件由1个主程序和1个定时器中断程序,1个外部中断计数程序组成。主程序是一个循环程序,其主要思路是由单片机P0口进行键盘扫描,根据按键输入信息选择进行操作的函数,进行控制电机。

4.2 定时器中断程序设计 1程序思路:定时器程序通过选择判断来输出PWM 脉冲波的高低电平,其中两个参数cycle 、PWM_ON分别控制PWM 脉冲波的周期和高电平的占空比。同时通过计数处理输出速度。

2. 中断程序流程图

图4-2 定时器中断流程图

4.3 PWM 的基本原理及程序设计

4.3.1 PWM的基本原理

PWM (脉冲宽度调制)是通过控制固定电压的直流电源开关频率,改变负载两端的电压,从而达到控制要求的一种电压调整方法。PWM 可以应用在许多方面,比如:电机调速、温度控制、压力控制等等。

在PWM 驱动控制的调整系统中,按一个固定的频率来接通和断开电源,并且根据需要改变一个周期内“接通”和“断开”时间的长短。通过改变直流电机电枢上电压的“占空比”来达到改变平均电压大小的目的,从而来控制电动机的转速[13]。也正因为如此,PWM 又被称为“开关驱动装置”。如图2-8所示:

设电机始终接通电源时,电机转速最大为Vmax ,设占空比为D= t1 / T,则电机的平均速度为Va = Vmax * D ,其中Va 指的是电机的平均速度;Vmax 是指电机在全通电时的最大速度;D = t1 / T是指占空比。

由上面的公式可见,当我们改变占空比D = t1 / T时,就可以得到不同的电机平均速度Vd ,从而达到调速的目的。严格来说,平均速度Vd 与占空比D 并非严格的线性关系,但是在一般的应用中,我们可以将其近似地看成是线性关系。

4.3.2 PWM信号发生程序设计思路

利用单片机内部定时器中断产生PWM 脉冲波,程序中通过两个参数控制占空比,根据中断次数控制输出高电平的占空比[14]。

cycle 和PWM_ON分别记录一个周期中断次数和高电平的中断次数

如下图:

这样就可以根据PWM_ON的值从1~100控制占空比

5系统仿真与调试

5.1 系统仿真

仿真软件选择Proteus ,在Proteus 中画出系统电路图,当程序在Keil C 中调试通过后,会生成以hex 为扩展名的文件,这就是使系统能够在Proeus 中成功进行仿真的文件。将些文件加载到单片机仿真系统中,验证是否能完成对直流电机的速度调节。若不成功,则重新回到软件调试步骤,进行软件调试。找出错误所在,更正后重新运行系统。硬件仿真电路的设计完全按照论文设计方案进行。在仿真的过程中也遇到了很多问题,比如元件选择、电路设计等,在元件选择方面,有的芯片是我以前学习的时候所没有遇到过的,所以在寻找和使用的过程中也遇到很多麻烦,但经过自己的努力,并借鉴从互联网上找到的资料,我逐渐掌握这些元件的使用方法和原理,为系统设计和仿真提供了良出的基础。另外,在进行仿真的时候,也经常出现程序没有错误了,但是仿真通不过的情况,这些大部分原因是在管脚定

义上,很多系统仿真的问题都出在这。

经过这段时间的努力,使我对仿真软

件以及系统设计电路有了更深一步的

认识,也为系统的成功奠定了基础。

如图是在protues 上的仿真结果,DUTYF 是占空比,图中显示的是50%,STEP

百分数,SPEED 是通过测速显示的速度大小,每秒计算并刷新一次。

5.2 软硬件调速

5.2.1软件程序调试

在程序编写的过程中,出现了很多问题,包括键盘扫描处理、PWM 信号发生程序的控制、以及单片机控制直流电机的转动方向等问题,虽然问题不是很大,但是也让我研究了好长时间,在解决这些问题的时候,我不断向老师和同学请教,希望能通过大家一块的努力把软件编写的更完整,让系统的功能更完备。经过多天的努力探索,也经过老师的指导,大部分问题都已经解决,就是程序还是不能实现应该实现的功能,这让我很着急。后来经过一点一点的调试,并认真总结,发现了问题其实在编写中断处理程序时出现了错误,修改后即可实现直流电机调速的目的。总结这次软件调试,让我认识到了做软件调试的基本方法与流程:

(1)认真检查源代码,看是否有文字或语法错误

(2)逐段子程序进行设计,找出错误出现的部分,重点排查

(3)找到合适的方法,仔细检查程序,分步调试直到运行成功

(4)改进程序算法,提高程序执行效率,减少出错可能性

5.2.2 程序在硬件上的调试

虽说在protues 上仿真时能正常运行了,硬件的制作完成后,结合硬件又发现了很多问题。

(1) 因为单片机的问题,使复位电路上的电容烧坏,单片机运行出错

(2) 因为程序算法问题,在电机转动时,出现停顿现象

(3) 按键问题

为了方便,硬件板与板这件用杜邦线相连

硬件实物图

(1)电源与驱动

(2)显示与键盘

(3)霍尔测速

结 论

本系统研制历时近半年,通过和老师、同学充分合作共同努力已完成并验收。在直流电机调速系统的设计中,完成的是硬件设计、制作及调试实验,同时完成软件设计方面的工作。在硬件设计中主要工作是:设计硬件的结构框图,完成硬件的设计。如电源电路、驱动电路、接收放大电路设计及制作。在选择构成系统电路的元器件时,应着重考虑其是否会影响系统的稳定性。在硬件的制作过程中,应尽量减小电源的波动对系统的影响。

受时间和经验限制,本系统有不足和需改进的地方:

1.更复杂的算法可以作研究尝试,但从实际效果考虑上,更好的办法可能是改进外围电路设计,本系统的外围电路设计还有很大的改善空间。

4.本系统只考虑了电机的速度控制的输出,没有反馈,没有考虑负载的情况,以后可以从系统反馈方面来考虑系统整体的设计。

致 谢

这次毕业设计,凝结了很多人的心血,在此我表示由衷的感谢。没有他们的帮助,我将无法顺利完成这次设计。

首先,我要特别感谢梁芬老师对我的悉心指导,在毕业设计期间梁老师指导我、帮助我收集文献资料,理清设计思路,完善操作方法,并对我所做的设计提出有效的改进方案。老师渊博的知识、严谨的作风、诲人不倦的态度和学术上精益求精的精神让我受益终生。作为一个本科生的毕业设计,由于经验的匮乏,难免有许多考虑不周全的地方,如果没有导师的督促指导,想要完成这个设计是难以想象的。因此,特别需要感谢曲培新老师给予的耐心细致的指导,在此,再一次向梁芬教师以及关心帮助我的教师同学表示最诚挚的谢意!

其次,学校在这方面也给我们提供了很大的支持和帮助,学校领导比较重视,每个设计小组配有专门的指导老师,帮助我们能顺利完成整个设计。对于学校和老师为我的毕业设计所提供的极大帮助和关心,在此我致以衷心的感谢!

最后,还要感谢同学四年来对我的关心与支持,感谢各位老师在学习期间对我的严格要求。同时也要感谢身边朋友的热心帮助,没有你们的关心与支持,我不可能这么快完成我的毕业设计!这几个月的岁月是我学生生涯中最有价值的一段时光,也将会成为我以后永远的美好的回忆,在这里有治学严谨而不失亲切的老师,也有互相帮助情同骨肉的同学,更有和谐、融洽的学习生活氛围,这里将是我永远向往的地方。借此论文之际,我想向所有人表达我的最诚挚的谢意,愿我们将来都越来越好。

参考文献

[1]张友德等,单片机原理应用与实验[M],复旦大学出版社1992.

[2]张毅刚,彭喜源,谭晓钧,曲春波.MCS -51单片机应用设计[M].哈尔滨工业大学出版社2001.1.

[3]宋庆环,才卫国,高志,89C51单片机在直流电动机调速系统中的应用[M]。唐山学院,

2008.4

[4]陈 锟 危立辉,基于单片机的直流电机调速器控制电路[J],中南民族大学学报(自

然科学版) ,2003.9.

[5]李维军 韩小刚 李 晋,基于单片机用软件实现直流电机PWM 调速系统[J],维普资讯,

2007.9

[6]曹巧媛. 单片机原理及应用[M].北京,电子工业出版社,1997.

[7]刘大茂,严飞. 单片机应用系统监控主程序的设计方法[J].福州大学学报(自然科学福

建农林大学硕士论文版) ,1998.2.

[9]朱定华,戴汝平编著. 单片机原理与应用[M].清华大学出版社北方交通大学出版社,2003.8.

[11]薛钧义 张彦斌编著. MCS—51/96系列单片微型计算[M].西安交通大学出版社,1997.8

[12]陈国呈 编著.PWM 逆变技术及应用[M].中国电力出版社.2007年7月

[13]马忠梅 等编著. 单片机的C 语言应用程序设计(第4版)[M],北京航天航空大学出版社.2007. 4

[14]刘昌华,易逵编著.8051单片机的C 语言应用程序设计与实践[M].国防工业出版社2007.9

系统设计总电路图

#include

#define uchar unsigned char

#define uint unsigned int

sbit lcden=P2^2;

sbit lcdrs=P2^0;

sbit xie=P2^1;

sbit forward=P2^6;

sbit reverse=P2^7;

bit flag=1,flag1=1;

uchar speed,m1=0,m2=0;

uchar tens,ones,hunds,step=9;

uchar code table[]={"DUTYF: %STEP: "};

uchar code table1[]={"SPEED: r/min "};

uchar code table2[]={"0123456789"};

uchar num=0;

uchar cycle=100;

uchar PWM_ON=50;

unsigned char const

dofly[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,

0x77,0x7c,0x39,0x5e,0x79,0x71};//0-F //输入数字用 /*******************延时程序***键盘扫描用***********************/ void delay1(uint i) //延时函数

{

}

/*------------------------------------------------

键盘扫描程序

------------------------------------------------*/

uchar keyscan(void) //键盘扫描函数,使用行列反转扫描法

{

while(i--);

uchar cord_h,cord_l;//行列值中间变量 P0=0x0f; //行线输出全为0 cord_h=P0&0x0f; //读入列线值 if(cord_h!=0x0f) //先检测有无按键按下 {

delay1(100); //去抖 if(cord_h!=0x0f) {

cord_h=P0&0x0f; //读入列线值 P0=cord_h|0xf0; //输出当前列线值 cord_l=P0&0xf0; //读入行线值

return(cord_h+cord_l);//键盘最后组合码 }

}

}return(0xff); //返回该值

/***********************正转反转调节函数***************************** void roll(flag) { }

if(flag) { } else { }

reverse=0;

forward=P2^7; reverse=P2^6; forward=P2^6; reverse=P2^7;

********************************************************************/ /***************延时程序液晶显************示器用********************/ void delay(uint z) { }

/************************************/

void write_com(uchar com)//根据写时序图写出指令程序 { }

void write_data(uchar date)//根据写时序图写出数据程序 { }

/********自定义写入数据************用于写入速度***************/ void write_speed() {

write_com(0x80+0x46);

uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--);

lcdrs=0; P1=com; delay(5); lcden=1; delay(5); lcden=0;

lcdrs=1; P1=date; delay(5); lcden=1; delay(5); lcden=0;

}

speed=speed%100; tens=speed/10; ones=speed%10;

write_data(table2[hunds]); delay(50);

write_data(table2[tens]); delay(50);

write_data(table2[ones]);

/*****************步长显示*******************************/

void write_step() { }

/*************占空比显示**********************************/ void write_duty() {

tens=PWM_ON/10; ones=PWM_ON%10;

write_data(table2[tens]); delay(50);

write_com(0X80+0x0e); tens=step/10; ones=step%10;

write_data(table2[tens]); delay(50);

write_data(table2[ones]);

write_com(0X80+0x06);

}

//write_digital(tens,ones);

/*****************步长输入************************************/ void change(int value) { }

/**********液晶显示器初始化*********************/ void init() { }

/***********定时器中断(开始)************************/ void InitTimer0(void) {

TMOD = 0x01;

//定时器1设置 10us in 12M crystal

if(flag1==1) { } else { }

flag1=!flag1;

//个位 十位 区分标志

step=step+value; //然后是个位 step=value*10;

//先输入十位

lcden=0; //使能端为低电平 write_com(0x38);//显示模式设置

write_com(0x0c);//开显示,显示光标,光标闪烁

write_com(0x06);//地址指针自动+1且光标+1,写字符屏幕不会移动 write_com(0X01);

write_com(0X80+0x00);//初始化指针在显示屏的第二个字符位置

//定时器中断

TH0 = 0x0FF; TL0 = 0x0CE;

//赋初值

EA = 1;

//总中断打开

ET0 = 1; TR0 = 1; }

//定时器中断打开 按开始键 开始计时 电机转动 //定时器开关打开

EX1=1; //外部中断1开

IT1=1; //外部中断1边沿触发,下降沿触发,IT1=0表示电平触发

/**************定时器设置函数(停止中断)*******************/ void InitTimer1(void) {

// TMOD = 0x01; // TH0 = 0x0FC; // TL0 = 0x18; EA = 0;

//总中断关闭

//定时器1设置 0.1ms in 12M crystal //赋初值 //定时器中断

ET0 = 0; TR0 = 1; }

forward=0; reverse=0;

//按停止键 定时器中断关闭 开始计时 电机转动 //定时器开关打开

void speeding(bit seed) {

if(seed==1&&PWM_ON+step

else if(seed==1&&PWM_ON+step>=100) {

PWM_ON=99;

PWM_ON=PWM_ON+step;

}

else if(seed==0&&PWM_ON>step) { }

else if(seed==0&&PWM_ON

PWM_ON=1;

PWM_ON=PWM_ON-step;

/*************主程序函数************************************/ void main() {

uchar key; xie=0; init();

for(num=0;num

//write_com(1);//清行

write_com(0x80+0x40);//换行 而且指针在屏幕外 for(num=0;num

for(num=0;num

write_data(table[num]); delay(50);

write_data(table1[num]); delay(50);

write_com(0x1f); //又与视频上的不同 1f是右移18是左移 这个地方也是自己

不断尝试出来的

} */ reverse=0; forward=0;

delay(50);

// InitTimer0(); 值

case 0x7d:flag=0;forward=0;break;//反转

case 0x7b:write_step();write_duty();InitTimer0();break;//开始 case 0x77:InitTimer1();break;//停止 case

while(1) {

key=keyscan(); //调用键盘扫描, switch(key) {

case 0x7e:flag=1;reverse=0;break;//正转 按下相应的键显示相对应的码

0xbe:change(3);write_step();while(key==0xbe)key=keyscan();break;//数字3

case

0xbd:change(6);write_step();while(key==0xbd)key=keyscan();break;//数字6

case

0xbb:change(9);write_step();while(key==0xbb)key=keyscan();break;//数字9

case

0xb7:speeding(0);write_duty();while(key==0xb7)key=keyscan();break;//减速

case

0xde:change(2);write_step();while(key==0xde)key=keyscan();break;//数字2

case

0xdd:change(5);write_step();while(key==0xdd)key=keyscan();break;//数字5

case

0xdb:change(8);write_step();while(key==0xdb)key=keyscan();break;//数字8

case

0xd7:speeding(1);write_duty();while(key==0xd7)key=keyscan();break;//加速

case

0xee:change(1);write_step();while(key==0xee)key=keyscan();break;//数字1

case

0xed:change(4);write_step();while(key==0xed)key=keyscan();break;//数字4

case

0xeb:change(7);write_step();while(key==0xeb)key=keyscan();break;//数字7

case

0xe7:change(0);write_step();while(key==0xe7)key=keyscan();break;//数字0 }

/************外部中断1 **************************/ void ISR_Key(void) interrupt 2 using 0 { }

/****************定时器中断1 *******************/ void Timer0Interrupt(void) interrupt 1 using 1 {

}

}

if(m2==100) { }

speed=60*m1; write_speed(); m1=0; m2=0;

m1++;

//add your code here! cycle++; if(flag) { if(cycle==PWM_ON) {

forward=0; // reverse=0;

}

else if(cycle==100) {

forward=1; // reverse=0; m2++; cycle=0; }

} else { if(cycle==PWM_ON) {

reverse=0; // forward=0;

}

else if(cycle==100) {

reverse=1; // forward=0; m2++;

cycle=0;

}

}

TH0 = 0x0FF; //赋初值

TL0 = 0x0CE; }


相关内容

  • 双闭环控制的直流调速系统
  • 控制系统综合设计 指导老师: XXX 老师 年级专业 12 自 动 化 X 班 姓名学号 XXX 20123120xxxx 2016 年 1 月 8 日 题目及要求 设计题目: 直流调速系统计算机仿真 设计背景: 直流调速系统是传统的调速系统,自19世纪80年代起至19世纪末以前,工业上传动所用电动 ...

  • 双闭环直流调速系统工作原理
  • 双闭环直流调速系统设计 内容摘要 电机自动控制系统广泛应用于各行业,尤其是工业.这些行业中绝大部分生产机械都采用电动机作原动机.有效地控制电. 直流电动机具有良好的起动.制动性能,宜于在大范围内平滑调速,在许多需要调速或快速正反向的电力拖动领域中得到了广泛的应用.有效地控制电机,提高其运行性能,具有 ...

  • 浅析直流电动机调速系统的单片机控制
  • 摘要:电力电子技术的发展促使直流电动机调速系统完成了从模拟化到数字化的转变历程,尤其是单片机技术的推广使得直流电动机调速系统到达另一个新高度,智能化.数字化显然成为了一种趋势.相较于交流电动机,直流电动机的调速原理比较简单,通过改变电动机电压即可实现调速.而改变电动机电压的办法却很多,最为常用的则是 ...

  • 直流电机闭环调速
  • 第1章 前言 1.1 课题的研究意义 现代化的工业生产过程中,几乎无处不使用电力传动装置,尤其是在石油.化工.电力.冶金.轻工.核能等工业生产中对电动机的控制更是起着举足轻重的作用.因此调速系统成为当今电力拖动自动控制系统中应用最广泛的一种系统.随着生产工艺.产品质量要求不断提高和产量的增长,使得越 ...

  • 课题研究的背景
  • 引言 1.1 课题研究的背景 由于直流电动机具有良好的线性调速特性,简单的控制性能,在工业场合应用广泛.近代,由于生产技术的发展,对电气传动在起制动.正反转以及调速精度.调速范围.静态特性.和动态响应方面都提出了更高的要求,寻找更高效.更可靠.成本更低的直流电机控制方法成为新世纪研究的热点. 近十几 ...

  • 他励直流电动机的调速系统设计
  • JIU JIANG UNIVERSITY 电机拖动课程设计 题 目 他励直流电动机的调速系统设计 英文题目 The design of separately excited DC motor speed control system 院 系 电子工程学院 专 业 轨道交通信号与控制 姓 名 邹文静 ...

  • 基于单片机的直流电机调速电路设计
  • 目 录 基于MC51单片机的直流电机PWM调速系统 ...................................................................... 1 摘 要 ............................................... ...

  • 永磁调速器
  • 永 磁 调 速 器 无连接调速节能技术 永磁调速器是通过调节导磁体和永磁体之间的相互磁力耦合作用大小来传递扭矩,同时实现负载调速和电机节能.是一种无机械连接的软启动设备,传递效率能达到95%以上,实现电机节能30%以上.主要应用设备为泵.风机.离心负载.皮带运输机及其它机械装置,应用广泛. 永 磁 ...

  • 交直流调速系统 章建
  • 交直流调速系统课程设计 双闭环直流调速系统 院 . 部: 电气与信息工程学院 学生姓名:指导教师: 李建军 职称 助教 专 业: 自动化 班 级: 自本1003班 完成时间: 2013年12月25日 摘 要 为了提高直流调速系统的动静态性能指标,通常采用闭环控制系 统(包括单闭环和多闭环系统).直流 ...

  • 直流电机调速电路
  • 1 绪 论 1.1 直流调速的优点 直流调速系统,特别是双闭环直流调速系统是工业生产过程中应用最广的电气传动装置之一.它通常采用三相全控桥式整流电路对电动机进行供电,从而控制电动机的转速,传统的控制系统采用模拟元件,如晶体管.各种线性运算电路等,虽在一定程度上满足了生产要求,但是因为元件容易老化和在 ...