下三种方案:
方案一:利用热电阻传感器作为感温元件,热电阻随温度变化而变化,用仪表测量出热电阻的阻值变化,从而得到与电阻值相应的温度值。最常用的的是铂电阻传感器,铂电阻在氧化介质中,甚至在高温的条件下其物理,化学性质不变。由铂电阻阻值的变化经小信号变送器XTR101将铂电阻随温度变化的转换为4~20mA线形变化电路,再将电流信号转化为电压信号,送到A/D转换器——ADC0809.即将模拟信号转换为数字信号。该方案线性度优于0.01%。
方案二:采用温度传感器AD590K。AD590K具有较高精度和重复性,良好的非线性保证±0.1℃的测量精度。加上软件非线性补偿可以实现高精度测量。AD590将温度转化为电流信号,因此要加相应的调理电路,将电流信号转化为电压信号。送入8为A/D转换器,可以获得255级的精度,基本满足题目要求。
方案三:采用数字温度传感器DS18B20。DS18B20为数字式温度传感器,无需其他外加电路,直接输出数字量。可直接与单片机通信,读取测温数据,电路简单。如图1.2.2 所示 。
图1.2.2 DS18B20测温电路
基于以上分析和现有器件所限,温度采集模块选用方案三。DS18B20与传统的热敏电阻相比,他能够直接读出被测温度并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。并且从DS18B20读出的信息或写入DS18B20的信息仅需要一根口线(单线接口)读写,因而使用DS18B20可使系统结构更趋简单,可靠性更高。他在测温精度、转换时间、传输距离、分辨率等方面带来了令人满意的效果。 (4)键盘与显示模块
根据题目要求,水温要由人工设定,并能实时显示温度值。对键盘和显示模块有下面两种方案:
方案一:采用液晶显示屏和通用矩阵键盘。液晶显示屏(LCD)具有功耗小、轻薄短小无辐射危险,平面直角显示以及影象稳定不闪烁,可视面积大,画面效果好,抗干扰能力强等特点。
方案二:采用三位LED七段数码管分别显示温度的十位、个位和小数位。按键采用单列3按键进行温度设定。数码管具有:低能耗、低损耗、低压、寿命长、耐老化,对外界环境要求较低。然而,其与液晶显示屏相比,体积大而且耗电量大。
根据以上论述,采用方案一。本系统中,采用了液晶显示屏的动态显示,节省单片机的内部资源。
6
1.2.2 系统各模块的最终方案
根据以上分析,结合器件和设备等因素,确定如下方案:
1. 采用STC89C52单片机作为控制器,分别对温度采集、LCD显示、温度设定、加热装置功率控制。
2. 温度测量模块采用数字温度传感器DS18B20。此器件经软件设置可以实现高分辨率测量。
3. 电热丝有效功率控制采用可控硅控制,实现开断无涌流,开端速度快。4. 显示用LCD液晶1602显示实时温度值,用ENTER、UP、DOWN三个单键 实现温度值的设定。
CPU(STC89C52)首先写入命令给DS18B20,然后DS18B20开始转换数据,转换后通过STC89C52来处理数据。数据处理后的结果就显示到液晶1602上。另外由键盘设定温度值送到单片机,单片机通过数据处理发出温度控制信息到可控硅。DS18B20可以被编程,所以箭头是双向的。
第二章 硬件设计与实现
2.1 系统硬件模块关系
本系统的执行方法是循环查询执行的,键盘扫描也是用循环查询的办法,由于本系统对实时性要求不是很高,所以没有用到中断方式来处理。各模块关系图如图2.1.1所示。
单片机初始话模块 DS18B20得到温度值,存放到Buffer中 处理温度值,换算成BCD码 温度显示模块 键盘扫描模块(扫描有无Enter键按下) 可控硅控制模块
图2.1.1 统硬件模块关系图
2.2 主要单元电路的设计
2.2.1 温度采集部分设计
本系统采用半导体温度传感器作为敏感元件。传感器我们采用了DS18B20
7
单总线可编程温度传感器,来实现对温度的采集和转换,直接输出数字量,可以直接和单片机进行通讯,大大简化了电路的复杂度。DS18B20应用广泛,性能可以满足题目的设计要求。DS18B20的测温电路如图2.2.1所示。
图2.2.1 DS18B20测温电路
(1)DS18B20的测温功能的实现:
其测温电路的实现是依靠单片机软件的编程上。 当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的0,1字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式以0.062 5℃/LSB形式表示。温度值格式如表2.2.1所示,其中“S”为标志位,对应的温度计算:当符号位S=0时,直接将二进制位转换为十进制;当S=1时,先将补码变换为原码,再计算十进制值。DS18B20完成温度转换后,就把测得的温度值与 TH做比较,若T>TH或T 表2.2.1 DS18B20温度值格式表 LS Byte MS Byte 23 S 22 S 21 S 20 S 2?1 S 2?2 26 2?3 25 2?4 24 (2)、DSl8B20工作过程中的协议 初始化 -> ROM操作命令 -> 存储器操作命令-> 处理数据 ① 初始化 单总线上的所有处理均从初始化开始 ② ROM操作命令 如表2.2.2所示 表2.2.2 ROM操作命令表 指令 Read ROM(读ROM) Match ROM(匹配ROM) Skip ROM(跳过ROM] Search ROM(搜索ROM) Alarm search(告警搜索) 代码 33H 55H CCH F0H ECH 表2.2.3 存储器操作命令表 指令 Write Scratchpad(写暂存存储器) Read Scratchpad(读暂存存储器) Copy Scratchpad(复制暂存存储器) Convert Temperature(温度变换) Recall EPROM(重新调出) Read Power supply(读电源) 8 ③ 存储器操作命令如表2.2.3所示 代码 4EH BEH 48H 44H B8H B4H (3)温度转换算法及分析 由于DS18B20转换后的代码并不是实际的温度值,所以要进行计算转换。温度高字节(MS Byte)高5位是用来保存温度的正负(标志为S的bit11~bit15),高字节(MS Byte)低3位和低字节来保存温度值(bit0 ~ bit10)。其中低字节(LS Byte)的低4位来保存温度的小数位(bit0 ~ bit 3)。由于本程序采用的是0.0625的精度,小数部分的值,可以用后四位代表的实际数值乘以0.0625,得到真正的数值,数值可能带几个小数位,所以采取小数舍入,保留一位小数即可。也就说,本系统的温度精确到了0.1度。 算法核心:首先程序判断温度是否是零下,如果是,则DS18B20保存的是温度的补码值,需要对其低8位(LS Byte)取反加一变成原码。处理过后把DS18B20的温度Copy到单片机的RAM中,里面已经是温度值的Hex码了,然后转换Hex码到BCD码,分别把小数位,个位,十位的BCD码存入RAM中。 2.2.2 加热控制部分 由于本系统要控制电热丝加热,功率较大,因此要借助功率电路。在器件选择上留足余量,增加安全性。加热部分采用可控硅控制,反应速度快。 当实测温度低于设定值时,由单片机输出高电平信号。三极管9014导通,可控硅开始工作对水加温。为了防止可控硅频繁动作。在软件中对水温测量精确到0.1℃,而在温度设定时只取整数。可以有1℃的余量。 当设定温度低于实测温度时为了加快系统动态响应速度,设置一个小功率电扇,加速水温的降低。使系统整体性能得以提高。电路如图2.2.2所示。 图2.2.2 可控硅控制风扇图 2.2.3 键盘、显示、控制器部分 本设计中采用动态显示方式驱动液晶1602。 键盘采用按键开关经上拉电阻分别接P2.0、P2.1、P2.2、P2.3口上,起到控制、上调和下调作用。每按上调和下调键,设定温度值增1减1。单片机XTAL2、XTAL1接12M晶振,提供系统时钟基值。另RESET接复位按键。 9 第三章 系统软件设计 系统的软件设计采用C语言,对单片机进行变成实现各项功能。 主程序对模块进行初始化,而后调用读温度、处理温度、显示、键盘、和可控硅各模块。用的是循环查询方式,来显示和控制温度。 3.1 读取DS18B20温度模块子程序 每次对DS18B20操作时多要按照DS18B20工作过程中的协议进行。 初始化-> ROM操作命令-> 存储器操作命令-> 处理数据 程序流程图如图3.1.1所示。 开始 初始化 否 DS18B20存在? 是 ROM操作命令 存储操作命令 读取温度值 返回 图3.1.1 读取DS18B20温度子程序流程图 3.2 数据处理子程序 由于DS18B20转换后的代码并不是实际的温度值,所以要进行数据处理。由于本程序采用的是0.0625的精度,小数部分的值,可以用后四位代表的实际数值乘以0.0625,得到真正的数值,数值可能带几个小数位,所以采取四舍五入,保留一位小数即可。也就说,本系统的温度精确到了0.1度。 首先程序判断温度是否是零下,如果是,则DS18B20保存的是温度的补码值,需要对其低8位(LS Byte)取反加一变成原码。处理过后把DS18B20的温度Copy到单片机的RAM中,里面已经是温度值的Hex码了,然后转换Hex码到 10