请选择 进入手机版 | 继续访问电脑版
搜索
热搜: ROHM 模拟 车载
查看: 2479|回复: 4

【罗姆传感器】8.气压传感器BM1383测量分析

  [复制链接]

该用户从未签到

89

主题

513

帖子

0

精华

金牌会员

最后登录
2022-3-30
发表于 2018-11-20 21:21:15 | 显示全部楼层 |阅读模式
本帖最后由 小马哥-1650185 于 2018-11-20 21:46 编辑

气压传感器顾名思义就是测量大气压强的,应该是比较常见的传感器。

模块使用BM1383AGLV,BM1383AGLV是压阻式压力传感器。BM1383AGLV负责温度补偿MEMS内部芯片,所以很容易得到压力信息。测量范围是 300hPa to 1100hPa。

实物图:
3.jpg

参考电路:
4.jpg

封装及引脚信息
5.jpg
模块电路及pcb
1.jpg 2.jpg

寄存器介绍
6.jpg
控制寄存器
7.jpg
初始化配置寄存器
  1. byte BM1383AGLV::init(void)
  2. {
  3.   byte rc;
  4.   unsigned char reg;

  5.   rc = read(BM1383AGLV_ID, ®, sizeof(reg));
  6.   if (rc != 0) {
  7.     Serial.println(F("Can't access BM1383AGLV"));
  8.     return (rc);
  9.   }
  10.   Serial.print(F("BM1383AGLV ID Register Value = 0x"));
  11.   Serial.println(reg, HEX);

  12.   if (reg != BM1383AGLV_ID_VAL) {
  13.     Serial.println(F("Can't find BM1383AGLV"));
  14.     return (rc);
  15.   }

  16.   reg = BM1383AGLV_POWER_DOWN_VAL;
  17.   rc = write(BM1383AGLV_POWER_DOWN, ®, sizeof(reg));
  18.   if (rc != 0) {
  19.     Serial.println(F("Can't write BM1383AGLV POWER_DOWN register"));
  20.     return (rc);
  21.   }

  22.   delay(WAIT_BETWEEN_POWER_DOWN_AND_RESET);

  23.   reg = BM1383AGLV_RESET_VAL;
  24.   rc = write(BM1383AGLV_RESET, ®, sizeof(reg));
  25.   if (rc != 0) {
  26.     Serial.println(F("Can't write BM1383AGLV RESET register"));
  27.     return (rc);
  28.   }

  29.   reg = BM1383AGLV_MODE_CONTROL_VAL;
  30.   rc = write(BM1383AGLV_MODE_CONTROL, ®, sizeof(reg));
  31.   if (rc != 0) {
  32.     Serial.println(F("Can't write BM1383AGLV MODE_CONTROL register"));
  33.     return (rc);
  34.   }

  35.   delay(WAIT_TMT_MAX);

  36.   return (rc);
  37. }
复制代码

压力数据寄存器

8.jpg

转换公式:
9.jpg

0x1A~0x1C中的压力数据必须连续读取,否则会产生数据混淆。

温度寄存器:
10.jpg

转换公式:
11.jpg

温度数据同样需要连续读取。

  1. byte BM1383AGLV::get_rawval(unsigned char *data)
  2. {
  3.   byte rc;

  4.   rc = read(BM1383AGLV_PRESSURE_MSB, data, GET_BYTE_PRESS_TEMP);
  5.   if (rc != 0) {
  6.     Serial.println(F("Can't get BM1383AGLV PRESS and TEMP value"));
  7.   }

  8.   return (rc);
  9. }

  10. byte BM1383AGLV::get_val(float *press, float *temp)
  11. {
  12.   byte rc;
  13.   unsigned char val[GET_BYTE_PRESS_TEMP];
  14.   unsigned long rawpress;
  15.   short rawtemp;

  16.   rc = get_rawval(val);
  17.   if (rc != 0) {
  18.     return (rc);
  19.   }

  20.   rawpress = (((unsigned long)val[0] << 16) | ((unsigned long)val[1] << 8) | (val[2]&0xFC)) >> 2;

  21.   if (rawpress == 0) {
  22.     return (-1);
  23.   }

  24.   *press = (float)rawpress / HPA_PER_COUNT;

  25.   rawtemp = ((short)val[3] << 8) | val[4];

  26.   if (rawtemp == 0) {
  27.     return (-1);
  28.   }

  29.   *temp = (float)rawtemp / DEGREES_CELSIUS_PER_COUNT;

  30.   return (rc);
  31. }
复制代码

最后我们看到串口打印结果:

12.jpg
波形数据

13.jpg



回复

使用道具 举报

该用户从未签到

0

主题

187

帖子

0

精华

高级会员

最后登录
2019-3-26
发表于 2018-11-21 09:05:10 | 显示全部楼层
好这个  
回复 支持 反对

使用道具 举报

该用户从未签到

49

主题

2250

帖子

0

精华

论坛元老

最后登录
2020-12-15
发表于 2018-11-21 10:19:07 | 显示全部楼层
666                  
回复 支持 反对

使用道具 举报

该用户从未签到

205

主题

1万

帖子

0

精华

论坛元老

最后登录
2023-6-10
发表于 2018-11-21 12:40:14 | 显示全部楼层
看看 logo.png
回复 支持 反对

使用道具 举报

该用户从未签到

205

主题

1万

帖子

0

精华

论坛元老

最后登录
2023-6-10
发表于 2018-11-21 12:40:38 | 显示全部楼层
不错
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /2 下一条

Archiver|手机版|小黑屋|罗姆半导体技术社区

GMT+8, 2024-3-28 22:32 , Processed in 0.105447 second(s), 17 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表