关 闭

新闻中心

EEPW首页>工控自动化>设计应用> 数字传感器MPXY8020A与MSP430的接口设计

数字传感器MPXY8020A与MSP430的接口设计

作者: 时间:2011-04-09 来源:网络 收藏

uchar i;
P3DIR |=mpxy8020_clk+mpxy8020_dat;
//CLK和DAT引脚为输出
Delay650us();
P30UT&=~mpxy8020_clk; //CLK引脚清0
for(i=0;i8;i++){
if((_dataBIT7)=BIT7)f
//高位在前
P3OUT |=mpxy8020_dat; //OUT引脚置1
else{
P3OUT = ~mpxy8020_dat //OUT引脚清0
}
P3OUT |=mpxy8020_clk; //CLK引脚置1
Dday20us(1);
P30UT&=~mpxy8020_clk; //CLK引脚清0
Delay20us(1)。
_data=_data1;
//左移1位
}

4. 2. 2温度和气压数据的读取

获取MPXY8020A气压和温度数据的方法有逐次逼近法和报警值检查法。逐次逼近法能够获得8位精度的转换结果,但需要较长的转换时间和消耗较多的电能。报警值检查法是预先设置一个气压或温度的报警值,然后监测OUT引脚的电平来确定气压和温度值是否超过报警值。这是一种低功耗模式,在不需要知道准确的气压/温度值时,可采用这种工作方式。本系统中采用的是逐次逼近法。

MPXYS020A利用外部的F1232作为逐次逼近程序的控制器,F1232将猜测的极限值通过SPI串行地发送到的DAR(数/模转换寄存器)。器件内DAR将此猜测值变为模拟值,并与待测的气压值比较,通过OUT引脚给出比较后的结果。每次比较需用64个时钟周期。例如:第1次猜测值为0x80,如果检测OUT脚为高电平,则说明气压值大于0x80,F1232通过SPI再送人0xC0,检测OUT引脚的状态,如果这次OUT引脚是低电平,说明气压在0x80和0xC0之间,重复这样的过程,直到逼近近似值。整个过程类似对分搜索,首先,取全量程值的一半作为第1个猜测值,并送人数/模转换寄存器,然后监测传感器OUT引脚的输出状态。若OUT引脚的输出为“低”,说明猜测值太大或者和取样值接近;若OUT引脚的输出保持“高”,则说明猜测值太小。转换结果寄存器作为一个变量由MSP430F135实时修改。如果猜测值太小,结果寄存器的最低位置“1”;如果猜测值太大,结果寄存器的最低位置“0”,使用新的猜测值继续逼近,直到得到最终结果。

用逐次逼近的方法读取MPXY8020A温度数据的程序代码如下:
void MPXY8020A_temperature_sample(void){
uchar MPXY8020A_temp=0;
P3D1R=~mpxy8020_ut; //INPUT
MPXY8020A_temp=BIT7;//N始值为128,即位7=1
MPXY8020A_standby_state(); //待机模式
MPXY8020A__sendByte(MPXY8020A_Xemp);
//发送极限值
MPXYS020A_temperature_state(); //测量温度模式
MPXY8020A_output_state(); //读数据模式
if((P31N&mpxy8020_out)==mpxy8020_out){
//比较OUT引脚是否为1
MPXYS020A_temp |=BIT6; //位6=1
}
else{
MPXY8020A_temp=~B1T7;//位7=0
MPXY8020A_temp |=BIT6; //位6=1
://省略部分为从位6到位1的重复逼近的程序,其c
//代码与位7的相似
MPXY8020A_standby_state(); //待机模式
MPXY8020A_sendByte(MPXY8020A_temp);
//发送极限值
MPXY8020A_temperature_state(); //测量温度模式
MPXY8020A_output_state(); //读数据模式
if((P3IN&mpxy8020_out)==mpxy8020_out)
//比较OUT引脚是否为1
{}
else{
MPXY8020A_temp=~BITO;//位0=0
}
temperature=MPXY8020A_temp;
//用全局变量储存采样值

读取MPXY8020A气压数据的函数代码与读取温度的函数相似。限于篇幅,本文不再细述。

4.2.3温度和气压数据的转换

(1)温度数据的转换
根据表3,可以把温度采样值转换为实际温度值。实际温度值的单位为℃。众所周知,单片机对浮点数的处理能力不强,因此,为了便于单片机进行运算和保留更高的准确度,对转换后的实际温度值放大了100倍。例如,1501对应于15.01℃。

当采样温度值小于-40℃对应的值时,按0.8℃/位的变化率进行计算。温度采样值小于25℃对应的采样值时,以上限为基准进行计算,因为其上限出现的机率更大,这样得出的结果误差会小些;当采样温度值大于25℃对应的采样值时,以下限为基准进行计算,因为下限出现的机率更大。比如,采样值介于25℃对应的采样值和70℃对应的采样值之间,则以25℃为基准。

本文引用地址://m.amcfsurvey.com/article/162197.htm


(2)气压数据的转换
MPXY8020A测量的气压范围约为0~600 kPa,测得的值与气压之间的转换关系由下式给出:P=2.5×Output±气压误差式中,Output为测量得到的值(在0~255之间),气压误差由MPXY8020A的数据手册给出(将在下一节中讨论);P为转换后的气压值,单位为kPa。

4.2.4气压数据的误差处理

MPXY8020A所测得的气压是存在误差的,并且,在不同的温度区间、不同的工作电压、不同的气压的情况下,其误差也不一样。MPXY8020A的气压误差由其数据手册给出,表4列出其在250 kPa~450 kPa气压区间下的误差值。

由表4可以看出,阴影部分的误差较小。当电压低于2.5 V或者温度过低或者温度过高的情况下,所测得的温差比较大。为了减小测量误差,MPXY8020A应工作于2.5~3.3 V的电压区间。

由于各个传感器的误差不尽相同,因此,可以通过实际测量得出其具体的气压误差,然后再在程序中加上或者减去这个误差值,这样所得出的气压值就更加接近真实值。此外,也可以通过分段多次测量的方法,得到更好的测量结果。


结 论
MPXY8020A为式气压和温度传感器,体积小、简单、工作稳定可靠、功耗小;适用于对体积要求比较高的气压和温度测量系统,尤其适用于无线汽车轮胎气压监测系统。本已应用于某无线汽车轮胎气压监测系统中,经实践证明使用效果良好。

分频器相关文章:分频器原理

上一页 1 2 下一页

评论


相关推荐

技术专区

关闭