经过几天的痛苦挣扎,终于搞定了,完成气压计的参数读写,温度检测,大气压计算。因为这款气压计精度高,好多计算需要用到正负数,整数小数,浮点整形,有的计算结果特别大,所以在数据格式转换方面费了好长时间。但是结果还是挺满意的。需要源代码的可以去我分享的资源下载,留言或者留邮箱。这款气压计也可以用作测量海拔,稳定性挺好,测量的温度,气压都挺准确,下面是资料简介,最后添加部分程序代码,如需完整版的代码和资料,可以从附件下载。MS5611气压传感器是由MEAS(瑞士)推出的一款SPI和I²C总线接口的新一代高分辨率气压传感器,分辨率可达到10cm。该传感器模块包括一个高线性度的压力传感器和一个超低功耗的24位Σ模数转换器(工厂校准系数)。
计算温度:
D2 = MS5611_DO_Conversion(OSR_Temp);
delay_ms(10);
dT = D2 - (((u32)c5)*256) ;
Temperature = 2000 + dT*((float)c6)/8388608 ;
计算大气压:
D1 = MS5611_DO_Conversion(OSR_Pressure) ;
delay_ms(10) ;
OFF = (((int64_t)c2)*65536 + (((int64_t)c4*dT)/128)) ;
SENS = (((int64_t)c1)*32768) + (((int64_t)c3*dT)/256) ;
if(Temperature < 2000) //µ±Î¶ÈÖµTEMPСÓÚ2000ʱÐèÒª×öζȲ¹³¥
{
T2 = (float)(dT*dT)/0x80000000 ;
Aux = (Temperature - 2000)*(Temperature - 2000) ;
OFF2 = 2.5f*Aux ;
SENS2 = 1.25f*Aux ;
if(Temperature < -1500) //µ±Î¶ÈÖµTEMPСÓÚ-1500ʱÐèÒª×öζȲ¹³¥
{
Aux = (Temperature+1500)*(Temperature+1500);
OFF2 = OFF2 + 7*Aux;
SENS2 = SENS2 + 5.5f*Aux;
}
}
else
{
T2 = 0 ;
OFF2 = 0 ;
SENS2= 0 ;
}
Temperature = Temperature - T2 ;
OFF = OFF - OFF2 ;
SENS = SENS - SENS2 ;
Pressure = ((D1*SENS)/2097152 - OFF)/32768 ;
海拔计算:
Altitude = (44330.0f*(1.0f - pow((float)Pressure/101325.0f, 0.190295f))) ;