接上文继续:
2 MS5540C的程序设计
2.1 MS5540C的工作原理
MS5540C包括一个压阻式的传感器和传感器接口电路。它的主要功能是将压力传感器输出的未补偿的模拟电压转换成16位数字值,通过接口电路可以将16位数字值输出。共有2个16位数字值需要输出,分别是用于气压和温度测量结果计算的D1和D2。这两个16位数据结果是非常粗糙的,必须通过外部处理器进行补偿计算,才能得到比较精确的结果。
每个模块都会在两个温度和两个气压值下进行工厂校准,得到6个补偿系数C1~C6,这6个补偿系数共64 bit,以4个16 bit的字形式储存在模块内的PROM中。因此,在进行补偿计算前,必须先读出这6个补偿系数。关于补偿系数在4个16位字中的排列方式,请参看文献的图4。
2.2 MS5540C的App设计
使用带有SPI接口的MCU与MS5540C接口,将会使程序设计变得简单。大家以带有SPI接口的51单片机STCl2LE5A60S2为例来先容MS5540C的App编程。
由前所述,4个16位的补偿数据及2个分别为气压和温度传感器转换而来的16位结果数据都需要通过SPI来读取。关于这些数据的读取,Intersema规定了一套简单的通讯协议,协议要求处理要先发命令数据,然后才能读取16位数据。命令数据包括起始位,设置位和停止位,各个数据有不同的设置位,另外为了复位MS5540C,Intersema还提供了一个用于reset模块的命令,关于具体的通讯协议,请参考文献。
数据定义:
在程序中调用上述的函数,编程非常方便。读出的2个16位数据经过文献1提供的校准公式进行校准后,得到温度和气压的较为精确的测量结果,其中温度的结果精确到0.1℃,气压精确到0.1mbar。
因为MS5540C的ADC为16位,温度测量分辨率可以到0.01℃,对于-40~85℃之间的测量范围,大家可以将文献中温度校准公式:
TEMP=200+dT*(C6+50)/1024
修改为
TEMP=2000+dT*(C6+50)*10/1024
这样得到的结果可以使分辨率达到0.01℃。
程序设计需要注意两点:
1)MCU发送命令和读取数据时SPI工作方式是不一样的,主要是SCLK采样沿的设置不同,具体参考文献;
2)由于在发送采样温度和气压的命令之后,需要等大约35 ms左右,才能读取到采样数据,所以在发送命令后,需要等待之后再读取。
粤公网安备 44030602005003号