微机化压力检测系统设计资料.docx
《微机化压力检测系统设计资料.docx》由会员分享,可在线阅读,更多相关《微机化压力检测系统设计资料.docx(21页珍藏版)》请在冰豆网上搜索。
微机化压力检测系统设计资料
专业课课程设计
微机化压力检测系统设计2
目录
一绪论.............................................................1
1.1设计目的.....................................................1
1.2技术要求.....................................................1
1.3实用价值.....................................................1
二系统设计方案.....................................................1
2.1设计总体思路.................................................2
2.2硬件设计与实现...............................................2
2.2.1压力传感器..............................................2
2.2.2转换电路部分............................................3
2.2.2.1放大电路.........................................4
2.2.2.2信号解调电路.....................................4
2.2.2.3模数转换器.......................................5
2.2.3单片机部分..............................................7
2.2.4LED显示电路............................................8
2.3软件编程与实现...............................................8
2.3.1软件流程图..............................................8
2.3.2程序代码................................................9
三结论与体会......................................................14
参考文献...........................................................15
微机化压力检测系统设计2
摘要
本文主要介绍了一种测量和检测压力的系统。
在实际应用中,许多非电量如:
位移、流量、加速度等都可以转换为压力进行检测。
通过传感器感应被测压力,并经过电路的转换传输到单片机部分实现压力参数的检测,并由LED进行显示。
关键词:
微机化;压力传感器;转换电路;51单片机;LED显示
一.绪论
1.1设计目的
压力传感器是一种将被测压力转换成电压或电流输出的装置。
在实际应用中,许多非电量如:
位移、流量、加速度等都可以转换为压力进行检测。
压力检测的方法很多,如:
电阻变化型,电容变化型及自生电型压电式压力传感器等。
本设计要求学生采用MCS-51系列单片机实现压力参数的检测。
通过这一设计,掌握一般微机化检测系统的设计方法,达到专业课综合训练的目的。
此外要求学生复习《传感器》、《测控电路》、《单片机》、《智能仪器》等专业课知识,训练综合所学知识解决实际问题的能力。
1.2技术要求
①测量范围:
0—500kg(相当于50MPa)
②分辨力:
50g(相当于5KPa)
③显示:
LED
1.3实用价值
此次设计的压力检测装置可用在各种压力测量场合中,例如可用于小型地秤系统中,小型轿车等的超载检测,升降电梯的超重测量等,此外,还可将位移,加速度,流量等非电量转换成压力进而用此压力检测系统进行测量,如天然气石油管道等的流量检测等。
根据其量程和较高的分辨率可应用于多种场合中,实现对被测量的实时监测。
二.系统设计方案
2.1设计总体思路
整个系统主要由五部分组成:
压力传感器部分,测控电路部分,51单片机部分,LED显示电路以及相应的报警设备。
压力传感器将感应到的压力信号转换为电压信号或电流信号输出,输出的电信号经过放大整流滤波及A/D转换器形成数字型号进入单片机系统,最后由单片机编程控制LED显示出相应的数字,若被测压力超过量程,则由单片机程序控制发出报警信号。
系统总体框图如1所示:
超过量程
量程内
图1系统总体设计框图
2.2硬件设计与实现
2.2.1压力传感器
根据设计的技术参数要求,最终选择了空调压力传感器PT707。
其生产厂家有长沙拓力电子仪器公司和佛山贺迪电子仪器有限公司
PT707属于变极距型电容式传感器,其工作原理如下:
由绝缘介质分开的两个平行金属板组成的平板电容器,如果不考虑边缘效应,其电容量为
图1.1平行板电容器
ε为电容极板间介质的介电常数,ε=ε0·εr,其中ε0为真空介电常数,εr为极板间介质相对介电常数;A为两平行板所覆盖的面积;d为两平行板之间的距离。
当被测参数变化使得上式中的A,d或ε发生变化时,电容量C也随之变化。
如果保持其中两个参数不变,而仅改变其中一个参数,就可把该参数的变化转换为电容量的变化,通过测量电路就可转换为电量输出。
PT707采用进口机芯,内螺纹7/16-20UNF机械接口,内带顶针,适用于空调压力的测量与控制。
其主要参数如下:
量 程:
0~50(MPa)
综合精度:
0.2%FS、0.5%FS、1.0%FS
输出信号:
4~20mA(二线制)、0~5V、1~5V、0~10V(三线制)
供电电压:
24DCV(9~36DCV)
介质温度:
-20~85~150℃
环境温度:
常温(-20~85℃)
负载电阻:
电流输出型:
最大800Ω;电压输出型:
大于50KΩ
绝缘电阻:
大于2000MΩ(100VDC
密封等级:
IP65
长期稳定性能:
0.1%FS/年
振动影响:
在机械振动频率20Hz~1000Hz内,输出变化小于0.1%FS
电气接口:
四芯航接插(标件)
机械连接:
7/16-20UNF
2.2.2转换电路部分
单片机要求输入数字信号,因此需要对传感器输出的模拟信号进行处理,即对其进行放大、解调滤波、模数转换。
整体电路图如图2所示:
图2测控电路部分原理图
测控电路实质上是由三部分组成的:
放大电路,解调电路和模数转换器。
下面分别对这三部分进行详细介绍。
2.2.2.1放大电路
传感器输出的信号较小,并且伴随着很大的共模电压,考虑到压力检测系统所需精度较高,电路中选用三运放高共模抑制比放大电路,如图3所示。
图3三运放高共模抑制比放大电路
三运放高共模抑制比放大电路由三个集成运算放大器组成,U1、U2为两个相同的同相输入通用集成运算放大器构成对称平衡差动放大输入级,提高了电路的输入阻抗;U3构成双端输入单端输出的输出级,用来进一步抑制U1、U2的共模信号并适应接地负载的需要。
为了消除U1、U2偏置电流的影响,同时获得高共模抑制比,在电阻选择时应满足R1=R2、R3=R4、R5=R6;在电路设计时注意将输入级的增益设计得大些,输出级的增益小一些,同时将输出级的外部电阻取得较小以提高电阻的匹配程度,进而提高整个电路的共模抑制比,通常情况下CMRR≥120dB,共模输入电压范围为+6到-10V。
此电路设计的优点在于:
U1、U2的性能一致,输入级的差动输出及其差模增益只与输入电压有关,其共模输出、失调及漂移均在R0两端相互抵销,因此电路具有良好的共模抑制能力,达到同时不要求外部电阻的匹配;此电路具有增益调节能力,调节电位器R0的大小可以改变增益而不影响电路的对称性。
缺点在于:
U1、U2性能不可能完全一致,再加上外界其他因素的影响,不可能保证共模抑制比完全相同,因此可能会引入附加的共模误差,使电路共模抑制能力下降;各级电阻不匹配也可能引入共模误差。
2.2.2.2信号解调电路
前面采用的T2高性能压力传感器属于电容式传感器,它采用交流电源供电,除了是本身需要之外,同时还是为了调制,因此需要对其输出信号进行解调。
解调电路主要有以下两种:
包络检波电路和相敏检波电路。
在包络检波电路中存在两个问题:
一是无法从检波器的输出鉴别出调制信号的相位,二是不具有区分不同载波频率信号的能力,为了使检波电路具有判别信号相位和选频的能力,需采用相敏检波电路。
其中相乘式和相加式相敏检波电路中开关器件导通时的等效电阻和截止时的漏电流的变化和存在会引起一定误差,为减小开关器件的不理想带来的误差,可以采用如图4所示的精密整流型全波相敏检波电路。
图4精密整流型全波相敏检波电路
在Uc为正的半周期,V1截止,V2导通,N1用作反相放大器,Ua为Us的反相信号;在Uc为负的半周期,V1导通,V2截止,N1的输出Ua为零。
这样,Ua的波形为一半波整流信号。
取R1=R2,R'3=2R3,N2对Ua的放大倍数比对Us的放大倍数大一倍,在不接电容C的情况下Uo的波形为全波整流信号。
电容C滤去经全波检波后Us中的高频成分,获得调制信号Ux。
此电容的引入可以省略了信号分离环节,达到同样的滤波效果。
2.2.2.3模数转换器
微机化压力检测系统要求的检测范围是0-500kg,分辨力是50g,500kg/50g=10000,需要14位以上的A/D转换器,又考虑到系统的精度要求较高,因此选择分辨率较高、线性度好、易集成、成本低的16位∑-△A/D转换器AD7705。
AD7705内部主要由模拟多路转换器、输入缓冲器和可编程增益放大器PGA、∑-△调制器、可编程数字滤波器、串行SPI接口、状态/控制寄存器及时钟发生器等组成,如图5所示;芯片如图6所示。
AD7705在使用时考虑以下几点:
①基准电压:
AD7705的基准电压UREF由REF(+)和REF(-)引入,数字输出是模拟输入相对于其基准的比率,因此基准电压的稳定性直接影响测量精度,其大小决定了模拟输入的最大范围。
②与模拟输入的连接:
输入为经过放大、解调、滤波之后的测量信号,所用电压源与基准电压相同,保证电压源有所波动时两个电压源所受影响比例相同,从而降低对电压基准源电压稳定性的要求。
③与单片机的连接:
AD7705采用SPI/QSPI兼容的三线串接口,能够方便的与各种微控制器相连,比并行接口方式节省了CPU的I/O口的占用。
本测量电路中,AD7705的片选端接到低电平,DIN、DOUT引脚连接在一起,与单片机的P1.0通信;SCLK与P1.1相连,为传输数据提供时钟信号,无数据传送时,P1.1闲置为高电平;转换结束信号DRDY/连接至P3.2,单片机可通过查询或者中断方法实现对AD7705转换数据的读取。
图5AD7705内部组成
图6AD7705芯片
2.2.3单片机部分
通过比较各种单片机的性能,最终选择了ATmega128芯片。
ATmega128为基于AVRRISC结构的8位低功耗CMOS微处理器。
由于其先进的指令集以及单周期指令执行时间,ATmega128的数据吞吐率高达1MIPS/MHz,从而可以缓减系统在功耗和处理速度之间的矛盾。
(1)ATmega128芯片的性能参数如下:
工作电压:
2.7-5.5VATmega128L;4.5-5.5VATmega128
速度等级:
0-8MHzATmega128L;0-16MHzATmega128
(2)ATmega128芯片的主要特点如下:
①它是高性能低功耗的具有128K系统内可编程Flash的8位微处理器;
②先进的RISC结构;
③非易失性的程序和数据存储器;
④JTAG接口(与IEEE1149.1标准兼容);
⑤外设特点:
两个具有独立的预分频器和比较器功能的8位定时器/计
数器;两个具有预分频器、比较功能和捕捉功能的16位定时器/计数器;
具有独立预分频器的实时时钟计数器;两路8位PWM;6路分辨率可编程
(2到16位)的PWM;输出比较调制器等;
⑥特殊的处理器特点:
上电复位以及可编程的掉电检测;片内经过标定的
RC振荡器;片内/片外中断源;6种睡眠模式;可以通过软件进行选择
的时钟频率;通过熔丝位可以选择ATmega103兼容模式;全局上拉禁止
功能;
⑦I/O和封装:
53个可编程I/O口线;64引脚TQFP与64引脚MLF封装。
(3)将ATmega128接入电路中,如图7所示。
图7ATmega128
2.2.4LED显示电路
LED由若干个发光二极管按一定规律排列而成,当某一个发光二极管导通时,相应的一个点或一个笔画被点亮,控制不同组合的二极管导通,就能显现出不同的字符。
其结构有两种形式,即共阴极和共阳极。
我们采用的是共阴极LED。
共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管,共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮,当某一字段的阳极为低电平时,相应字段就不亮。
2.3软件编程与实现
2.3.1软件流程图
是
否
2.3.2程序代码
根据上述程序框图,可利用C语言编写程序代码,实现用LED显示所测压力数值和提示超载功能。
部分代码如下:
#include
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
unsignedintLedOut[6];
UnsignedcharcodeDisp_Tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};//段码控制
sbitAdDrdy=P3^2;
sbitAdDin=P1^1;
sbitAdDout=P1^1;/*AD7705input&output*/
sbitAdClk=P1^0;/*AD7705时钟脉冲*/
sbitAd_CS=P3^3;/*AD7705片选*/
sbitdula=P2^6;
sbitwela=P2^7;
sbitled=P2^7;
unsignedlongADC=0;
unsignedintintj0;
/********延时程序******/
voiddelay(unsignedintx)//延时Xms
{
unsignedinti,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
/*向AD7705写入一个字节*/
voidWriteByte7705(unsignedcharx)
{
unsignedchara;
AdClk=1;
for(a=0;a<8;a++)
{
AdClk=0;
if(x&0x80)
AdDin=1;
else
AdDin=0;
_nop_();
_nop_();
_nop_();
_nop_();
AdClk=1;
_nop_();
_nop_();
_nop_();
_nop_();
x<<=1;
}
AdDin=1;
}
/*从AD7705读一个字*/
unsignedintReadWord7705(void)
{
unsignedcharb;
unsignedlongy=0;
WriteByte7705(0x38);//设置AD7705数据寄存器通道1
AdClk=1;
for(b=0;b<16;b++)
{y<<=1;
AdClk=0;
_nop_();
_nop_();
_nop_();
_nop_();
if(AdDout==1)
{
y++;
}
AdClk=1;
_nop_();
_nop_();
_nop_();
_nop_();
}
AdDin=1;
AdClk=1;
returny;
}
/*ad7705通信端口复位*/
voidreset7705(void)
{ucharc;
for(c=0;c<35;c++)
{
AdClk=0;
_nop_();
_nop_();
_nop_();
AdDin=1;
AdClk=1;
_nop_();
_nop_();
_nop_();
}
delay
(1);
}
voidAdStart(void)//初始化
{uchari;
delay
(1);
AdClk=1;
AdDin=1;
for(i=0;i<40;i++)
{AdClk=1;AdClk=0;}
WriteByte7705(0X20);
WriteByte7705(0X00);
WriteByte7705(0X10);
WriteByte7705(0X44);
delay(100);
}
voidint0()interrupt0//AD7705中断0读取AD
{intj0=1;
Ad_CS=0;
ADC=ReadWord7705();
ADC=(2.5*ADC)/65535;
ADC=123;
delay(20);
AdDrdy=1;
}
/*********显示程序**************/
voiddisplay(unsignedcharA,unsignedcharB,unsignedcharC,unsignedcharD,unsignedcharE,unsignedcharF)//显示程序
{
P2=0x1f;
P0=Disp_Tab[A];//显示百位
delay(5);
P2=0x2f;
P0=Disp_Tab[B];
delay(5);
P2=0x37;
P0=Disp_Tab[C];
delay(5);
P2=0x3b;
P0=Disp_Tab[D];
delay(5);
P2=0x3d;
P0=Disp_Tab[E];
delay(5);
P2=0x3e;
P0=Disp_Tab[F];
delay(5);
}
/*****************************************************************/
voidmain(void)
{
EX0=1;//允许外部中断0中断
IT0=0;//外部中断0为跳变触发方式
EA=1;//开中断
reset7705();
AdStart();
delay(10);
while
(1)
{
if(intj0)
{
LedOut[1]=(ADC%1000000)/100000;
LedOut[2]=(ADC%100000)/10000;
LedOut[3]=(ADC%10000)/1000;//千位
LedOut[4]=(ADC%1000)/100|0x80;//百位带小数点
LedOut[5]=(ADC%100)/10;//十位
LedOut[6]=ADC%10;//个位
display(LedOut[1],LedOut[2],LedOut[3],LedOut[4],LedOut[5],LedOut[6]);
led=1;
delay(100);
intj0=0;
}
if(~intj0)
{
display(LedOut[1],LedOut[2],LedOut[3],LedOut[4],LedOut[5],LedOut[6]);
led=0;
delay(100);
}
reset7705();
}
}
三结论与体会
通过T2压力传感器检测到压力信号,转换为电信号,然后通过放大解调及AD7705模数转换器转换后产生一个数字信号输入到ATmega128单片机中进行处理,再通过单片机驱动LED显示压力的相关信息。
并在超过发出报警。
由于显示程序的复杂性,所以选用了C语言作为开放程序加快了开发进度。
本次设计由于时间较为仓促,难免考虑不周全,还有许多功能需要完善,这要求我们进行更加深入的探讨。
为了完成这次的设计,我们重新复习并且更加深入地学习了传感器、测控电路、单片机等专业知识,并且查阅了其他一些相关的书籍和资料,极大的扩充了我们的知识面,而且是第一次全面深入地运用了专业所学,感到十分的兴奋与新奇,虽然常常熬夜做到很晚,有时会很辛苦,但依然充满热情,也充满对未知知识的好奇与渴望。
还有我也终于明白了何谓“书到用时方恨少”了,经过此次课题设计,我想我以后一定尽力学好专业知识,将专业学透、学精,才不至于在以后用到的时候手忙脚乱不知所以了。
另一方面,小组的团结协力和分工是极其重要的。
这次的课题我们小组分为三个部分,每个人选择自己擅长和感兴趣的部分来做。
小组之间又互相交流,取长补短,每个人都颇有收获。
参考文献
[1]黄劼,徐晓秋《单片机原理与接口技术》,国防工业出版社,2008年
[2]张国雄《测控电路》,机械工业出版社,2011年
[3]唐文彦《传感器》,机械工业出版社,2010年
[4]《ASHCROFT压力传感器选型手册》,ASHCROFT公司
[5]潘新民,王燕芳《微型计算机与传感器》,人民邮电出版社,1998
[6]赖麒文《8051单片机C语言彻底应用》,科学技术出版社,2002
[7]刘福学《传感器及其电路精选》,机械工业出版社,2002
[8]何涛《单片机系统中模数转换精度探讨》,计算机光盘软件与应用,2011