压力峰值检测.docx
- 文档编号:8768884
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:17
- 大小:333.80KB
压力峰值检测.docx
《压力峰值检测.docx》由会员分享,可在线阅读,更多相关《压力峰值检测.docx(17页珍藏版)》请在冰豆网上搜索。
压力峰值检测
西南科技大学
城市学院
课程设计
设计题目:
压力峰值检测器
系别:
机电工程
专业:
自动化
班级:
1001
姓名:
刘守勋刘科鹏黄雪芝冯浩
指导老师:
陈亮
组长:
黄雪芝
目录
任务与要求.................................................3
设计的初步分析……………………………………….3
设计的系统框图……………………………………….3
运算放大器部分……………………………………….4
A/D转换部分……………………………………………7
单片机部分与数据处理………………………….11
数码管显示部分……………………………………..14
实验心得体会………………………………………….17
压力信号峰值检测器的设计
一·任务与要求
设计一个压力信号峰值检测器,具体要求如下:
1)测量结果用4位数字显示,显示范围为0000—1999Kg。
2)传感器输出在实验室时用0—5mv的信号源模拟传感器。
3)要求检测仪能稳定的保持输入信号的峰值。
设计的初步分析
由于传感器输出电压在0—5mv之间电压很小,所以先用运算放大器将传感器输出电压放大1000倍,放大后电压范围变为0—5v,然后通过A/D转换,将模拟信号转换为数字信号,数字信号通过单片机进行处理,单片机通过逐次比较检测出峰值及最大值并显示在四位数码管上。
设计的系统框图
A/D转换
数码管显示
单片机数据处理
运算放大器
压力传感器
运算放大器部分
差分放大器属于一种特殊的仪表放大器,通常被设计用于需要较大的直流或交流共模干扰的场所。
这其中包括通用的电流检测应用,如电机控制、电池充电和电源转换;另包括大量高共模电平的汽车电流检测应用,如电池电平监测、传动控制、燃油喷射控制、发动机管理、悬挂控制、电控转向、电控刹车、以及混合动力驱动和混合动力电池控制。
因这此控制大多通过放大负载电路上分流电阻两端的电压差以获取电流,所以也常被称作电流分流放大器。
集成运算放大器的原理
由运放构成的高阻抗差分放大电路
图为高输入阻抗差分放大器,应用十分广泛.从仪器测量放大器,到特种测量放大器,几乎都能见到其踪迹。
从图中可以看到A1、A2两个同相运放电路构成输入级,在与差分放大器A3串联组成三运放差分防大电路。
电路中有关电阻保持严格对称,具有以下几个优点:
(1)A1和A2提高了差模信号与共模信号之比,即提高了信噪比;
(2)在保证有关电阻严格对称的条件下,各电阻阻值的误差对该电路的共模抑制比KCMRR没有影响;
(3)电路对共模信号几乎没有放大作用,共模电压增益接近零。
因为电路中R1=R2、R3=R4、R5=R6,故可导出两级差模总增益为:
通常,第一级增益要尽量高,第二级增益一般为1~2倍,这里第一级选择100倍,第二级为10倍。
则取R3=R4=R5=R6=10KΩ,要求匹配性好,一般用金属膜精密电阻,阻值可在10KΩ~几百KΩ间选择。
则
Avd=(RP+2R1)/RP
先定RP,通常在1KΩ~10KΩ内,这里取RP=1KΩ,则可由上式求得R1=99RP/2=49.5KΩ
取标称值51KΩ。
通常RS1和RS2不要超过RP/2,这里选RS1=RS2=510,用于保护运放输入级。
A1和A2应选用低温飘、高KCMRR的运放,性能一致性要好。
集成运算放大器的
整体仿真效果图:
A/D转换部分
ADC0832为8位分辨率A/D转换芯片,其最高分辨可达256级,可以适应一般的模拟量转换要求。
其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在0~5V之间。
芯片转换时间仅为32μS,据有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。
独立的芯片使能输入,使多器件挂接和处理器控制变的更加方便。
通过DI数据输入端,可以轻易的实现通道功能的选择。
单片机对ADC0832的控制原理
正常情况下ADC0832与单片机的接口应为4条数据线,分别是CS、CLK、DO、DI。
但由于DO端与DI端在通信时并未同时有效并与单片机的接口是双向的,所以电路设计时可以将DO和DI并联在一根数据线上使用。
当ADC0832未工作时其CS输入端应为高电平,此时芯片禁用,CLK和DO/DI的电平可任意。
当要进行A/D转换时,须先将CS使能端置于低电平并且保持低电平直到转换完全结束。
此时芯片开始转换工作,同时由处理器向芯片时钟输入端CLK输入时钟脉冲,DO/DI端则使用DI端输入通道功能选择的数据信号。
在第1个时钟脉冲的下沉之前DI端必须是高电平,表示启始信号。
在第2、3个脉冲下沉之前DI端应输入2位数据用于选择通道功能,其功能项见官方资料。
如资料所示,当此2位数据为“1”、“0”时,只对CH0进行单通道转换。
当2位数据为“1”、“1”时,只对CH1进行单通道转换。
当2位数据为“0”、“0”时,将CH0作为正输入端IN+,CH1作为负输入端IN-进行输入。
当2位数据为“0”、“1”时,将CH0作为负输入端IN-,CH1作为正输入端IN+进行
输入。
到第3个脉冲的下沉之后DI端的输入电平就失去输入作用,此后DO/DI端则开始利用数据输出DO进行转换数据的读取。
从第4个脉冲下沉开始由DO端输出转换数据最高位DATA7,随后每一个脉冲下沉DO端输出下一位数据。
直到第11个脉冲时发出最低位数据DATA0,一个字节的数据输出
DC0832封装以及各端子
完成。
也正是从此位开始输出下一个相反字节的数据,即从第11个字节的下沉输出DATA0。
随后输出8位数据,到第19个脉冲时数据输出完成,也标志着一次A/D转换的结束。
最后将CS置高电平禁用芯片,直接将转换后的数据进行处理就可以了。
作为单通道模拟信号输入时ADC0832的输入电压是0~5V且8位分辨率时的电压精度为19.53mV。
如果作为由IN+与IN-输入的输入时,可是将电压值设定在某一个较大范围之内,从而提高转换的宽度。
但值得注意的是,在进行IN+与IN-的输入时,如果IN-的电压大于IN+的电压则转换后的数据结果始终为00H。
A/D转换的程序设计:
ucharADC0832(void)//AD转换,返回结果
{
uchari=0;
ucharj;
uintdat=0;
ucharndat=0;
ADDI=1;
_nop_();
_nop_();
ADCS=0;//拉低CS端
_nop_();
_nop_();
ADCLK=1;//拉高CLK端
_nop_();
_nop_();
ADCLK=0;//拉低CLK端,形成下降沿1
_nop_();
_nop_();
ADCLK=1;//拉高CLK端
_nop_();
_nop_();
ADCLK=0;//拉低CLK端,形成下降沿2
_nop_();
_nop_();
ADCLK=1;//拉高CLK端
ADDI=1;
_nop_();
_nop_();
ADCLK=0;//拉低CLK端,形成下降沿3
_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;//拉低CS端
ADCLK=0;//拉低CLK端
ADDO=1;//拉高数据端,回到初始状态
dat<<=8;
dat|=ndat;
return(dat);
}
单片机部分与数据处理
单片机选用ATC89C51
AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4kBytes ISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,AT89S51在众多嵌入式控制应用系统中得到广泛应用。
单片机程序
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitADCS=P2^4;
sbitADDI=P2^6;
sbitADDO=P2^7;
sbitADCLK=P2^5;
sbitS1=P2^0;
sbitS2=P2^1;
sbitS3=P2^2;
sbitS4=P2^3;
ucharcodeseg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};//显示0-9段码
voiddelay(unsignedchart)
{
ucharj,i;
for(i=0;i for(j=0;j<20;j++); } voidmain(void) { uinta=0,b=0; doublec; shuma(a); while (1) { a=ADC0832(); c=a*2000.0/255; a=c; if(a>=b) {shuma(a); b=a; } elseshuma(b); } } 整体仿真效果图: 数码管显示部分 显示原理: 数码管首先从上到右,到下到左,到中间,最后到小数点分别标记为abcdefgdp八段其中小数点位DP为最高位,a段为最低位,要想显示什么字符只需要使对应的段发光即可,一般的习惯是单片机的端口的最低位接a段,次低位接b段,...最高位(如p0.7)接dp,显示码从高往低表示为为dpgfedcba 如要显示“1”,只需要将b、c段点亮即可,若是共阴极,片选是低电平选中,某一段输出高电平点亮,即显示码为00000110即0x06,其他的依照该方法类推 单片机的电流很小,所以加上拉电阻,提供驱动电流,电阻大小为1k。 数码管选用共阳数码管,0到9的编码为: 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90 数码管的示意图如下图所示 仿真图如下: 数码管显示程序 /*******************数码管显示函数*****************/ ucharcodeseg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};//显示0-9段码 voidshuma(uinta) { uintqian,bai,shi,ge,i; qian=a/1000;//千位 bai=a%1000/100;//百位 shi=a%1000%100/10;//十位 ge=a%1000%100%10;//个位 if(qian==0)//屏蔽最高位为“0”的情况 { qian=10; if(bai==0) { bai=10; if(shi==0) shi=10; } } S1=0;S2=0;S3=0;S4=0; for(i=0;i<10;i++) { S1=1; P0=seg[qian]; delay(20); P0=0xff; S1=0; S2=1; P0=seg[bai]; delay(20); P0=0xff; S2=0; S3=1; P0=seg[shi]; delay(20); P0=0xff; S3=0; S4=1; P0=seg[ge]; delay(20); P0=0xff; S4=0; } 整体仿真效果图: 压力峰值检测器实验心得体会 这次我们小组做的压力峰值检测器实验,我们实验的实验思路是: 测量结果是用4位数字显示,显示范围是在0000—1999Kg之内,而要求是传感器输出,在实验室时用0—5mv的信号源模拟传感器,但是传感器输出电压在0—5mv之间电压很小,所以需要对其进行放大,放大一千倍后,传感器输出电压为0—5v,然后再通过模数转换,将模拟信号转换成数字信号,再通过单片机的处理,比较,输出最大的压力值。 这次实验,我们运用了以前所学的模拟电子技术和数字电子技术,同时结合单片机来完成的,这次实验中,我们小组四个人每个人负责不同的版块共同来完成这个实验: 冯浩负责单片机部分,刘科鹏负责数码管显示部分,刘守勋负责放大器部分,而我负责模数转换部分,每个人负责把自己的那部分做好后,再合在一起来调试,通过不断的调整,修改,我们才完成了这个实验。 在做实验前,一定要将课本上的知识吃透,因为这是做实验的基础,否则你做实验的难度就会加大,也会浪费做实验的时间,比如做做我们这个实验时模数转换部分时,你得了解该用什么芯片和这个芯片的功能,在做放大器这部分时,得了解以前老师所讲和课本上的放大器部分的知识后才能知道怎么运用,还有就是做实验时一定要亲力亲为,务必将每个步骤,每个细节弄清楚,龙明白,实验后,还要复习,思考,这样你的印象才深刻,记得才牢固。 通过这次实验,我们更加了解到了专业基础知识对于我们的重要性,也更加知道一个团队合作精神的重要性,在实验过程中我受益匪浅,它让我深刻体会到实验前的理论知识准备,每一个实验不是一开始都是成功的,总要通过不停地修改,调整才会呈现出一个成功的实验,在这次试验中,我们付出了很多,但学到的更多。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 压力 峰值 检测