自动压力检测系统设计-山东大学.doc_第1页
自动压力检测系统设计-山东大学.doc_第2页
自动压力检测系统设计-山东大学.doc_第3页
自动压力检测系统设计-山东大学.doc_第4页
自动压力检测系统设计-山东大学.doc_第5页
免费预览已结束,剩余20页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

自动检测技术课程设计题 目 自动压力检测系统设计姓 名 宋伟 学 号 20071701156 专 业 测控技术与仪器 年 级 2007级 指导教师 朱洁 23第一章 设计背景随着科学技术的不断发展,人类社会已步入信息时代,信息成为当今社会生活中重要的资源。检测技术已经成为现代工业生产中的主流环节。尤其以常见的力、温度信号的检测为主。而基本的检测电路与大学期间数字电子技术及模拟电子技术课程息息相关,所以本论文也可以用来作为检测与转换技术课程的课程设计。1.1 传感器简介传感器是一种以一定精确度把被测量(主要是非电量)转换为与之有确定关系,便于应用的某种物理量(主要是电量)的测量装置。也就是说,传感器是一个测量装置,能完成检测任务,还要注意的是输入量与输出量之间有对应关系,且有一定的精确度。被测量敏感元件转换元件转换电 路电量图 1.1 传感器组成框图传感器一般由敏感元件、转换元件、转换电路3部分组成,组成框图如图1.1所示。敏感元件:直接感受被测量,并输出与被测量成确定关系的某一物理量;转换元件:敏感元件的输出就是它的输入,它把输入转换成电路参数;转换电路:将上述电路参数接入转换电路。便可转成电量输出。本系统采用26PCAFA6D型压力传感器,其工作原理是:压力传感器是由四片性能完全相同的压阻式应变片组成的全桥差动电路,通过压阻效应实现压力到电阻的转换,再由电桥将电阻的变化转换为电压。当不受力作用时,电桥处于平衡状态,无电压输出;当受到压力作用时,电桥失去平衡而输出电压,且输出的电压与压力成比例。1.2 MSP430F149系列单片机简介一、选用16 位超低功耗单片机MSP430F149,采用子母双板分离设计,MCU 子板与集成外设母板通过插针座相连。使用灵活方便。二、母板功能强大、板载资源丰富:采用5V 供电;JTAG 仿真调试端口;蜂鸣器;nrf905(PTR8000+)433MHz 无线通信模块接口;12-Bit 高精度温度传感器DS18B20;8 路12-Bit 模数转换器(ADC)接口;标准的1602 液晶接口;标准的12864 液晶接口;八位共阳极动态扫描数码管电路;可更换的CPU 适配器;RTC 实时时钟;44 的矩阵式键盘;41 的独立式按键(与44 的矩阵式键盘复用);标准的RS232 接口;标准的RS485 接口,工业上最常用的接口;含8 个LED 的流水灯电路;MCU 的全部IO 都用插针引出,便于二次开发。1.3 自动压力检测系统简介该系统利用26PCAFA6D型压力传感器实现对压力信号的采集。通过电桥电路,差模放大电路放大后输出一个模拟电压信号。将该压力信号通过MSP430单片机的P6.0口采入单片机,并经过内部A/D转换,变为数字信号。由于26PCAFA6D型压力传感器在06kpa范围内的输入输出为线性关系,所以将A/D转换之后的数字信号通过标度变为压力信号,在MSP430板载的LED七段译码管上显示出来。第二章 自动压力检测系统的硬件设计该系统硬件电路主要包括传感器元件,运算放大电路,A/D转换电路,单片机,七段译码管显示等。硬件电路最终需要实现的功能是:传感器输出的模拟信号经过稳压放大电路进入A/D转换器,经过A/D转换输出数字信号到单片机中,在单片机中进行一系列运算,最后输出显示在七段译码管上。框图如图3.1所示:传感器放大电路模数转化电路单片机译码管显示图3.1 总体框图由于传感器输出的信号较弱,必须先经过放大,然后才能进行A/D转换,必须注意放大后的信号不能超过A/D转换器所允许的最大输入电压,本系统中用的MSP430允许输入的电压上限为3.3V。在本次系统设计中,我们用到的最高电源电压为3.3V,所以经过放大后的输出电压不能超过3.3V,若是输出电压超过3.3V以后则将会出现报警。硬件电路如图3.2所示图3.2 硬件电路图山东大学本科论文第三章 自动压力检测系统的软件设计本论文设计的自动压力检测系统的软件部分,主要使用C语言为编译语言,原因是C语言既有高级语言特点,又具有汇编语言特点。它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。因此,它的应用广泛,不仅仅是在软件开发上,而且各类科研都需要用到C语言。经过分析,本程序需要实现以下功能:采入模拟电压值,A/D转换,数字量输出,数据处理,七段译码管显示,过压报警等。下面先介绍程序的调试环境。4.1 MSP430编译环境IAR EW for MSP430本系统使用的编译环境为IAR EW for MSP430,这款编译软件是目前使用比较广泛的MSP430编译调试软件,它集编译,软件硬件调试,下载程序为一体,使用方便快捷。由于常用IAR EW for MSP430均为人工破解软件,所以要正常安装并使用需要注册机的破译序列号。下面是该软件的安装流程: 1、双击名为keygen的图标,出现注册机的画面,在Product选项的下拉菜单里选择Electronic Workbench for MSP 430 V3.42A。2、查看Hardware ID下面文本框中的字符,将0x以后的字符中的小写字母全部改为大写;具体的操作方法是:直接选中某个小写字母,然后从键盘输入大写字母即可;更改完毕以后,用鼠标选中文本栏内的所有字符就能看到原来的小写字母是否已经被改为大写了。例如,在本人电脑的中操作流程如下面四图所示。打开软件以后看到的Hardware ID,见图4.1图4.1选中小写字母d以后,见图4.2:图4.2直接从键盘输入大写字母D,见图4.3;此时整个文本框内的字符会变得模糊不清,这是正常现象,不要担心。图4.3再次选择整个文本框中的内容,见图4.4;可以看到上图中模糊的字符又变清晰了,同时注意到原来的d已经被更改为D。图4.4这时,单击左下角的Generate图标就可以得到需要的序列号了。3、双击名为EW430-ev-web-342A的图标,等待解压缩完毕后出现安装画面,单击Next后看到关于License的说明再单击accept就可以看到如图4.5所示的画面。图4.54、用户可以随意更改Name和Company中的内容;然后选择已经打开的注册机,将License number+key下文本框中的数字复制出来,粘贴到图1.5的License下面的文本框中,可以看到原来灰色的Next按钮变成了黑色,单击Next进入下一页,看到图4.6。图4.65、再次回到已经打开的注册机,将最后一栏文本框中的全部数字复制出来,粘贴到License Key下面的文本框中,单击Next,看到图4.7。图4.76、单击Browse可以更改安装目录;然后单击Next继续。7、最后等待安装完成,单击Finish就大功告成了。8、安装以后,您的桌面上会出现这样的图标,双击即可打开这个软件了。4.2 程序的初始化对一些参数进行宏定义,调用一些库函数,对系统进行初始化,设置各项参数,主要是启动单片机。程序如下所示:#include msp430x14x.h /声明库void Init(void); /声明初始化函数#pragma vector=ADC_VECTOR_interrupt void ADC12(void); /声明AD转换中断函数unsigned char seg_710=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x98;unsigned char seg_810=0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x18;unsigned int Result; /声明变量unsigned int Table410 = 0x040 , 0x0bc , 0x138 , 0x1b4 , 0x230 , 0x2ac , 0x328 , 0x3a4 , 0x420 ,0x49c , 0x518 , 0x594 , 0x610 , 0x68c , 0x708 , 0x784 , 0x800 , 0x87c , 0x8f8 , 0x974 , 0x9f0 , 0xa6c , 0xae8 , 0xb64 , 0xbe0 , 0xc5c , 0xc08 , 0xd54 , 0xdd0 , 0xe4c , 0xec8 , 0xf44 , 0xfc0 , 0xff0 ;其中seg_7和seg_8数组分别定义了无小数点显示的数码管七段字型码数组和有小数点显示的数码管七段字型码数组;Table数组定义了一个二维数组,它的作用主要是与A/D的转换结果比较,从而得到被采入的模拟电压值。程序流程图如图4.8所示:开始初始化设置参数结束图4.8 程序初始化流程图4.3 延时子程序 利用for循环,定义变量x,x自0累计到500,循环结束。延时程序主要在七段译码管显示时提供短暂延时,从而造成视觉暂留,给人连续显示的效果。程序如下所示:delay() /延时函数int x;for(x=0;x=500;x+)程序流程图如图4.9所示:开始设定xx循环计数x=500结束是否图4.9 延时程序流程图4.4 过压报警程序本程序实现了当传感器端压强值过大时,进行报警。设置自变量cnt初始值为10,在压强值过大时,8个LED灯闪烁10次,当cnt计数变为0时,闪烁结束。再次使能转换重新采模拟信号。程序如下所示:void yyy() /过压报警 int cnt; for(cnt=10;cnt-;cnt=0) P1OUT = 0xff; delay(); P1OUT = 0xff; ADC12CTL0 |= ENC+ADC12SC; /使能再次转换 程序流程图如图4.10所示:开始定义cntcnt从10递减LED闪烁cnt=0?使能转换结束是否图4.10 过压报警程序流程图4.5 显示函数本系统的显示部分为8个七段译码管,其中P4OUT的值为位选信号,它决定选择8个译码管中的那几个亮。根据系统要求,我们选择的是开发板上的右边4个译码管,也就是对应电路里P4口的高4位。P5OUT的值为段选信号,它控制每个译码管显示的数字,想显示哪个数字就调用4.2节中的seg_7和seg_8两个数组就可以完成了。程序如下所示:void xianshi(int q1,int q2,int q3,int q4) /显示气压值函数P4OUT = 0xef;P5OUT = seg_8q1;delay();P4OUT = 0xdf;P5OUT = seg_7q2;delay();P4OUT = 0xbf;P5OUT = seg_7q3;delay();P4OUT = 0x7f;P5OUT = seg_7q4;delay();程序流程图如图4.11所示:开始P4位选P5段选延时程序结束图4.11 显示程序流程图4.6 程序主函数程序主函数功能主要实现:设置P4、P5口的方向为输出,调用初始化函数,使能中断。ADC12CTL0 |= ENC+ADC12SC设置转换控制寄存器ADC12CTL0,ENC=0x002使转换允许位为1,意味着可以启动转换,同时ADC12TL0中的低电平位可以被修改。ADC12SC=0x001使采样/转换控制位为1,如果采样信号SAMPCON由采样定时器产生(SHP=1),则ASC12SC=1将产生一次转换。最后由while(1);构成一个无限循环。程序如下所示:void main(void) /主函数 P4DIR |= 0XFF; /P4口设置为输出 P5DIR |= 0XFF; /P5口设置为输出 P4OUT = 0x0f; P5OUT = 0xff; Init(); /调用初始化函数 _EINT(); /使能中断 ADC12CTL0 |= ENC+ADC12SC;while (1); /无限次的while循环程序流程图如图4.12所示:开始设置端口方向调用函数使能中断无限循环结束图4.12 主函数程序流程图4.7 初始化函数初始化函数主要功能为:设置P6口的P6.0引脚为外围模块AD转换器的模拟信号输入引脚,并复位转换允许位;打开并设置ADC12,设置转换控制寄存器ADC12CTL0,ADC12ON=0x010,使ADC12内核工作SHT0_2=2*0x100,确定采样周期为4tADC12CLK4 REFON=0x020,内部参考电压打开。REF2_5V=0x040,选择内部参考电压发生器的电压为2.5V;设置AD转换控制寄存器ADC12CTL1,SHP=0x0200 设置SAMPON来自采样定时器,采样信号上升沿触发采样,CONSEQ_2=2*2 设置工作模式为单通道、多次转换模式;设置通道0的转换存储控制寄存器ADC12MCTL0,SREF_0=0*0x10 选择参考电压为VR+=AVCC,VR-=AVSS ,因此输入模拟信号范围是3.3V0V;设置中断允许寄存器ADC12IE,将第0位置1,使通道A0转换后产生中断。void Init(void) /初始化函数WDTCTL = WDTPW+WDTHOLD; /关看门狗P6SEL |= 0x01;ADC12CTL0 &= ENC;ADC12CTL0 = ADC12ON + SHT0_2 + REFON + REF2_5V;ADC12CTL1 = SHP + CONSEQ_2 ;ADC12MCTL0 = SREF_0;ADC12IE |= BIT0;程序流程图如图4.13所示:开始关看门狗设置采样通道初始化结束图4.13 初始化函数流程图4.8 A/D转换中断函数在这个A/D转换中断函数中,主要实现下面的功能:设置AD转换控制寄存器ADC12CTL0,ENC=0x002,ENC=0xFFD,停止AD转换;利用for循环嵌套,来扫描Table数组的行下标和列下标。这样做的目的我来解释下,因为输入管脚最高电压限制在3.3V,所以,以精确到0.1V来显示的话,只需要将12位A/D的转换结果0x0000xFFF平均分为33个部分,如果Table数组元素大于A/D转换的数值,则把行下标和列下标送入xxx,此行下标和列下标分别为模拟输入电压的整数和小数部分。xxx的功能是实现电压值和气压值的转换。本系统所用的26PCAFA6D压力传感器经过标定,所得电压和气压关系为线性,线性函数为:y=1.58x-0.103,其中,x为电压值,y为气压值。这样把所得的y值扩大1000倍,得到四位整数,分别将每个位取出来送入显示函数xianshi()即可。具体程序如下所示:#pragma vector=ADC_VECTOR_interrupt void ADC12 (void) /AD转换中断函数unsigned i,j; /声明变量数据类型ADC12CTL0 &= ENC;for ( i=0 ; i4 ;i+) /扫描Table 数组行下标 for (j=0; j10; j+) /扫描Table 数组列下标 if (ADC12MEM00xFF0) yyy(); /否则,转yyy(); xxx: float a,b,c; int kpa,m,n,k,l; b=j; c=i; a=b/10+c; kpa=1000*(1.58*a-0.103); m=kpa/1000; n=(kpa-m*1000)/100; k=(kpa-m*1000-n*100)/10; l=(kpa-m*1000-n*100-k*10)%10; xianshi(m,n,k,l);ADC12CTL0 |= ENC+ADC12SC; /使能再次转换系统流程图如图4.14所示:开始设置循环变量停止A/D转换扫描行下标,列下标ADC12MEM00xFF0?转xxx()使能转换是否是否图4.14 A/D转换中断函数流程图第四章 系统的标定和误差分析5.1 传感器的标定任何一种新研制或生产的传感器均需对其技术性能进行全面的检定,以确定传感器的实际性能,经过一段时间储存或使用的传感器也需对其性能进行复测。利用标准设备产生已知的非电量(标准量),可用基准量来确定传感器电输出量与非电量输入量之间关系的过程称为标定。本系统的标定过程是在室温常压下进行的。利用实验室提供的压力信号设备连接到硬件电路的传感器上,逐渐增加气压信号,记录经过放大电路后的电压值。所的结果如下:气压0.0000.2500.5000.7501.0001.2501.5001.750电压0.000.220.380.540.700.861.011.18气压2.0002.2502.5002.7503.0003.2503.5003.750电压1.341.491.661.781.932.092.252.41气压4.0004.2504.5004.7505.0005.2505.500电压2.562.722.883.033.183.343.505.2 误差分析误差是指,用测量器具进行测量时,所测量出来的数值与被测量的实际值(或真值)之间的差值。检测与转换技术课程综合应用系统的误差主要是系统误差,包括模拟电路误差、采样误差和转换误差等方面。其中标度变换过程和程序编写过程都对转换公式有所简化,所以转换误差是误差的主要部分。本系统的误差一部分来自硬件电路中引入的干扰信号,主要部分来自于标度变换和算法的采用上。由于本系统要求测量显示0kpa到5kpa范围内的气压信号,而单片机引脚要求最高输入电压不能超过3.3V,所以将A/D转换的12位0x000到0xfff平均分为33个部分,从而构造了一个二维数组Table,并设定Table的行下标为模拟输入的整数部分,列下标为小数部分。这样做虽然有些繁琐,但是可以有效地加入过压报警程序模块。本系统设计为用4个数码管显示气压值,一位整数,三位小数,单位为kpa。如果要求显示单位为pa,并显示小数点后三位的话,此算法不再适用。根据计算和实际对比,本系统的误差符合设计要求。第五章 结论自动压力检测系统是为了满足数字电子技术和模拟电子技术课程新的教学要求,适应新的教学计划,培养学生分析问题和解决问题的能力而设计的一套实验演示系统。系统能够完成温度、压力等物理量的测量,而且具有一定的精度。在设计过程中,我们选用的接线方式使整个电路清晰明了的呈现,让学生即使没有电路图也可以知道线路的走向,配合电路图后可以加深理解,避免了以往线路隐藏于面板之下,学生只知按要求插线而不知线路走向的情形;软件程序也基本采用顺序结构编写,便于理解和把握。当然,自动压力检测系统是一个很大的综合系统,我们在这里只是完成一小部分工作,还需要进一步完善。为完成本次毕业设计,我查阅了大量的资料,重新学习了大学期间的相关知识,在程序编写调试过程中,我对C语言编程有了更深的体会,对自己的程序编写能力有不小的帮助。在这期间,我也遇到了很多困难,但是通过查阅资料,请教老师,小组合作等,都得到了最终解决,在整个过程中我受益匪浅。附录(A)程序总流程图开始初始化启动A/D转换读取数字量标度变换输出实际值译码管显示结束附录(B)总程序#include msp430x14x.h /声明库void Init(void); /声明初始化函数#pragma vector=ADC_VECTOR_interrupt void ADC12(void); /声明AD转换中断函数unsigned char seg_710=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x98;unsigned char seg_810=0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x18;unsigned int Result; /声明变量unsigned int Table410 = 0x040 , 0x0bc , 0x138 , 0x1b4 , 0x230 , 0x2ac , 0x328 , 0x3a4 , 0x420 ,0x49c , 0x518 , 0x594 , 0x610 , 0x68c , 0x708 , 0x784 , 0x800 , 0x87c , 0x8f8 , 0x974 , 0x9f0 , 0xa6c , 0xae8 , 0xb64 , 0xbe0 , 0xc5c , 0xc08 , 0xd54 , 0xdd0 , 0xe4c , 0xec8 , 0xf44 , 0xfc0 , 0xff0 ;delay() /延时函数int x;for(x=0;x=500;x+)void yyy() /过压报警 int cnt; for(cnt=10;cnt-;cnt=0) P1OUT = 0xff; delay(); P1OUT = 0xff; ADC12CTL0 |= ENC+ADC12SC; /使能再次转换 void xianshi(int q1,int q2,int q3,in

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论