智能体温计作者:刘利洲张介跃徐海涛文稿整理:徐海涛指导老师:章彧朱杰斌摘要本系统通过由温度测量模块,A/D转换模块,以AT89C52单片机为核心的基本系统主要实现温度数据的采集、传输、读取、比较功能,控制LCD显示温度测量值和报警值。通过键控,实现预置报警温度,系统读取预置温度后经过比较测量所得温度,选择是否开启蜂鸣器报警,并且每分钟语音报告一次所测温度。采用E2PROM存储电压预置值,全系统用±15V和+5V电源供电。AbstractThissystem,withanAT89C52systemasitscore,iscalledintelligentthermometer.ItusedatemperaturemeasuremoduleandanA/Dconversionmoduleimplementedmainlyforthecollection,transmission,read,compareoftemperaturesignal,controlledLCDdisplayingmetricaltemperaturevaluesandthecautionaryvalue,allthosepartsandAT89C52wereworkingasabasicsystem.Itcansetacautionarytemperaturebeforehandbyusingakeyboard,thebasicsystemreadtheadvancecautionarytemperature,andthencomparedwiththetemperaturemeasured,todetermineopeningthebuzzertogivecautionornot,italsocanreportthemetricaltemperaturevalueonceaminute.ThisthermometerusedE2PROMtosavethecautionaryvalue,thewholesystemsuppliedwith±15Vand+5Velectricalsources.一、方案设计与论证题目对测量温度的精度要求较高,另外还需显示温度和播报温度,因此使用单片机实现题目要求是较好的方案,系统包括:温度测量采集、A/D转换、单片机、I/O设备、控制执行电路等。我们所选用的单片机AT89C52有8K的可重复编程闪存,256x8-Bit内置RAM,基本不需要片外存储器,我们考虑使用了一个片外E2PROM存储报警电压值也是为了简化编程、调试过程。89C52有32个可编程I/O口,扩展性能好。常见感温元件有热电偶、热电阻和半导体等传感器,它们的主要优缺点是:热电偶价格便宜,但精度较低,需冷端补偿,电路设计复杂;热电阻精度较高,但需要标准稳定电阻匹配才能使用。而半导体温度传感器线路设计简单,精度较高,线性度好,价格适中。半导体集成温度传感器AD590J的测温,在-55℃~+150℃范围内,非线性误差为±0.3℃,具有良好的重复性(重复性优于0.1℃),在使用软件算法进行线性化后,系统测温精度可以达到0.1℃。故选用AD590J作为温度感应部件,并且在系统前端部分,我们使用运算放大器作前级的功率放大电路,由于运算放大器具有很大的电源电压抑制化,可以大大减小输出端的纹波电压。A/D采用一片AD574A12位输出模数转换器,其分辨率为50℃/4096=0.0122℃,抗干扰性强,在该系统中使用AD574A保证了对采集入的变量的准确量化。本题中的测试范围为0~50℃,温度的最小分辨率为0.1℃。这样,整个系统的温度采样点数为50×10=500,采用一般的8位A/D,分辨率只有1/256,无法满足精度要求。题目所给出的方案包含了最主要的硬件系统构成,硬件连接可以实现基本的人机交互,通过硬件的选择,软件编程控制可以满足精度要求。二、系统框图采用题目提供的系统硬件结构:三、主要电路设计与计算1、数控部分(1)89C52单片机基本系统数控部分核心采用89C52单片机与译码器74LS138,四与门芯片74LS08组成单片机的基本系统,并对P2口的P2.4、P2.5、P2.6经74LS138译码后作为A/D转换器电路和键盘电路的选通信号,P1口控制对语音芯片的数据传输。(2)A/D转换器AD574A接口电路接线如附图1,AD574A芯片在6脚CE=1,3脚片选输入为低电平的时候才能正常工作,4脚A0/SC和2脚用来控制数据输出状态的格式,A0=0则输出数据的低四位,A0=1则输出数据的高八位,2脚为低则数据以八位分两次输出,2脚为高则数据以12位并行输出,我们采取的硬件连接是,AD574A的数据输出高八位直接连接在系统数据总线上,低四位连接在数据总线的低四位,所以我们将4脚接单片机芯片,用单片机芯片控制输出哪几位的数据,2脚接低电平,数据以八位输出。此外,芯片本身能够通过其8脚产生10V的基准电压,故不需要另外再用电路产生基准电压,基准电压通过其10脚输入,12脚模拟电压输入端通过温度感应电路输入0~+5V电压,而芯片产生的10V基准电压将芯片的量程控制在0~±5V内,满足测量要求。(3)ZY1420A芯片语音录放电路使用ZY1420A语音芯片存储和发送语音,声音品质优良,录音时间长,有20s,线路连接及录放音控制简单。它的基本组成有时钟电路、拾音放大、自动增益控制电路、滤波器、差动功放、电源电路、E2PROM地址译码及其控制逻辑电路组成。其连接电路如附图1中IC5。A0~A7语音地址直线由89C52的P1口提供。预先使用话筒录好了温度语音,由89C52经所测温度判断,输出,报温。(4)开机温度报警值预置在开机通电时,通过键盘设置开机电压报警值,存储在外设E2PROM中,防止意外丢失。报警器采用有源蜂鸣器。2、键盘接口电路在设计键盘接口电路时,我们使用74LS245八位总线收发器扩展电路,以及一条单片温度传感器A/D转换器放大器单片机LCD显示键盘控制前端部分机I/O线P2.0,以节省单片机接口,I/O线与74LS245八条数据线一共有8个交点,我们取B0~B3上的四个交点做按键,键盘通过软件控制,实现自动扫描,防抖。3、LCD显示器电路LCD采用2行16列的JHD162A点阵式显示芯片,数据接口D0~D7直接连接在数据总线P0口上,通过编程,由89C52提供数据显示。4、温度测量电路(1)集成温度传感器AD590JAD590J相当于一个高输入阻抗恒流源,可在4~30V电压下工作。在测量温度范围内,对应于绝对温度T变化1K时,输出电流变化1µA。电路图如附图2,电位器R3用于调整零点,R5用于调整运放OP07的增益。(2)精密运算放大器OP07作为跟随器电路,以提高输入阻抗和避免对后级A/D的影响,可调电阻均采用精密可调电阻,确保准确性,如附图2。5、电源设计(1)±15V电源(0.7A)±15V电源电路图如附图2对于滤波电容的选择,要考虑:1、整流管的压降;2、7815/7915最小允许压降Ud;3、电网波动10%。从而允许纹波的峰峰值Dtt=18×20.5(1-10%)-0.7-Ud-15V=4.9V按近似电流放电计算,并设导通角θ=0°,则C=I*Dt/Du=0.7×1/100/4.9=1430uF,选取滤波电容C=2200uF/30V(2)+5V电源(1A)+5V电源电路图如附图2允许的最大纹波峰峰值Dtt=9×20.5(1-10%)-1.4-2.3-5V=2.76VC=I*Dt/Du=1×1/100/2.76=3600uF,选取滤波电容C=4700uF/16V四、系统软件工作流程软件主要功能温度设定软件上可以将报警温度设置在0~99.9℃,同时也包括将报警温度值从E2PROM中存储和读取;报温控制和报警控制包括每秒测量温度子程序,每分钟报温,超温报警;LCD在各种状态下的显示本系统有开机初始化,四种按键状态等多个显示界面,需要软件控制显示的数据,加强人机交互;传感器的补偿为了获得更高的测量显示精度,利用AD590J的±0.1℃的重复性,软件汇总设有多次采样累加求平均值,对AD590J的信号进行线性补偿以获得±0.1℃的测量精度。开始初始化包括各项数据的整理LCD初始显示High-value:报警值True-value:测量值中断延时程序(控制每秒测量,每分钟报温)键盘扫描是否有键按下开始设定键SET控制设定数位数字右移键取键码处理确定键ENTER控制数字增加数字翻转键继续测量存储E2PROM判断与E2PROM中的设定值是否相同对应SET子程序LCD显示子程序开始测量采集温度数据,每秒采集128次数据,求平均值对应右移子程序LCD显示子程序对应确定子程序LCD显示子程序对应翻转子程序LCD显示子程序每1m报温程序报警子程序是否>≤比较五、系统测试及整机指标1、系统功能测试①系统操作及面板说明系统按键总共有五个,操作简便,五个键分别是复位键、SET(设定)键、ENTER(确定)键、数字翻转键、右移键。面板初始显示为,High-value:(报警值)True-value(实际测量值)。以设置报警温度为37.0度为例:假定系统初始报警温度为00.0度,首先按SET键,然后按数字翻转键三次,此时十位数变成3(当翻转到数字9后,再按下数字翻转键,数字会回到0),然后按右移键设置个位数,然后是小数点后一位,如果需要修改已经设置的数位,可以一直按右移键到需要修改的数位上,修改好温度报警值后按ENTER键确定存储,则设定好的温度值会自动存储进E2PROM中。②符合设计提出的基本功能系统前段部分归一化输出,输出电压0~+5V,对应0~+50℃,系统前段有精密运算放大器,5V稳压管保证输出电压不超过5V,完全满足每秒采集一次温度的要求,并且有所扩展,测量精度满足要求,见系统指标测试。有每分钟语音报温,系统可以在0~50℃内任意设报警温度值,也可在开机状态下的任意时刻更改报警温度值。③扩展了温度采集功能通过软件控制,系统每秒采集128次温度,输出的温度值为128次采集结果的平均值,测量的温度值更加准确。2、系统指标测试测试之前先对系统进行了调零调试,将温度传感器放入0℃的冰水混和物中,调整电位器R3使得OP07的输出电压至0V,对应温度0℃。待传感器恢复正常,再用人体体温校验,同时用标准温度计确定此时的标准体温值,如,温度计测的体温为37.5℃,则将OP07的输出电压调至3.75V,如此反复多次调试,以求系统的基准温度不至于偏差太大。调试完毕之后再进行,水温和体温测试,测试水温可以将温度感应器放入水中,而测体温最方便的方式就是接触被测人身体测温,两种温度感应方式不同,误差也不尽相同,故想通过两轮测试,以及测试之后的再调试,保证此准确性。(1)水温测试12345678910实测温度/℃12.015.018.020.025.032.040.045.047.047.0体温计显示温度/℃12.015.018.020.024.932.040.044.946.947.0温度报警值/℃17.017.017.027.027.027.037.037.037.047.0误差D/℃0000-0.100-0.1-0.10平均误差(|D1|+|D2|+…+|D10|)/10=0.03℃(2)体温测试12345678910实测温度/℃36.536.836.836.936.036.636.537.137.336.9体温计显示温度/℃36.536.936.837.036.036.736.337.137.336.9温度报警值/℃37.037.037.037.037.037.037.037.037.037.0误差D/℃00.100.100.1-0.2000平均误差(|D1|+|D2|+…+|D10|)/10=0.05℃测试结果误差被控制在0.1℃以内(以标准水银温度计为参照温度计,精确度为0.2℃,选择不同参照而产生的误差不考虑在内),选取测试过程中也对LCD的显示稳定度进行了检测,温度显示稳定时间