课题一NTC热敏电阻的温度测量和控制系统DOC.docx
- 文档编号:29794212
- 上传时间:2023-07-27
- 格式:DOCX
- 页数:43
- 大小:1.06MB
课题一NTC热敏电阻的温度测量和控制系统DOC.docx
《课题一NTC热敏电阻的温度测量和控制系统DOC.docx》由会员分享,可在线阅读,更多相关《课题一NTC热敏电阻的温度测量和控制系统DOC.docx(43页珍藏版)》请在冰豆网上搜索。
课题一NTC热敏电阻的温度测量和控制系统DOC
2011年暑期电子设计大赛课题一
基于NTC热敏电阻的温度测量与控制系统的设计
学生姓名
杜衡、向奇林、刘露平
院系名称
物理与电子工程学院
专业名称
电子信息工程
班级
2008级六班
指导老师
完成时间
基于NTC热敏电阻的温度测量与控制系统设计
学生姓名:
杜恒、向奇林、刘路平指导老师:
内容摘要:
本文叙述了用单片机作为控制器,用NTC热敏电阻制作的温度传感器实现温度变化到电压变化后通过仪用放大器放大后通过AD转换再将数据送给单片机处理后用LED显示出来实现温度测量,并可利用单片机控制蜂鸣器发声和八个发光二极管亮灭来实现报警,同时还可以通过单片机控制水泥电阻给热敏电阻加热来实现温度控制的温度测量和控制系统的设计。
该系统使用单片机开发板作为控制系统,而将温度传感器和加热器制作在单独一块板子上,工作时将两块板子连接起来使用。
由于单片机开发板上已经有了按键、LED数码管、蜂鸣器以及AD等,因此可以完全满足控制系统的需求。
单片机可以用USB供电,而另外一块板子可以用实验室的直流电源作为供电系。
本文最后附带了该系统的c51程序,可以方便其他人员阅读以及在此基础上进行修改,使系统功能更加完善。
实验表明该系统能够实验温度的测量、温度报警、温度查询、温度的控制等功能,完全满足该课题的基本要求和扩展要求。
关键词:
单片机、NTC温度传感器、水泥电阻加热器
绪论3
方案设计4
理论分析4
系统总体方案的设计及其原理概述原理图5
系统各个模块的方案论证与设计6
系统温度采集电路的设计6
信号调理电路的原理与设计6
温度控制电路的设计8
脉宽调制的基本原理简介8
温度控制电路的原理与电路的设计8
报警电路的设计9
报警电路的原理与电路的设计9
控制电路的原理与设计10
AD0804的采样原理及与单片机的连接方法10
LED显示电路的原理及与单片机的连接方法10
简易键盘的扫描原理及与单片机的连接方法11
系统软件的设计12
测试数据的性化处理12
系统流程图12
系统性能测试与分析测试15
测试仪器与设备15
测试方案与结果15
结论16
致谢16
参考文献16
附录17
绪论
随着时代的进步,温度计在日常生产生活和工农业领域发挥越来越重要的作用,简单的温度计能够满足人们日常生产生活需要,但在一些工农业生产领域不仅要求能准确测量温度并且要求能够进行温度报警和温度的控制,因此在简单的温度计往往不能满足人们的要求。
利用单片机作为控制系统的NTC温敏电阻温度测量和控制系统更能符合工农业生产领域的需求。
该系统不能能进行温度的测量并且将温度通过LED数码管显示出来使读取更加方便,该系统还能设定温度上下限实现声光报警,并且该系统还能对温度进行控制,因此在使用和功能上都比传统的温度计优越。
该系统可以用在需要对温度要求比较精密的环境中,可以利用该系统的精确温度测量、报警和温度控制功能来保证生产过程的顺利进行。
方案设计
理论分析
根据任务要求,要求制作一个基于NTC热敏电阻的温度测量和控制系统。
测量范围为0-100摄氏度。
测量精度为+—1摄氏度,能够记录24小时内每隔三十分钟温度值,并能够用数码管回调固定时刻的温度值,能够显示24小时内的温度平均值、最大值、最小值、和最大温差,具有报警功能当温度超过设定阈值时能够报警(要求有1摄氏度的回差)。
在扩展部分要求制作一个温度控制元件,能够用LED显示设定温度值和实际测量值,设定温度范围为:
40——60摄氏度。
并要求采用适当的方法,当设定温度或者环境温度突变时,减小系统的调节时间和超调量,温度控制的静态误差<=0.2摄氏度。
分析任务要求,该系统要用NTC温敏电阻作为测温元件,NTC热敏电阻是一种负温度特性的热敏电阻,其阻值随温度的变化曲线如下所示:
图表1
由图可知,NTC的阻值随温度的上升而下降,其阻值和温度呈非线性特性,因此必须采用一定的方法对曲线进行线性化处理。
其测量原理是利用通过测量其阻值,通过其温度特性曲线便可求的环境温度。
但因为温度不便于测量且不便于其他电路处理。
通常是将电阻的变化转化为电压的变化通过测量电压变化测得温度的变化。
由于采集到的电压信号是模拟信号,不能被数字系统处理,因此必须通过AD转换器,将模拟信号转换成数字信号。
一般AD转换器的基准电压要求为2.5v,而采集到的电压信号很微弱,必需经过放大后才能送给AD转换器,因此在系统中还必须有信号放大的信号调理电路。
该系统要求具有报警和控温功能,因此必须有报警装置和控温元件,报警装置可以蜂鸣器和发光二极管来实现。
而控温可以制作一个加热器作为控温元件,系统要求能采用适当的方法来实现改变系统的超调量和调节时间,因此可以采用脉冲宽度调制来实现。
报警装置和控温装置可以通过三极管来驱动。
该系统应该有一个控制器,用以控制温度的显示报警和温度控制等功能。
该控制器可以采用单片机,FPGA,或者DSP来实现。
系统总体方案的设计及其原理概述原理图
根据以上分析可知,该系统应该包括用NTC热敏电阻制作的温度传感器,对传感器信号放大的信号调理电路,加热器,显示电路,报警电路,按键和控制器组成。
由于单片机作为控制器价格便宜,控制性能好,电路方便,已能完全满足该系统的要求,因此综合考虑用单片机作为该系统的控制器。
该系统通过NTC热敏电阻制作的传感器采集温度,将采集到的值送给单片机处理后通过LED显示出来,并可将处理后的值与设定的温度值进行比较看是否超过设定范围来实现报警。
在控制温度模式下,可以通过单片机控制加热器来加热,实现温度控制。
系统原理图如下:
系统各个模块的方案论证与设计
系统温度采集电路的设计
温度采集电路主要由用NTC热敏电阻制作的温度传感器来实现,而NTC测温原理主要是基于基于将NTC阻值随温度变化转换为电压变化来实现。
将NTC热敏电阻值变换转换为电压的变化有以下几种方案。
方案一:
采用恒流源给热敏电阻供电,由于通过电阻的电流恒定,因此只要测出器两端的电压就可以测出其阻值。
该方案电路设计简单,测量也方便实现,但对恒流源要求较高,且抗干扰能力较差。
方案二:
采用差动电桥进行测量。
图表2
VCC经过稳压二极管后电压稳定值为2.5V
由电桥平衡条件可知,当R2/R3=R4/R5时电桥平衡,此时V1和V2点的压差为零。
由于R2=R3,因此在温度为零时,可以调节R5时R5=R4,使电桥平衡,其输出为零。
当温度上升时,R4阻值减小,当温度变化一百摄氏度时,热敏电阻的变化范围大概为1K.
因此可以粗略的估算电桥输出电压的变化值为2.5*(4.7/24.7-3.7/23.7)=0.0854V.
该电路设计复杂,因为采用差动电桥,所以电路抗干扰能力增强,能有效抑制电源波动对电路的影响。
对比上面两种方案,第二种方案虽然电路复杂但能有效抑制干扰信号,因此采用第二种方案。
信号调理电路的原理与设计
由于从电桥出来的信号很微弱,因此需要通过运算放大器放大后才能经过AD转换。
方案一:
采用单运放组成的运算放大器进行微弱信号的放大。
其原理图如下:
图表3
为了使运放对称,因此要求R10=R7,R11=R12.放大倍数A=R12/R10.
该电路简单,放大倍数可以通过调节R12来调节,但该调节会使运放不对称,因此需要同时调节R12和R11来实现。
方案二:
采用仪用放大器来实现放大,仪用放大器的原理图如下。
信号调理电路1
仪用放大器的放大倍数可以由以下公式计算得知:
A=-R11/R7(1+2*R8/R6)
由于R6可调,因此可以利用调节放大倍数。
由于信号采集电路采集到的最大电压差为0.0854V.而AD的基准电压为2.5V,所以要求信号调理电路的最大输出为2.5V。
而信号采集电路的最大输出为0.0845v,所以要求信号调理电路的放大倍数约为30倍。
该电路由于可以调节R6来调节放大倍数,由于调节R6不会影响电路的对称性因此调节起来方便。
对比上述两种电路,第一种结构简单但调节起来不方便,而第二种调节起来方便,且易于小信号的采集,因此选用第二种方案。
温度控制电路的设计
脉宽调制的基本原理简介
在脉宽调制有两种方案,第一种是固定低电平时间,而另外一种是固定周期。
先对固定周期的脉宽调制原理做如下简介。
在固定周期的脉宽调制中,设一个周期的时间为一秒,将一个周期平分成一百份。
每一份为10个毫秒,在一个周期内的份数由一个变量P控制,而每一份的时间用一个定时器来控制,当每次中断来时P加1,当P到一百十把P赋值成0,开始下一个周期。
而在温度控制程序中,另外设定一个变量M,每次M也加一,M到一百十也赋值为零,并且每次M和P进行比较,当M
要实现温度突变时改变超调量,可以将温度和设定的温度进行比较,当温度差值大于某个范围时,可以改变P的初值,这样就可以进行迅速加热,达到快熟调节温度。
当温度和设定值接近时可以将P的值减小,从而缓慢加热。
温度控制电路的原理与电路的设计
该系统要求具有温度控制功能,因此可以制作一个控温元件来给热敏电阻加热来实现温度控制。
方案一:
以LTC1923PWM双极性电流控制器和大功率MOSFET构成的半导体热制冷器(TEC)驱动模块。
该方案制作的热制冷器可制冷也可制热,但价格相对较高。
方案二:
该系统通过水泥电阻来给热敏电阻加热来实现温度控制,水泥电阻需要通过一个功率三极管来驱动,为了使受热均匀,系统通过两个水泥电阻来给热敏加热。
其驱动电路图如下:
功率三极管的基极和单片机的某个I/O口连接,当该I/O口为1时功率三极管导通,水泥电阻开始加热,当I/O为零时,三极管截止,水泥电阻停止加热。
因此在程序中可以通过给I/O口送1和零来控制水泥电阻加热和停止加热,从而实现温度控制。
该方案简单,元件价格便宜。
对比上面两种方案,鉴于第二种方案简单,元件价格低廉因此采用第二种方案。
报警电路的设计
报警电路的原理与电路的设计
该系统的报警电路通过三极管驱动蜂鸣器发声和单片机P1口驱动八个发光二极管发光来实现报警。
三极管驱动蜂鸣器和P1口驱动发光二极管电路如下:
报警电路1
蜂鸣器采用NPN三极管驱动,三极管的基极和单片机的P2^3相连。
当P2^3为1时三极管截止蜂鸣器不发声,而当P2^3为0时,三极管导通,蜂鸣器发声。
八个发光二极管通过P1口驱动,当P1口全为0时,二极管发光。
因此可以通过使P2^3为1和让P1为零来让蜂鸣器响和发光二极管发光来实现报警。
控制电路的原理与设计
AD0804的采样原理及与单片机的连接方法
AD采样电路1
AD的片选功能和单片机的P2^4相连,当P2^4为低电平时AD选通。
AD的读信号RD和写信号WR和单片机的P3^6和P3^7相连。
由于AD采用的是直通方式,当P3^7为0时启动AD,开始转换数据。
当P3^6为1时便可以读取AD转换的数据。
LED显示电路的原理及与单片机的连接方法
单片机通过一个锁存器来控制八个LED的位选,通过另外一个来控制八个LED的段选从而实现八位LED的动态扫描。
其与单片机的连接方法如下。
LED显示电路1
两个锁存器的片选分别于单片机的P2^6和P2^7相连。
与P2^7相连的锁存器通过P0口给八位LED送位选码
简易键盘的扫描原理及与单片机的连接方法
该系统采用与单片机连接的简易键盘来实现来实现系统的按键功能。
简易键盘与单片机的连接方法如下:
简易键盘电路1
四个简易按键分别于单片机的P3^4,P3^5,P3^6,P3^7相连。
当键没有按下时,与之相连的I/O口为1,而当有按键按下时,与之相连的I/O口为0,当检测到某个I/O口为低电平时,表明该按键按下。
系统软件的设计
测试数据的线性化处理
由于温敏电阻的阻值随温度变化为非线性,因此应对数据进行线性化处理。
方案一:
用硬件来实现非线性的校正。
简单的非线性就是以奇制奇的方法,将两只非线性的传感器接成差动的方式,他们的非线性误差以大小相等,极性相反的方向变化,这样就可以获得较理性的输出特性曲线。
方案二:
用软件来实现非线性校正。
软件非线性校正可以采用一次软件插值法来实现,插值法原理如下。
图表4
在这次试验中可以先通过试验得到AD转换的值和对应的温度然后以AD值为横坐标,温度值为纵坐标。
将每个AD值和对应的温度制成表格,当采集到AD值时便可以通过查表将对应的温度查询出来从而实现了线性化处理。
系统流程图
主程序AD转换程序
温度报警程序1
滤波程序
显示程序
系统性能测试与分析测试
测试仪器与设备
测试器件:
水银温度计
直流稳压电源
万用表
测试方案与结果
测试环境与结果:
将系统分别在20摄氏度的冷水中,室温下,50—60设施度得温水中,和80摄氏度的热水中进行测试,测试结果如下。
结论
本文主要论述了基于NTC热敏电阻的温度测量和控制系统的设计。
对整个系统的核心做了介绍。
对系统的各个模块做了比较深入的研究,主要包括以下几个方面。
1.对系统进行了方案的论证,进行了方案的讨论,并最终确定了系统=方案。
2.查找了系统上相关的芯片资料并仔细的阅读,并查阅了大量的相关文献资料。
理解各个芯片的工作原理,完成各个模块电路的设计,完成开题报告。
3.对系统的原理进行了讨论,对硬件部分各个模块进行充分的说明。
4.用protel完成了系统各个模块的原理图设计和PCB制作。
5.完成电路板的焊接,并排查焊接错误,检查系统电路。
6.通过软件多核心板的各个模块进行了测试。
7.对整个设计的过程,拟出简要的大纲,并完成详细的论文报告。
修改论文,完成最终定稿。
致谢
本论文是在实验室老师的指导下完成的,实验室在参加比赛过程中给了我们极大的帮助和支持,并在我们共同努力下取得了一定的成绩。
至此,我们要非常感谢老师对我的帮助。
本次课题的完成也离不开实验室老师的指导,在这些过程中老师给了我们极大的帮助,他们的认真负责的态度和孜孜不倦的精神使我受益匪浅,从老师身上学习到了很多专业知识,这对我们以后的工作有很大的帮助,在此,向实验室老师表示深深的敬意,感谢他对我们的指导和帮助。
参考文献
【1】黄贤武,郑筱霞.传感器原理与应用.电子科技大学出版社,1995年五月。
【2】谭浩强.C语言程序设计.清华大学出版社,2005年七月。
【3】白驹荇,雷晓平.电子科技大学出版社,2005年九月。
附录
系统PCB电路图
图表5
实验程序
#include
#defineuintunsignedint
#defineucharunsignedchar
/**********************变量定义*************************************/
sbitheat=P2^2;//水泥电阻驱动使能
sbitbeep=P2^3;//蜂鸣器使能
sbitdioLE=P2^5;//八位LED锁存器开关使能
sbitdula=P2^6;//LED段选
sbitwela=P2^7;//LED位选
sbitadcs=P2^4;//AD片选
sbitadd=P3^5;//加键
sbitsub=P3^4;//减键
sbitadrd=P3^7;//AD读
sbitadwr=P3^6;//AD写
ucharcodeLED_Segment[]={//0-9和摄氏度单位的段码
0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,0x58};
ucharcodeLED_Segment1[]={//0-9含小数点的段码
0xbf,0x86,0xdb,0xcf,0xe6,
0xed,0xfd,0x87,0xff,0xef};
ucharcodetemdata[75]={
11,17,34,41,52,61,69,79,90,100,111,117,126,132,138,145,149,154,160,
165,169,173,178,182,186,188,193,196,199,203,205,207,208,209,213,
214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,
240,241,242,243,244,245,246,247,248,249,250,251,252,253};//AD转换值
floatcodetemtest[75]={5.5,6.0,7.3,8.1,9.0,10.0,11.0,12.0,14.1,15.0,16.0,17.0,18.0,19.0,20.0,21.0,22.0,23.0,24.0,25.0,
26.0,27.0,28.0,29.0,30.0,31.0,32.0,33.0,34.0,35.0,36.0,36.3,36.9,37.5,39.1,39.4,39.8,40.1,40.6,41.0,41.4,41.7,42.5,42.8,
43.0,43.2,44.8,44.9,45.0,45.3,46.1,46.8,47.3,47.8,48.9,49.5,50.3,51.0,51.7,52.3,52.9,53.5,54.1,54.8,55.6,56.0,58.3,59.0,59.8,
60.6,62.4,63.8,65.1,66.3,67.6
};//测试点温度值
/*floatcodeslop[20]={
2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,
2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5};*///斜率
uintidatarecord[48];
uintTH=30*10,TL=20*10;//温度上下限报警设定初值
ucharLPFdata;
uinttemperature,max,min,average,dif;
ucharflag;
/**********************函数声明*************************************/
ucharAD();//AD转换子程序
voidDelay(ucharz);//延时子程序
voidDisplay(uinta);//数码管驱动显示子程序
voidLPF();//数据滤波
voidData_temperature();//AD采样数据转换为温度值
voidAlarm();//温度报警
voidSet_hitemperature();//设定最高报警温度
voidSet_lotemperature();//设定最低报警温度
voidSet_function(uchara);//按键功能判定
voidDisp_record();//显示记录温度值
voidSet_tempreature();//温度控制设定
voidDriveled(ucharwei,ucharduan);
/**********************主函数*************************************/
voidmain()
{
//ucharflag=0;
TMOD=0X11;
TH0=0X4C;
TL0=0;
TH1=0XDC;
TL1=0;
EA=1;
ET0=1;
ET1=1;
TR0=1;
while
(1)
{
//P1=0XFF;
//dioLE=0;
LPF();//将采集到的数据进行滤波
Data_temperature();//将滤波后的数据转换成温度值
Set_function(flag);//按键功能判定
//Data_temperature();//将滤波后的数据转换成温度值
Alarm();//调用报警程序当温度超过设定上下限时变报警
if(adwr==0)//按功能键切换工作状态
{
Delay(5);
if(adwr==0)
{
flag++;
if(flag>5)
{
flag=0;
}
while(adwr==0);
}
}
if(adrd==0)//OK键
{
Delay(5);
if(adrd==0)
{
flag=0;
while(adrd==0);
}
}
if(flag==5)//当进入温度控制模式时启动定时器,PWM控制加热
TR1=1;
else
TR1=0;
}
}
/**********************延时函数*************************************/
voidDelay(ucharz)
{
ucharx,y;
for(y=10;y>0;y--)
for(x=z;x>0;x--);
}
/**********************AD采样函数*************************************/
ucharAD()
{
ucharvalue;
adcs=0;//选通AD转换器片选
adwr=0;//AD写入(主要是为了启动AD转换)
Delay
(1);
adwr=1;
P1=0xff;//读取P1口之前先给其写全1
adrd=0;//AD读使能
value=P1;//AD数据读取赋给P1口
adrd=1;
adcs=1;
P1=0xff;
return(value);
}
/**********************数码管驱动显示函数*************************************/
voidDisplay(uinta)
{
dula=0;//送温度值十位
P0=0xff;
wela=1;
P0=0xfe;//
wela=0;
P0=0;
dula=1;
P0=LED_Segment[a/100];
dula=0;
Delay(10);
dula=0;//送温度值个位,含小数点
P0=0xff;
wela=1;
P0=0xfd;//
wela=0;
P0=0;
dula=1;
P0=LED_Segment1[a/10%10];
dula=0;
Delay(10);
dula=0;//送温度值小数点位
P0=0xff;
wela=1;
P0=0xfb;//
wela=0;
P0=0;
dula=1;
P0=LED_Segment[a%10];
dula=0;
Delay(10);
dula=0;//送摄氏度单位
P0=0xff;
wela=1;
P0=0xf7;//
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课题 NTC 热敏电阻 温度 测量 控制系统 DOC