OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 15750|回复: 41

BMP180气压传感器的数据处理问题。STM32硬件IIC驱动

[复制链接]

5

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2012-11-30
在线时间
1 小时
发表于 2014-9-27 10:30:33 | 显示全部楼层 |阅读模式
5金钱
在调试四轴的时候,打算加入气压传感器来测试飞行的高度,按照数据手册来读取数据和处理数据。

读取的温度值和大气压值都是很正常的,但是从大气压转换到海拔要经过一个复杂的公式,在计算公式的时候出现了问题。请问有人用过吗?可以给我一个意见吗?
数据手册上的公式为




[mw_shl_code=c,true]//?????????? void BMP180_GetPressure(void) { u8 buffer[2]; double temp1,temp2,temp3; //?ò?????????÷????0X34??????4.5ms,?????????????÷??AD?? //?ò?????????÷??????????????,?????±??????,???±?????????????????????????? // 0X34 4.5ms 16?????? // 0x74 7.5 17?????? // 0xb4 13.5 18?????? // 0xf4 25.5 19?????? BMP180_I2C1WriteByte(BMP180_REG_CTRL_MEAS,0X34); delay_ms(5); BMP180_I2C2ReadData(BMP180_REG_OUT_MSB,buffer,2); delay_ms(5); UP = buffer[0]<<8 | buffer[1]; B6 = B5-4000; X1 = (B2*(B6*B6>>12))>>11; X2 = AC2*B6>>11; X3 = X1+X2; B3 = ((AC1<<2)+X3+2)>>2; X1 = AC3*B6>>13; X2 = (B1*(B6*B6/4096))>>16; X3 = ((X1+X2)+2)>>2; B4 = AC4*(u32)(X3+32768)>>15; B7 = ((u32)UP-B3)*50000; if(B7<0X80000000) P = (B7<<1)/B4; else P = (B7/B4)<<1; X1 = (P<<8)*(P<<8); X1 = (X1*3038)>>16; X2 = (-7357*P)>>16; P = P+(X1+X2+3791)/16;//????Pa ??????????????????????×???·¨????????? Pressure = (float)(P)/1000; //??????KPa ?ó?????? temp1 = P*1.0/Standard_Pressure; temp2 = (double)pow(temp1,0.2); temp3 = (double)(1-temp2); Altitude = 44330*(temp3); printf("temp1=%f,temp2=%f,temp3=%f\r\n",temp1,temp2,temp3); printf("UP=%d, P=%d, Pressure=%4.3fKPa Altitude=%4.3fm\r\n",UP,P,Pressure,Altitude); }[/mw_shl_code]
调试结果如下:使用串口将数据输出。




正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2012-11-30
在线时间
1 小时
 楼主| 发表于 2014-9-27 10:32:09 | 显示全部楼层
 对了,还有对这些变量的定义。
看看变量的定义会不会错。
[mw_shl_code=c,true]s32 UT;//????AD?? long int32_t s32 UP;//????AD?? long static s16 AC1,AC2,AC3; //short int16_t static u16 AC4,AC5,AC6; //unsigned short uint16_t static s16 B1,B2,MB,MC,MD; //short s32 X1,X2,X3;//????????????????????±??? long u32 B4; //unsigned long uint32_t s32 B3,B5,B6,B7; //long s32 P;//°????????????? s32 T;//°????????????? float Temperature; //?????? ?????????? float Pressure; //?????? ????:KPa float Altitude;//??°????? ??????m[/mw_shl_code]


回复

使用道具 举报

5

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2012-11-30
在线时间
1 小时
 楼主| 发表于 2014-9-27 10:32:28 | 显示全部楼层
求兄弟们给我看看啊,给我一个建议啊。
回复

使用道具 举报

17

主题

158

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
388
金钱
388
注册时间
2012-12-17
在线时间
62 小时
发表于 2014-9-27 12:32:32 | 显示全部楼层
我是看头像来的,老实交代,电工不可能有这么漂亮的女朋友的
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-9-27 23:01:41 | 显示全部楼层
没用过,  帮顶....
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

5

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2012-11-30
在线时间
1 小时
 楼主| 发表于 2014-9-28 16:48:35 | 显示全部楼层
回复【4楼】czz88:
---------------------------------
电子的。自动化
回复

使用道具 举报

17

主题

158

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
388
金钱
388
注册时间
2012-12-17
在线时间
62 小时
发表于 2014-9-28 19:36:55 | 显示全部楼层
回复【6楼】两个嘴巴笑110:
---------------------------------
头像是你本人?????????????!!!!!!!!!!
回复

使用道具 举报

5

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2012-11-30
在线时间
1 小时
 楼主| 发表于 2014-9-29 17:39:36 | 显示全部楼层
回复【7楼】czz88:
---------------------------------
我乃女汉子。
回复

使用道具 举报

5

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2012-11-30
在线时间
1 小时
 楼主| 发表于 2014-9-29 17:45:38 | 显示全部楼层
没有人做过吗?
回复

使用道具 举报

17

主题

158

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
388
金钱
388
注册时间
2012-12-17
在线时间
62 小时
发表于 2014-9-29 19:14:34 | 显示全部楼层
 回复【8楼】 两个嘴巴笑110 :
---------------------------------
验明正身一下
如果真是女生一定帮,是男生的也会帮,没必要骗哦看我的帖子
回复

使用道具 举报

5

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2012-11-30
在线时间
1 小时
 楼主| 发表于 2014-9-29 21:44:06 | 显示全部楼层
回复【10楼】czz88:
---------------------------------
你帖子的链接呢?你做过吗?给我一个链接吧!
回复

使用道具 举报

17

主题

158

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
388
金钱
388
注册时间
2012-12-17
在线时间
62 小时
发表于 2014-9-29 22:03:09 | 显示全部楼层
32     X1 = (P<<8)*(P<<8);这里应该是X1 = (P>>8)*(P>>8);
33     X1 = (X1*3038)>>16;
34     X2 = (-7357*P)>>16;
35      = P+(X1+X2+3791)/16;//????Pa  ??????????????????????×???·¨?????????
36     ressure = (float)(P)/1000;     //??????KPa  ?ó??????
37      
38     temp1 = P*1.0/Standard_Pressure;
39     temp2 = (double)pow(temp1,0.2);这里是1/5.255你这样直接近似等于0.2是不行的
40     temp3 = (double)(1-temp2);
41     Altitude = 44330*(temp3);

至于计算公式,你这样分开算也是可以的,没看出什么问题
temp->Altitude =(44330.0 * (1.0-pow((float)(temp->GasPress) / 101325.0, 1.0/5.255)) );我是这么计算的,也是一样的
回复

使用道具 举报

5

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2012-11-30
在线时间
1 小时
 楼主| 发表于 2014-9-29 22:19:12 | 显示全部楼层
回复【12楼】czz88:
---------------------------------
好的, 谢谢哈。明天我试一试。应该会没问题吧。相信你哦。么么哒。
回复

使用道具 举报

17

主题

158

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
388
金钱
388
注册时间
2012-12-17
在线时间
62 小时
发表于 2014-9-29 22:20:47 | 显示全部楼层
卧槽,真的是女的啊??
回复

使用道具 举报

17

主题

158

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
388
金钱
388
注册时间
2012-12-17
在线时间
62 小时
发表于 2014-9-29 22:26:41 | 显示全部楼层
这是官方给的API给你参考一下,我自己写的就不给了

bmp180_api.zip

8.62 KB, 下载次数: 1455

回复

使用道具 举报

5

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2012-11-30
在线时间
1 小时
 楼主| 发表于 2014-9-29 22:27:48 | 显示全部楼层
回复【15楼】czz88:
---------------------------------
为什么不能给我呢。
回复

使用道具 举报

17

主题

158

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
388
金钱
388
注册时间
2012-12-17
在线时间
62 小时
发表于 2014-9-29 22:30:26 | 显示全部楼层
 自己动手咯,你都调到这了,快成功了,加油
加我QQ吧734688882,男的别加
回复

使用道具 举报

17

主题

158

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
388
金钱
388
注册时间
2012-12-17
在线时间
62 小时
发表于 2014-9-30 10:20:57 | 显示全部楼层
回复【13楼】两个嘴巴笑110:
---------------------------------
哥们,没问题吧?
回复

使用道具 举报

5

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2012-11-30
在线时间
1 小时
 楼主| 发表于 2014-9-30 12:30:44 | 显示全部楼层
回复【18楼】czz88:
---------------------------------
嗯。没问题。还真是我自己没有注意给看错了。但是数据跳动的有点大,差不多有个2米的误差吧。
回复

使用道具 举报

17

主题

158

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
388
金钱
388
注册时间
2012-12-17
在线时间
62 小时
发表于 2014-9-30 12:51:20 | 显示全部楼层
不会吧,我做的连续跳动不会超过10cm。你那个0.2有没有改成1/5.255
还有就是传感器不要对着强光和气流
回复

使用道具 举报

5

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2012-11-30
在线时间
1 小时
 楼主| 发表于 2014-9-30 13:51:28 | 显示全部楼层
回复【20楼】czz88:
---------------------------------
改成了1/5.255
但是有风扇对着吹。你有没有使用求平均值的方式来减小误差呢。
回复

使用道具 举报

17

主题

158

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
388
金钱
388
注册时间
2012-12-17
在线时间
62 小时
发表于 2014-9-30 14:07:13 | 显示全部楼层
我没有做平均计算,风扇不能对着吹,也不要用手摸传感器,温度也会影响气压值
回复

使用道具 举报

5

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2012-11-30
在线时间
1 小时
 楼主| 发表于 2014-9-30 14:28:48 | 显示全部楼层
回复【22楼】czz88:
---------------------------------
你有没有做过,直接利用温度的值来补偿大气压强的啊,这样子做会不会得到比较准确的海拔呢?你有没有这方面的资料呢?
回复

使用道具 举报

17

主题

158

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
388
金钱
388
注册时间
2012-12-17
在线时间
62 小时
发表于 2014-9-30 14:47:13 | 显示全部楼层
没有呢,我觉得你如果是用来做四轴的定高的话,只要气压读的准确就没什么大问题了,毕竟气压在短时间内变化不会非常大。如果用来测海拔高度只能做参考了,同一个地方一天测出的海拔最大可以相差100m了。
楼主的四轴做的怎样了?还是学生吧?
回复

使用道具 举报

5

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2012-11-30
在线时间
1 小时
 楼主| 发表于 2014-9-30 16:42:27 | 显示全部楼层
嗯。。在纠结控制算法的部分。
回复

使用道具 举报

5

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2012-11-30
在线时间
1 小时
 楼主| 发表于 2014-9-30 21:24:25 | 显示全部楼层
问题已解决。在这里小弟特地感谢@czz88大神的指导。
回复

使用道具 举报

17

主题

158

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
388
金钱
388
注册时间
2012-12-17
在线时间
62 小时
发表于 2014-9-30 22:10:32 | 显示全部楼层
 回复【26楼】 两个嘴巴笑110 :
---------------------------------
还说是女生呢,一看就知道欺骗我感情。
还有我不是大神哦,可能你比我懂得多呢
回复

使用道具 举报

2

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
61
金钱
61
注册时间
2015-4-18
在线时间
3 小时
发表于 2015-4-27 19:53:51 | 显示全部楼层
求操作bmp的初始化设置
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
22
金钱
22
注册时间
2015-5-2
在线时间
0 小时
发表于 2015-5-2 17:01:08 | 显示全部楼层
可以加下qq吗?我最近在学习这个
回复

使用道具 举报

2

主题

16

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2015-5-4
在线时间
0 小时
发表于 2015-5-4 20:21:06 | 显示全部楼层
591977961 山科大的 现在在做stm32的气压高度计 加我下
回复

使用道具 举报

5

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2012-11-30
在线时间
1 小时
 楼主| 发表于 2015-5-4 21:21:01 | 显示全部楼层
回复【30楼】jnight7:
---------------------------------
这个东西我研究的不深,只是随便玩了一下。
回复

使用道具 举报

5

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2012-11-30
在线时间
1 小时
 楼主| 发表于 2015-5-4 21:22:02 | 显示全部楼层
我写的代码就这么一点,用STM32写的

bpm180.rar

3.29 KB, 下载次数: 1008

回复

使用道具 举报

5

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2012-11-30
在线时间
1 小时
 楼主| 发表于 2015-5-4 21:22:46 | 显示全部楼层
回复【30楼】jnight7:
---------------------------------
我把代码发出来了,现在在上班,基本上没有时间上网的
回复

使用道具 举报

5

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2012-11-30
在线时间
1 小时
 楼主| 发表于 2015-5-4 21:23:54 | 显示全部楼层
回复【29楼】一世遵守cz:
---------------------------------
我也是菜鸟,我只是随便的玩了一下,也没有深入的了解。我吧代码发出来了,希望对你们有帮助。我写的代码都是参考技术资料写的。
回复

使用道具 举报

2

主题

16

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2015-5-4
在线时间
0 小时
发表于 2015-5-5 09:09:21 | 显示全部楼层
回复【33楼】两个嘴巴笑110:
---------------------------------
好的 真的谢谢你了
回复

使用道具 举报

2

主题

16

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2015-5-4
在线时间
0 小时
发表于 2015-5-7 21:48:09 | 显示全部楼层
能把整个工程包分享下么 楼主是万能的!!!!
回复

使用道具 举报

2

主题

16

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2015-5-4
在线时间
0 小时
发表于 2015-5-7 21:49:50 | 显示全部楼层
回复【36楼】jnight7:
---------------------------------
bmp180 那部分的 工程包 有么。
回复

使用道具 举报

0

主题

77

帖子

0

精华

初级会员

Rank: 2

积分
144
金钱
144
注册时间
2014-6-7
在线时间
7 小时
发表于 2015-5-7 22:47:42 | 显示全部楼层
气压传感器测飞行高度这也太不靠谱了,置gps于何地,要真用气压传感器,推荐你一款MPXH6250A,线性度妥妥的,ad转换就行,要什么公式
回复

使用道具 举报

2

主题

16

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2015-5-4
在线时间
0 小时
发表于 2015-5-9 10:01:09 | 显示全部楼层
有bmp180中文使用手册么?
回复

使用道具 举报

5

主题

49

帖子

0

精华

初级会员

Rank: 2

积分
179
金钱
179
注册时间
2014-8-29
在线时间
11 小时
发表于 2015-8-17 09:22:40 | 显示全部楼层
回复【39楼】jnight7:
---------------------------------
http://datasheet.soiseek.cn/BOSCH/BMP180-SHUTL/1.html
有深圳的大牛带我飞吗?
回复

使用道具 举报

33

主题

310

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
495
金钱
495
注册时间
2016-12-31
在线时间
63 小时
发表于 2017-3-15 17:07:18 | 显示全部楼层
YUSHI 发表于 2015-5-7 22:47
气压传感器测飞行高度这也太不靠谱了,置gps于何地,要真用气压传感器,推荐你一款MPXH6250A,线性度妥妥的 ...

这么猛?
回复

使用道具 举报

4

主题

36

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
289
金钱
289
注册时间
2015-10-7
在线时间
32 小时
发表于 2018-8-5 09:18:16 | 显示全部楼层
想问一下有没有人出现mc =  Multiple_read(0xBC);这一块出现错误啊,读取出来的mc数据时错误的,然而其他数据是正确的,ut   md  都是对的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-13 08:52

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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