一、实验目的
1.了解晶体管PN结作为温度传感器的测温原理。
2.进一步理解双积分A/D转换的工作原理。
3.掌握温度检测与控制方法。
4. 掌握基于Labview的虚拟温度检测与控制仪的软件设计。
1.学习温度检测和控制电路的原理。
2.使用Labview,设计温度检测和控制的程序,要求:
(1)设计用户界面;
(2)控制A/D转换,测量电压计算转换为温度;
(3)温度控制到设定温度;
(4)显示温度随时间的变化曲线。
3.调试和测试温度检测和控制仪,记录和分析实验结果。
1.计算机 1台
2.SJ-8002B电子测量实验箱 1台
3.SJ7005温度检测实验板 1块
4.1.PN结温度二极管的测温原理
二极管的正向特性与温度有关,温度升高时,正向伏安特性曲线左移,规律是:温升1℃,曲线左移(2~2.2)mV。
图1 温度对二极管伏安特性的影响
4.2.温度检测和控制原理
温度二极管上的电压V输入给ADC7109的正输入端,另外检测电路产生V0,输入给ADC7109的负输入端测量,采集ADC7109的A/D转换后的输出数据,即可计算出实际温度T,它们之间的关系为:
T=K0-K1×(V-V0)
T为测试温度,(V-V0)为ADC7109测量的差分电压。经过实验测试,取K0=71,K1=500,温度每变化1℃,V变化0.002mv。
图2 温度检测与控制系统原理框图
温度自动控制原理:实验选择自动控制方式时,若实际温度超过设定值,控制电路发出信号,使继电器动作,断开灯泡的加热电压,停止加热。由于保温盒向外散热,盒内空气温度下降,当下降到低于设定值时,控制电路发出接通继电器的信号,使灯泡通电加热,盒内空气温度上升,如此周而复始的测控操作,使盒内空气温度维持在设定值附近。
4.3 温度实验板的电路原理图
图3 温度实验电路图
4.4 双积分A/D转换器ICL7109工作原理和通道增益
如图4为双积分A/D转换器ICL7109实验电路图。待测模拟信号从实验箱的外部接线端7109+和7109-输入。
7109的A/D转换关系为:
式中, —— A/D转换器输入电压;
—— A/D转换结果的12bit数字量;
—— A/D转换器外部参考输入电压,调节为=2.048V;
由上式可知,若=2.048V ,则即为以mv单位表示了,即
图4 双积分式A/D转换器7109测量电压原理
(3) 增益选择电路
待测模拟信号经过两级测量放大器进行信号放大,前级放大器的增益有3档,分别为1、10、100,后级放大器的增益有4档,分别为0.5、1、2、5,通过模拟开关CD4052选择放大器反馈电阻,即可进行两级放大器的增益组合选择,设置了10档量程: 40mV、80mV、200mV、400mV、800mV、2V、4V、8V,对应增益:×100 、× 50、× 20、×10、×5、×2、×1、×0.5。选择的依据是输入信号经过放大后的电压范围为-4V~+4V。
五、设计指导
5.1.方案设计
本实验基于“SJ8002B电子测量实验箱”的模拟输入通道A/D转换和基于PC机的虚拟仪器软件平台(Labview)构建测量方案,实现温度检测和控制。其过程是7109转换,加热的启动及停止控制,传感器电压检测以及放大,电压值通过计算转换为温度值,当前时间/温度及初始时间/温度值获取。
(1)整个程序为循环结构,循环内部采取顺序结构,依次实现系统的初始化,温度检测,加热控制,温度显示和时间显示。设计思路流程图如图5:
图5 设计总流程图 图 6 温度检测流程图
(2)温度检测的流程图如图6:
(3)加热工作模式分为手动和自动两种。加热控制的流程图如图7:
图7 加热控制流程图
(4)总的系统简化结构如图8所示:
图8 系统设计总图
5.2.功能与前面板界面设计
虚拟温度监控仪主要完成温度板温度的测量、显示及控制。因此,在虚拟仪器界面上需有多个布尔控件,如加热/加热方式控制,退出选择;同时需要数字输入和接受控件,如温度,电压,实验相关信息的输入和测量值获取等;以及温度计和表格显示控件,溢出指示。
图9为前面板设计的参考。启动虚拟仪器labview软件开发环境,建立新的工程文件,打开front Panel设计界面,并存储,由界面文件自动生成相关流程图框架。
图9 软件界面
本程序中需要用到的前面板控件有:
表1 前面板控件
控件类别 |
控件位置 |
控件名及作用 |
控件图标 |
输入控制类 |
All Controls>Numeric>Numeric Control |
起始温度 |
|
Text Ctrls>String Control |
实验日期 |
| |
实验人员 |
| ||
按键控制类 |
All Controls>Classic Controls>Classic Boolean>Horizontal Switch |
加热方式选择 |
|
All Control>Classic Controls>Classic Boolean>Labeled Oblong Button |
手控/自控加热控制 |
||
Buttons>Stop Button |
程序退出控制 |
| |
数字显示类 |
Num Inds>Num Indicator |
传感器电压/放大后电压 |
|
Num Inds>Num Indicator |
开始时间/当前时间/经历时间/实验日期 |
|
指示类 |
LEDS>Round LED |
加热状态指示 |
|
All Controls>Numeric>Vertical Fill Slide |
温度计指示 |
||
Graph Inds>Waveform Chart |
温度波形变化指示 |
||
装饰控件 |
All Controls>Decorations |
美观 |
5.3.动态链接库调用
本程序设计的主要实现已经做成底层fp函数(用Labwindows/CVI实现),在程序实现时可直接调用实验箱提供的驱动函数动态链接(即.dll函数),驱动函数I原型及常数和变量在t_control.prj中,因此,程序设计时,应加入动态链接t_control.dll。另外,本程序调用了两个个Labview自带的时间函数:获取当前日期/时间:All Controls>Time&Diaglogue>Get Date/Time String;计算经历时间:All Controls>Time&Dialogue>Elapsed Time。实现温度检测及控制的驱动函数如下表:
表2 动态链接调用
序号 |
fp函数 |
实现功能 |
输入参数 |
输出参数 |
返回值 |
动态链接图标 |
1 |
void __stdcall epp_init(void) |
初始化EPP接口 |
无 |
无 |
无 |
|
2 |
int__stdcall epp_read_check (void) |
EPP读数检查 |
无 |
无 |
0:EPP可正常读数;1:EPP不能读数 |
|
3 |
int __stdcall run_7109 ( unsigned char m_what, unsigned char gain_cw,double vref, double *rult) |
运行7109,实现7109的读数及转化 |
m_what:测试对象 |
rult:测量结果 |
0:读数有效;2:读数无效,正溢出;3:读数无效,负溢出;4: EPP不能读数 |
|
4 |
void __stdcall amp_7109 (unsigned char gain_cw, double *gain, int *showdot) |
根据量程设置增益和显示位数 |
gain_cw: 量程控制字 |
gain:量程的增益 howdot:该量程的有效位数(V为单位,showdot为小数点后的位数) |
无 |
|
5 |
void__stdcall indicator_7109 (unsigned char gain_cw, double *indicator_gain,double *indicator_max) |
根据量程设置7109输入增益,电压表表最大显示数字 |
gain_cw: 量程控制字 |
gain:量程的增益 |
无 |
|
6 |
void __stdcall start_7109 (void) |
启动7109 |
无 |
无 |
无 |
|
7 |
int __stdcall led_display(double display_data) |
LED显示 |
display_data:显示数据 |
无 |
成功执行后,返回值为0 |
|
8 |
void __stdcall turn_on(unsigned char heat_cw) |
控制温度板的灯点亮/熄灭 |
heat_cw:亮/灭控制 (加热) |
无 |
无 |
动态链接调用举例: int led_display(double display_data):
在block panel中点击右键:All functions>Advanced>Call library function node.
图10 动态链接调用界面
双击出现如图11:
图11 动态链接调用
此时可根据调用函数的路径,参数及名称进行设置进行得到图12:
图12 动态链接设置
这样就完成了动态链接的调用及设置。
5.4.流程图设计
(1)整个程序要求由 “退出”按扭来控制程序的运行与否,因此主框架可以设计为structure中的while循环。 整个程序分为三个部分:温度测量,加热控制及温度显示,时间显示。因此可在总循环 内部采取顺序结构以实现以上功能。
(2)温度测量:在初始化系统以后,要测量温度是依靠运行7109实现的。将7109测到的电压通过温度电压的转换公式温度(℃)=71-500*电压(mV),即可以得到当前温度。同时取选初值作为起始温度。注:此处需要调用两个动态链接:run_7109和led_display来实现温度的检测及显示。
(3)加热控制及温度显示:
加热控制实现的方式包括两种:自动加热方式和手动加热方式。可以通过case结构来判断前面板布尔量进行选择加热方式 “设定温度”框中填入值是要求达到的目标温度;实验过程中,温度值通过“当前温度”显示框显示,或者由“温度指示”的模拟温度计显示。加热过程中温度随时间变化的曲线可由右边的GRAPH显示屏显示。“加热状态”指示灯的红色代表正在加热,白色代表停止加热。
注意:“温度设定”的范围是:
表3 加热控制
判断控件 |
位置 |
布尔值 |
意义 |
注释 |
加热方式 |
左边 |
FALSE |
自动控制方式 |
设定温度>当前温度时加热启动 |
右边 |
TRUE |
手动控制方式 |
手动控制加热及显示 |
<1> 自动加热:
自动加热方式时,当“自控开始”按下,且设定温度<当前温度:启动加热,并将当前温度送到显示。
自动加热方式时,当“自控开始”按下,但设定温度〈当前温度,加热停止,但温度仍然送显示。直到当前温度〈当前温度,重复上一步,再次加热。如此循环。
自动加热方式时,当“自控结束”按下,停止加热,温度值不再送显。
<2> 手动加热:与自动加热方式相同的是,手动方式也需判断“手控开始”按下与否,但手动方式中不用判断当前温度与设定温度之间的关系。
手动加热方式中,当“手控开始”按下时,即开始加热,并将当前温度送显。
手动加热方式中,当“手控停止”按下时,停止加热,但温度仍然送显。
(3)时间显示:本程序最后一个步骤是将当前时间与初始时间送显。基于LavVIEW自身强大的功能,我们可以通过调用后面板中 AllFunctions>Time&Dialogue>Elapsed Time来实现。
六、测试和调试
6.1.硬件连线
硬件连线如图16。在开电源前插卡和连线:
图13 温度检测与控制实验硬件连线图
- 将温度检测实验板插在J001位置;
- 连接温度检测实验板电源接口J2和电子测量实验箱左上角的JP004的AC 9V;
- 连通实验箱和计算机EPP并行接口。
- 跳线S101向左边(连接到DC-)。
6.2.程序功能检查
(1)温度测量检查: 运行程序,不加热,这时测量的温度值为室温,左上角显示的“传感器电压”范围在0.09V~0.13V之间,显示的放大后电压=5×传感器电压。
(2)加热控制检查
手控方式时,点击“手控加热”,灯泡点亮,温度上升;关闭“手控加热”,灯泡灭,温度下降。
自控方式时,点击“自控开始”,当设定温度>当前温度时,灯泡点亮,温度上升;当设定温度≤当前温度时,灯泡灭,温度下降。
6.3 温度检测与控制实验
表4 自动加热温度检测实验板的数据记录表
实验人员 |
|
设定温度(℃) |
40 |
室温(℃) |
|
实验日期 |
| ||||||||||||
时间(S) |
0 |
10 |
20 |
30 |
40 |
50 |
60 |
70 |
80 |
90 |
100 |
110 |
120 | ||||||
温度(℃) |
|
|
|
|
|
|
|
|
|
|
|
|
| ||||||
时间(S) |
130 |
140 |
150 |
160 |
170 |
180 |
190 |
200 |
210 |
220 |
230 |
240 |
250 | ||||||
温度(℃) |
|
|
|
|
|
|
|
|
|
|
|
|
|
由表4的数据和程序记录的温度-时间曲线,计算出温度的上升时间、稳定时间、稳定度、超调量。
附:温度检测实验板温度校正方法
评论
查看更多