搜索
bottom↓
回复: 41

我的罗盘和气压计调通了

[复制链接]

出0入0汤圆

发表于 2009-8-13 09:55:28 | 显示全部楼层 |阅读模式
Compass 255 Pressure 100619 Pa Altitude 56.86 Temperature 274
Compass 254 Pressure 100625 Pa Altitude 56.38 Temperature 274
Compass 254 Pressure 100620 Pa Altitude 56.78 Temperature 274
Compass 254 Pressure 100601 Pa Altitude 58.32 Temperature 273
Compass 255 Pressure 100616 Pa Altitude 57.10 Temperature 274
Compass 254 Pressure 100614 Pa Altitude 57.27 Temperature 273
Compass 254 Pressure 100615 Pa Altitude 57.19 Temperature 274
Compass 254 Pressure 100615 Pa Altitude 57.19 Temperature 274
Compass 254 Pressure 100617 Pa Altitude 57.02 Temperature 274
Compass 255 Pressure 100617 Pa Altitude 57.02 Temperature 274
Compass 254 Pressure 100617 Pa Altitude 57.02 Temperature 274
Compass 254 Pressure 100615 Pa Altitude 57.19 Temperature 274
Compass 254 Pressure 100623 Pa Altitude 56.54 Temperature 274

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2009-8-13 12:04:19 | 显示全部楼层
【楼主位】 luzhengmao

先恭喜下﹗

你寫的這些你認為人有能看得懂你什么意思么?  詳細的說明一下吧。

出0入0汤圆

发表于 2009-8-13 12:27:21 | 显示全部楼层
我用smd500 直接读出来的温度和气压值是一样的
楼主遇到过这种情况吗

出0入0汤圆

发表于 2009-8-13 12:28:22 | 显示全部楼层
LZ 用的啥芯片,不给原理图这些倒是可以说说的吧,好歹也算给大家点参考资料啊~
如果只是过来炫耀下就算了,不管怎么说,先恭喜LZ啊

出0入0汤圆

发表于 2009-8-13 13:01:08 | 显示全部楼层
楼主用的什么罗盘,多少钱,哪里买的

出0入0汤圆

 楼主| 发表于 2009-8-13 13:15:58 | 显示全部楼层
罗盘 是雅马哈 YAS525_MS-1C
气压计 是 博士 BMP085 和 smd500 一个系列的

明天雅马哈3轴的会送来看看

都是2美金左右吧

出0入0汤圆

发表于 2009-8-13 14:34:05 | 显示全部楼层
BMP085个人感觉不错,曾经写过一篇笔记,晚些时候发上来。

luzhengmao:
能提供一下雅马哈的采购途径么,谢谢。yamaha的在国内好采购么。看他的datasheet都没写的很清楚,具体IIC的命令都没有,请问还有别的相关文档么。

另外:

yamaha的真有那么便宜么?多大的量才可以2美金。

出0入0汤圆

 楼主| 发表于 2009-8-13 17:34:10 | 显示全部楼层
雅马哈 的就一个问题非常难焊 BGA


(原文件名:MS_1c.JPG)

出0入143汤圆

发表于 2009-8-13 19:56:44 | 显示全部楼层
恭喜楼主了!

出0入0汤圆

 楼主| 发表于 2009-8-13 20:38:51 | 显示全部楼层
BMP085网上下的资料就可以做了 ,这2个传感器没啥原理图 就是连上电源和iic就可以了  资料我以前贴过

yamaha 基本要原厂支持才能用的 网上没有datasheet 能用。
他给了内部资料的。
校准还在测试 他的校准还是很有特色的,任意采集20个点 分析就可以了,其他不少都要转2圈。

出0入0汤圆

发表于 2009-8-13 22:37:29 | 显示全部楼层
怎么才能拿到yamaha的内部资料呢?或者说怎么才能得到他的原厂支持。不明白他的定位是什么,感觉和BMP085一样,都不面向散户。嘿嘿

luzhengmao 能不能介绍一下怎么才能拿到yamaha的内部资料,或者是应该和谁联系,感谢。我们也是公司可能用得上。

出0入0汤圆

 楼主| 发表于 2009-8-14 01:08:26 | 显示全部楼层
的确不是面向散户的。

一般ic原厂都是这个样的,公司样子够大能省很多研发费用的。 我们基本没有买过评估板都是原厂送or借的。
东西调的有问题只要项目看上去比较有希望,原厂FAE也会来帮你。

出0入0汤圆

发表于 2009-8-18 09:30:42 | 显示全部楼层
BMP085的应用笔记,谁有呢?能拿来看看么?

出0入0汤圆

 楼主| 发表于 2009-8-18 11:50:04 | 显示全部楼层
原厂有sample code

出0入0汤圆

发表于 2009-8-18 12:43:52 | 显示全部楼层
没找到原厂的sample code。

出0入0汤圆

发表于 2009-8-18 20:54:55 | 显示全部楼层
楼主能提供原厂的 sample code么?

现在我的温度ADC 读出来是:0X743F 对么?

温度的话,我用台灯照过去的时候,ADC值能变大。

那个E2PROM的数据是只能读不能写么?

我读出来的数据依次是:
0XAA--0XBF

0X2B,0X2A,0XFF,0XFF,0XFF,0XFF,0X14,0X7C,0X48,0X6B,0X7C,0X50,0X31,0X16
0XFF,0X00,0X3B,0XFF,0X00,0XFF,0X21,0X09,0X60

出0入0汤圆

 楼主| 发表于 2009-8-18 21:43:06 | 显示全部楼层
读的不对,你自己算下来温度是多少?

0XAA--0XBF

读出来没有这样连续的FF的

我的 Temperature 274 就是计算完的温度 = 实际27.4度

出0入0汤圆

发表于 2009-8-18 21:53:46 | 显示全部楼层
楼主能留个联系方式么?

出0入0汤圆

 楼主| 发表于 2009-8-18 22:30:09 | 显示全部楼层
msn: luzhengmao@hotmail.com

你的呢?

出0入0汤圆

发表于 2009-8-19 00:17:03 | 显示全部楼层
ying_or_fei@hotmail.com

好像调通了,最后算出的温度值是 338,按手册说的精确到0.1摄氏度 是不是读数就是 33.8度  ADC=29634

压力oss过采样3 计算出来的是 7105         ADC=339115

给楼主发了邮件了。。。MSN加你没反应

没有对压力ADC的转换函数进行验证,如果楼主能把这个压力的ADC值带进去帮偶验证一下吧。

s16 CaculateUT(void)//计算温度
{
        vs32 X1,X2,T;
        X1=((s32)((gUTadc-gAC6)*gAC5))/32768;
        X2=(((s32)gMC)*2048)/(X1+gMD);
        gB5=X1+X2;
        T=(gB5+8)/16;
        return T;
}
s16 CaculateUP(void)//计算压力
{
        vs32 X1,X2,X3,B3,B4,B6,B7,P;
        B6=gB5-4000;
        X1=(((s32)gB2)*(((s32)B6)*B6))/2;
        X2=((s32)gAC2)*B6/2048;
        X3=X1+X2;
        B3=(((((s32)gAC1)*4)+X3)<<oss+2)/4;
        X1=B6*gAC3/8192;
        X2=(((s32)gB1)*(B6*B6))/16;
        X3=((X1+X2)+2)/4;
        B4=(((u32)gAC4)*(u32)(X3+32768))/16384;
        B7=(((u32)gUPadc)-B3)*(50000>>oss);
        if(B7<0X80000000)
                P=(B7*2)/B4;
        else
                P=(B7/B4)*2;

        X1=(P/256)*(P/256);
        X1=(X1*3038)/65536;
        X2=(-7357*P)/65536;
        P=P+(X1+X2+3791)/16;
       
        return P;
}

出0入0汤圆

 楼主| 发表于 2009-8-19 06:35:20 | 显示全部楼层
你在啥城市 7105 pa 计算出来的高度时 17595.7303米

肯定不对

出0入0汤圆

 楼主| 发表于 2009-8-19 06:45:41 | 显示全部楼层
仅供参考
有的地方我们还在和原厂沟通如果有啥进展会告诉大家的。
如获取参数 开机后是否一直有效,我现在自己设了个计数器 一定的时间后重新获取计算参数。

#define SMD500_PARAM_MG              3038        // calibration parameter
#define SMD500_PARAM_MH             -7357        // calibration parameter
#define SMD500_PARAM_MI              3791        // calibration parameter
#define SMD500_PARAM_MJ             64385        // calibration parameter

#define RE_CAL_PARAM                6000

typedef struct {
   short                 ac1;
   short                ac2;
   short                ac3;
   unsigned short        ac4;
   unsigned short        ac5;
   unsigned short        ac6;
   short                b1;
   short                b2;
   short                mb;
   short                mc;
   short                md;
   short                MeasurementMode;
} bmp085_smd500_calibration_param_t;


BOOL ReadPressure_Bmp085(long *plPressure, float *pfH, short *pTemperature)
{
        long pressure,x1,x2,x3,b3,b6;
        unsigned long b4, b7;
        short temperature;
   
        if (g_Bmp085Count == RE_CAL_PARAM)
        {
                g_Bmp085Count = 0;
                if(bmp_get085_cal_param() == FALSE)
                        return FALSE;
                hudelay(100);       
                if(bmp_get085_cal_param() == FALSE)
                        return FALSE;
                hudelay(100);
                if(bmp_get085_cal_param() == FALSE)
                        return FALSE;
                hudelay(100);
        }
       
        g_Bmp085Count ++;
       
        if( bmp085_get_ut() == FALSE )
        {
                return FALSE;
        }
       
        hudelay(10);
       
        if( bmp085_get_up() == FALSE )
        {
                return FALSE;
        }
       
        x1 = (((long) g_bmp085_UT - (long) g_bmp085Coefficient.ac6) * (long) g_bmp085Coefficient.ac5) >> 15;
        x2 = ((long) g_bmp085Coefficient.mc << 11) / (x1 + g_bmp085Coefficient.md);
        B5 = x1 + x2;

        temperature = (B5 + 8) >> 4;  // temperature in 0.1C       
  
        *pTemperature = temperature;
       

       
        b6 = B5 - 4000;
   
        //*****calculate B3************
        x1 = (b6*b6) >> 12;                  
        x1 *= g_bmp085Coefficient.b2;
        x1 >>=11;

        x2 = (g_bmp085Coefficient.ac2*b6);
        x2 >>=11;

        x3 = x1 +x2;

        b3 = (((((long)g_bmp085Coefficient.ac1 )*4 + x3) << g_bmp085Coefficient.MeasurementMode) + 2) >> 2;

        //*****calculate B4************
        x1 = (g_bmp085Coefficient.ac3* b6) >> 13;
        x2 = (g_bmp085Coefficient.b1 * ((b6*b6) >> 12) ) >> 16;
        x3 = ((x1 + x2) + 2) >> 2;
        b4 = (g_bmp085Coefficient.ac4 * (unsigned long) (x3 + 32768)) >> 15;
     
        b7 = ((unsigned long)(g_bmp085_UP - b3) * (50000>>g_bmp085Coefficient.MeasurementMode));
       
        if (b7 < 0x80000000)
        {
                pressure = (b7 << 1) / b4;
        } else {
                pressure = (b7 / b4) << 1;
        }
   
        x1 = pressure >> 8;
        x1 *= x1;
        x1 = (x1 * SMD500_PARAM_MG) >> 16;
        x2 = (pressure * SMD500_PARAM_MH) >> 16;
        pressure += (x1 + x2 + SMD500_PARAM_MI) >> 4;        // pressure in Pa  
       

        *plPressure = pressure;
        *pfH = alti_calc(pressure/100.00);
       
        return TRUE;
}

出0入0汤圆

发表于 2009-8-19 09:11:03 | 显示全部楼层
不错

出0入0汤圆

发表于 2009-8-19 09:58:28 | 显示全部楼层
你在啥城市 7105 pa 计算出来的高度时 17595.7303米

肯定不对


难道我坐的 歼十。。。

晚上再测一测

出0入0汤圆

 楼主| 发表于 2009-8-19 11:31:03 | 显示全部楼层
歼十性能参数估计性能 数据
机长 14.57米
翼展 8.78米
推力 122千牛顿
最大速度 2.0马赫
最大升限 18000米


看来还不是歼十的常规飞行哦,差不多是歼十的极限飞行了


上一个我同事做的转换工具
点击此处下载 ourdev_472546.xls(文件大小:14K) (原文件名:压力(Pa)高度(m)转换.xls)

出0入0汤圆

发表于 2009-8-19 11:59:57 | 显示全部楼层
谢谢楼主,我想您帮我看下我上面贴出的ADC值是否正常,呵呵

对比手册,差的倒不是很远,因为温度读对了。。。

晚上继续。。。


问下楼主,那个E2PROM 0XAA-0XBF里面的数据能改么?看手册上只给了读取数据。

出0入0汤圆

 楼主| 发表于 2009-8-19 13:13:16 | 显示全部楼层
不能改 另ADC值是否正常基本无法判断,它需要和0XAA-0XBF里面的数据 一起看得。

应该是只读

出0入0汤圆

发表于 2009-8-19 23:58:38 | 显示全部楼层
我的计算好了

#define osrs        0
#define oss                0
typedef         struct
{
        u32 UT;
        u32 UP;
        s32 P;
        u16 T;
        s16 AC1;
        s16 AC2;
        s16 AC3;
        u16 AC4;
        u16 AC5;
        u16 AC6;
        s16 B1;
        s16 B2;
        s16 MB;
        s16 MC;
        s16 MD;
} BMP085_Def;

BMP085_Def pBMP085;

void BMP085_Calcu(BMP085_Def *BMP085_DAT)
{
        s32 x1,x2,x3,B3,B5,B6;
        u32 B4,B7;
        x1 = (BMP085_DAT->UT - BMP085_DAT->AC6) * BMP085_DAT->AC5 / 32768;
        x2 = (BMP085_DAT->MC * 2048)/(x1 + BMP085_DAT->MD);
        B5 = x1 + x2;
        BMP085_DAT->T = (B5 + 8)/16;

        B6 = B5 - 4000;
        x1 = (BMP085_DAT->B2*(B6 * B6/4096))/2048;
        x2 = BMP085_DAT->AC2 * B6/2048;
        x3 = x1 + x2;
        B3 = (((BMP085_DAT->AC1 * 4 + x3) << osrs) + 2)/4;
        x1 = BMP085_DAT->AC3 * B6/8192;
        x2 = (BMP085_DAT->B1 * (B6 * B6/4096))/65536;
        x3 = ((x1 + x2) + 2)/4;
        B4 = BMP085_DAT->AC4 * (u32)(x3 + 32768)/32768;
        B7 = ((u32)(BMP085_DAT->UP) - B3) * (50000 >> oss);
        if(B7 < 0x80000000) BMP085_DAT->P = (B7 * 2)/B4;
        else BMP085_DAT->P = (B7/B4)*2;
        x1 = BMP085_DAT->P/256;
        x1 = (x1*x1*3038)/65536;
        x2 = (-7357* BMP085_DAT->P)/65536;
        BMP085_DAT->P = BMP085_DAT->P + (x1 + x2 + 3791)/16;

}

现在不过采样的话:

UT=0X7330
UP=0XA5A5

T=0X149
P=0X18972

折算出来的 温度 32.9摄氏度   海拔根据excel公式计算结果 50米

感谢 论坛里 powerint 和 楼主

我在上海,不知道这结果对否。。。

出0入0汤圆

 楼主| 发表于 2009-8-20 06:59:46 | 显示全部楼层
差不多把 温度有点高 sensor 可能离开电源和cpu 太近了

出0入0汤圆

发表于 2009-8-20 08:38:39 | 显示全部楼层
温度确实有点高,因为我开了空调,室内温度只有26°,但是调板儿的桌子上开了台灯。

昨天和前天上海的温度基本上都是36°上下。

“温度有点高 sensor 可能离开电源和cpu 太近了”

这个问题应该 不存在,因为我的板子是飞线到另外一个板子的。。。直接供电3.3V

出0入0汤圆

 楼主| 发表于 2009-8-20 09:47:16 | 显示全部楼层
3.3V 稳吗? 另0XAA-0XBF 多取几次

出0入0汤圆

发表于 2009-8-30 10:31:06 | 显示全部楼层
电压确实没有3.3V,不知道这个气压计是不是对电源要求很高???
内部ADC转换应该有内部的基准电压吧。。。

出0入228汤圆

发表于 2010-4-16 13:33:48 | 显示全部楼层
YAS525 手册能不能传一下呀
还有这玩意 精度如何

出0入0汤圆

发表于 2010-9-15 11:50:21 | 显示全部楼层
楼主的高度误差是多少啊?恭喜了

出0入0汤圆

发表于 2011-2-24 14:21:29 | 显示全部楼层
回复【27楼】fugeone
我的计算好了

你的计算修改了那里呢?我最近做的也是海拔插的很多,温度到差不多·

出0入0汤圆

发表于 2011-7-2 09:30:29 | 显示全部楼层
回复【35楼】ppa2001
-----------------------------------------------------------------------

朋友,你的改好了吗,我的也差老多呢,气压197,室温下43度

出0入0汤圆

发表于 2011-10-17 14:25:13 | 显示全部楼层
BMP085,好长时间啦,就是不准啊,哪位大侠給份51代码,感激不尽!!顺便问一句,大家读数稳定吗,漂不漂???
email:heizi8474@126.com

出0入0汤圆

发表于 2011-10-18 19:47:00 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-10-19 00:34:29 | 显示全部楼层
正要用BMP085

出0入0汤圆

发表于 2012-4-8 11:12:27 | 显示全部楼层
问一下,你们的精度多少啊,如果用于室内的话气压计应该不如超声波吧

出0入0汤圆

发表于 2012-8-3 18:31:51 | 显示全部楼层
你好,我在学习用bmp085,已经得出压强,想向你请教一下如何转换成高度呢?相对高度和绝对高度我都需要,能教一下我计算公式吗?手册上哪个不太懂,给个C语言的例子也行。万分感谢。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-27 02:13

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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