压力传感器程序
- 格式:doc
- 大小:19.00 KB
- 文档页数:8
中文摘要摘要目前对于工厂环境的监测和控制,基本上是人工进行的,劳动强度大,繁琐。
由于人工反应不及时,造成损失的现象时有发生。
而且现在许多工厂车间对于环境的要求越来越高,固有的监测和控制方法已经不能满足其需求。
随着PLC 技术的发展,PLC技术被更广泛的应用于实时监测和控制中来。
通过PLC技术的应用,能够清晰直观并且实时的收集信息,并自动快速的做出反应,实现对车间环境的自动化、智能化。
本论文主要讲述了基于以西门子S7-200系列可编程控制器(PLC)为主要的控制元件,采用PID算法进行控制,运用PLC梯形图编程语言进行编程。
本次设计的目的是实现对工厂环境的温度,湿度及管道压力进行实时监测和显示,并通过PID算法对温度、湿度和压力进行控制,使环境可以维持在工业要求的范围内。
关键词:温度湿度压力可编程控制器AbstractABSTRACTNow the monitoring and controlling of factory environment is basically a manual of labor-intensive and cumbersome. Artificial response in a timely manner, resulting in the phenomenon of the loss occurred. And now, the increasingly high demand for many of the factory floor environment, inherent in the monitoring and control methods have been unable to meet their needs. With the development of PLC technology, PLC technology is more widely used in the real-time monitoring and control. Through the application of PLC technology, clear and intuitive and real-time collection of information, automatically and quickly respond to the automation of the workshop environment, intelligent.This paper mainly based on Siemens S7-200 series programmable controller (PLC) for the control of the main components,the use of the PID algorithm,the use of PLC ladder programming language programming,to achieve the factory environment, temperature, humidity and pressure of the pipeline real-time monitoring and display, and at the same temperature, humidity and pressure control design method.Key words: temperature humidity pressure PLC目录摘要 (I)ABSTRACT (II)目录 (III)第一章引言......................................... - 1 -1.1 课题的背景和意义.................................. - 1 - 1.2 国内外研究现状.................................... - 1 - 1.3 本课题的主要研究内容............................... - 2 - 第二章 PID算法介绍.................................. - 3 - 2.1 PID算法简介...................................... - 3 - 2.2 PID参数的调整.................................... - 4 - 2.3 PID控制的应用.................................... - 5 - 第三章基于PLC监控系统的硬件设计 ....................... - 7 -3.1 系统的主要技术指标与参数........................... - 7 - 3.2 系统设计方案的论证 ................................ - 7 - 3.3 PLC的概述及选型 .................................. - 7 -3.3.1 PLC的产生和应用 ............................... - 8 -3.3.3 PLC的选型 ................................... - 10 -3.4 传感器的选择.................................... - 11 -3.4.1 温度传感器的选择.............................. - 11 -3.4.2 湿度传感器................................... - 13 -3.5 模块的配置和应用................................ - 15 - 3.6 其他元器件的选择................................ - 16 - 3.7 系统硬件接线图.................................. - 17 - 第四章系统的软件设计............................... - 19 -4.1 常用PLC程序的设计方法........................... - 19 -4.2 系统流程图..................................... - 19 - 4.3 温度监控程序的设计 .............................. - 20 - 4.4 湿度监控程序设计................................ - 25 - 4.5 压力监控子程序.................................. - 28 - 结论 ............................................. - 33 -参考文献.......................................... - 34 -致谢及声明......................................... - 35 -第一章引言1.1 课题的背景和意义温度、湿度、压力和人类的生产、生活有着密切的关系,同时也是工业生产中最常见最基本的工艺参数,例如机械、电子、石油、化工等各类工业中广泛需要对温度、湿度、压力的检测和控制。
以下是一个简单的PLC压力控制程序的示例:// 定义输入变量input: I0.0 (启动按钮), I0.1 (停止按钮), I0.2 (压力传感器信号);// 定义输出变量output: Q0.0 (电磁阀控制信号), Q0.1 (报警灯控制信号);// 定义中间变量internal: D0 (压力设定值), D1 (实际压力值), D2 (偏差值), D3 (PID控制参数);// 程序启动时,初始化压力设定值和PID控制参数AT_start:D0 := 10; // 压力设定值为10barD3 := 0.1; // PID控制参数为比例系数为0.1Q0.0 := 0; // 电磁阀控制信号初始值为0(关闭状态)Q0.1 := 0; // 报警灯控制信号初始值为0(关闭状态)return;// 程序循环运行时,读取压力传感器信号并计算偏差值AT_loop:D1 := I0.2; // 实际压力值等于压力传感器信号D2 := D0 - D1; // 偏差值等于压力设定值减去实际压力值if (D2 < -D3) then // 如果偏差值小于-D3,则将偏差值赋给Q0.1并打开报警灯Q0.1 := 1;else if (D2 > D3) then // 如果偏差值大于D3,则将偏差值赋给Q0.0并打开电磁阀Q0.0 := 1;else // 如果偏差值在-D3和D3之间,则关闭电磁阀和报警灯Q0.0 := 0;Q0.1 := 0;endif;return;该程序通过读取压力传感器信号,计算偏差值,并根据偏差值控制电磁阀和报警灯的开关。
程序中的PID控制参数可以根据实际需要进行调整,以实现更好的控制效果。
一种硅压阻式压力传感器温度补偿算法及软件实现-基础电子摘要:硅压阻式压力传感器的零点温度漂移和灵敏度温度漂移是影响传感器性能的主要因素之一,如何能使该类误差得到有效补偿对于提高其性能很有意义。
通过对硅压阻式压力传感器建立高阶温度补偿模型进行温度误差补偿是一种有效的方法,并在该模型基础上给出了拟合系数计算方法,并用Matlab GUI 软件来实现温度补偿系数计算,进而实现传感器输出的动态温补,达到了很好的输出线性性。
实验结果表明,补偿后传感器输出的非线性误差小于0.5% F.S.0 引言硅压阻式压力传感器利用半导体材料的压阻效应来进行压力测量,以其体积小、灵敏度高、工艺成熟等优点,在各行业中得到了广泛应用。
实际工程应用中由于硅材料受温度的影响,导致零点漂移和灵敏度漂移,因此温度补偿问题是提高传感器性能的一个关键环节。
目前压力传感器主要有两种温度补偿方法:硬件补偿和软件补偿。
硬件补偿方法存在调试困难、精度低、成本高、通用性差等缺点,不利于工程实际应用;利用数字信号处理技术的软件补偿能够克服以上缺点,也逐渐成为研究热点。
目前软件补偿的方法主要有:查表法、二元插值法、BP神经网络法、小波神经网络方法、曲线曲面拟合方法等。
查表法需要占用很大内存空间,而神经网络方法存在网络不稳定、训练时间较长的缺点不利于工程应用。
在研究各类软件补偿方法的基础上对压力传感器采用建立高阶温度补偿模型进行温度误差补偿,并且在Matlab GUI软件平台下实现高阶温度补偿系数的计算,通过实验对该方法进行验证。
1 高阶温度补偿模型的建立1.1 高阶温度补偿建模压力传感器输出非线性误差主要是由零点温度漂移和灵敏度温度漂移产生,零点温度漂移是由于电阻掺杂不同而导致电阻的温度系数不同,灵敏度温度漂移主要由于压阻系数易随温度的升高而减少。
针对温度对传感器输出影响,采用对零点温度漂移和灵敏度漂移建立高阶补偿模型进行统一补偿,补偿后压力值Press(T )表示为温度传感器电压输出VT 和压力传感器电压输出VP 的函数:将Press(T )补偿转换成曲面拟合问题,采用高阶多项式拟合方法构造曲面方程:式中系数矩阵中元素CI,J 是式(2)中VP VT 项对应系数。
压力传感器单片机课程设计第1 章前言电力压力器中主要使用的压电材料包括有石英、酒石酸钾钠和磷酸二氢胺。
其中石英(二氧化硅)是一种天然晶体,压电效应就是在这种晶体中发现的,在一定的温度范围之内,压电性质一直存在,但温度超过这个范围之后,压电性质完全消失(这个高温就是所谓的“居里点”)。
由于随着应力的变化电场变化微小(也就说压电系数比较低),所以石英逐渐被其他的压电晶体所替代。
而酒石酸钾钠具有很大的压电灵敏度和压电系数,但是它只能在室温和湿度比较低的环境下才能够应用。
磷酸二氢胺属于人造晶体,能够承受高温和相当高的湿度,所以已经得到了广泛的应用。
早在1954年美国C.S.Smith首先确认了半导体压电效应,1955年C.Herring 指出:这种压电电阻效应是由于应力的作用,引起导体与价电子带能量状态的变化,以及载流子数量与迁移率变化所产生的一种现象。
日本从1970年开始研究开发,首先应用在血压计上,之后在过程控制领域及轿车发动机控制部分都获得了广泛的应用。
最近几年在家用电器、装配机器人等应用领域普遍采用电子压力传感器作为压力控制、压力监控和判断真空吸附的效果。
图1 电子压力器模型1第2章电子压力器的工作原理 2.1 电子压力器的工作原理电子压力器由压力传感器,A/D转换器,数码显示等组成。
当用手按压传感器,腔体内外就会产生压差,这些压差就会转化成电压,电压转化成数字量后,根据压力变化1Kpa,输出电压变化为120mV的关系,依照采样的输出电压,采用线性插值法可计算出实际压力值。
然后将实际压力值送数码管显示。
图2.1.1为PS压力传感器的截面结构图,图2.1.2为其传感器部分的结构。
如图所示,在压力传感器半导体硅片上有一层扩散电阻体,如果对这一电阻体施加压力,由于压电电阻效应,其电阻值将发生变化。
受到应变的部分,即膜片由于容易感压而变薄,为了减缓来自传感器底座应力的影响,将压力传感器片安装在玻璃基座上。
#include#include#include#include#define uchar unsigned char #define uint unsigned int#define BUSY 0x80//#define DATAPORT P0//ADC0832 的引脚sbit ADCS =P3^5; //ADC0832 chip seclectsbit ADDI =P3^7; //ADC0832 k insbit ADDO =P3^7; //ADC0832 k outsbit ADCLK =P3^6; //ADC0832 clock signalsbit LCM_RS=P2^0;sbit LCM_RW=P2^1;sbit LCM_EN=P2^2;uchar ad_data;//sbit Alarm_led_red =P1^5;//报警定义sbit Alarm_led_green=P1^6;//报警定义//adc采样值储存单元char press_data;//unsigned char ad_alarm;//unsigned char press_bai=0;//unsigned char press_shi=0;//unsigned char press_ge=0;//unsigned char press_dot=0;//uchar code str0[]={"Press: . kpa "};uchar code str1[]={" Check BY Jack "};void delay(uint);void lcd_wait(void);void//LCD 延时子程序void initLCM( //LCD 初始化子程序void//LCD 检测忙子程序void WriteCommandLCM(uchar WCLCM,uchar BusyC);写指令到ICM子函数常量定义采样值储存超出压力表量程最大值红色led 低于压力表量程最小值绿色led标度变换储存单元报警值储存单元显示值百位显示值十位显示值个位显示值十分位delay_LCM(uint);void);lcd_wait(void);//void WriteDataLCM(uchar WDLCM);//写数据到LCM子函数void DisplayOneChar(uchar X,uchar Y,uchar DData);//显示指定坐标的一个字符子函数void DisplayListChar(uchar X,uchar Y,uchar code *DData);//显示指定坐标的一串字符子函数void display(void);//系统显示子函数uchar Adc0832(unsigned char channel);void alarm(void);void data_pro(void);void main(void){delay(500);//系统延时500ms启动initLCM( );WriteCommandLCM(0x01,1);//清显示屏DisplayListChar(0,0,str0);DisplayListChar(0,1,str1);while(1){ad_data =Adc0832(0);//采样值储存单元初始化为0alarm();data_pro();display();}}void delay(uint k){uint i,j;for(i=0;i{for(j=0;j<60;j++){;}}}void WriteCommandLCM(uchar WCLCM,uchar BusyC) {if(BusyC)lcd_wait();DATAPORT=WCLCM;LCM_RS=0; LCM_RW=0;////选中指令存放器写模式LCM_EN=1;_nop_();_nop_();_nop_();LCM_EN=0;}void WriteDataLCM(uchar WDLCM) {lcd_wait( );// DATAPORT=WDLCM; LCM_RS=1;// LCM_RW=0;// LCM_EN=1;_nop_();_nop_();_nop_();LCM_EN=0;检测忙信号选中数据存放器写模式}void lcd_wait(void){DATAPORT=0xff;//读LCD前若单片机输出低电平, 而读出LCD 为高电平 , 则冲突,Proteus 仿真会有显示逻辑黄色LCM_EN=1;LCM_RS=0;LCM_RW=1;_nop_();_nop_();_nop_();while(DATAPORT&BUSY){ LCM_EN=0;_nop_();_nop_();LCM_EN=1;_nop_();_nop_();}LCM_EN=0;}void initLCM( ){DATAPORT=0;delay(15);WriteCommandLCM(0x38,0);//三次显示模式设置,不检测忙信号delay(5);WriteCommandLCM(0x38,0);delay(5);WriteCommandLCM(0x38,0);delay(5);WriteCommandLCM(0x38,1);//8bit数据传递, 2 行显示, 5*7 字型,检测忙信号WriteCommandLCM(0x08,1);//封闭显示,检测忙信号WriteCommandLCM(0x01,1);//清屏,检测忙信号WriteCommandLCM(0x06,1);//显示光标右移设置,检测忙信号WriteCommandLCM(0x0c,1);//显示屏翻开,光标不显示,不闪耀,检测忙信号}void DisplayOneChar(uchar X,uchar Y,uchar DData){Y&=1;X&=15;if(Y)X|=0x40;//若y为1(显示第二行),地点码+0X40X|=0x80;//指令码为地点码+0X80WriteCommandLCM(X,0);WriteDataLCM(DData);}void DisplayListChar(uchar X,uchar Y,uchar code *DData){uchar ListLength=0;Y&=0x01;X&=0x0f;while(X<16){DisplayOneChar(X,Y,DData[ListLength]);ListLength++;X++;}}void display(void){WriteCommandLCM(0x0c,1);//显示屏翻开,光标不显示,不闪耀,检测忙信号DisplayListChar(0,0,str0);DisplayListChar(0,1,str1);DisplayOneChar(7,0,press_bai+0x30);DisplayOneChar(8,0,press_shi+0x30);DisplayOneChar(9,0,press_ge +0x30);DisplayOneChar(11,0,press_dot+0x30);delay(1000);//稳固显示}// 收集并返回uchar Adc0832(unsigned char channel)//AD变换,返回结果{uchar i=0;uchar j;uint dat=0;uchar ndat=0;if(channel==0)channel=2;if(channel==1)channel=3;ADDI=1;_nop_();_nop_();ADCS=0;// 拉低 CS端_nop_();_nop_();ADCLK=1;// 拉高 CLK端_nop_();_nop_();ADCLK=0;// 拉低 CLK端 , 形成降落沿1 _nop_();_nop_();ADCLK=1;// 拉高 CLK端ADDI=channel&0x1;_nop_();_nop_();ADCLK=0;// 拉低 CLK端 , 形成降落沿2 _nop_();_nop_();ADCLK=1;// 拉高 CLK端ADDI=(channel>>1)&0x1;_nop_();_nop_();ADCLK=0;// 拉低 CLK端 , 形成降落沿3 ADDI=1;//控制命令结束_nop_();_nop_();dat=0;for(i=0;i<8;i++){dat|=ADDO;//收数据ADCLK=1;_nop_();_nop_();ADCLK=0;//形成一次时钟脉冲_nop_();_nop_();dat<<=1;if(i==7)dat|=ADDO;}for(i=0;i<8;i++){j=0;j=j|ADDO;//收数据ADCLK=1;_nop_();_nop_();ADCLK=0;//形成一次时钟脉冲_nop_();_nop_();j=j<<7;ndat=ndat|j;if(i<7)ndat>>=1; }ADCS=1;// ADCLK=0;// ADDO=1;//拉低 CS端拉低 CLK端拉高数据端 , 回到初始状态dat<<=8;dat|=ndat;return(dat);//return ad k}void data_pro(void){unsigned int temp;float press;if(14{int//y=(115-15)/(243-13)*X+15kpapress=((10.0/23.0)*vary)+9.3;temp=(int)(press*10); press_bai=temp/1000;//////vary=ad_data;测试时赔偿值为9.3放大 10 倍,便于后边的计算取压力值百位press_shi=(temp00)/100; press_ge=((temp00)0)/10; press_dot=((temp00)0);// }////取压力值十位取压力值个位取压力值十分位}void alarm(void) {if(ad_data>=243){ Alarm_led_red=0; } else{ Alarm_led_red=1; } if(ad_data<=14){ Alarm_led_green=0; } else{ Alarm_led_green=1; }////////////假如目前压力值大于115kpa,则启动 red led报警封闭 red led报警假如目前压力值小于16kpa则启动 green led报警封闭 green led报警}。
#include<reg52.h>#define uchar unsigned char#define uint unsigned int #defineulong unsigned long uchar codetable[]="0123456789"; uchar codetable1[]=".Kg";sbit Icde n=P3^4;sbit Icdrs=P3A 5;sbit ADDO=P2A3;sbit ADSK=P2A4;sbit beep=P2A2;uint shiqian,qian,bai,shi,ge;uIong zhI;void deIay(uint ms){uint i,j;for(i=ms;i>0;i --)for(j=110;j>0;j --);}void write_com(uchar com){Icdrs=0;P1=com;deIay(10);Icden=1;deIay(5);Icden=0;} void init() {Icden=0;显示模式 16*2 显示, 5*7 点阵, 8 位数据接口 开显示 不显示光标 光标不闪烁 当读或写一字符后地址指针加一且光标加一, 显示清零 数据指针清零 void write_data(uchar date){write_com(0x38);//0011 1000write_com(0x0c);//0000 1100write_com(0x06);//0000 0110write_com(0x01);//00000001 } 显示不移动write_com(0x80+0x07); write_data(table1[0]); delay(50);write_com(0x80+0x08); write_data(table[bai]); delay(50);write_com(0x80+0x09); write_data(table[shi]); delay(50);write_com(0x80+0x0A);write_data(table[ge]);delay(50);write_com(0x80+0x0B);write_data(table[1]);delay(50);write_com(0x80+0x0C);lcdrs=1;P1=date;delay(10);lcden=1;delay(5);lcden=0;}void display(){ulong tamp,zhl;if(zhl>0||zhl<16777216)// 进行判断是否满足条件{tamp=((zhl*298)/100000) -24714;// 进行 AD 转换计算shiqian=tamp/10000; // 进行计算qian=tamp%10000/1000; bai=tamp%10000%1000/100;shi=tamp%10000%1000%100/10;ge=tamp%10000%1000%100%10;write_com(0x80+0x05);write_data(table[shiqian]);delay(50);// 表示使用哪个 // 显示值 1602 中的地址显示 write_com(0x80+0x06);write_data(table[qian]);// 表示使用哪个 1602 中的地址显示 // 显示值 delay(50);// 延时,主要是用来解决显示屏是否忙还是不忙write_data(table1[2]);delay(50);}else{uint z;for(z=0;z<=15;z++) // 判断条件是否超出量程,报警。
电阻式压力传感器用户使用说明书V1.0深圳市中科鸥鹏智能科技有限公司2010年11月目录1.简介 (3)2.技术参数 (3)3.注意事项 (4)4.安装方法及软件 (5)1.简介FSR402是著名Interlink Electronics 公司生产的一款重量轻,体积小,感测精度高,超薄型电阻式压力传感器。
这款压力传感器是将施加在FSR传感器薄膜区域的压力转换成电阻值的变化,从而获得压力信息。
压力越大,电阻越低。
其允许用在压力100g-10kg的场合。
可用于机械夹持器末端感测有无夹持物品,仿生机器人足下地面感测,哺乳类动物咬力测试生物实验,应用范围及其广泛。
但是由于压力检测不是非常精确,因此不建议使用需要精确检测压力的场合。
2.技术参数●工作电压:5VDC@165mA●传感器感应面积:直径12.7mm●传感器类型:被动式可变电阻●压力感应范围:100g ~ 10 kg●使用寿命:>100万次挤压图1压力感应电阻是弯曲压力传感器的一种,简称FSR,FSR是一种随着有效表面上压力增大而输出阻值减小的高分子薄膜,FSR并不是测压元件或形变测量仪,尽管他们有着相似的性能。
而且这类压力感测电阻不适用于精密测量,但是FSR却是一款灵敏度较高的传感器。
图2图3这是它的性能曲线3.注意事项FSR的厚度为0.2mm—1.25mm,这款传感器的厚度为0.3mm。
压力敏感范围是从100g 到10kg.。
声压灵敏度是从0.1kg/cm²到10 kg/cm²。
在安装时有几个注意事项:●要尽量选择稳固,光滑且平坦的安装表面;●当你的安装表面是曲面时,你安装FSR时势必会弯曲它,这样一来FSR就会受力,就会一定程度上影响到FSR的精确度,所以要注意尽量不要将FSR的有效表面安装在曲面上(注:是圆形有效表面不可弯曲,而长尾部可以弯曲);●要保持接触表面的清洁;●受力不要超过它的额定值;●尽量不要将它焊接到万用板或没有属于它的特定封装的电路板上,以免尾部会受热变形;●若用导线将其接入电路,注意最好要用热缩管将尾部两部分隔开。
使用MS4525DO压力传感器计算空速——中北大学:马政贵MS4525DO压力传感器内含高性能压力数字输出(14位)和温度数字输出(11位),包含多种气压量程,支持SPI或者IIC总线接口。
为降低通讯时间,程序使用SPI通讯方式,气压量程为±1psi,为两端差分输出,A输出类型,供电电压3.3V。
MS4525DO的数据读取及转换:图1 MS4525DO数据包的输出根据数据手册,MS4525DO的数据包大小为4字节(32位),从高字节开始传输。
其中,最高的两位S(1:0)表示数据包的状态,紧接着是14位的气压AD值,再接着是11位的温度AD值,最后5位为无效位,没有相应的数据定义,可不理会。
该芯片不用进行初始化,不接受指令,可直接进行数据读取并根据关系式进行转换。
图2 气压AD 值和实际气压的关系式根据上述气压AD 值和实际气压的关系式,有所以,其中,、为静态下的气压值及其AD 值,、为当前的气压值及其AD 值,为变化的气压量。
通过在静态下多次读取(程序中为100次)求平均值的方式进行获取,对应程序中的Air_Speed_AD_Static :MS4525_CS_L; delay_us(200);for(i=0;i<32;i++) //对数据的各个位进行逐一读取16383*%10Pr *Pr 16383*%80+=sta sta essure Range essure Output 16383*%10Pr *Pr 16383*%80+=essure Range essure Output 16383*%80Pr *)(Pr Pr Rangeessure Output Output essure essure P sta sta -=-=∆staessure Pr staOutput essure Pr OutputP ∆staOutput{MS4525_CLK_H;Get_Data <<=1;Get_Data |=GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_6);delay_us(150);MS4525_CLK_L;delay_us(200);}delay_us(200);MS4525_CS_H;delay_us(200);Air_Speed_AD = Get_Data & 0x3fff0000; //取气压的AD值,对应数据包的16~29位Air_Speed_AD >>=16;if(!Init_Finish){count++;Pressure_Add += Air_Speed_AD;if(100 == count){count = 0;Init_Finish=1;Air_Speed_AD_Static = Pressure_Add/100; //获取静态下的气压AD值Pressure_Add=0;}}图3 温度AD 值和实际温度的关系式读出气压AD 值和温度AD 值之后,可以根据芯片手册给出的关系式求出相应的气压值和温度值。
压力传感器校准操作流程一、简介在工业生产中,压力传感器被广泛应用于各种设备和系统中,用于测量和监控压力变化。
为了确保传感器的准确性和可靠性,定期进行校准是非常重要的。
本文将介绍压力传感器校准的操作流程,帮助读者正确进行操作,保证传感器的准确性。
二、准备工作1. 确认校准设备:首先要确保校准设备齐全,包括标准气源、数字示波器、多用表等仪器。
2. 校准环境准备:在干净、无尘、无振动的环境中进行校准,避免外部因素对校准结果产生影响。
3. 校准记录准备:准备校准记录表,记录每一次校准的结果和参数,以备日后查阅和分析。
三、操作步骤1. 连接设备:将待校准的传感器与标准气源连接,确保连接牢固和无泄漏。
2. 设置参数:根据传感器的型号和规格,设置校准参数,包括校准范围、输出单位等。
3. 升压校准:逐步升高标准气源的压力,同时记录传感器的输出值,并与标准值进行比对。
4. 降压校准:同样地,逐步降低标准气源的压力,记录传感器的输出值,与标准值进行对比。
5. 校准曲线修正:根据升压和降压的校准结果,修正校准曲线,使传感器的输出值更加准确。
6. 校准结果确认:最后,确认校准结果符合规定的误差范围,如果超出范围,则需要重新进行校准。
四、注意事项1. 安全第一:在进行校准操作时,要遵守操作规程,确保人员和设备的安全。
2. 精确记录:每一次校准的结果都要准确记录,包括校准参数、校准曲线、误差值等信息。
3. 定期维护:除了定期校准外,还要定期对传感器进行维护保养,延长使用寿命。
4. 备件准备:在校准过程中,如发现传感器损坏或故障,要及时更换备件,确保校准的顺利进行。
5. 周期评估:定期评估传感器的校准情况,检查是否需要调整校准间隔时间或改变校准方法。
五、总结通过正确的操作流程和注意事项,可以保证压力传感器的校准效果和精准度,提高生产过程的稳定性和可靠性。
希望本文能帮助读者更好地了解和掌握压力传感器的校准方法,确保设备的正常运行和产品质量的稳定性。
摘要压力传感器是工业实践中最为常用的一种传感器,其广泛应用于各种工业自控环境,涉及水利水电、铁路交通、智能建筑、生产自控、航空航天、军工、石化、油井、电力、船舶、机床、管道等众多行业,而我们通常使用的压力传感器主要是利用压电效应制造而成的,这样的传感器也称为压电传感器。
压力传感器的原理是将压力信号转变为某种电信号,如应变式,通过弹性元件变形而导致电阻变化;压电式,利用压电效应等。
工业生产控制过程中,压力是一个很重要的参数。
例如,利用测量大气压力来间接测量海拔高度;在工业生产中通过压力参数来判断反应的过程;在气象预测中,测量压力来判断阴雨天气。
因此,压力计的设计拥有广阔的市场前景。
这种压力传感器能比较精确和快速测量,尤能测量动态压力,实现多点巡回检测、信号转换、远距离传输、与计算机相连接、适时处理等,因而得到迅速发展和广泛应用。
本课题就是在这样的背景下设计一个简单的数字压力计,使得测量得到的压力能够数码管显示。
关键字:压力、电信号目录一、设计目的------------------------- 1二、设计任务与要求--------------------- 12.1设计任务------------------------- 12.2设计要求------------------------- 1三、设计步骤及原理分析 ----------------- 13.1设计方法------------------------- 1 3.2设计步骤------------------------- 23.3设计原理分析--------------------- 10四、课程设计小结与体会 ---------------- 11五、参考文献------------------------- 12一、设计目的1. 培养综合运用所学职业基础知识、职业专业知识和职业技能提高解决实际问题的能力从而达到巩固、深化所学的知识与技能;2. 培养建立正确的科学思想培养学生认真负责、实事求是的科学态度和严谨求实作风二、设计任务及要求2.1设计任务1.系统地掌握控制器的开发设计过程相关的电子技术和传感器技术等进行设计任务和功能的描述;2.进行系统设计方案的论证和总体设计;3.从全局考虑完成硬件和软件资源分配和规划分别进行系统的硬件设计和软件设计;4.进行硬件调试软件调试和软硬件的联调2.2设计要求本设计是通过以单片机为主的压力测量系统。
压力传感器工作原理
压力传感器是一种通过测量被测介质(例如气体或液体)对传感器施加的压力来转换为电信号的装置。
压力传感器的工作原理主要基于压阻效应或压敏电阻效应。
压阻效应指的是当外力作用在电阻材料上时,电阻值会发生变化。
而压敏电阻效应则是指当施加压力时,材料的电阻会产生相应的变化。
压阻式压力传感器由一块弹性薄膜和四个电导薄膜组成。
当介质的压力施加到薄膜上时,薄膜会发生微小的形变,进而导致电导薄膜的电阻值发生变化。
通过测量电导薄膜的电阻变化,即可获得压力的测量值。
压敏电阻式压力传感器由压敏电阻和电路组成。
当压力施加到压敏电阻上时,电阻值会随之变化。
通过对电路中的电流或电压进行测量,就可以获得压力传感器的输出。
此外,还有其他不同类型的压力传感器,如压电式、电容式等。
这些传感器的工作原理都是基于材料的压强敏感性来实现压力的测量。
需要注意的是,压力传感器的精度和灵敏度与其内部结构和材料的选择有关。
因此,在选择和应用压力传感器时,需要根据实际需求考虑其技术规格和性能参数。
#include<12c5a60s2.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
#define ADC_POWER 0x80
#define ADC_FLAG 0x10
#define ADC_START 0x08
#define ADC_SPEEDLL 0x00 //540个时钟周期转换一次#define ADC_SPEEDL 0x20 //360个时钟周期转换一次#define ADC_SPEEDH 0x40 //180个时钟周期转换一次#define ADC_SPEEDHH 0x60 //90个时钟周期转换一次sbit lcden=P3^4;
sbit rs=P3^5;
sbit wr=P3^6;
sbit dula=P2^6;
sbit wela=P2^7;
uchar code table[]=" Voltage value";
uchar code table1[]=" mV";
uchar t;
float AD_val;
/**************************
延时函数
**************************/
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
/************************** 写指令
**************************/ void write_com(uchar com) {
rs=0;
wr=0;
P0=com;
lcden=0;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
/************************** 写数据
**************************/
void write_date(uchar date) {
rs=1;
wr=0;
P0=date;
lcden=0;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
/************************** 初始化液晶
**************************/ void lcd_init()
{
uchar i,j;
wela=0;
dula=0;
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
for(i=0;i<14;i++)
{
write_date(table[i]);
delay(10);
}
write_com(0x80+0x40);
for(j=0;j<16;j++)
{
write_date(table1[j]);
delay(10);
}
}
/****************************
分离小数
****************************/ void fenli(uchar add,float num) {
uchar ge,bai,shi,ge1;
num=num*1000;
ge=(uint)num/1000;
bai=(uint)num%1000/100;
shi=(uint)num%100/10;
ge1=(uint)num%10;
write_com(0x80+0x40+add);
write_date(0x30+ge);
write_date(0x20+14);
write_date(0x30+bai);
write_date(0x30+shi);
write_date(0x30+ge1);
}
/*****************************
初始化AD
*****************************/
void AD_init()
{
P1ASF=0x04;
ADC_RES=0;
ADC_RESL=0;
ADC_CONTR|= ADC_POWER|ADC_SPEEDHH; delay(2);
}
/**************************
读AD值
**************************/
uint get_AD(uchar ch)
{
uint AD_date;
ch&=0x07;
ADC_CONTR=ADC_POWER|ADC_START|ADC_SPEEDHH|ch; _nop_();
_nop_();
_nop_();
_nop_();
while(!(ADC_CONTR&ADC_FLAG));
ADC_CONTR&=0x82;
AD_date=ADC_RES*4+(ADC_RESL&0x03);
return AD_date;
}
/**************************
AD_val平均值
**************************/
float AD_work(uchar ch)
{
uchar i;
float AD_val;
for(i=0;i<100;i++)
AD_val+=get_AD(ch);
AD_val/=100;
AD_val=(AD_val*5)/1024; return AD_val;
}
/*************************** 初始化T0定时器
***************************/ void T0_init()
{
TMOD=0x01;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
/***************************
主函数
***************************/ void main()
{
AD_init();
T0_init();
lcd_init();
while(1)
{
AD_val=AD_work(2);
if(t==10)
{
t=0;
fenli(9,AD_val);
}
}
}
/***************************
T0定时器中断
***************************/ void timer0() interrupt 1
{
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
t++;
}。