5iMX宗旨:分享遥控模型兴趣爱好

5iMX.com 我爱模型 玩家论坛 ——专业遥控模型和无人机玩家论坛(玩模型就上我爱模型,创始于2003年)
查看: 11480|回复: 30
打印 上一主题 下一主题

MWC用GPS导航板接超声波测距模块的方法

[复制链接]
跳转到指定楼层
楼主
发表于 2015-2-7 21:13 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 szhcs 于 2015-2-9 10:31 编辑

本文的核心内容来自于一篇“mwc se v2加超声波_笔记20131007”(作者“飞天猪”)的文章,在此先致谢。

“飞天猪”的这篇文章在网络上百度不到,我好像也是在一个QQ群里找到的,为了方便大家使用,在这里结合自己的实践,转一下。

一、硬件安装
我用的导航板是CRIUS的I2C-GPS,GPS模块是CRIUS-NEO-6,(当时与飞控板一起买的),
超声模块是网上5元钱一块的HC-SR04。
导航板自己加焊了针脚,方便接超声波模块和上载程序。
硬件连接图


超声波模块用支架装在底板侧面


GPS模块装在飞控上面,I2C导航板装在上层板下面。





二、导航板软件  I2C_GPS_NAV_v2_2
config.h文件中修改下列代码,打开SONAR支持
#define SONAR                                                        // USE Sonar
因为这里我们使用的SR-04模块是乒乓脉冲方式,下面改为
#define PINGPONG
//#define MAXBOTIX_PWM                                //PWM output mode sonar

上载到导航板。

飞天猪的原文中还对I2C_GPS_NAV_v2_2文件进行了修改,但我发现这样改后测距反而不准了,其实不用改。

三、飞控软件 MWC2.3
代码修改
1、config.h文件,打开I2C_GPS和I2C_GPS_SONAR的设置
  #define I2C_GPS
    // If your I2C GPS board has Sonar support enabled
  #define I2C_GPS_SONAR

2、IMU.cpp 文件,增加逻辑:当超声波读数低于3米时,代替气压计读数
  uint16_tcurrentT = micros();
  uint16_tdTime;
  static int32_t tmpEstAlt = 0; //in cm 用于替换原气压高度的LPF运算,方便与超声波读数切换

  dTime =currentT - previousT;
  if(dTime < UPDATE_INTERVAL) return 0;
previousT = currentT;

if(calibratingB > 0) {
   logBaroGroundPressureSum = log(baroPressureSum);
   baroGroundTemperatureScale = (baroTemperature + 27315) *  29.271267f;
    calibratingB--;
  }

  //baroGroundPressureSum is not supposed to be 0 here 气压地面压力和不应为0
  BaroAlt= ( logBaroGroundPressureSum - log(baroPressureSum) ) *baroGroundTemperatureScale;

  // 用tmpEstAlt变量替换原alt.EstAlt变量进行气压高度低通滤波
tmpEstAlt = (tmpEstAlt * 6 + BaroAlt * 2) >> 3; //additional LPF to reduce baro noise (faster by 30 μs)

  //在这里给alt.EstAlt赋值
if(sonarAlt>0 && sonarAlt<300 ) {
         alt.EstAlt = sonarAlt; //来自声呐的值
  }
  else {
         alt.EstAlt = tmpEstAlt; //来自气压计的值
  }

  #if(defined(VARIOMETER) && (VARIOMETER != 2)) ||!defined(SUPPRESS_BARO_ALTHOLD)

以上红字是修改部分或增加部分

上载到飞控板

四、GUI
用GUI查看,只要超声测出的高度小于3米,就使用超声波模块的高度,一条直线。


五、试飞
很遗憾,我试飞失败了。
拿手里,离地一米左右,高度显示准确,但只要一推油门,高度马上就乱了,一直在0.3米左右乱跳,个人感觉是电机和桨的声音干扰了超声测距。
没再继续研究,以失败告终,希望有兴趣者能找出真正的问题并成功。

原作者“飞天猪”试飞成功了,有视频,他使用的也是HC-SR04模块
http://video.baomihua.com/37784322/33935638

I2C导航板的使用可以参考这个帖子
http://bbs.5imx.com/bbs/forum.php?mod=viewthread&tid=782677





欢迎继续阅读楼主其他信息

沙发
发表于 2015-2-7 21:39 | 只看该作者
沙发,帮顶
3
发表于 2015-2-7 22:03 | 只看该作者
顶贴!这个一直没有比较好的程序应对HC-SR04。见过许多人改程序。也有几个弄的定高很好的。
4
发表于 2015-2-8 15:06 | 只看该作者
感谢楼主把方法奉献出来和大家,希望  Mwc飞控更強大。
5
发表于 2015-2-8 15:07 | 只看该作者
感谢楼主把方法奉献出来和大家,希望  Mwc飞控更強大。
6
发表于 2015-2-8 21:14 | 只看该作者
想问一下楼主,我的MWC代码里面没找到i2c GPS SONAR,这个是不支持i2c声呐??我的里面有#define tinygps SONAR 应该不一样吧?如果方便的话 麻烦能不能分享一下您的改好的MWC代码 963786615@qq.com  先谢谢了~

7
 楼主| 发表于 2015-2-8 21:28 | 只看该作者
小三体 发表于 2015-2-8 21:14
想问一下楼主,我的MWC代码里面没找到i2c GPS SONAR,这个是不支持i2c声呐??我的里面有#define tinygps S ...

你那个是MWC2.2,我这个是MWC2.3
8
发表于 2015-2-8 21:32 | 只看该作者

感谢你分享出来 我正在研究 ~~
9
发表于 2015-2-8 21:59 | 只看该作者
szhcs 发表于 2015-2-8 21:28
你那个是MWC2.2,我这个是MWC2.3

额刚才我在淘宝逛了一圈没看到2.3....请教大神2.3硬件上面有什么变化?

10
发表于 2015-2-8 22:02 | 只看该作者
szhcs 发表于 2015-2-8 21:28
你那个是MWC2.2,我这个是MWC2.3

如果是代码上面改进 还是麻烦您分享一下~谢谢

11
 楼主| 发表于 2015-2-8 22:44 | 只看该作者
本帖最后由 szhcs 于 2015-2-9 10:20 编辑
x3体 发表于 2015-2-8 21:59
额刚才我在淘宝逛了一圈没看到2.3....请教大神2.3硬件上面有什么变化?

看来你给版本号绕晕了。
MWC软件,比较常用的是Ver2.2、Ver2.3,简称MWC2.2、MWC2.3。
MWC硬件,就是飞控板,目前淘宝上主要有CRIUS MWC SE V2.0、CRIUS SE V2.5、MWC SE V2.5,等等,以前还有 Lite、AIOP等版本。
我这里的MWC2.3是指软件。
建议多潜潜水,翻翻以前的帖子。
因为代码改的不多,改起来很容易,所以没必要分享改好的代码。




12
发表于 2015-2-9 09:39 | 只看该作者
本帖最后由 小三体 于 2015-2-9 09:45 编辑
szhcs 发表于 2015-2-8 22:44
看来你给版本号绕晕了。MWC软件,比较常用的是Ver2.2、Ver2.3,简称MWC2.2、MWC2.3。
MWC硬件,就是飞 ...

噢噢,明白了谢谢


13
发表于 2015-2-11 19:00 | 只看该作者
正在搞这个。学习
来自苹果客户端来自苹果客户端
14
发表于 2015-3-13 20:26 | 只看该作者
谢谢楼主!!我刚才好像成功了。。。在低空的时候定高效果比之前用气压计的好,具体参数有没有收到影响还要加上数传后在线看Alt才知道~~
15
发表于 2015-3-13 20:35 | 只看该作者
超声波经常掉高度是怎么回事。。在0.5米一下非常稳定,到了1米就有小范围的波荡,但是经常会掉到0左右甚至是负值。。lz有遇到过吗
16
 楼主| 发表于 2015-3-13 21:31 | 只看该作者
1263436446 发表于 2015-3-13 20:35
超声波经常掉高度是怎么回事。。在0.5米一下非常稳定,到了1米就有小范围的波荡,但是经常会掉到0左右甚至 ...

我没有遇到过。我的问题是超声受噪声干扰,不管飞多高,高度就是只有0.2m左右。
你的问题我感觉是超声测距失败,高度改为气压值,出现了负值(超声测距不会有负值)。


17
发表于 2015-3-13 22:42 | 只看该作者
szhcs 发表于 2015-3-13 21:31
我没有遇到过。我的问题是超声受噪声干扰,不管飞多高,高度就是只有0.2m左右。
你的问题我感觉是超声测 ...

我比较奇怪的是在1米的距离超声都会出现负值。。虽然只是骤低地震荡了一下。。。但是在1m的时候经常出现。。而且我摇晃机身的时候频率要增加一些

18
发表于 2015-3-14 23:37 | 只看该作者
最新的代码 code g oogle 早就被墙了,楼主放出来吧
19
 楼主| 发表于 2015-3-15 18:34 | 只看该作者
pkjapan 发表于 2015-3-14 23:37
最新的代码 code g oogle 早就被墙了,楼主放出来吧

google早就墙了,建议找个MWC的QQ群加一下,主要的代码都有。

20
发表于 2015-4-4 11:30 | 只看该作者
用你的办法试了,出现两个问题,无法解锁,高度依然很乱,貌似声呐没起作用
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

关闭

【站内推荐】上一条 /1 下一条

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