我的5607b气压计显示我在42949495.1m高度。。。难道我在月球?
用的是MAPGPS的arduino的程序。。。不会调试。。。谁知道大概啥原因不,MAPGPS帮忙看看噢http://cache.amobbs.com/bbs_upload782111/files_37/ourdev_623463MC4GD5.jpg
(原文件名:未命名.jpg) 回复【楼主位】mosidao
-----------------------------------------------------------------------
串口监视开始输出为:
Coefficient 1 : 44791
Coefficient 2 : 39709
Coefficient 3 : 28845
Coefficient 4 : 27134
Coefficient 5 : 31605
Coefficient 6 : 28992
A: 42949493.54m
A: 42949493.29m
A: 42949494.3m
A: 42949492.39m
A: 42949493.45m 回复【1楼】mosidao
-----------------------------------------------------------------------
硬件接线 1、2脚接3.3v 3、4脚接地5、6悬空 7 脚接A5 8脚接A4
我现在得判断是不是气压计有问题,淘宝买的还没确认付款呢。。。 把气压计放到地板上和举起来没啥反应。。。 你接10K上拉电阻了吗?
(上拉到3.3V) 回复【2楼】mosidao
回复【1楼】mosidao
-----------------------------------------------------------------------
硬件接线 1、2脚接3.3v 3、4脚接地5、6悬空 7 脚接a5 8脚接a4
-----------------------------------------------------------------------
脚接错了!
应该: 7脚接A4 (SDA), 8脚接A5 (SCL)
参见我那个洞洞板图. 晕,我7脚接 的A4 8脚接的A5,写错了。。。
上啦电阻接了的,7;8脚调过来的话输出有报错的,说明接的还是对的 把引脚重新焊了一遍。。。现在输出为,后面都是大数字了。感觉不像是硬件原因呢。。。
Coefficient 1 : 44791
Coefficient 2 : 39709
Coefficient 3 : 28845
Coefficient 4 : 27134
Coefficient 5 : 31605
Coefficient 6 : 28992
A: 460.75m
A: 208.63m
A: 209.99m
A: 212.36m
A: 212.70m
A: 212.87m
A: 389.14m
A: 136.1m
A: 136.86m
A: 139.23m
A: 140.58m
A: 140.8m
A: 141.26m
A: 141.1m
A: 315.80m
A: 314.77m
A: 65.62m
A: 66.71m
A: 66.37m
A: 67.4m
A: 67.88m
A: 66.12m
A: 68.13m
A: 67.63m
A: 68.39m
A: 68.5m
A: 111.19m
A: 241.27m
A: 42949664.89m
A: 42949665.6m 看了下MAPGPS的程序,发现我这里的大气压得到的高度是负数然后程序当成无符号数,就变成很大了。
现在的问题是,我这个气压计非常不稳,放在桌面上静置不不动很长时间,测得的气压值波动很大,有几百帕,导致计算得的高度值变化达两米之多,下面是实时得到的数据
mh : -50.92m
pressurepa103121pa
mh : -50.59m
pressurepa103117pa
mh : -50.59m
pressurepa103117pa
mh : -50.92m
pressurepa103121pa
mh : -50.76m
pressurepa103119pa
mh : -49.77m
pressurepa103107pa
mh : -50.92m
pressurepa103121pa
mh : -48.96m
大家帮忙看看哈 大气压在一天内是周期变化的, 有两个波峰/波谷.
这是我的MS5607B在同一地点不同时间测的:
(Afternoon 16:00)
A: 61.50m
A: 61.33m
A: 60.83m
A: 61.13m
(Nightfall 18:00)
A: 45.47m
A: 45.55m
A: 45.47m
A: 45.39m
(Night 19:43)
A: 30.97m
A: 30.88m
A: 30.97m
A: 30.72m
(Night 20:46)
A: 24.72m
A: 24.89m
A: 24.72m
A: 24.89m
(Night 21:50)
A: 19.15m
A: 19.23m
A: 19.48m
A: 19.31m
(Night 22:12)
A: 17.57m
A: 17.48m
A: 17.23m
A: 17.65m
(Night 22:34)
A: 15.90m
A: 15.98m
A: 15.82m
A: 15.57m
(Night 23:06)
A: 14.65m
A: 14.82m
A: 14.40m
A: 14.74m
(Night 23:30)
A: 14.57m
A: 14.74m
A: 14.82m
A: 15.15m 一天的变化这么大啊,这怎么才好用? 回复【10楼】eiglxl
一天的变化这么大啊,这怎么才好用?
-----------------------------------------------------------------------
用来飞四轴航模没关系呀!
电池续航也就十几分钟而已. 正常,气压计一般会有漂移,随着天气变化 问题是我的这些数值随时在变,而且范围达两米多。。。 回复【楼主位】mosidao
-----------------------------------------------------------------------
楼主 您好 我也在用ms5607 希望能与你交流 我qq是569969746 麻烦加下啊 你这个变化范围好大啊 改好了么 回复【13楼】mosidao
-----------------------------------------------------------------------
我的这个芯片数据也是很大,300多米,事实上我在平原上啊,怎么回事,你的是啥原因,搞定了么,求指点 是不是上电后先要标定一下初始高度啊 我的MS5607只能读出C0~C6,ADC值一直读不出来。不知什么原因?
uint8_t getBarometerDataBatchRead( uint8_t address7, uint8_t device_start_address, uint8_t* rxBuffer, uint8_t bytesToRead )
{
int i;
uint8_t returnval;
//Send start condition and address byte
returnval = i2cTransmitByte( 0XEE, I2C_SEND_START, I2C_NO_STOP );
if( returnval != I2C_SUCCESS )
{
return i2cFailed(returnval);
}
// Send start address for read
returnval = i2cTransmitByte( 0X40, I2C_NO_START, I2C_SEND_STOP );
if( returnval != I2C_SUCCESS )
{
return i2cFailed(returnval);
}
DelayMs( 10 );
// Send new start condition and initiate read
returnval = i2cTransmitByte( 0XEE, I2C_SEND_START, I2C_NO_STOP );
if( returnval != I2C_SUCCESS )
{
return i2cFailed(returnval);
}
returnval = i2cTransmitByte( 0X00, I2C_NO_START, I2C_SEND_STOP );
if( returnval != I2C_SUCCESS )
{
return i2cFailed(returnval);
}
returnval = i2cTransmitByte( 0XEF, I2C_SEND_START, I2C_NO_STOP );
if( returnval != I2C_SUCCESS )
{
return i2cFailed(returnval);
}
// Start read
rxBuffer = i2cReadByte( I2C_ACK_ENABLE, I2C_NO_STOP, &returnval );
if( returnval != I2C_SUCCESS )
{
return i2cFailed(returnval);
}
rxBuffer = i2cReadByte( I2C_ACK_ENABLE, I2C_NO_STOP, &returnval );
if( returnval != I2C_SUCCESS )
{
return i2cFailed(returnval);
}
// Read the last byte
rxBuffer = i2cReadByte( I2C_ACK_DISABLE, I2C_SEND_STOP, &returnval );
if( returnval != I2C_SUCCESS )
{
return i2cFailed(returnval);
}
ADC= (g_i2cRxBuf << 16)| g_i2cRxBuf<<8| g_i2cRxBuf;
return I2C_SUCCESS;
}
页:
[1]