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

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

mwc mega 超声波定高

  [复制链接]
跳转到指定楼层
楼主
发表于 2012-12-11 12:48 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
超声波模块支持GPIO和串口两种模式,一开始用GPIO模式
  1.   digitalWrite(TrigPin,HIGH);
  2.   delayMicroseconds(50);
  3.   digitalWrite(TrigPin,LOW);

  4.   Time_Echo_us = pulseIn(EchoPin,HIGH,40000);
复制代码
结果发现在没有收到超声波信号的时候puseIn方法延时非常厉害,严重影响了其他传感器的测量,后来改用串口模式
  1. unsigned int hl = 0;
  2. unsigned int ll = 0;
  3. unsigned int Len_mm = 0;

  4. static uint32_t currentTime = 0;
  5. static uint32_t rcTime  = 0;
  6. static uint16_t previousTime = 0;
  7. static uint16_t cycleTime = 0;

  8. void setup(){
  9.   Serial.begin(9600);
  10.   Serial3.begin(9600);
  11. }

  12. void loop(){
  13.   if(currentTime>rcTime){//50Hz
  14.     rcTime = currentTime + 20000;
  15.     Serial3.write(0X55);
  16.   }
  17.   else{
  18.     if(Serial3.available()>=2){
  19.       hl=Serial3.read();
  20.       ll=Serial3.read();
  21.       Len_mm = (hl*256+ll)/10;
  22.       if((Len_mm >1)&&(Len_mm<4000) ){
  23.         Serial.print("OK:");
  24.         Serial.print(Len_mm,DEC);
  25.         Serial.println("cm");
  26.       }else{
  27.         Len_mm = 0;
  28.       }
  29.       Serial3.flush();
  30.     }
  31.   }


  32.   currentTime = micros();
  33.   cycleTime = currentTime - previousTime;
  34.   previousTime = currentTime;
  35. }

复制代码
这段代码也是按mwc的传感器测量思路,测试频率50HZ
初步测试感觉比较成功,测量速度很快,下一步准备添加到MWC中

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

53
发表于 2014-9-20 10:35 | 只看该作者
lee3327 发表于 2013-5-20 00:47
我也想在MWC上添加超声波,楼主有改好的固件吗?可以发给我一份吗?谢谢!我的邮箱

你好请问你在MWC中加入超声波定高成功了吗

52
发表于 2014-9-2 19:15 | 只看该作者
很赞 支持一个
51
发表于 2014-9-2 17:34 | 只看该作者
abccbef 发表于 2012-12-11 12:49
已经搞定,0到2.5米内高度采用超声波,超过范围的使用气压计,在multiwii_dev_r1240上修改完成首先在config ...

lz使用超声波定高,需要调整PID吗?

50
发表于 2014-6-11 21:23 | 只看该作者
求指导啊!最近买了一个MWC2.5的飞控,感觉定高不是很够用,想用超声波!
49
发表于 2014-2-21 16:15 | 只看该作者
最好是用IO中断触发来接收超声波的数据吧。这样效率高,还有,楼主现在做得怎样了
48
发表于 2013-12-21 17:11 | 只看该作者
这个帖子有点nb呀
头像被屏蔽
47
发表于 2013-12-21 13:36 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
46
发表于 2013-9-5 01:29 | 只看该作者
abccbef 发表于 2012-12-11 12:49
已经搞定,0到2.5米内高度采用超声波,超过范围的使用气压计,在multiwii_dev_r1240上修改完成首先在config ...

建议外加一个湿度传感器这样精度大概能去到±1CM。

45
发表于 2013-9-4 23:37 | 只看该作者



楼主.经查.你这代码应该是2.1的版本的.求问可不可以写个2.2后版本的.

2.2的自稳给力呀....

44
发表于 2013-9-4 18:08 | 只看该作者
回复赚积分喽!
43
发表于 2013-9-4 18:06 | 只看该作者
abccbef 发表于 2012-12-11 12:49
已经搞定,0到2.5米内高度采用超声波,超过范围的使用气压计,在multiwii_dev_r1240上修改完成首先在config ...

楼主.我的代码添加到 这一步 sensor

时.添加你的代码后.我通过校验代码功能发现.报错.

我不知道是因为没有所有代码都加外出的错.还是我没加对地方.

我会些JAVA的AS3的语法.但是对于这个代码还是不大清础.

楼主可以给一定帮助么!我也想给我的MWC加上超声

我是2560的板子.

42
发表于 2013-9-3 17:02 | 只看该作者



楼主你的这个代码

是在什么版本代码基础上修该添加的?

41
发表于 2013-8-30 20:53 | 只看该作者

学习了
40
发表于 2013-7-19 20:36 | 只看该作者
gxhifi 发表于 2013-7-19 12:00
神......

真的可以这么干嘛!我的MWC飞控板带的低精气压.之前也这么想过.但是有懂单片机的兄弟说.直接焊 ...

不能直接焊上去……用I2C接

39
发表于 2013-7-19 12:00 | 只看该作者
selith 发表于 2012-12-11 14:55
本身的气压焊掉,扩展高精的就行了……

神......

真的可以这么干嘛!我的MWC飞控板带的低精气压.之前也这么想过.但是有懂单片机的兄弟说.直接焊掉换上的话.XXX硬件地址不一样不能用?有这回事!

求真相....如果可以焊,我马上丢掉这Sonar

38
发表于 2013-7-19 09:11 | 只看该作者
不懂,学习中1!
37
发表于 2013-7-19 06:29 | 只看该作者
好厉害,这是神马语言?
36
发表于 2013-7-19 02:24 | 只看该作者
abccbef 发表于 2012-12-11 12:49
已经搞定,0到2.5米内高度采用超声波,超过范围的使用气压计,在multiwii_dev_r1240上修改完成首先在config ...

楼主!不得不问细些.
像在IMU那段里面的代码是否完全.我会点点JAVA

看这段的代码觉得有点不完整.是这样么!求完整代码了!不会单片机不会C头大啊

35
发表于 2013-7-8 23:20 | 只看该作者
嗯~先顶~留着~谢楼主
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

关闭

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

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