MS5611-01BA03气压计(高度计)中文资料解析_第1页
MS5611-01BA03气压计(高度计)中文资料解析_第2页
MS5611-01BA03气压计(高度计)中文资料解析_第3页
MS5611-01BA03气压计(高度计)中文资料解析_第4页
MS5611-01BA03气压计(高度计)中文资料解析_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、MS5611-01BA03金属封装气压计组件性能描述高度分辨率组件,10cm 转换时间低于1ms 低功率,工作电流1uA (待机状态0.15uA )QFN 封装尺寸:5.0 &0 *0 mm3供电电压1.8V3.6V集成数字气压传感器(24位ADC )测量/工作范围:101200mbar (毫巴=百帕),-40+85 CI2C和SPI接口,传输速率可达 20MHz无外接元件(内置振荡器) 长期稳定性好 描述MS5611-O1BA气压传感器是由 MEAS (瑞士)推出的一款 SPI和I2C总线接口的新一 代高分辨率气压传感器,分辨率可达到10cm。该传感器模块包括一个高线性度的压力传感器和一个超

2、低功耗的24位工模数转换器(工厂校准系数)。MS5611提供了一个精确的24位数 字压力值和温度值以及不同的操作模式,可以提高转换速度并优化电流消耗。高分辨率的温度输出无须额外传感器可实现高度计/温度计功能。可以与几乎任何微控制器连接。通信协议简单,无需在设备内部寄存器编程。MS5611压力传感器只有5.0毫米$.0毫米*1.0毫米的小尺寸可以集成在移动设备中。这款传感器采用领先的MEMS技术并得益于 MEAS (瑞士)十余年的成熟设计以及大批量制造经验,保证产品具有高稳定性以及非常低的压力信号滞 后。内部结构及技术数据移动高度计/气压计系统自行车电脑气压表医疗警报高度计 室内导航原理框图Se

3、nsor Perfonnances (Von = 3 VJPressureMinTypMaxUnitRange10120CmbarADC24bitResolution(1)0 065/0.042/0.027 / DOI0/OJ12mbarAccuracy 25*Ci 750 mbar15+ 1.5mbarETOT band, -200Cto +85C450 to 1 lOOmbar (2)25+2.5mbarResponse time (1)0.5 /1.1J 2.1 74.11B.22msLong term stability-1mbar/yrTemperatureMmTypMaxUnitR

4、ange-40+85CResolutio n010001000X44Convert D1 (OSR=2048)01000i100x46COTVeH D1 (OSR=4096010010000X46Convert D2 (OSR25S)010100000x50GOflveH DZ (OSR=512)01Q100100X52Conweri D2 (QSR=102401010100 二0x54CofiveH D2 (OSR=2Q40010101 1100x56Concert D2 (OSR=40%010110 二00 二0x58ADC Read000000000x00PROM Read1010Ad2

5、Ad1AdO0OxAO to OxAE命令结构SPI复位时序转换时序存储器读取时序图参见原文。I2C 接口I2C命令每个I2C通信消息都有开始和停止状态。 MS5611-01BA 的I2C地址为111011CX,其 中C为CSB引脚的补码值(取反)。因为传感器内并没有微控制器, 所有I2C的命令和SPI 是相同的。I2C复位时序复位指令可以在任何时间发送。如果没有成功的上电复位,这可能是被屏蔽的SDA模块在应答状态。MS5611-01BA唯一的复位方式是发送几个 SCLKs后跟一个复位指令或上电 复位。1 1 1 0 1 i csF 0 Device Address00 0 0 1 1 1 c

6、ommand10 0S| Dtvie ddrs|a|and bittAP来自主机 S =开始命令W =写命令 A =应答来自从机 P =停止命令R =读命令 N =无应答I2C复位指令存储器读取时序PROM读指令由两部分构成, 第一部分使系统处于 PROM读模式,第二部分从系统中读 取数据。1 1 1 0 1 1 C&B 0o| 1L 0 1 U 0 11 Q o| 1Device Address匚 ommand | Device AddressWA |ciixl byteA| P|_来自主机S =开始命令 W =写命令 A =应答来自从机 P =停止命令 R =读命令 N =无应答I2C读存

7、储器指令,地址=011 (系数:3)1 11 0 11 CSB 1Devi 诧 AddressO11OOXXXXOdataXXXXXXXX dataoDevice Addirss | RA | Memory bit 15-8 AMemoiy bit 7 -oN P 1来自主机 S =开始命令W =写命令 A =应答来自从机 P =停止命令R =读命令 N =无应答I2C从芯片中应答转换时序通过向MS5611-01BA发送指令可以进入转换模式。当命令写入到系统中,系统处于忙 碌状态,直到转换完成。当转换完成后可以发送一个读指令,此时MS5611-01BA发回一个应答,24个SCLK时钟将所有bi

8、t位传送出来。每隔8bit就会等待一个应答信号111011 CSfi0 Io010010-00 (FDevice AddresscommandSDevice AddressW Acrnd byte几 | PI_来自主机 S =开始命令W =写命令 A =应答1110 11 0Devke Address0()0 0 0 0 00( commandJ (iS Device Addressajcmd byteA|F来自从机 P =停止命令R =读命令N =无应答I2C启动压力转换指令(OSR=4096, typ=D1)I_来自主机 S =开始命令W =写命令 A =应答来自从机 P =停止命令 R

9、=读命令 N =无应答ADC读时序1 1 10 1 lLUXXXXXXKXDevice Addressda怙0X K X X X X X XU ddtAxxxxxxxxu| S| Device Address |R AData216”广A|门对昇1 Np |来自主机 S =开始命令W =写命令 A =应答来自从机P =停止命令R =读命令 N =无应答I2C从MS5611-01BA 读取数据循环冗余检查(CRC)MS5611-01BA 包含128-Bit的PROM存储器。存储器中有一个 4bit的CRC数据检测位。 下面详细描述了 CRC-4代码的使用。30DB15DR14DD12DDDDDD

10、DUDDBBBBBBBBBB9876543210DB16 bit reserved for manufacturerCoffiGient 1 (16 bit unsigned)Coefficient 2 (16 bit unsigned)CcefticiEnt 3 (16 bit unsigned)Coefticient 4(16 bt unsigned)Coefficient 5 (16 bit insigned)Coefficient 6 (16 bit unsigned)I I I I I I I I I ICRC典型应用电路SPI协议lOW*-审即 selectedVDO3QnFMS5

11、611-01BACCBVDOSOIPSSDO它NDSCLKOutput-PartSFIlnlerfdceI2C协议引脚定义NfS6611-01BAHtnlVDD +3V ao*rr5UtisHi m I?: ICCTr-1SDASCLW+DC+3WIL i-1=0-Interface引脚名称类型描述1VDDP电源电压:2PSI通讯协议选择PS high (VDDI2CPS low (GND SPI3GNDG接地4CSBI片选(低电平有效), 内部连接56SDOO串口数据输出7SDI/SDAI/IO串口数据输入/I2C数据8SCLKI串口时钟*注:原文附录有一些典型测量值的特征曲线可参考。其中的

12、一些关键点:ADC的测量值D1和D2是分别用来测气压和温度的,且基本成线性关系;在常温(20 C)或大于常温时,测量误差很小,而温度低于20 C时,气压和温度测量误差会明显增大;电源电压为 3V时,气压和温度测量误差很小,而其它供电电 压下误差会大幅度增加。ARDUINO测试代码MS561101BA.h 文件:#ifndef MS561101BA_h#defi ne MS561101BA_h#ifndef cbi#defi ne cbi(sfr, bit) (_SFR_BYTE(sfr) &= _BV(bit)#en dif#i nclude WProgram.h#in clude /#def

13、ine DEBUG V/#define DEBUG/#include / addresses of the device#define MS561101BA_ADDR_CSB_HIGH 0x76/CBR=1 0x76 I2C address when CSB is connected to HIGH (VCC) #define MS561101BA_ADDR_CSB_LOW 0x77/CBR=0 0x77 I2C address when CSB is connected to LOW (GND)/ registers of the device#define MS561101BA_D1 0x

14、40 #define MS561101BA_D2 0x50 #define MS561101BA_RESET 0x1E/ D1 and D2 result size (bytes) #define MS561101BA_D1D2_SIZE 3/ OSR (Over Sampling Ratio) constants #define MS561101BA_OSR_256 0x00 #define MS561101BA_OSR_512 0x02 #define MS561101BA_OSR_1024 0x04 #define MS561101BA_OSR_2048 0x06 #define MS5

15、61101BA_OSR_4096 0x08#define MS561101BA_PROM_BASE_ADDR 0xA2 / by adding ints from 0 to 6 we can read all the prom configuration values./ C1 will be at 0xA2 and all the subsequent are multiples of 2#define MS561101BA_PROM_REG_COUNT 6 / number of registers in the PROM #define MS561101BA_PROM_REG_SIZE

16、2 / size in bytes of a prom registry.class MS561101BApublic: MS561101BA(); void init(uint8_t addr); float getPressure(uint8_t OSR); float getTemperature(uint8_t OSR); int64_t getDeltaTemp(uint8_t OSR); int32_t rawPressure(uint8_t OSR); int32_t rawTemperature(uint8_t OSR); int readPROM();void reset()

17、;private: unsigned long doConversion(uint8_t command);uin t8_t _addr;ui nt16_t _CMS561101BA_PROM_REG_COUNT;;#e ndif / MS561101BA_hMS561101BA.cpp 文件:#i nclude MS561101BA.h#defi ne EXTRA_PRECISION 5/ trick to add more precisi on to the pressure and temp readi ngsMS561101BA:MS561101BA() ; void MS561101

18、BA:init(uint8_t address)_addr = address;/ disable in ternal pullups of the ATMEGA which Wire en able by default#if defined(_A VR_ATmega168_ 一)II defined( _A VR_ATmega8_IIdefi ned(_A VR_A Tmega328P_)/ deactivate internal pull-ups for twi/ as per note from atmega8 man ual pg167cbi(PORTC, 4);cbi(PORTC,

19、 5);#else/ deactivate internal pull-ups for twi/ as per note from atmega128 manual pg204cbi(PORTD, 0);cbi(PORTD, 1);#en difreset(); / reset the device to populate its internal PROM registersdelay(1000); / some safety timereadPROM(); / reads the PROM into object variables for later usefloat MS561101B

20、A:getPressure(ui nt8_t OSR)/ see datasheet page 7 for formulasin t64_t dT= getDeltaTemp(OSR);int64_t off = (int64_t)_C1) 7);in t64_t sens = (i nt64_t)_C0) 8);return (rawPressure(OSR) * sens) 21) - off) (15-EXTRA PRECISION) / (1EXTRA PRECISION) * 100.0);float MS561101BA:getTemperature(ui nt8_t OSR)/

21、see datasheet page 7 for formulasreturn (1 (23-EXTRA PRECISION) / (1EXTRA PRECISION) * 100.0);in t64_t MS561101BA:getDeItaTemp(ui nt8_t OSR)return rawTemperature(OSR) - (i nt32_t)_C4) 8);in t32_t MS561101BA:rawPressure(ui nt8_t OSR)return doCo nversio n(MS561101BA_D1 + OSR);in t32_t MS561101BA:rawTe

22、mperature(ui nt8_t OSR)return doCo nversio n(MS561101BA_D2 + OSR);un sig ned long MS561101BA:doCo nversio n(ui nt8_t comma nd)un sig ned long conversion = 0;/ see page 11 of the datasheet/in itialize pressure conversionWire.begi nTran smissio n(_addr);Wire.se nd(comma nd);Wire.e ndTra nsmissio n();d

23、elay(10);/ the conversion will take a time = 9.04 ms to have the output ready/ TODO: make the delay depe ndant on the OSR requested in the comma nd/ start read seque neeWire.begi nTran smissio n(_addr);Wire.se nd(0);Wire.e ndTra nsmissio n();Wire.beginTransmission(_addr);Wire.requestFrom(_addr, (uint8_t) MS561101BA_D1D2_SIZE); if(Wire.available() conversion = Wire.receive() * 65536 + Wire.receive() * 256 + Wire.receive();else conversion

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论