基于电容充放电技术的温度测试学位论文.docx
- 文档编号:28741839
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:34
- 大小:341.07KB
基于电容充放电技术的温度测试学位论文.docx
《基于电容充放电技术的温度测试学位论文.docx》由会员分享,可在线阅读,更多相关《基于电容充放电技术的温度测试学位论文.docx(34页珍藏版)》请在冰豆网上搜索。
基于电容充放电技术的温度测试学位论文
基于电容充放电技术的温度测试
摘要:
温度是与人们的生产生活密切相关的物理量之一,目前有多种温度测量方法,如:
玻璃温度计测温、半导体测温、热敏电阻测温、红外辐射测温、铂电阻测温以及热电偶测温等等,根据不同的测温精度及温度范围,可选用不同的测温方式。
本文采用一种没有ADC模块的模拟量检测方法,通过编写程序控制单片机的通用输入输出口、定时器等模块协同工作,通过捕捉电容充电时间确定当前的热敏电阻阻值,并通过查表实现温度测量。
系统实现了0℃~60℃范围内的温度测量,设计的温度计具有低成本、高精度的特点,应用前景较为广阔。
关键词:
温度;热敏电阻;单片机;电容;系统
ANovelThermometerBasedontheCapacitiveChargingandDischargingTechnology
Abstract:
Thetemperatureisaphysicalquantitycloselyrelatedwithpeople'sproductionandlife,resultinginavarietyoftemperaturemeasurementmethod,aglassthermometertemperaturesensor,semiconductortemperaturesensor,NTCthermistortemperaturesensor,infraredradiationtemperaturesensor,platinumresistancetemperaturemeasuringandthermocouplethermometer,etc.Withthedifferenttemperatureprecisionandtemperaturerange,wecanselectdifferentwaysofmeasuringtemperature.
AnanaloguetestmethodwithoutADCmoduleisintroducedinthispaper,whichmakesinput,outputandtimermoduleofMCUworkcollaborativelybyprogramming,determinesthecurrentresistanceofthermistorbycalculatingcharge-timeofcapacitor,andachievetemperaturemeasurementbylookinguptotable.
ThisSystemachievesthetemperaturemeasurementwhichrangesfrom0℃to60℃,andthedesignofthermometerhascharacteristicsoflowcostandhighprecision,whichcanbewidelyusedinthefuture.
Keywords:
AVRMCU;Temperature;Thermistors;SCM;Capacitor;system
目录
摘要I
AbstractII
1引言1
1.1选题背景与选题意义1
1.2本文任务1
1.3本文的结构2
2测量方法的原理3
2.1方案的比较3
2.2基于电容充放电技术的温度测量原理4
2.2.1测量原理4
2.2.2电路说明4
2.2.3电容的参数选择5
2.3电路的性能及其功能6
3系统硬件设计7
3.1系统设计的系统框图7
3.2各功能模块设计及其实现7
3.2.1单片机的复位电路7
3.2.2数码管的显示电路8
3.2.3温度采集电路9
3.2.4ISP下载电路11
3.2.5电源电路12
4系统软件设计13
4.1主函数13
4.2延时子程序15
4.3数码管显示程序15
4.3.1数码管显示编程的原理15
4.3.2数码管显示的程序16
4.3.3数码管位的读取18
4.4端口设置程序18
4.5温度信号采集程序20
5实物的调试与误差分析23
5.1硬件的调试23
5.2温度的误差分析23
6体会与展望25
6.1总结与体会25
6.2设计前景25
参考文献27
致谢28
1引言
1.1选题背景与选题意义
人民的生活与环境都与温度息息相关,在信息时代高速发展的今天,随着科学技术水平的不断提高,温度测量技术也得到了不断的发展。
现在温度测量的方法有很多,也有很多分类,由于测量原理和测量方法的多样性,很难找到一种完全理想的分类方法。
我们大家都知道温度是表征物体冷热程度的物理量,而测量温度的标尺就是温度计,其按照测量方式可以分为接触式和非接触式两种。
通常来说的接触式测量仪表比较简单、可靠,测量精度较高,但是因为测温元件与被测介质需要进行充分的热交换,所以其需要一定的时间才能达到热平衡,所以,存在测温延迟现象,同时受耐高温和耐低温材料的限制,不能应用于这些极端的温度测量[1];非接触式仪表测温仪是通过热辐射的原理来测量温度的,测温元件不需要与被测介质接触,测温范围广,不受测温上限的限制,也不会破坏被测物体的温度场,反应速度一般也比较快;但受到物体发射率、测量距离、烟尘和水汽等外界因素的影响,其测量误差较大。
虽然目前的测温方法多种多样,但是为了寻找一种既经济又有效的测温方式,我选择了用电容充放电来实现温度的测量,现在单片机的内部集成的已经越来越高了。
ADC就是最早整合到芯片上的一项功能,但是市场的激烈竞争,让我们想尽办法去节省、节省、在节省……,用不带ADC功能的单片机实现ADC功能的模拟量检测[2];这种方法虽然已经成熟,但是对于这一方法的灵活运用,在生产的过程中,会给商家带来不菲的经济效益。
在工业生产过程中需要实时测量温度,在农业生产中也离不开温度的测量,因此研究温度的测量方法和装置具有重要的意义。
本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用,该设计控制器使用单片机ATMEGA16,测温电阻使用热敏电阻,用4位共阴极LED数码管实现温度显示,能准确达到以上要求。
单片机有体积小、功耗低、性价比高。
易于推广应用等显著特点,在自动化装置、智能表仪器仪表、过程控制和家用电器等领域得到广泛的应用。
应用单片充当主控器来再加上适量的外围实现此功能,且单片机价格便宜,性能稳定。
应用的外围器件相对较少,这就提高了系统的稳定性,且单片机控制简易,开发工具简单,很容易大批量生产。
1.2本文任务
要求利用无ADC模块的电路,来检测温度模拟量,达到和ADC模块相同的结果,并通过编写程序来控制单片机的通用输入输出口、定时器等模块协同工作,实现温度信号的数字化测量。
主要参数要求:
(1)开机自动复位。
(2)利用热敏电阻测量当时的室温。
(3)测量范围为0℃~60℃,精度为±1℃
(4)用四位共阴数码管显示当前温度值。
1.3本文的结构
第一章主要介绍了此设计的历史背景和选题的意义,以及本文的任务要求。
第二章主要叙述设计的测量方案原理。
第三章主要写系统的硬件实现的过程,即如何将单片机,热敏电阻和显示屏结合在一起以达到设计目标。
第四章主要分析编程过程。
第五章主要对硬件的调试及误差分析。
第六章是对本设计的总结与对本设计未来的期望。
2测量方法的原理
2.1方案的比较
方案一
由于本设计是测温电路,可以考虑用温度传感器来实现,在单片机电路的设计中,大多数的设计都是使用传感器来完成的,所以这是非常容易想到的,我们可以采用一只温度传感器DS18B20,虽然此传感器可以很容易的直接读取被测温度值,并进行转换,但是从价格角度考虑,这种方案的成本比较高。
方案二
另外,测温电路还可以用AD590单片集成感温电流源,再利用热敏电阻负温度系数的特性构建出测温电路,并通过STC12C5410AD单片机,内部自带10位8路的AD转换模块,可以把测量电路输出的电压值通过AD模块转化为数字量,最后通过数码管显示出来,不过这样的成本就会大大的上升,我们要寻找一种既经济又有效的方案。
方案三
还可以使用热敏电阻之类的器件利用其感温效应,将温度的变化反应为电压或电流的变化,然后又经过A/D电路转换,最后由单片机进行数据处理[3];经过论证这种方案虽然可行,但是还是用到了ADC模块,不符合本文所要讲述的一种无需A/D模块的新方法的内容。
方案四
可以考虑使用温度传感器MAX6675+AT89C52,MAX6675将热电偶测温应用时复杂的线性变化、冷端补偿及数字化输出等问题集中在一个芯片上解决,简化了热电偶测温的方案应用于嵌入式系统领域时复杂的软硬件设计,不过热电偶测温方案是应用于嵌入式系统领域的理想选择,我们的测温电路要应用的更加广泛与普及,所以热电偶的方法还不是本文所要找到的最理想的方法。
方案五
进而考虑到可以单独的使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化充电的时间通过编程计数来实现,并进行近似的线性处理,累加时间这些都可以用单片机进行数据的处理,再显示电路上,就可以将被测温度显示出来,这种设计只需要用软件编程就可以轻松的实现,电路也比较容易实现。
从以上五种方案,很容易看出,采用方案五,电路比较简单,软件设计也比较方便,故采用了方案五。
2.2基于电容充放电技术的温度测量原理
对于热敏电阻模拟信号的检测,我们可以通过对电容充电,把电阻值转化为时间值,并对该时间进行检测和计算,从而获得电阻值或其他我们需要的结果。
本文以下将介绍温度检测的具体方法。
2.2.1测量原理
我们知道,当我们对RC电路进行充电(参见图2-1)时,如果电压、电容都不变化,而且RC的时间常数又足够大,那么我们就可以认为电阻之比等于充电时间之比。
(2.1)
在公式(2.1)中,k代表电阻比率。
这个公式就是本文所做的设计要用到的理论基础,在该公式中有四个参数,其中
和
是可以通过单片机的计时器测量出来的。
剩下的两个电阻值参数,我们假设其中一个为参考电阻(电阻值已知),我们通过计算就可以很容易地求出另一个被测电阻的阻值。
图2-1电容充电曲线
2.2.2电路说明
为了实现这个电阻测量的功能,我们需要使用单片机的两个三态I/O口。
我们需要求这些I/O口在作为输出端口时,能够提供足够的充/放电电流;而在作为输入端口时,能够对外表现出高阻特性(漏电流越小也好)。
许多系列的单片机都满足这些要求,典型的如PIC、AVR等等。
另外我还需要CPU内部的计数器,用于检测热敏电阻对电容充电时间的计时。
并通过时间的不同输出我们想要测得的温度值。
图2-2温度检测电路图
2.2.3电容的参数选择
电容值可以按照固定公式计算。
另外,实际选用的电容值应该比计算结果稍微小一些。
确保测量最大电阻时,计时器不会溢出。
(2.2)
ØT为完成额定位数的A/D转换所需的时间;
Ø
为最大可能的测量电阻;
Ø
为I/O口门限电压;
Ø
为参考电压。
图2-3电容充/放电波形
2.3电路的性能及其功能
该电路可以消除失调、增益、电容、电源电压和温度等因素带来的误差。
该电路无法消除因参考电阻、电阻和电容非线性度、I/O引脚漏电、I/O引脚输入门限不定度和单片机定时测量不定度等因素造成的误差。
温度测试系统的功能主要有数据采集、数据处理、输出当前的温度值。
能对0℃~60℃范围内的各种温度进行测量,同时,四位LED显示器直接显示出当前的温度值,准确度高,显示清晰,稳定可靠,使用方便等特点。
这个结果的精度,可以控制在±1%以内。
这在一些日常的温度检测功能应用中已经可以满足人们的需求了。
3系统硬件设计
3.1系统设计的系统框图
图3-1总体设计方框图
本系统采用的是Atmega16单片机,它的内部带有8M经过标定的、可校正的RC振荡器,这个振荡源可作为系统时钟使用,系统上电后自动复位,通过ISP下载电路可直接对单片机进行程序的下载功能,还可通过四位共阴极的数码管显示电路显示温度值。
根据系统的设计要求,当单片机上电后,首先对电容两端的电压值进行充分的放电,然后对单片机端口进行方向的设置,连接热敏电阻的端口设置输出,连接普通电路端口的设置为输入,然后开始对电容进行充电,当电容两端的电压值达到单片机端口的门限电压值的时候,输入端口的电压将变成高电平,这就改变了输入端口的方向,此时标志着充电的结束,充电计时的程序将充电所得到的时间发送到ATmega16单片机内部,经ATmega16分析处理,查表找到当时的充电时间所对应的热敏电阻的阻值,然后将这个阻值所对应的温度计算出来,最后将这个温度值发送给单片机与显示器连接的端口,将把温度显示在数码管显示电路上。
3.2各功能模块设计及其实现
3.2.1单片机的复位电路
复位电路的基本功能是:
系统上电时提供复位信号,直至系统电源稳定后,再撤销复位信号。
为可靠起见,电源稳定后还需要经一定的延时才可撤销复位信号,这是为了以防电源开关或电源插头分-合过程中引起的抖动而影响复位[4]。
图1是复位电路的原理图
图3-2复位电路的原理图
为确保微机系统中电路的稳定并可靠工作,复位电路是必不可少的一部分,复位电路的第一功能是上电复位。
一般微机电路正常工作需要供电电源为5V±5%,即4.75~5.25V。
由于微机电路是时序数字电路,它需要稳定的时钟信号,因此在电源上电时,只有当VCC超过4.75V低于5.25V以及晶体振荡器稳定工作时,复位信号才被撤除,微机电路开始正常工作。
3.2.2数码管的显示电路
数码管电路图如下
图3-3数码管的显示电路原理图
在整个系统数码管的显示电路中,将显示电路与单片机连接的端口设为输出,通过1K的电阻连接到数码管的八位段选位上,并通过设置另外的四个端口输出的高低电平情况,控制三极管的导通与截止,经过三极管的导通截止是为了确保数码管的片选端是分别有效的,来决定数码管各个位的亮灭情况。
三极管的射极接地,三极管的基极经过4.7K电阻连接在单片机上,三极管的集电极连接到数码管的位选管脚上,当基极给出一个高电平的时候,三极管导通片选端的电平瞬间变低,由于数码管的片选端低电平有效,所以这个位的数码管被选中,数码管接到单片机发出的段选信号,并显示当前的数字,因为本系统采用的是动态显示,所以数码管真实的情况是在轮流的点亮和熄灭,这是因为闪烁的频率比较高,已经超出人眼所能接受的范围,给人的感觉就好像是所有的数码管被同时点亮。
3.2.3温度采集电路
为了实现热敏电阻测量温度的功能,我们需要使用单片机的2个三态I/O口。
我们要求这些I/O口在作为输出口时,能够提供足够的充/放电电流;而在作为输入口是,能够对外表现出高阻特性(漏电流越小越好)。
而ATmega16单片机就能满足这些要求,另外我们需要一个定时器对充电时间计时。
在测量温度的电路实现中,大多数的测量都是用DS1820专用的温度传感器来完成的,这里由于成本的关系,现用普通的热敏电阻测量,热敏电阻是利用对温度敏感的半导体材料制成的,其阻值随温度的变化有比较明显的改变,这里采用的是负温度系数的热敏电阻,其特点是,在工作温度范围内,电阻值随着温度的升高而降低、灵敏度高、响应快。
当温度大幅上升的时候,电阻值可下降3~5个数量级。
具体的设计方案如下所示:
利用单片机I/O口的门槛判别电压来检测由热敏电阻构成的RC电路的充放电时间,从而间接达到测温目的的简单廉价温度测量仪器。
电子温度计包括三个部分:
其一,热敏电阻阻值测量。
其二,计算热敏电阻相应阻值下所对应的充电时间。
其三,显示部分,可根据要求精度,选取不同位数的数码管。
RC测温电路如下图:
图3-4温度信号采集电路原理图
其中电阻R8是标准电阻,用来和热敏电阻对电容充电并比较,当C5的电压值等于PB0端口的端口电压时,R8所连接的端口方向将随之改变,R9是热敏电阻,主要特性是能根据环境温度的大小改变自身的阻值,电容C5的作用是让充电电压缓慢上升或下降。
由以上的测温电路可知,通过热敏电阻R9对电容充电,直到放电电压上升到单片机I/O口门槛判别电压时,即
时,这时电容C5电压值被充满,记录这段充电时间
。
当计算出热敏电阻当前的阻值R9所对应的充电时间后,可根据热敏电阻厂家提供的温度阻值对照表进行进行查表计算,如果要求大范围的温度检测时,用上面的方法显的非常困难而繁琐,不但代码冗长,而且精确度还很低,所以这里提供一个差值查表的计算方法,不但可以减少代码冗余长度,而且可以达到很高的精度效果,其原理是把要测量的温度范围分隔成若干段(例如,每隔5度分为一段),分段的数量要看系统的精度要求而定,把每一段近似看做一个直线,通过每一段的上限温度阻值
和下限温度阻值
之差与每一段中包括的温度点数(如5个温度点)之比,求得这个段的直线斜率:
(3.1)
再求出当前热敏电阻阻值在这一段的差值由式(3.2)可见,到此可以根据斜率K和差值ΔR计算出当前温度在这一段中的温度由式(3.3)可见,最后把这个计算出来的温度
加上这个段的温度值
即为当前温度值由式(3.4)可见。
(3.2)
(3.3)
(3.4)
温度的检测步骤:
●设置端口方向
●对电容进行充分放电
●更改端口方向
●对电容进行充电
●记录充电的时间
●计算电阻比率
电阻比率公式:
(3.5)
●查表求温度值
表3-1NTC分度表
/
=
T的单位是℃、R单位是
T
R
T
R
0
27.3720
35
6.9424
5
22.1167
40
5.8265
10
17.9810
45
4.9124
15
14.7050
50
4.1599
20
12.0938
55
3.5377
25
10.0000
60
3.0208
30
8.3115
3.2.4ISP下载电路
ISP(In-SystemProgramming)在线系统可编程,指电路板上的空白器件可以通过编程写入用户编写的最终代码,而不需要从电路板上取下器件,已经下载好控制程序的器件也可以用ISP方式擦除或再编程。
图3-5ISP下载电路
ISP技术是未来发展方向。
In-SystemProgramming是一种无需将存储芯片(如EPROM)从设计的系统设备上取出就能对其进行可编程的过程,缩略为ISP[5];在线系统编程需要在目标板上有额外的电路完成编程任务。
ISP技术的优势是不需要编程器就可以进行单片机的实验和开发,单片机芯片可以直接焊接到电路板上,经过电路调试成功即可成为成品,免去了调试时由于频繁地插入取出芯片对芯片的管脚和电路板的可靠性带来的不可预知的损坏。
ISP的工作原理
ISP的功能实现相对要简单一些,一般通用的做法是将存储器的内部可以由上位机的软件通过串口来进行改写。
对于单片机来讲可以通过SPI或其它的串行接口接收上位机传来的数据并写入存储器中。
所以即使我们将芯片焊接在电路板上,只要留出和上位机接口的这个串口端口,就可以实现芯片内部存储器的改写,而无须再取下芯片。
3.2.5电源电路
7805系列集成稳压器的典型应用电路如下图所示,这是一个输出正5V直流电压的稳压电源电路。
IC采用集成稳压器7805,C3、C4分别为输入端和输出端滤波电容,RL为负载电阻。
当输出电较大时,7805应配上散热板。
图3-6电源电路
在电子设计中,常见的三端稳压集成电路有正电压输出的78××系列和负电压输出的79××系列。
顾名思义,三端IC是指这种稳压用的集成电路,只有三条引脚,分别是输入端、接地端和输出端。
它的样子象是普通的三极管。
用78/79系列三端稳压IC来组成稳压电源所需的外围元件极少,电路的内部还有过流、过热及调整管的保护电路,使用起来可靠、方便,而且价格便宜[6];该系列集成稳压IC型号中的78或79后面的数字代表该三端集成稳压电路的输出电压,如7806表示输出电压为正6V,7909表示输出电压为负9V。
因为三端固定集成稳压电路的使用方便,电子制作中经常采用。
4系统软件设计
4.1主函数
日常生活中,要完成一件复杂的事情,我们可以将这个事情称之为功能,我们总是习惯把“大功能”分解为多个“小功能”来实现它的最终效果[7];在系统的软件设计中,“功能”可以称呼为“函数”,而在系统的软件设计中,函数是实现特定的功能的一个个体,每个函数只实现它的一个特定的功能,因为要实现所有函数的功能的时候,不可以随意的调度,这就要求我们就需要一个总指挥来调度这些特定的功能函数,所以主函数是这个系统设计软件中的核心部分,它的主要功能是系统的复位,温度的实时显示,读出并处理热敏电阻对电容充电的时间,和查找到这个电阻阻值需要充电的时间所对应的温度值,归根到底就是调度那些具有特定功能的函数,让其有序的实现它们的功能,而本设计的最终结果是将测得的温度值显示在数码管上。
图4-1主函数流程图
程序开始,单片机的PC口和PD口分别于数码管的段选端和片选端连接,首先要对这两组端口进行方向的设置,对于ATmega16来说,端口电平为高电平时即为输出,所以将这两个端口的电压值都设置为高电平:
DDRC=0xff;
DDRD=0xff;
然后对电路中的电容进行充分的放电,放电结束之后对电容进行充电,充电的前提是将一个端口设为输入一个设为输出,而输入端口的方向变化就标志着充电时间的结束,首先设置一个变量p,当p=0时计时程序继续,当充电结束p=1,计时结束,然后将所记的时间与已知的表进行比对,找到当前的充电时间所对应的温度值,最终显示在数码管上。
程序如下:
intmain(void)//主函数
{
DDRC=0xff;//设置C口高四位为输出
DDRD=0xff;//设置D口为输出
while
(1)
{
discharge();//充分的放电
charge();//充电程序
if(p==0)
{
time++;
}
if((PINB&(1<<4))==0x10)
{
p=1;
res();
qbsg();
display();
}
}
}
4.2延时子程序
应用单片机的时候,经常会遇到需要短时间延时的情况[8]。
需要的延时时间很短,一般都是几十到几百微妙(us)。
有时候还需要很高的精度,这种情况下,用计时器来实现往往有点小题大做。
而在极端的情况下,计时器甚至已经全部被派上了别的用途。
这时就需要我们另想其他的可实现的办法了。
对于延时的方法,有硬件延时和软件延时两种,以下是一个误差不是很大的延时一毫秒的软件延时方法:
v
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 电容 放电 技术 温度 测试 学位 论文