01 使用MS5611气压传感器计算高度.docxVIP

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 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)

junwugui + 关注
实名认证
文档贡献者

像风一样自由。

1亿VIP精品文档

相关文档