- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
本文介绍了MS5611气压传感器的使用,包含电路设计、传感器初始化、传感器数据读取及转换、高度计算流程和公式,以及使用过程中的注意事项。
使用MS5611气压传感器计算高度
作者:马政贵
——中北大学:马政贵
图1 MS5611的电路图
MS5611气压传感器支持SPI和IIC总线接口,为降低通讯时间,选择使用SPI通讯,设计的电路图如图1所示。根据电路原理图,程序使用SPI总线接口的模式0方式(时钟空闲时为低,数据捕获于第1个时钟沿)。MS5611内含低功耗的24位ADC,高度分辨率可达10cm。
1. MS5611的初始化:
根据数据手册,MS5611在上电之后应发送一次复位指令,用来将出厂校准数据载入相应的寄存器中。复位完成后,再读取这些出厂校准数据,后续用于气压和温度的计算。
/*******************************************************************************
功能:对MS5611进行初始化
参数:无
返回值:无
*******************************************************************************/
void MS5611_Init(void)
{
static unsigned char temp_rest;
SPI_MS5611_CS_L;
delay_us(10);
SPI2_ReadWriteByte(CMD_MS5611_RESET); //发送复位指令
delay_ms(20); //复位需要2.8ms,这里取长一点时间,确保复位
SPI_MS5611_CS_H;
delay_us(10);
/*--------------复位后读取PROM内容------------------*/
C1 = SPI_MS5611_Read(CMD_MS5611_PROM_C1);
C2 = SPI_MS5611_Read(CMD_MS5611_PROM_C2);
C3 = SPI_MS5611_Read(CMD_MS5611_PROM_C3);
C4 = SPI_MS5611_Read(CMD_MS5611_PROM_C4);
C5 = SPI_MS5611_Read(CMD_MS5611_PROM_C5);
C6 = SPI_MS5611_Read(CMD_MS5611_PROM_C6);
}
备注:u16 SPI_MS5611_Read(u8 ReadAddr)为寄存器读取函数,参数ReadAddr为要读取的寄存器地址,函数返回相应寄存器的值。在MS5611.h头文件中根据芯片手册对相应寄存器地址进行了宏定义:
/*MS5611模块传感器地址定义*/
#define MS5611_ADC 0x00
#define CMD_MS5611_RESET 0x1E
#define CMD_MS5611_PROM_Setup 0xA0
#define CMD_MS5611_PROM_C1 0xA2
#define CMD_MS5611_PROM_C2 0xA4
#define CMD_MS5611_PROM_C3 0xA6
#define CMD_MS5611_PROM_C4 0xA8
#define CMD_MS5611_PROM_C5 0xAA
#define CMD_MS5611_PROM_C6 0xAC
#define CMD_MS5611_PROM_CRC 0xAE
#define CMD_CONVERT_D1_OSR4096 0x48
#define CMD_CONVERT_D2_OSR4096 0x58
2. MS5611数据读取及转换:
对MS5611进行数据读取时,要先发送相应的转换指令。MS5611可以进行气压和温度的测量,因此,有两条相应的转换指令,根据精度的不同,每条转换指令又分为5条具体指令。程序中,我们均按最高精度来进行转换,转换时间约9ms。由于我们的任务调度基于时间片调度模式,为避免造成程序堵塞,数据读取采用switch语句,从而避免在数据转换时的等待,可以去运行其他任务。
气压和温度的计算过程根据芯片手册进行,具体如下:
图2 气压和温度的计算
末尾还进行了相应的二阶温度补偿,具体过程为:
图3 二阶温度补偿
由当前气压和温度值,可计算得到当前高度,公式为:
其中,为海平面气压值;P为当前大气压值;T为当前温度值,单位℃。
/******************************
文档评论(0)