luzhengmao 发表于 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

pitolan 发表于 2009-8-13 12:04:19

【楼主位】 luzhengmao

先恭喜下﹗

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

346675655 发表于 2009-8-13 12:27:21

我用smd500 直接读出来的温度和气压值是一样的
楼主遇到过这种情况吗

rui.chan 发表于 2009-8-13 12:28:22

LZ 用的啥芯片,不给原理图这些倒是可以说说的吧,好歹也算给大家点参考资料啊~
如果只是过来炫耀下就算了,不管怎么说,先恭喜LZ啊

aaa1982 发表于 2009-8-13 13:01:08

楼主用的什么罗盘,多少钱,哪里买的

luzhengmao 发表于 2009-8-13 13:15:58

罗盘 是雅马哈 YAS525_MS-1C
气压计 是 博士 BMP085 和 smd500 一个系列的

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

都是2美金左右吧

aaa1982 发表于 2009-8-13 14:34:05

BMP085个人感觉不错,曾经写过一篇笔记,晚些时候发上来。

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

另外:

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

luzhengmao 发表于 2009-8-13 17:34:10

雅马哈 的就一个问题非常难焊 BGA

http://cache.amobbs.com/bbs_upload782111/files_17/ourdev_470570.JPG
(原文件名:MS_1c.JPG)

XIE2099 发表于 2009-8-13 19:56:44

恭喜楼主了!

luzhengmao 发表于 2009-8-13 20:38:51

BMP085网上下的资料就可以做了 ,这2个传感器没啥原理图 就是连上电源和iic就可以了资料我以前贴过

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

aaa1982 发表于 2009-8-13 22:37:29

怎么才能拿到yamaha的内部资料呢?或者说怎么才能得到他的原厂支持。不明白他的定位是什么,感觉和BMP085一样,都不面向散户。嘿嘿

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

luzhengmao 发表于 2009-8-14 01:08:26

的确不是面向散户的。

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

fugeone 发表于 2009-8-18 09:30:42

BMP085的应用笔记,谁有呢?能拿来看看么?

luzhengmao 发表于 2009-8-18 11:50:04

原厂有sample code

ququ625 发表于 2009-8-18 12:43:52

没找到原厂的sample code。

fugeone 发表于 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

luzhengmao 发表于 2009-8-18 21:43:06

读的不对,你自己算下来温度是多少?

0XAA--0XBF

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

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

fugeone 发表于 2009-8-18 21:53:46

楼主能留个联系方式么?

luzhengmao 发表于 2009-8-18 22:30:09

msn: luzhengmao@hotmail.com

你的呢?

fugeone 发表于 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;
}

luzhengmao 发表于 2009-8-19 06:35:20

你在啥城市 7105 pa 计算出来的高度时 17595.7303米

肯定不对

luzhengmao 发表于 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;
}

ququ625 发表于 2009-8-19 09:11:03

不错

fugeone 发表于 2009-8-19 09:58:28

你在啥城市 7105 pa 计算出来的高度时 17595.7303米

肯定不对


难道我坐的 歼十。。。

晚上再测一测

luzhengmao 发表于 2009-8-19 11:31:03

歼十性能参数估计性能 数据
机长 14.57米
翼展 8.78米
推力 122千牛顿
最大速度 2.0马赫
最大升限 18000米


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


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

fugeone 发表于 2009-8-19 11:59:57

谢谢楼主,我想您帮我看下我上面贴出的ADC值是否正常,呵呵

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

晚上继续。。。


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

luzhengmao 发表于 2009-8-19 13:13:16

不能改 另ADC值是否正常基本无法判断,它需要和0XAA-0XBF里面的数据 一起看得。

应该是只读

fugeone 发表于 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 和 楼主

我在上海,不知道这结果对否。。。./emotion/em025.gif

luzhengmao 发表于 2009-8-20 06:59:46

差不多把 温度有点高 sensor 可能离开电源和cpu 太近了

fugeone 发表于 2009-8-20 08:38:39

温度确实有点高,因为我开了空调,室内温度只有26°,但是调板儿的桌子上开了台灯。

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

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

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

luzhengmao 发表于 2009-8-20 09:47:16

3.3V 稳吗? 另0XAA-0XBF 多取几次

fugeone 发表于 2009-8-30 10:31:06

电压确实没有3.3V,不知道这个气压计是不是对电源要求很高???
内部ADC转换应该有内部的基准电压吧。。。

wxws 发表于 2010-4-16 13:33:48

YAS525 手册能不能传一下呀
还有这玩意 精度如何

psbhero 发表于 2010-9-15 11:50:21

楼主的高度误差是多少啊?恭喜了

ppa2001 发表于 2011-2-24 14:21:29

回复【27楼】fugeone
我的计算好了

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

heizi8474 发表于 2011-7-2 09:30:29

回复【35楼】ppa2001
-----------------------------------------------------------------------

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

heizi8474 发表于 2011-10-17 14:25:13

BMP085,好长时间啦,就是不准啊,哪位大侠給份51代码,感激不尽!!顺便问一句,大家读数稳定吗,漂不漂???
email:heizi8474@126.com

dujun168 发表于 2011-10-18 19:47:00

mark

ksh84222 发表于 2011-10-19 00:34:29

正要用BMP085

Licke 发表于 2012-4-8 11:12:27

问一下,你们的精度多少啊,如果用于室内的话气压计应该不如超声波吧

zzforce11 发表于 2012-8-3 18:31:51

你好,我在学习用bmp085,已经得出压强,想向你请教一下如何转换成高度呢?相对高度和绝对高度我都需要,能教一下我计算公式吗?手册上哪个不太懂,给个C语言的例子也行。万分感谢。
页: [1]
查看完整版本: 我的罗盘和气压计调通了