访问手机版页面
你的位置:老古开发网 > MSP430单片机与传感器 > 正文  
数字传感器MPXY8020A与MSP430的接口设计
内容导读:

1 概述

mpxy8020a是摩托罗拉公司于2003年推出的汽车轮胎气压监测传感器。其内部集成了气压传感器、温度传感器和数字接口电路,8引脚ssop封装;能承受的最大气压为1400mpa。mpxy8020a的功耗比较低,特别适用于轮胎气压和温度监测系统,能和摩托罗拉的无线遥控开锁系统集成在一起,组成低成本,高集成度的系统。此外,mpxy8020a还可应用于其他气压和温度监测系统中。

2 片内结构

mpxy8020a的功能结构如图1所示。气压信号的采样由电容式传感器完成,温度信号的采样由薄膜电阻完成,此外,片内集成了数字接口电路。整个传感器采用硅cmos工艺加工而成[1]。

气压信号的采样分两步完成:首先是把采样电容上的信号转换为电压信号,然后用开关式电容放大器对信号进行放大,以提高采样的准确度。电容放大器带有温度补偿电路,采样偏移量可调,并且可以通过在eeprom寄存器中写入校正值进行采样信号的校正。气压信号值的大小通过电压比较器确定。在气压转换前,外部微控制器通过mpxy8020a的数字接口输入8位极限值。片内8位dac(数模转换器)把该值转换成相应的模拟电压,电压比较器把采样的电压值与该值进行比较,在out引脚输出比较后的结果。当采样值高于输入值时,out引脚为高电平,反之,为低电平,温度信号的采样由带有正温度系数的薄膜电阻完成。由图1可见,通过2路开关,可选择传感器工作于气压采样状态或温度采样状态,温度信号的采样过程与气压信号的采样过程相似。

mpxy8020a内,集成了1个低频率、低功率的5.4khz晶体振荡器,1个14级的分频器。通过14级分频,可在out引脚得到周期性(一般3s)的输出信号。该信号还可以用作微控制器的中断源。此外,mpxy8020a片内还集成了一个10级的分频器,通过该分频器,传感器可每隔52min使外部微控制器复位1次,以防程序长时间跑飞。为了节能,可通过mpxy8020a的引脚,控制其工作于不同的工作状态。

3 引脚功能及工作方式

3.1 引脚功能

mpxy8020a的各个引脚如表1所列。mpxy8020a的片内电路通过引脚vdd(正电平)和引脚vss(地)供电。在vdd与vss之间,通常接一个0.1μf的电容进行电源滤波。out引脚在采样值高于电压比较器的极限值时,输出1;反之输出0。电压比较器的极限值由外部微控制器通过数字接口输入到mpxy8020a片内的8位dac寄存器。当mpxy8020a工作于空闲状态时,out引脚被置高,直到14级分频器发生溢出时,该引脚输出一个负脉冲。rst引脚通常被置为高电平;当10级分频器发生溢出时,被置为低电平,这个引脚通常用于使外部微控制器复位。10级分频器的溢出周期为52min,这跟mpxy8020a的工作状态无关。s0和s1引脚一起,用于工作方式选择。在设置电压比较器的极限值时,data引脚为串行数据输入引脚。clk引脚用于提供串行读写数据的时钟。向mpxy8020a写数据时,在clk引脚信号的上升沿,串行数据从data引脚按时序送到片内移位寄存器,在clk引脚信号的第8个下降沿,数据被送到片内d/a寄存器。s0、s1、data和clk四个引脚都内置了施密特触发器,以提高芯片的抗干扰性,并且这四个引脚都内置了下拉电阻,所以当它们被悬空时,都为低电平。

3.2 工作方式

mpxy8020a有4种工作方式,其工作于哪种工作方式由s1和s0引脚的电平来决定,如表2所列,只要vdd引脚有足够的供电电压,不管mpxy8020a工作于何种工作方式,其内部的多路开关、d/a寄存器、低频振荡器和输出脉冲分频器都处于激活状态。

需要注意的是,无论mpxy8020a工作于气压采样方式还是温度采样方式,所有的eeprom位都处于激活状态,如果为了节能而把vdd引脚置为低电平,有必要把所有引脚的电平都置为低电平,以免mpxy8020a被误激活。

4 mpxy8020a与msp430f1232的接口

4.1 接口电路

mpxy8020a传感器和msp430f1232的接口电路如图2所示,其中的串行通信spi是靠clk和data引脚实现的,传感器在clk引脚信号的上升沿读取data的1位数据,连续8位为1个周期,对于不具备spi接口的微控制器,可以通过i/o口软件仿真的方式实现通信,本系统中,通过msp430f1232的i/o口软件仿真spi,实现采样极限值的设置。

4.2 软件设计

4.2.1 给mpxy8020a发送1字节数据

在给mpxy8020a设置气压和温度采样极限值时,极限值以字节为单位发送给mpxy8020a,我们编写了一个向mpxy8020a发送1字节数据的函数,方便于系统中重复调用,该函数的代码如下[2]:

void mpxy8020a_sendbyte(uchar mpxy8020a_data){

uchar i;

p3dir|=mpxy8020_clk+mpxy8020_dat;

//clk和dat引脚为输出

delay650us();

p3out&=~mpxy8020_chk; //clk引脚清0

for(i=0;i<8;i++){

if((mpxy8020a_data&bit7)=bt7){

//高位在前

p3out|=mpxy8020_dat; // out引脚置1

}

else{

p3out&=~mpxy8020_dat; //out引脚清0

{

p3out|=mpxy8020_chk; //clk引脚置1

delay20us(1);

p3out&=~mpxy8020_clk; //clk引脚清0

delay20us(1);

mpxy8020a_data=mpxy8020a_data<<1;

//左移1位

}
}

4.2.2 温度和气压数据的读取

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

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

用逐次逼近的方法读取mpxy8020a温度数据的程序代码如下:

void mpxy8020a_temperature_sample(void){

uchar mpxy8020a_temp=0;

p3dir&=~mpxy8020_out; //input

mpxy8020a_temp|=bit7;//初始值为128,即位7=1

mpxy8020a_standby_state(); //待机模式

mpxy8020a_sendbyte(mpxy8020a_temp);

//发送极限值

mpxy8020a_temperature_state(); //测量温度模式

mpxy8020a_output_state(); //读数据模式

if((p3in&mpxy8020_out)==mpxy8020_out){

//比较out引脚是否为1

mpxy8020a_temp|=bit6; //位6=1

}

else{

mpxy8020a_temp&=~bit7;//位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&=~bit0;//位0=0

}

temperature=mpxy8020a_temp;

//用全局变量储存采样值

}

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

4.2.3 温度和气压数据的转换

(1)温度数据的转换

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

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

(2)气压数据的转换

mpxy8020a测量的气压范围约为0-600kpa,测得的值与气压之间的转换关系由下式给出:

p=2.5×output±气压误差

式中,output为测量得到的值(在0-255之间),气压误差由mpxy8020a的数据手册给出(将在下一节中讨论);p为转换后的气压值,单位为kpa。

4.2.4 气压数据的误差处理

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

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

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

结论

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

标签:
来源:《单片机与嵌入式系统应用》 作者:深圳电器公司 郑启忠 武汉理工大学 朱宏辉 时间:2007/1/26 0:00:00
相关阅读
推荐阅读
阅读排行
最近更新
商品推荐