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

5iMX.com 我爱模型 玩家论坛 ——专业遥控模型和无人机玩家论坛(玩模型就上我爱模型,创始于2003年)
楼主: 切风40.83
打印 上一主题 下一主题

一步一步实现,超声波直升机高度锁定

[复制链接]
61
 楼主| 发表于 2011-6-21 08:35 | 只看该作者
点击查看详情
目前我又对程序进行了改进,只要拨开关,飞碟就会在当前飞行高度锁定。

测试结果还是一样,飞碟会上下抖动。

我现在在等一块重一点的电池到货,增加点重量或许会减小抖动。 现在我用的电池是 11.1V 2600mah 25C ACE的电池, 容量小 重量轻。因为我飞这只飞碟 油门永远不会超过30%(四个电调都是25A,你懂的), 所以油门控制不够细腻 而且飞的时间太短。 重的电池一到 说不定就解决问题了。

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

62
发表于 2011-6-21 23:13 | 只看该作者
这个超声波测距~~~距离不过10来米,精确度0.1米左右,以前用过
63
发表于 2011-6-21 23:29 | 只看该作者
高人
64
发表于 2011-6-22 12:32 | 只看该作者
原帖由 切风40.83 于 2011-6-21 08:23 发表
回复:dongfang

关于电子方面的知识都是我自学的,没有系统性的学过,都是要用什么就自学什么。请理解 并多多指教。

这个变换函数的意思是吧 0,5000 之间的数字变成 90 到 65

因为我没有自己写输出 PWM 信 ...

只要servo库还能正常工作,delay就不是必要的。或者越小越好,你可以写一个loop,里面只有myservo.write(duration);
看看是否正常,我记得是正常的。

至于你的那个map函数,这个用法肯定是有问题的:
假设原 duration 0~5000是离地高度的毫米数,你的电机能在电调位置X的时候正好拖起你的飞机(X可以试验获得),你希望稳定在离地高度Y毫米处。那这个函数就应该这么写:
new_duration = (duration-Y)*Z+X
其中,Z的大小要通过实验获得,也就是实际上的感度。超复杂的,就把Z做成一个与飞行姿态有关的函数。
65
发表于 2011-6-22 12:41 | 只看该作者
原帖由 切风40.83 于 2011-6-21 08:35 发表
目前我又对程序进行了改进,只要拨开关,飞碟就会在当前飞行高度锁定。

测试结果还是一样,飞碟会上下抖动。

我现在在等一块重一点的电池到货,增加点重量或许会减小抖动。 现在我用的电池是 11.1V 2600mah  ...

就是前面说的那个式子,实际上,给多少油门,不仅取决于模型现在的高度,与目标高度的差距,还与目前的模型正在以什么速度上升下降有关。超声波传感器的更新频率还是太低了。要做得好,就上CCD:地面平台上放几个红外LED管,CCD用高速红外敏感的,拍一张照片就能把静止姿态全部解出来了。
66
 楼主| 发表于 2011-6-22 23:22 | 只看该作者
回复 65 楼 dongfang

现在的程序流程是这样的:  

手动起飞  →  手动切换模式 → 记录当前油门值X → 记录当前高度Y → 等20毫秒


循环 { → 记录当前高度 Y1 →      Y1 = Y1 - Y     →     用map 函数 处理 Y1    →      X1 = X + Y1      →     电调输出 X1  → 等待20毫秒 }

现在 通过试验 对等待20毫秒 进行修改会达到些效果
调太高会抖得快幅度小   调太低会抖得慢幅度大  
我猜抖动的问题不是调这个时间。   或者我猜错了,只是没找到这个时间调节的平衡点

[ 本帖最后由 切风40.83 于 2011-6-22 23:29 编辑 ]
67
 楼主| 发表于 2011-6-22 23:31 | 只看该作者
罢了, 我把这时间去掉试试
68
发表于 2011-6-22 23:56 | 只看该作者
不懂,帮顶!
69
发表于 2011-6-23 09:54 | 只看该作者
原帖由 切风40.83 于 2011-6-22 23:22 发表
回复 65 楼 dongfang

现在的程序流程是这样的:  

手动起飞  →  手动切换模式 → 记录当前油门值X → 记录当前高度Y → 等20毫秒


循环 { → 记录当前高度 Y1 →      Y1 = Y1 - Y     →     用map 函数 ...


我觉得你做的,和我说的已经差不多了,只是X1 = X + Y1 这里,需要调整为X1 = X + Y1*Z,Z的大小需要测试得知。
另外,X本身最好也是细微变化的,以适应电池电量下降的情况。
70
 楼主| 发表于 2011-6-24 09:03 | 只看该作者
对 电池电量也是个问题,满电的时候 和 贫电的时候 X 的值是不一样的。
71
发表于 2011-6-24 10:21 | 只看该作者
学习......
以后用得着:em21:
72
发表于 2011-6-24 14:56 | 只看该作者
不错
73
 楼主| 发表于 2011-7-25 09:04 | 只看该作者
回复71楼: 又想多了,贫电就应该降落。如果高度不能锁定了,说明该充电了。
74
发表于 2011-7-25 09:33 | 只看该作者
可不可以问一下,楼主是学什么的,在美国哪个大学?我是学EEE的,接触的东西差不多,但是我才大一,希望以后能多联系。p.s.我做过跟APM有关的东西。

[ 本帖最后由 bobmaxiao 于 2011-7-25 09:34 编辑 ]
75
发表于 2011-7-26 11:46 | 只看该作者

回复 7楼 crazyboyyy 的帖子

滤波啊!!!
76
发表于 2011-7-26 11:51 | 只看该作者

回复 42楼 40560335 的帖子

那个……你被人怎么坑了?他卖你什么了?
77
发表于 2011-7-26 11:53 | 只看该作者

回复 42楼 40560335 的帖子

那个……你被人怎么坑了?他卖你什么了?
还有啊,气压传感器不是更受天气影响么?
季节天气都会影响气压的啊!!怎么能放弃AGL而去选气压计来测高呢?
厂家都是说自主起降要配超声波高度计,难道生产商那么不靠谱?
78
发表于 2011-7-26 12:37 | 只看该作者
79
 楼主| 发表于 2011-10-25 09:44 | 只看该作者
继续!

现在发现定高必须严格按照PID 算法控制   按照我的算法,这飞碟总是有点上下颠簸。

拨开关之后20ms
测量距离:ode
测量油门值:ch3
油门输出:ch3

进入循环后
测量当前高度:de
de = de - ode + d*(pde - de);
hi = (de - ode)/de;

powerout = map( de, -3000, +3000, 10, -10) + map( hi, -3000, 3000, 10, -10) + ch3;

pde = de;
dh = dh + de;

输出油门值: powerout



明天试试看咯!
80
发表于 2011-10-25 11:48 | 只看该作者
有文化真好。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

关闭

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

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