atc双机串口通信课程方案设计书yanWord格式文档下载.docx
《atc双机串口通信课程方案设计书yanWord格式文档下载.docx》由会员分享,可在线阅读,更多相关《atc双机串口通信课程方案设计书yanWord格式文档下载.docx(18页珍藏版)》请在冰豆网上搜索。
基于PN结的温度测量系统设计
摘要
本文给出了一种基于PN结的温度测量系统方案。
利用PN结正向压降的温度特性测量环境温度。
文章详细介绍了电路中恒流源、放大电路、AD采样电路、LCD液晶的设计方法、硬件连接电路以及软件的编写思路,其中,数据处理部分详细介绍了线性插值的数据处理方法。
关键字:
二极管温度非线性校正
1、原理与总体方案
1.1、二极管(PN结)特性:
晶体二极管为一个由p型半导体和n型半导体形成的p-n结,在其界面处两侧形互相抑消作用使载流子的扩散电流增加引起了正向电流,并且和电压成指数关系。
1.1.1电流-电压特性:
理想PN结的正向电流IF和正向压降VF存在如下关系:
IF=Is*exp【-e*Vf/(k*T)】式中,-e为电子电量。
k为玻耳兹曼常数。
T为绝对温度。
Is为反向饱和电流,与PN结材料的禁带宽度及温度有关.在此基础上得出PN结的正向电压Vf与热力学温度T之间的关系,从而证明半导体PN结在某个温度范围内是性能优良的温度传感器。
1.1.2温度特性:
半导体二极管的温度特性曲线
温度对二极管的性能有较大的影响,温度升高时,反向电流将呈指数规律增加,如硅二极管温度每增加8℃,反向电流将约增加一倍;
锗二极管温度每增加12℃,反向电流大约增加一倍。
另外,温度升高时,二极管的正向压降将减小,每增加1℃,正向压降VD大约减小2mV,即具有负的温度系数。
这些可以从下图所示二极管的伏安特性曲线上看出。
据资料介绍:
在恒流
模式下,If=If0,1n=If/If0=0,有:
S=(Vg0-Vf0)/T0-(kB/q)*(1+1nT/T0).因1nT/T0是T的缓变函数,S的模随着T增加而上升,但在不宽的温度范围内,S近似常数。
。
1.2主要电路方案分析:
1.2.1恒流源:
为保证整个温度测量范围内PN结的正向电流恒定,PN结的正向偏置采用恒流源驱动。
采用三极管的特性和特殊电路,让通过二极管的电流始终在100uA左右。
1.2.2电桥的设置:
采用电桥连接方式使放大器放大传感器变化电压的差值。
电桥通过两个电阻和二极管并联构成,从而向放大器正负两端输入电压。
通过理论分析及仿真实验研究选择合适的电桥电路参数。
1.2.3放大电路的设置:
PN结的结电压变化是一个微弱信号,结电压在温度每变化1度时大约变化2mv左右,所以需要进行放大后才能被后续电路处理。
采用三运放高共模抑制比放大电路,放大电桥两端的差模信号。
设计中可采用三个独立的运放来构成放大电路,也可采用仪用放大器AD620,根据电路实际情况来设置。
(AD620的电源提供范围为正负2.3V到正负18V,低功耗,精确度高)。
1.2.4滤波电路:
采用一阶无源RC低通滤波器,截至频率为50HZ。
1.2.5AD转换:
采用8位的AD转换元件AD0809,这样可以使用其8位数据线与CPU进行并口通信。
因为AD0809对于本设计来说,精度已经达到,所以未用采用SPI通信的12位AD7841等多位的AD转换器件。
1.2.6处理器:
采用单片机STC89C52(32个IO口,8KB的Flash等)。
而未用本身带有10位AD的ARM处理器,因为其对本设计而言会有很多硬件资源剩余,而且不熟悉其操作更会增加程序设计难度。
所以综合考虑,对本设计而言,一般单片机的性价比更高。
1.2.7显示部分:
采用液晶LCD1602,可设置8位数据端口,2行显示,5*7点阵等。
1.3DS18B20介绍:
DS18B20为一款单总线测温器件,它具有线路简单,体积小的特点。
由于DS18B20采用的是1-Wire总线协议方式,即在一根数据线实现数据的双向传输,而对STC89C51单片机来说,硬件上并不支持单总线协议,因此,必须采用软件的方法来模拟单总线的协议时序来完成对DS18B20芯片的访问。
DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。
该协议定义了几种信号的时序:
初始化时序、读时序、写时序。
所有时序都是将主机作为主设备,单总线器件作为从设备。
而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。
数据和命令的传输都是低位在先。
1.4实验原理:
设计整体思路:
当通过PN结(以后用二极管表示)的电流恒定后,二极管两端的电压变化就主要与其感受的环境温度有关,所以以此来研究二极管的电压和温度特性。
通过电桥设置,将温度选择一个基准,即电压随温度变化的基准,当温度变化时,电压就会相对基准有个差值。
将差值信号放大,滤波,输入单片机处理和采用温度传感器18B20标定温度值,得到一个AD值和温度对应的表,然后用二极管测温度,得到AD值采用查表非线性处理得到温度值,结果和18B20测温结果对比显示在液晶上。
非线性处理方法原理:
将非线性的图形取一些采样点,通过这些采样点相邻之间直线相连就近似得到该曲线。
我们的实验目的之一就是得到二极管电压-温度特性曲线。
二极管测温原理:
由文献资料我们已知了PN结的温度电压变化特性是指数关系。
现假设我们测得N个温度值(可用18b20测得)y1,y2,……,yn以及的对应的AD采样值x1,x2,……,xn。
在N值足够大的情况下,我们认为相邻两点是线性的关系,因此,具体某测量点对应的温度值可用以下方法
获得:
首先,我们需要知道未知值x那两个x值的中间,然后根据我们已知坐标(x0,y0)与(x1,y1),要得到[x0,x1]区间内某一位置x在直线上的值。
根据图中所示,我们得到
假设方程两边的值为α,那么这个值就是插值系数—从x0到x的距离与从x0到x1距离的比值。
由于x值已知,所以可以从公式得到α的值。
2、硬件电路设计
2.1、电源部分
图2.1电源部分电路
2.2、电桥及放大部分
图2.2电桥以及放大部分
2.2.1恒流源分析:
为保证整个温度测量范围内二极管的正向电流恒定,其正向偏置采用恒流源驱动。
当三极管Q1正常工作时,其Ube=0.7V,通过三极管集电极端的电流I=(VDD-0.7v)/R1,只要VDD和R1恒定,I就一定。
那么由Q1和Q2两个三极管参数几乎一样,镜像得到通过二极管D1的电流值就为I,那么就一定了。
2.2.2电桥分析:
通过R3和R4在R4两端产生一个恒定基准电压(比如15度时VDD减去二极管的电压值),从而当温度变化时,电桥两端就会有一电压差。
2.2.3放大分析:
采用LM324自己搭建三运放高共模抑制比放大电路。
从下表我们可以看出所测电路输出值与输入值的关系,在差值为0.1V到0.50V范围内,输出放大5倍,在差值为0.6V以上就有一些非线性关系。
根据电路设计方案,当差值大于0.90V以上时U值不随U0-U1变化而变化,U最大值为3.23V。
能够满足设计要求。
从理论上说,我们将0到100℃对应放大后的值为0.5V到3V,那么所有值都在其线性区域内,由资料介绍二极管的温度特性分析,每变化1℃就会使差值增加1mv,那么最多变化200mv,这样三运放放大倍数为12.5倍。
由差模增益:
调节硬件电路得到。
图2.2.3差值与输出的关系图表
2.3、AD采样.单片机及显示部分
图2.3仿真元件图
2.3.1AD转换原理:
由于采用8位的ADC0809,其参考电压为3v,理论上输入的电压为0.875v到3v(对应温度为15°
~100°
),根据转换原理可得到AD转换值x=(255*Vin)/3,通过比较取整。
3、软件设计流程及描述
3.1、温度传感器18B20标定温度:
注意:
DS18B20完成一个读时序,至少需要60us才完成。
写0写1要求不同,写0时序单总线拉低至少60us,保证DS18B20在15us到45us间能正确采样IO总线上0电平,写1时,单总线被拉低后15us之内就得释放单总线。
3.2程序流程图
4、实验结果记录
所测二极管1N4007电压-温度特性曲线:
二极管两端电压—温度基本成指数关系:
AD值
18b20所测温度
94
15.18
96
16
100
16.06
106
20.4
112
23.12
116
24.81
122
27.63
129
31.84
138
33.27
146
36.23
155
40.93
159
42.38
163
44.74
168
46.43
173
47.24
177
49.32
181
50.12
185
52.5
189
53.18
192
55.31
194
57.87
198
58.25
200
59.37
203
59.61
204
62.9
205
67.8
207
72.6
208
76.9
80.63
88.72
209
95.46
图4.2AD值与温度的关系图
同环境下1N4007和18b20所测温度比
18b20温度(℃)
1N4007温度(℃)
18.93
18.22
26.81
27.14
30.38
31.22
32.68
33.56
34.01
64.37
65.91
图表4.31N4007和18b20所测温度
图表4.1AD值与18b20对应数据
5、电路调试与问题分析
5.1.电路部分调试:
5.1.1模拟部分硬件调试及分析:
首先必须保证电路原理正确,然后根据原理检查电路板的接线是否正确,有无虚焊、错焊以及漏焊,各电路是否连接正确。
我们在制作电路过程中就有焊错焊漏的现象,比如7805输入输出脚接反,导致电源输出为7V以上。
通过对关键点的测试以及各电路的特点,最终很不容易完成电路板。
但是只要细心一点,还是不会出什么错的。
在确保电路连接无误后,我们开始模拟部分调试。
调节滑动变阻器设定AD620的放大倍数到设定值。
然后输入一较小电压差,但是输出值确是4V以上,调节滑动变阻器就是下不来。
反复分析电路连接,输入电压差值,以及滤波电路都查不出问题所在。
所以我们将问题集中在AD620上,但是Proteus和multisim软件仿真都没有错啊。
查看资料和询问老师后,单电源其线性工作区大楷在-Vs+1.6v和+Vs-1.6v,可能是输入的共模电压值太大,或是采用单电源的原因。
二极管电桥输出电压高于3.5v,于是我们串联了一个30欧/2W的电阻欲将其共模降下来,但是连上电路后居然降低到1.5v左右了,但是另一个电桥输出最低在2.3V左右,这样无法调零。
怀疑是不是电阻的功率太大了,我们把电阻值换后,而且电阻小于30欧都使其值在原来位置。
最后我们考虑将另外一电桥的电阻比例换了,使其输出电压调节能力更大。
这样我们就将共模电压降了下来,输入AD620后,其输出值有一点变化,但是调节滑动变阻器还是不能得到理想值,甚至调而无用,输入电压为0v时输出超过了1.5v,所以我们认为其放大后没在线性区工作所致。
后来我们将单电源改为正负10v的双电源调试,输入100mv的差值,输出确达到8V以上,调节放大倍数也无济于事。
最终考虑换为用LM324自己搭建一个