您的当前位置:首页正文

恒温箱设计

2020-11-14 来源:欧得旅游网
基于单片机的恒温箱控制系统设计

基于单片机的恒温箱控制系统设计

电子信息工程

[摘 要] 恒温控制在工业生产过程中举足轻重,温度的控制直接影响着工业生产的产量和质量。本设计是基于AT89C51单片机的恒温箱控制系统,系统分为硬件和软件两部分,其中硬件包括:温度传感器、显示、控制和报警的设计;软件包括:键盘管理程序设计、显示程序设计、控制程序设计和温度报警程序设计。编写程序结合硬件进行调试,能够实现设置和调节初始温度值,进行数码管显示,当加热到设定值后立刻报警。另外,本系统通过软件实现对按键误差、加热过冲的调整,以提高系统的安全性、可靠性和稳定性。本设计从实际应用出发选取了体积小、精度相对高的数字式温度传感元件DS18B20作为温度采集器,单片机AT89C51作为主控芯片,数码管作为显示输出,实现了对温度的实时测量与恒定控制。

目 录

1 引言 ................................................................ 1 2 系统概述 ............................................................ 1

2.1 简述 ........................................................... 1 3 设计思路分析 ........................................................ 2 4 方案论证 ............................................................ 2

4.1 温度传感器 ..................................................... 2 4.2 显示部分 ....................................................... 2 4.3 输出控制 ....................................................... 3 5 硬件设计及工作原理 .................................................. 3

5.1 系统功能及工作流程介绍 ......................................... 3 5.2 功能模块 ....................................................... 5 5.3 系统硬件设计 ................................................... 5

5.3.1 DS18B20测温电路 .......................................... 5 5.3.2 DS18B20的特点介绍 ........................................ 6 5.3.3 单线(1-wire)技术 ....................................... 6

1

基于单片机的恒温箱控制系统设计

6

7

8

9

5.3.4 DS18B20的引脚及功能介绍 .................................. 7 5.3.6 输出控制电路 ............................................. 9 5.3.7 温度越线报警电路 ........................................ 10 系统的应用软件设计 ................................................. 10 6.1 软件描述 ...................................................... 10

6.1.1 键盘管理模块 ............................................ 11 6.1.2 显示模块 ................................................ 11 6.1.3 控制模块 ................................................ 11 6.1.4 温度报警模块 ............................................ 12 6.1.5 主程序和中断服务程序流程 ................................ 12 系统调试与仿真 ..................................................... 14 7.1 硬件调试 ...................................................... 14

7.1.1 脱机检查 ................................................ 14 7.1.2 仿真调试 ................................................ 14 7.1.3 检查CPU的时钟电路 ...................................... 14 7.1.4 对扩展的RAM、ROM进行检查调试 ........................... 15 7.2 软件调试 ..................................................... 15

7.2.1 交叉汇编 ................................................ 15 7.2.2 用汇编语言 .............................................. 15 7.2.3 手工汇编 ................................................ 15 7.3 系统仿真 ..................................................... 15 抗干扰技术 ......................................................... 18 8.1 硬件抗干扰技术 ................................................ 18 8.2 软件抗干扰技术 ................................................ 18 系统制作与测试 ..................................................... 19 结束语 ............................................. 错误!未定义书签。 参 考 文 献 ........................................ 错误!未定义书签。 致谢 ............................................... 错误!未定义书签。

2

基于单片机的恒温箱控制系统设计

1 引言

温度控制是工业生产过程中经常遇到的过程控制,特别是在冶金、化工、建材、食品、机械、石油等工业中,具有举足重轻的作用,其温度的控制效果直接影响着产品的质量,因而设计一种较为理想的温度控制系统是非常有价值的。对于不同场所、不同工艺、所需温度高低范围不同、精度不同,则采用的测温元件、测温方法以及对温度的控制方法也将不同;产品工艺不同、控制温度的精度不同、时效不同,则对数据采集的精度和采用的控制算法也不同。因而,对温度的测控方法多种多样。随着电子技术和微型计算机的迅速发展,微机测量和控制技术也得到了迅速的发展和广泛的应用。利用微机对温度进行测控的技术,也便随之而生,并得到日益发展和完善,越来越显示出其优越性。然而现有的温度传感元件大多为模拟器件(热电耦)体积大、应用复杂、而且不容易实现数字化等缺点,阻碍了应用领域的扩展。本设计从实际应用出发选取了体积小、精度相对高的数字式温度传感元件DS18B20作为温度采集器,单片机AT89C51作为主控芯片,数码管作为显示输出,实现了对温度的实时测量与恒定控制。

2 系统概述

2.1 简述

单片机已经在测控中获得了广泛的应用,它除了可以测量电信号以外,还可以用于温度、湿度等非电信号的测量,能独立工作的单片机温度检测、温度控制系统已经广泛应用到很多领域。

单片机的接口信号是数字电信号,要想用单片机获取温度这类非电信号的信息,毫无疑问,必须使用温度传感器。温度传感器的作用是将温度信息转换为电流或电压输出,如果转换后的电流或电压输出是模拟信号,那么还必须进行A/D转换,以满足单片机接口的需要。

传统的温度检测大多以热敏电阻为温度传感器,但热敏电阻的可靠性差、测量温度准确率低,而且必须经过专门的接口电路转换成数字信号后才能由单片机进行处理。随着微电子技术的发展,单片微处理器功能日益增强,价格低廉,在各方面得到广泛应用。在温度控制器中应用单片机,具有设计简单、可靠性高、控制精度高,功能易扩展,有较强的通用性等优点。温度控制器主要实现对恒温箱温度的控制,并满足不同用户的个性需求。因此一个较完善的控制器应具有以下功能: 温度的测量与显示;用户设定功能(如温度设定,定时设定等); 对电加热管的控制功能; 一些功能键(如定时自动加热,恒温控制,手动加热等); 安全措施(漏电检测,安全失效保护,限温保护等)。本文将采用一种数字温度传感器来实现基于51单片机的恒温箱控制系统设计。

整个控制系统分为硬件电路设计和软件程序设计两部分。

1

基于单片机的恒温箱控制系统设计

3 设计思路分析

设计51单片机的恒温箱控制系统设计时,需要考虑下面3个方面的内容: ● 选择合适的温度传感器芯片。显然,本文中的核心器件是单片机和温度传感器,单片机采用常用的51单片机即可,而温度传感器的选择则需慎重。 ● 单片机和温度传感器的接口电路设计。

● 控制温度传感器实现温度信息采集以及数据传输的软件设计。

4 方案论证

4.1 温度传感器

方案一:采用热敏电阻,可满足40~90℃的测量范围,但热敏电阻精度、重复性、可靠性都比较差,其测量温度范围相对较小,稳定性较差,不能满足本系统温度控制的范围要求。

方案二:采用温度传感器铂电阻 Pt1000。铂热电阻的物理化学性能在高温和氧化性介质中很稳定,它能用作工业测温元件,且此元件线性较好。在 0—100 摄氏度时,最大非线性偏差小于 0.5 摄氏度。铂热电阻与温度关系是,Rt = R0(1+At+Bt*t) ;其中 Rt 是温度为 t 摄氏度时的电阻;R0 是温度为 0 摄氏度时的电阻;t 为任意温度值,A,B 为温度系数。

方案三:采用模拟温度传感器AD590K,AD590K具有较高精度和重复性(重复性优于0.1℃),其良好的非线性可以保证优于±0.1℃的测量精度。但其测量的值需要经过运算放大、模数转换再传给单片机,硬件电路较复杂,调试也会相对困难,所以本系统不宜采用此法。

方案四:采用数字温度传感器DS18B20,DS18B20提供九位温度读数,测量范围-55℃~125℃,采用独特1-WIRE 总线协议,只需一根口线即实现与MCU 的双向通讯,具有连接简单,高精度,高可靠性等特点。并且,DS18B20支持一主多从,若想实现多点测温,可方便扩展。

综合以上四种方案,本设计采用第四种方案,利用数字温度计DS18B20作为温度传感器。

4.2 显示部分

方案一:采用I/O口直接驱动,需要占用大量可贵的I/O口资源,且系统运行后,更换元件不易,不符合系统设计的可靠性、易扩展性原则。

方案二:采用串行口驱动、静态显示,利用单片机的串行口输出数据,显示多位数码,可节省大量的I/O口,但每个数码管必须有一个驱动芯片,且每位段码须接一个限流电阻,所须元件多,硬件电路比较复杂。

方案三:采用串行口驱动、动态扫描显示,利用单片机的串行口输出数据,显示

2

基于单片机的恒温箱控制系统设计

多位数码,多个数码管可共用驱动芯片和限流电阻。这样既可以简化硬件电路,又可以节省大量的I/O口线,为功能扩展留下空间。

综合以上三种方案,本设计采用方案三:串行口驱动、动态显示。根据系统具体指标要求,可以对每一个具体部分进行分析设计。

4.3 输出控制

方案一:采用继电器,易于控制,且实行比较简单,但强电和弱电不能很好的隔离,抗干扰能力极差。

方案二:采用光电藕合器,控制信号与输出信号可以很好的隔离,增强了系统的安全性和抗干扰能力。

综合以上两种方案,本设计采用光电藕合器控制负载工作。

5 硬件设计及工作原理

5.1 系统功能及工作流程介绍

根据恒温箱控制器的功能要求,并结合对51系列单片机的资源分析,即单片机软件编程自由度大,可用编程实现各种控制算法和逻辑控制。所以采用AT89C51作为电路系统的控制核心。恒温箱控制器的总体布局如图1所示。按键将设置好的温度值传给单片机,通过温度显示模块显示出来。初始温度设置好后,单片机开启输出控制模块,使电热器开始加热,同时将从数字温度传感器DS18B20测量到的温度值实时的显示出来,当加热到设定温度值时,单片机控制声光报警模块,发出声光报警,同时关闭加热器。当自然冷却到设定温度3摄氏度以下时,单片机再次启动加热器,如此循环反复,以达到恒温控制的目的。系统结构框图如图1所示,系统基本硬件电路图如图2所示,在本系统中,DP1~DP3用于七段数码显示;P1.0用于接收DS18B20采集到的数字温度信号;FUZA1控制光电开关,决定电加热器是否工作;K1~K3用于按键控制;BELL和P1.4、P1.5用于控制扬声器和发光二极管,进行声光报警;串行口用于输出显示段码;P2.0、P2.1用于对数码管进行动态扫描。

3

基于单片机的恒温箱控制系统设计

图1 系统结构框图

7910111213141538383IC574LS138VCCY7Y6Y5Y4Y3Y2Y1Y0DP1comcombcdpDP2comcombcdpDP3comcombcdpefgdpdDPYDPYDPYE3E2E1aaggaCBAdffdeR4R3R210K10K10KIC1K1K2K3L1P1.0123456FUZA17BELL813121514VCC+C310UC2VCC33PFY1C1R51K33PF31191891716P10P11P12P13P14P15P16P17INT1INT0T1T0EA/VPX1X2RESETRDWRAT89C51fgdpefgdpabcdeabcde65432110101097542169754216VCCP00P01P02P03P04P05P06P07P20P21P22P23P24P25P26P273938373635343332212223242526272816151413121110L29RP1RXDTXDALE/PPSEN10113029CLKMRQ0Q1Q2Q3Q4Q5Q6Q712341151261378345601IC374LS16412AB899754216abcdefg8VCC 4

基于单片机的恒温箱控制系统设计

VCCR14.7KIC2VCCDQGNDDS18B20321P1.0JPAC220VVCCIC4FUZA1MOC3041R7330C60.01UR627Q2R839RL12 VCCBELLQ1BELL

图2 基本硬件电路图

5.2 功能模块

根据上面对工作流程的分析,系统软件可以分为以下几个功能模块: (1) 键盘管理:监测键盘输入,接收温度预置,启动系统工作。 (2) 显示:显示设置温度及当前温度。

(3) 温度检测及温度值变换:完成A/D转换及数字滤波。 (4) 温度控制:根据检测到的温度控制电炉工作。 (5) 报警:当预置温度或当前炉温越限时报警。

5.3 系统硬件设计

5.3.1 DS18B20测温电路

DS18B20数字温度计是Dallas公司生产的1-Wire器件,即单总线器件。与传统的热敏电阻有所不同,DS18B20可直接将被测温度转化成串行数字信号,以供单片机处理,具有连线简单、微型化、低功耗、高性能、抗干扰能力强、精度高等特点。因此用它来组成一个测温系统,具有电路简单,在一根通信线上可以挂很多这样的数字温度计,十分方便。目前已被众多行业进行广泛的运用(锅炉、温控表粮库、冷库、

5

基于单片机的恒温箱控制系统设计

工业现场温度监控、仪器仪表温度监控、农业大棚温度监控等)。

通过编程,DS18B20可以实现9~12位的温度读数。信息经过单线接口送入DS18B20或从DS18B20送出,因此从微处理器到DS18B20仅需连接一条信号线和地线。读、写和执行温度变换所需的电源可以由数据线本身提供,而不需要外部电源。

每片DS18B20在出厂时都设有唯一的产品序列号,因此多个DS18B20可以挂接于同一条单线总线上,这允许在许多不同的地方放置温度传感器,特别适合于构成多点温度测控系统。

5.3.2 DS18B20的特点介绍

(1)独特的单线接口方式,与单片机通信只需一个引脚,DS18B20与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。 (2)在使用中不需要任何外围元件。

(3)可用数据线供电,电压范围:+3.0~+5.5 V。

(4)测温范围为-55 ~+125 ℃。在-10~+85℃范围内误差为0.5 ℃。 (5)通过编程可实现9~12位的数字读数方式。 (6)用户可自设定非易失性的报警上下限值。

(7)支持多点组网功能,通过识别芯片各自唯一的产品序列号从而实现单线多挂接,多个DS18B20可以并联在唯一的线上,简化了分布式温度检测的应用,实现多点测温。

(8)负压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。 (9)告警寻找命令可以识别和寻址那些温度超出预设告警界限的器件。 5.3.3 单线(1-wire)技术

目前常用的微机和外设之间数据传输的串行总线有I2C总线、SPI总线等,其中,

I2C总线采用同步串行两线(一根时钟线、一根数据线)方式,而SPI总线采用同步串行三线(一根时钟线、一根输入线和一根数据出线)方式。这两种总线需要至少两根或两根以上的信号线。美国达拉斯半导体公司推出了一项特有的单线(1-wire)技术。该技术与上述总线不同,它采用单根信号线,即可传输时钟,又能传输数据,而且数据传输是双向的,因而这种单线技术具有线路简单、硬件开销少、成本低廉、便于扩展的优点。

单线技术适用于单主机系统,单主机能够控制一个或多个从机设备。主机可以是微控制器,从机可以是单线器件,它们之间的数据交换、控制都由这根线完成。主机或从机通过一个漏极开路或三态端口连至数据线,以允许设备在不发送数据时能够释放该线,而让其他设备使用。单线通常要外接一个约5KΩ的上拉电阻,这样,当该线闲置时,其状态为高电平。

主机和从机之间的通信主要分3个步骤:初始化单线器件、识别单线器件和单线

6

基于单片机的恒温箱控制系统设计

数据传输。由于只有一根线通信,所以它们必须是严格的主从结构,只有主机呼叫从机时,从机才能应答,主机访问每个单线器件必须严格遵循单线命令序列,即遵守上述3个步骤的顺序。如果命令序列混乱,单线器件将不会响应主机。

所有的单线器件都要遵循严格的协议,以保证数据的完整性。1-wire协议由复位脉冲、应答脉冲、写0、写1、读0和读1这几种信号类型组成。这些信号中,除了应答脉冲,其他均由主机发起,并且所有命令和数据都是字节的地位在前。 5.3.4 DS18B20的引脚及功能介绍

DS18B20的外形及TO-92封装引脚排列见左图,其引脚功能描述见表1,实测温度和数字输出的对应关系见表2.

表1 DS18B20详细引脚功能描述

序号 名称 1 2 3 VDD DQ GND 引脚功能描述 地信号 数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源。 可选择的VDD引脚。当工作于寄生电源时,此引脚必须接地。 表2 温度值分辨率配置表

温度 +125℃ +85℃ +25.0625℃ +10.125℃ +0.5℃ 0℃ 数字输出(二进制) 0000 0111 1101 0000 0000 0101 0101 0000 0000 0001 1001 0001 0000 0000 1010 0010 0000 0000 0000 1000 0000 0000 0000 0000 数字输出(十六进制) 07D0H 0550H 0191H 00A2h 0008H 000H 7

基于单片机的恒温箱控制系统设计

-0.5℃ -10.125℃ -25.0625℃ -55℃ 1111 1111 1111 0000 1111 1111 0101 1110 1111 1110 0110 1111 1111 1100 1001 0000 FFF8H FF5EH FF6FH FC90H 5.3.5 DS18B20的使用方法

由于DS18B20采用的是1-Wire总线协议方式,即在一根数据线实现数据的双

向传输,而对AT89S51单片机来说,硬件上并不支持单总线协议,因此,我们必须采用软件的方法来模拟单总线的协议时序来完成对DS18B20芯片的访问。

由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。 (1) DS18B20的复位时序,见图3

图3 DS18B20的复位时序图

置总线为低电平并保持至少480us,然后拉高电平,等待从端重新拉低电平作为响应,则总线复位完成。

(2) DS18B20的读时序,见图4。

图4 DS18B20的读时序图

对于DS18B20的读时序分为读0时序和读1时序两个过程。对于DS18B20的读时

8

基于单片机的恒温箱控制系统设计

隙是从主机把单总线拉低之后,在15秒之内就得释放单总线,以让DS18B20把数据传输到单总线上。DS18B20在完成一个读时序过程,至少需要60us才能完成。 (3) DS18B20的写时序 ,见图5。

图5 DS18B20的写时序图

对于DS18B20的写时序仍然分为写0时序和写1时序两个过程。对于DS18B20写0时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60us,保证DS18B20能够在15us到45us之间能够正确地采样IO总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15us之内就得释放单总线。 (4) DS18B20在电路中的连接,见图6。

1- wire总线支持一主多从式结构,硬件上需外接上拉电阻。当一方完成数据

通信需要释放总线时,只需将总线置高点平即可;若需要获得总线进行通信时则要监视总线是否空闲,若空闲,则置低电平获得总线控制权。

VCCR14.7KIC2VCCDQGNDDS18B20321P1.0

图6 DS18B20测温电路

5.3.6 输出控制电路

MOC3041内部带有过零控制电路,MOC3041输出端额定电压为400V。加热电路中采用MOC3041的目的有两个:其一是实现强电与弱电的隔离;其二是实现双向可控硅的过零触发,从而使流过双向可控硅的电流波形为正弦波,减少谐波。电路连接如图6所示,其在电路中的工作原理是单片机根据传感器和设定开关输入的控制指令,控制电器的电源通断。Q2为MAC97A6型小型塑封双向晶闸管,其最大通态电流为1A。当电源控制电路的输出管脚送出的开关控制指令为高电平,MOC3041截止,Q2截止,电器被关闭;当电源控制电路送出的开关控制指令为低电平,MOC3041导通,Q2导通,电器被打开。通过MOC3041内部的过零触发电路,保证Q2在电压过零时导通和截止,对供电系统干扰极小。R8和C6是Q2的保护电路。

9

基于单片机的恒温箱控制系统设计

JPAC220VVCCIC4FUZA1MOC3041R7330C60.01UR627Q2R839RL12 图7 光耦控制输出

5.3.7 温度越线报警电路

报警电路如图8所示,该电路采用一个小功率三极管Q1驱动蜂鸣器BELL,当单片机接收到超额温度信号或危险信号时,输出脚BELL输出高点平,Q1导通,致使蜂鸣器BELL得电工作,发出报警声。同时,电路中的发光二极管指示出电路的工作状态。

VCCBELLQ1BELL 图8 报警电路

6 系统的应用软件设计

6.1 软件描述

在软件设计时,必须先弄清恒温控制系统的操作过程和工作过程。加热器开始时处于停止状态,首先设定温度,显示器显示温度,温度设定后则可以启动加热。温度检测系统不断检测并显示系统中的实时温度,当达到设定值后停止加热,当温度下降到下限(小于设定值3℃)时再自动启动加热,这样不断的循环,使温度保持在设定范围之内。启动加热以后就不能再设定温度,因为温度的设定可以根据实验要求改变。若要改变设定的温度,可以先按复位/停止键再重复上述过程。

根据以上对操作和工作过程的分析,程序应分为两个阶段:一是通电或复位后到启动加热,程序主要是按键设定、显示器显示设定温度;二是检测并显示系统的实时温度,并根据检测的结果控制电热器,这时系统不接收键盘的输入。因此,程序可以分为以下几个功能模块:温度设定和启动;显示;温度检测;温度控制以及报警。

10

基于单片机的恒温箱控制系统设计

6.1.1 键盘管理模块

键盘管理子程序流程如图9所示。

图9 键盘处理程序流程

当通电或复位以后,系统进入键盘管理状态,单片机只接收设定温度和启动。当检测到有键闭合时先去除抖动,这里采用软件延时的方法,延时一段时间后,再确定是否有键闭合,然后将设定好的值送入预置温度数据区,并调用温度合法检测报警程序,当设定温度超过最大值如90℃时就会报警,最后当启动键闭合时启动加热。

键盘设定:用于温度设定。共三个按键。

KEY1(P1.1): 状态切换;温度设置确认;温度重新设置。 KEY2(P1.2): 设置温度“+”。 KEY3(P1.3): 设置温度“-”。

系统上电后,数码管全部显示为零,根据按 KEY1 次数,决定显示的状态,根据相应的状态,利用KEY2、KEY3进行加减,当温度设定好之后,再按KEY1确定,系统开始测温,开启加热器。 6.1.2 显示模块

显示子程序的功能是将缓冲区的二进制数据先转换成3个BCD码,再将其分别存入百位、十位、个位3个显示缓冲区,送往串行口,利用单片机的P2口进行扫描,让数据动态的显示出来,可显示设置温度和测量温度。 6.1.3 控制模块

温度控制子程序流程如图10所示,将当前温度与设定好的温度比较,当当前温度小于设定温度时,开启电热器;当当前温度大于设定温度时,关闭电热器;当二者相等时,电热器保持这一状态。

11

基于单片机的恒温箱控制系统设计

图10 控制模块程序流程

6.1.4 温度报警模块

报警子程序流程如图11所示。根据设计要求,当检测到当前温度值高于设定温度值3℃时报警,报警的同时关闭电热器。为了防止误报,设置了报警允许标志,只有在允许报警的情况下,温度值高于设定温度值时才报警。

图11 报警子程序流程

6.1.5 主程序和中断服务程序流程

主程序采用中断嵌套方式设计,各功能模块可直接调用。主程序完成系统的初始化,温度预置及其合法性检测,预置温度的显示及定时器0设置。定时器0中断服务

12

基于单片机的恒温箱控制系统设计

子程序是温度控制体系的主体,用于温度检测、控制和报警(包括启动温度转换、读入采样数据、数字滤波、越限温度报警和越限处理、输出控制脉冲等)。中断由定时器0产生,根据需要每隔15 s中断一次,即每15 s采样控制一次。但系统采用6 MHz晶振,最大定时为130 ms,为实现15 s定时,这里另行设了一个软件计数器。

图12 主程序流程图

13

基于单片机的恒温箱控制系统设计

图13 中断服务程序流程图

7 系统调试与仿真

7.1 硬件调试

根据设计的原理电路做好实验样机,便进入硬件调试阶段。调试工作的主要任务是排除样机故障,其中包括设计错误和工艺性故障。 7.1.1 脱机检查

用万能表或逻辑测试笔逐步按照逻辑图检查机中各器件的电源及各引脚的连接是否正确,检查数据总线、地址总线和控制总线是否有短路等故障。有时为保护芯片,先对各管座的电位(或电源)进行检查,确定其无误后再插入芯片检查。 7.1.2 仿真调试

暂时排除目标板的CPU和EPROM,将样机接上仿真机的40芯仿真插头进行调试,调试各部分接口电路是否满足设计要求。这部分工作是一种经验性很强的工作,一般来说,设计制作的样机不可能一次性完好,总是需要调试的。通常的方法是,先编调试软件,逐一检查调试硬件电路系统设计的准确性。 7.1.3 检查CPU的时钟电路

通过测试ALE信号,如没有ALE信号,则判断是晶体或CPU故障,这称之为“心脏”检查。

14

检查ABUS/DBUS的分时复用功能的地址锁存是否正常。

基于单片机的恒温箱控制系统设计

检查I/O地址分配器。一般是由部分译码或全译码电路构成,如是部分译码设计,则排除地址重叠故障。

7.1.4 对扩展的RAM、ROM进行检查调试

一般先后写入55H、AAH,再读出比较,以此判断是否正常。因为这样RAM、ROM的各位均写入过‘0’、‘1’代码。

7.2 软件调试

软件调试 软件调试根据开发的设备情况可以有以下方法: 7.2.1 交叉汇编

用IBM PC/XT机对MCS—51系列单片机程序进行交叉汇编时,可借助IBM PC/XT机的行编辑和屏幕编辑功能,将源程序按规定的格式输入到PC机,生成MCS—51 HEX目标代码和LIST文件。 7.2.2 用汇编语言

现在有些单片STD工业控制机或者开发系统,可直接使用汇编语言,借助CRT进行汇编语言调试。 7.2.3 手工汇编

这种方法是最原始,但又是一种最简捷的调试方法,且不必增加调试设备。这种方法的实质就是对照MCS—51指令编码表,将源程序指令逐条地译成机器码,然后输入到RAM重新进行调试。在进行手工汇编时,要特别注意转移指令、调用指令、查表指令。必须准确无误地计算出操作码、转移地址和相对偏移量,以免出错。 以上3种方法调试完成以后,即可通过EPROM写入器,将目标代码写入EPROM中,并将其插至机器的相应插座上,系统便可投入运行。

7.3 系统仿真

因本系统是利用单片机进行系统控制,所以需采用单片机仿真工具Proteus进行仿真。Proteus软件是来自英国Labcenter electronics公司的EDA工具软件,Proteus软件有十多年的历史,在全球广泛使用,除了其具有和其它EDA工具一样的原理布图、PCB自动或人工布线及电路仿真的功能外,其革命性的功能是,他的电路仿真是互动的,针对微处理器的应用,还可以直接在基于原理图的虚拟原型上编程,并实现软件源码级的实时调试,如有显示及输出,还能看到运行后输入输出的效果,配合系统配置的虚拟仪器如示波器、逻辑分析仪等,Proteus为使用者建立了完备的电子设计开发环境! Proteus产品系列也包含了革命性的VSM技术[8],用户可以对基于微控制器的设计连同所有的周围电子器件一起仿真,是一款非常优秀的单片机仿真软件。可以使用Keil c51和 Proteus进行联调,使调试、仿真更为方便。

由于Proteus软件库内没有本系统所用到的DS18B20测温元件,所以在仿真时,系统电路作了一些调整。

15

基于单片机的恒温箱控制系统设计

首先画好仿真图,将程序的二进制文件调入单片机对话框的Program File栏内,如图14 所示。

图14 二进制文件的调入

仿真开始时,仿真图如图15所示,数码管都显示为零,只有红色“未加热状态

灯”D1亮。

16

基于单片机的恒温箱控制系统设计

图15 刚启动的仿真图

在设置好温度值如100摄氏度并按SET键确定后,数码管显示实时温度值26摄氏度,系统开始进入加热状态,如图16所示。绿色“加热状态灯”D2亮,黄色“输出控制状态灯”D3亮,系统控制加热器对水进行加热。

图16 系统启动加热仿真图

系统启动加热一段时间后,达到设定的温度值,系统停止加热,状态灯D1重新点亮,如图17所示。

17

基于单片机的恒温箱控制系统设计

图17 系统进入保温状态仿真图

8 抗干扰技术

8.1 硬件抗干扰技术

光电隔离: 在输入和输出通道上采用光电隔离器来进行信息传输是很有好处的,它将微机系统与各种传感器、开关、执行机构从电气上隔离开来,很大一部分干扰将被阻挡。

抗干扰电源: 微机系统供电线路是干扰的主要来源,电源采用隔离变压器接入电网,可以防止电网的干扰侵入微机系统。

配置去耦电容: 原则上每个集成电路芯片都应安置一个0.01mF的陶瓷电容器,可以消除大部分高频干扰。

良好接地: 在既有模拟电路又有数字电路中,数字地与模拟地要分开,最后只在一点相连,如果两者不分,则会互相干扰。

8.2 软件抗干扰技术

人工复位: 对于失控的CPU,最简单的方法是使其复位,程序自动从0000H开始执行。为此只要在单片机的RESET端加上一个高电平信号,并持续10ms以上即可。

掉电保护: 在掉电中断子程序中,首先进行现场保护,保存当时重要的状态参数,当电源恢复正常时,CPU重新复位,恢复现场,继续未完成的工作。

指令冗余: 应多采用单字节指令,并在关键的地方人为地插入一些单字节指令(NOP),或将有效单字书指令重复书写,在一些对程序流向起决定作用的指令之前插入两条NOP指令,以保证弹飞的程序迅速纳入正确的控制轨道。

18

基于单片机的恒温箱控制系统设计

9 系统制作与测试

系统的PCB板见图18,所用元件见表3。

图18 系统的PCB板

19

基于单片机的恒温箱控制系统设计

表3 系统元件列表

Part Type 0.1U 0.01U 1K 4.7K 10K 10K 10K 10U 27 33PF 220*7 9013 CRYSTAL DPY_7-SEG BUTTON BUTTON GREEN-LED Designator C5 C6 R5 R1 R2 R3 R4 C3 R6 C1 RP1 Q1 Y1 DP2 K1 K3 L2 Part Type 33PF 39 47U 74LS138 74LS164 330 AC220V AT89C51 DS18B20 MOC3041 BELL MAC97A6 Designator C2 R8 C4 IC5 IC3 R7 JP IC1 IC2 IC4 SPEAKER Q2 DP1 DP3 K2 L1 DPY_7-SEG DPY_7-SEG BUTTON RED-LED 本文利用AT89C51对温度进行控制,采用单总线传输方式的DS18B20作为温度传感器,与按键、数码显示、报警器等外部辅助硬件共同组成一个温度控制系统。设计中用到了KEIL C51 V8.01、PROTEL99SE、PROTEUS6.7等设计与仿真软件,作者本着安全性、可靠性、稳定性和易扩展性等设计原则,对各方案进行了细心的比较,并对设计中使用的芯片进行了仔细的分析,力求设计出一个安全、稳定、可靠的温度控制系统。因此,本系统的安全性和可扩展性都比较好。在仿真过程中,由于仿真软件库内没有DS18B20这个元件,并且动态显示在仿真时数码显示不稳定,所以仿真时采用了静态显示,并利用软件来模拟温度的变换,从而仿真得到系统工作的整个过程。

20

因篇幅问题不能全部显示,请点此查看更多更全内容