检测技术实习报告.docx
《检测技术实习报告.docx》由会员分享,可在线阅读,更多相关《检测技术实习报告.docx(24页珍藏版)》请在冰豆网上搜索。
![检测技术实习报告.docx](https://file1.bdocx.com/fileroot1/2023-2/10/e5434b07-a3e1-4657-8a25-e98f4c39acb2/e5434b07-a3e1-4657-8a25-e98f4c39acb21.gif)
检测技术实习报告
检测技术实习报告
姓名:
学院:
专业:
班级:
学号:
指导教师:
一、实验目的
1、对工程实际中的测试系统有整体认识,可以自己设计简单的测控系提高实践能力,掌握温度控制系统工作原理
2、从工程应用实际需要出发,能够认识传感器PT100及温度变送器的接线及安传感器知识、信号处理电路知识、信号采集及单片机程序设计知识、单片机与计算机串口通信知识、简单的上位机监控软件设计知识等知识;
3、能够实际操作测控系统接线,并深刻明白测控电路的工作原理。
二、实验内容
了解热电阻温度传感器的工作原理,熟悉PT100的电阻温度特性,能通过测量电阻的大小反求出所检测的温度;
了解传感器信号的变换知识,了解工控常用信号规范,会使用工业中常用的温度变送器,能根据温度变送器的铭牌进行温度与电流信号大小的换算;
了解模拟信号的计算机采集过程,会设计单片机的A/D变换电路,绘制采集电路原理图;
熟悉单片机程序对采集电路的控制,熟悉单片机控制输出程序设计(简单开/关控制或PWM控制输出),会设计PID控制算法,设计单片机程序;
了解单片机的串口通信规范,设计单片机与上位计算机的通信子程序,设计简单的人机交互软件界面。
根据设计结果,搭建实际的电气系统,并绘制相应的电气连线图。
三、实验方案设计
1、方案图
2、方案分析:
该测控系统由温度采集电路、控制电路、加热电路三部分组成。
通过热电阻采集水的温度,然后通过温度变送器将采集到的温度信号转换成模拟电流信号,通过电阻进行I/V转换,得到模拟电压信号,再通过A/D转换器将模拟电压信号转换为数字信号,然后输入单片机中,根据单片机中的程序控制,使输出的电信号发生改变,以控制光电耦合器的闭合,光电耦合器的接通与关闭会使固态继电器发生相应的通闭,而固态继电器直接控制加热电路的通闭,从而控制水的加热,继而影响水的温度。
四、元件工作原理
1、热电阻PT100
该电阻为一种接触电阻式敏感元件,属于铂热电阻,随着水的温度变化,其电阻值也会发生相应的变化。
其电阻和温度变化的关系式为:
Rt=R0[1+AT+BT2+C(t-100)T3]
式中:
R0为0℃下的电阻值,R0=100Ω;T为摄氏温度。
A=3.9X10-3B=-5.8X10-7
T>=0时C=0;T<0时C=-4.183X10-12
电阻与温度呈非线性关系,但当测量精度要求较低时,电阻值与温度的函数关系可以简化为:
Rt=R0(1+AT)
即表示它在0℃时阻值为100欧姆,在100℃时它的阻值约为138.5欧姆。
它的工业原理:
当PT100在0摄氏度的时候他的阻值为100欧姆,它的的阻值会随着温度上升它的阻值是成匀速增涨的。
医疗、电机、工业、温度计算、阻值计算等高精温度设备,应用范围非常之广泛。
常见的pt1oo感温元件有陶瓷元件,玻璃元件,云母元件,它们是由铂丝分别绕在陶瓷骨架,玻璃骨架,云母骨架上再经过复杂的工艺加工而成。
2、温度变送器
其基本工作原理是将热电阻以三线制方式连接在电桥中,其电阻值的改变会改变测量电压,在通过转换将其变为电流信号再输出。
(实验中的温度变送器的输出电流范围为4~20mA)
R1=R2=R3,因此可以求出:
Rt=(2U-E)R/(2U+E)
3、A/D转换器
A/D转换器,或简称ADC,通常是指一个将模拟信号转变为数字信号的电子元件。
通常的模数转换器是将一个输入电压信号转换为一个输出的数字信号。
由于数字信号本身不具有实际意义,仅仅表示一个相对大小。
故任何一个模数转换器都需要一个参考模拟量作为转换的标准,比较常见的参考标准为最大的可转换信号大小。
而输出的数字量则表示输入信号相对于参考信号的大小。
模数转换器最重要的参数是转换的精度,通常用输出的数字信号的位数的多少表示。
转换器能够准确输出的数字信号的位数越多,表示转换器能够分辨输入信号的能力越强,转换器的性能也就越好。
A/D转换一般要经过采样、保持、量化及编码4个过程。
在实际电路中,有些过程是合并进行的,如采样和保持,量化和编码在转换过程中是同时实现的。
实验中采用的是TLC2543转换器,它属于11通道的12位串行A/D转换器,采用的是逐次逼近技术。
其内部没有电源,采用的是外部参考电压。
由公式(REF+-REF-)/212得到其参考电压取2.048V,计算出量子化因式为2.048/212=0.5mv。
即若输出电压2.5V,则量子化数为5,换成二进制数为101,据此同理类推。
4、光电耦合器
当输入到发光二极管为低电平时,发光二极管不导通,右侧光敏二极管也因此不通;当输入高电平时,发光二极管导通发亮,光敏二极管因此开通,从而向固态继电器输入电压。
该装置实现了光电之间的转换。
5、固态继电器SSR
固体继电器(SSR)是一种全部由电子元器件组成的新型无触点开关器件,具有高可靠性、长寿命、低噪音、开关速度快、抗干扰能力强、耐振动、耐冲击、防湿、防潮、防腐蚀、能与TTL、CMOS等逻辑电路兼容的优点,逐渐被越来越多的应用领域所接受。
在电力无功补偿的控制领域中,对于免维护设备的操作要求,传统的交流接触器控制容性负载受到了巨大的挑战。
虽然通用交流SSR以其独特的过零导通的特点被广大用户所青睐,但是对于高电压高冲击电流的容性负载,通用交流SSR难以满足控制要求,制约着SSR在这一领域的推广应用。
本文介绍一种新型高电压高冲击电流交流SSR,与通用SSR比较,该产品具有1200V的断态峰值过电压、高浪涌电流和高di/dt值的特点。
它与交流接触器组成的组合开关可谓珠联璧合,交流接触器弥补了固体继电器需散热的不足,而固体继电器的过零导通、长寿命的特点弥补了交流接触器投切高电压大电流、触点腐蚀、寿命短的缺点,解决了控制容性负载的开关问题。
6、单片机
单片机,是一种微型计算机,能够通过多种形式的借口使其内部程序对外部工作电路进行有效的控制。
四、电气连接图
五、系统连线图
六、程序设计
1#include
2#include
3#include
4
5#define_HI1
6#define_LOW0
7#define_on1
8#define_off0
9
10#defineint_EX00//外部中断0
11#defineint_T01//定时器0中断
12#defineint_EX12//外部中断1
13#defineint_T13//定时器1中断
14#defineint_ES4//串行口可中断
15#defineint_ET25//8052定时器2中断
16
17#defineucharunsignedchar
18#defineuintunsignedint
19
20
21sbitTXC=P3^5;//MAX485
22
23sbitEOC2543=P3^2;//ADC2543
24sbitCLK2543=P1^0;//ADC2543
25sbitDIN2543=P1^1;//ADC2543
26sbitDOUT2543=P1^2;//ADC2543
27sbitCS2543=P1^3;//ADC2543
28
29sbitWDOG=P3^4;//MAX813
30
31sbitADD1=P2^0;
32sbitADD2=P2^1;//ADDRESS
33
34sbitIN1=P0^0;
35sbitIN2=P0^1;
36sbitIN3=P0^2;
37sbitIN4=P0^3;
38
39sbitOUT1=P0^4;
40sbitOUT2=P0^5;
41sbitOUT3=P0^6;
42sbitOUT4=P0^7;
43
44unsignedintoverflow_count=0;
45unsignedintnow_Vco0=0;
46unsignedintnow_Vco1=0;
47unsignedintnow_Vco2=0;
48unsignedintSetP=0;
49ucharT0_INTERVAL;
50ucharbstart=0;
51unsignedintT0_Init;
52
53
54ucharidatarxd232[6];
55ucharidataAddress;
56ucharSendBusy;
57
58voiddelay(ucharxms)//delay1-255ms(22.1184M)
59{
601uchari,j;
611for(j=0;j621{
632for(i=0;i<220;i++)
642{
653_nop_();
663_nop_();
673_nop_();
683_nop_();
693_nop_();
703_nop_();
713
723}
732}
741}
75
76uintpick_ch0(void)//adcCH0
77{
781uchari;//12bits/msb/bin
791uintvol=0;
801CLK2543=_HI;
811DIN2543=_LOW;
821CS2543=_LOW;
831_nop_();
841_nop_();
851_nop_();
861_nop_();
871_nop_();
881CLK2543=_HI;//时钟上升沿写入CH数据"0000"
891_nop_();
901CLK2543=_LOW;
911_nop_();
921CLK2543=_HI;
931_nop_();
941CLK2543=_LOW;
951_nop_();
961CLK2543=_HI;
971_nop_();
981CLK2543=_LOW;
991_nop_();
1001CLK2543=_HI;
1011_nop_();
1021CLK2543=_LOW;
1031for(i=0;i<8;i++)
1041{
1052CLK2543=_HI;//时钟上升沿写入数据"0000_0000"
1062_nop_();
1072CLK2543=_LOW;
1082}
1091CS2543=_HI;
1101for(i=10;i>0;i--)//delay10us
1111while(EOC2543==0);//在EOC=0时等待!
1121CS2543=_LOW;
1131_nop_();
1141_nop_();
1151_nop_();
1161_nop_();
1171_nop_();
1181CLK2543=_LOW;
1191for(i=0;i<11;i++)
1201{if(DOUT2543==_HI){vol|=0x01;}
1212elsevol|=0x00;
1222vol=_irol_(vol,1);
1232CLK2543=_HI;//时钟下升沿读出数据,
1242_nop_();
1252CLK2543=_LOW;}
1261CS2543=_HI;
1271_nop_();
1281_nop_();
1291_nop_();
1301_nop_();
1311returnvol;
1321}
133
134uintpick_ch1(void)//adcCH1
135{uchari;//12bits/msb/bin
1361uintvol=0;
1371CLK2543=_HI;
1381DIN2543=_LOW;
1391CS2543=_LOW;
1401_nop_();
1411_nop_();
1421_nop_();
1431_nop_();
1441_nop_();
1451CLK2543=_HI;//时钟上升沿写入CH数据"0001"
1461_nop_();
1471CLK2543=_LOW;
1481_nop_();
1491CLK2543=_HI;
1501_nop_();
1511CLK2543=_LOW;
1521_nop_();
1531CLK2543=_HI;
1541_nop_();
1551CLK2543=_LOW;
1561_nop_();
1571DIN2543=_HI;
1581CLK2543=_HI;
1591_nop_();
1601CLK2543=_LOW;
1611DIN2543=_LOW;
1621for(i=0;i<8;i++)
1631{CLK2543=_HI;//时钟上升沿写入数据"0000_0000"
1642_nop_();
1652CLK2543=_LOW;};
1661CS2543=_HI;
1671for(i=10;i>0;i--)//delay10us
1681while(EOC2543==0);//在EOC=0时等待!
1691CS2543=_LOW;
1701_nop_();
1711_nop_();
1721_nop_();
1731_nop_();
1741_nop_();
1751CLK2543=_LOW;
1761for(i=0;i<11;i++)
1771{if(DOUT2543==_HI){vol|=0x01;}
1782elsevol|=0x00;
1792vol=_irol_(vol,1);
1802CLK2543=_HI;//时钟下升沿读出数据,
1812_nop_();
1822CLK2543=_LOW;}
1831CS2543=_HI;
1841_nop_();
1851_nop_();
1861_nop_();
1871_nop_();
1881returnvol;
1891}
190
191uintpick_ch2(void)//adcCH2
192{uchari;//12bits/msb/bin
1931uintvol=0;
1941CLK2543=_HI;
1951DIN2543=_LOW;
1961CS2543=_LOW;
1971_nop_();
1981_nop_();
1991_nop_();
2001_nop_();
2011_nop_();
2021CLK2543=_HI;//时钟上升沿写入CH数据"0010",
2031_nop_();
2041CLK2543=_LOW;
2051_nop_();
2061CLK2543=_HI;
2071_nop_();
2081CLK2543=_LOW;
2091_nop_();
2101DIN2543=_HI;
2111CLK2543=_HI;
2121_nop_();
2131CLK2543=_LOW;
2141DIN2543=_LOW;
2151_nop_();
2161CLK2543=_HI;
2171_nop_();
2181CLK2543=_LOW;
2191for(i=0;i<8;i++)
2201{CLK2543=_HI;//时钟上升沿写入数据"0000_0000"
2212_nop_();
2222CLK2543=_LOW;};
2231CS2543=_HI;
2241for(i=10;i>0;i--)//delay10us
2251while(EOC2543==0);//在EOC=0时等待!
2261CS2543=_LOW;
2271_nop_();
2281_nop_();
2291_nop_();
2301_nop_();
2311_nop_();
2321CLK2543=_LOW;
2331for(i=0;i<11;i++)
2341{if(DOUT2543==_HI){vol|=0x01;}
2352elsevol|=0x00;
2362vol=_irol_(vol,1);
2372CLK2543=_HI;//时钟下升沿读出数据,
2382_nop_();
2392CLK2543=_LOW;}
2401CS2543=_HI;
2411_nop_();
2421_nop_();
2431_nop_();
2441_nop_();
2451returnvol;
2461}
247
248voidpick_ch0_16s(void)//采16次取平均值(四舍五入)
249{
2501uintsum_Vco=0;
2511uchari;
2521for(i=0;i<16;i++)
2531{
2542sum_Vco+=pick_ch0();
2552};
2561i=sum_Vco%16;
2571if(i>10)
2581now_Vco0=sum_Vco/16+1;
2591else
2601now_Vco0=sum_Vco/16;
2611}
262
263voidpick_ch1_16s(void)//采16次取平均值(四舍五入)
264{
2651uintsum_Vco=0;
2661uchari;
2671for(i=0;i<16;i++)
2681{
2692sum_Vco+=pick_ch1();
2702};
2711i=sum_Vco%16;
2721if(i>10)
2731now_Vco1=sum_Vco/16+1;
2741else
2751now_Vco1=sum_Vco/16;
2761}
277
278voidpick_ch2_16s(void)//采16次取平均值(四舍五入)
279{
2801uintsum_Vco=0;
2811uchari;
2821for(i=0;i<16;i++)
2831{
2842sum_Vco+=pick_ch2();
2852};
2861i=sum_Vco%16;
2871if(i>10)
2881now_Vco2=sum_Vco/16+1;
2891else
2901now_Vco2=sum_Vco/16;
2911}
292
293
294voidmain(void)
295{
296
297E=0x00;//初始化时禁止所有中断
298TMOD=0x11;//定时器1工作在工作方式2,定时器0工作在方式1,16位定时计数器
299SCON=0x50;//串行口工作在方式1,10位数据收发,1位起始位,8位数据位,1位停止位
300TCON=0x00;//
301
302P1=0xFF;//先写1到各个I/O端口
303P2=0xFF;
304P3=0xFF;
305P0=0xFF;
3061
3071T0_INTERVAL=10;
3081T0_Init=65536-921.6*T0_INTERVAL;
3091
3101if((ADD2==_LOW)&&(ADD1==_LOW))
3111Address=0x03;
3121elseif((ADD2==_LOW)&&(ADD1==_HI))
3131Address=0x02;
3141elseif((ADD2==_HI)&&(ADD1==_LOW))
3151Address=0x01;
3161else
3171Address=0x00;
3181
3191SendBusy=_LOW;
3201TXC=_LOW;//
3211RCAP2H=0xFF;
3221RCAP2L=220;//11.0592M/9600Baud
3231RCLK=_on;//Timer2作为波特率发生器
3241TCLK=_on;
3251TR2=_on;
3261ES=_on;
3271
3281OUT1=0;
3291OUT2=0;
3301OUT3=0;
3311OUT4=0;
3321
3331delay(100);
3341TH0=T0_Init/256;//25ms,fosc=11059200Hz,fosc/12=921600Hz,
3351例如t=25,X=23040,则应从42496开始计数,t=50,X=46080,则应从19456开始计数
3361t=10,X=9216,则应从56320开始计数,t=5,X=4608,则应从60928开始计数
3371TL0