5iMX.com 我爱模型 玩家论坛 ——专业遥控模型和无人机玩家论坛(玩模型就上我爱模型,创始于2003年)

标题: DIY自动返航OSD正式开始,挖个坑,慢慢填日志~~~ [打印本页]

作者: dstdx72    时间: 2010-11-14 10:48
标题: DIY自动返航OSD正式开始,挖个坑,慢慢填日志~~~
酝酿一段时间了,现在开个贴,算正式开始吧!

基本元器件都买差不多了,arm7仿真机也买了,可以开始了。元器件还差GPS模块,一只气压传感器,以及其他一切零散件,以后边做边买吧。

哎,DIY最麻烦的地方在于买材料,麻烦得很,也很费时间

废话少说,先上系统结构图
作者: dstdx72    时间: 2010-11-14 11:00
计划先做平衡模块。

因为没有自动平衡情况下,自动返航危险性挺高。我目前的载机为了灵活性没有设置上反角,必须靠副翼来控制平衡,所以必须先做它了

原先计划上水平仪,可以几乎连续运行无限时间保持平衡,但本次DIY主要针对F P V设计,每次飞行时间都不长,1个小时飞行时间基本到顶,2个小时已经是F P V飞行的绝对极限了

所以先试验传统的陀螺仪+积分的惯性平衡方案,尽管这种方案的累积误差是致命缺 陷,但我只要把漂移精度控制在1度/小时内,绝对够满足F P V应用了。这样,1个小时或2个小时的连续飞行,最多平衡漂移不过2度,不会影响载机安全。

不过,因为是首次制作类似电路,为可靠起见,还是选用了高精度的传感器,最大量程达2000度/秒,也就是说,哪怕飞行途中遭遇很强的突然风扰,都在它的控制范围内。
所以预期最后的成品,平衡误差应该不会达到1度/小时

如果这套方案失败了,再试验早先考虑的更简单可靠的水平仪方案
作者: dstdx72    时间: 2010-11-14 11:13
由于每天只有一点点时间来做,中间PCB打样,购买元件等都要耽误很多时间,估计整个计划完成时间会很长

由于是第一次做,经验也不足,还望有共同爱好的同学多加指教哦!有什么不对的地方,或有更好的建议,希望不吝赐教~~~

开这个贴,一部分意义也在于敦促自己,不要半途而废,无论成败,坚持到底,希望同好们一起监督我,呵呵

本贴我会根据进度,不断更新进展情况,包括返工、更改方案等等,算是一本DIY日记吧

现在开始画图了,争取本周末能把平衡模块的pcb完成,交付打样
以前都使用的是protel99,现在趁机学习下DXP,用DXP来完成。
同时还要学习新软件使用,确实有点麻烦。

目前考虑在平衡模块上集成一个2A的UBEC,这样以后就可以不用电调上的线性BEC了,供电效率应该能提高点,同样电源配置飞行时间能更长一点
作者: dstdx72    时间: 2010-11-14 11:24
整套系统构思如下:

用遥控的一个3位开关来控制飞行模式,开关往上打,为正常的遥控飞行;开关打中,为辅助平衡模式,这个模式下平衡仪要介入控制,维持飞机平衡;开关往下打,为自动模式,可以按预设的几个GPS坐标点飞行,到达最后一个坐标点后掉头返航。如果没有预设定点,那么进入自动模式的瞬间则开始返航,回到起点范围100米左右开始定高盘旋,直到遥控介入控制(返航高度和盘旋高度都依据预先设定)

因此,为保证失控返航,接收机采用有失控保护的,在失控保护的时候设置为控制开关往下打。这样,一旦失控,接收机就输出自动模式,开始执行回航程序。
作者: d2008    时间: 2010-11-14 11:39
:em15: 学习中
作者: wd8982082    时间: 2010-11-14 12:16
不知楼主要用什么气压传感器,我手上有5534c
作者: qingdaofu1    时间: 2010-11-14 15:47
好,等有时间交流下,一起研究
作者: extraline    时间: 2010-11-14 16:17
占位,学习,支持
作者: arone    时间: 2010-11-14 16:26
支持DIY,顶
作者: rs1999    时间: 2010-11-14 17:22
支持DIY  最好能写明元器件型号,让我们这些门外汉离楼主近点 :em15:
作者: lkcumt    时间: 2010-11-14 17:55
好犀利,期待更详细的资料
作者: lxl82511    时间: 2010-11-14 18:07
支持楼主DIY:em26:
作者: ian11122840    时间: 2010-11-14 18:41
不错,支持下
不过不知楼主开发软硬件经验如何?
呵呵
我是做过算法的,算法部分有点难哈…
作者: dstdx72    时间: 2010-11-14 18:58
原帖由 ian11122840 于 2010-11-14 18:41 发表
不错,支持下
不过不知楼主开发软硬件经验如何?
呵呵
我是做过算法的,算法部分有点难哈…

感谢支持,还有楼上所有的同学!还望万一失败了莫见笑哦:em15:
开发经验这个不好说,以前软硬件都搞过一些,曾经还企图编个类似AtuoCAD之类的绘图软件,最后没坚持下去:em19: 绘图软件规模太大,一个人无法完成
硬件以前搞过51,196,pic,ARM7是第一次接触,不过前几天看了下PDF,从应用角度上看大体上和其他单片机差不多,但性能却强多了去了
对我来说,都难,不只是算法难哦,还要熟悉protel dxp的开发环境,哈哈
不过难才有趣味哈,DIY嘛,乐趣就在于挑战难度
以后遇到算法问题,还要向兄台多多请教哦:em00:
作者: dstdx72    时间: 2010-11-14 19:05
原帖由 wd8982082 于 2010-11-14 12:16 发表
不知楼主要用什么气压传感器,我手上有5534c


我用的是5540C,不过只买了1只,还差一只
曾考虑用5534C,但它是透明封装,怕光线影响,最后选了5540C
作者: dstdx72    时间: 2010-11-14 19:12
原帖由 rs1999 于 2010-11-14 17:22 发表
支持DIY  最好能写明元器件型号,让我们这些门外汉离楼主近点 :em15:


兄台谦虚了。
我cpu用LPC2103,OSD芯片用的max7456,电流传感器用的ACS754,陀螺仪用的LPR550,气压计用的MS5540C,GPS模块还没定,买不到便宜好用的就买JRC的G595或598+有源天线自己焊,试试看效果再说
要是小慈同学肯大力支持,就用大辰的咯:em15:
作者: heuyck    时间: 2010-11-14 21:11
楼主开始了,祝你成功.给你个建议:
看LPR550的资料 你还是用±500°/s的量程比较合算,
2mV/ °/s的精度,要用运放,不然10位ADC的2103是搞不定的.
LPR550有0.08°/s/°C的0点温飘,加上noise,用10位的ADC,想控制在1度/小时内是没希望的.
作者: uery    时间: 2010-11-14 21:17
支持:em24:
作者: dstdx72    时间: 2010-11-14 21:46
原帖由 heuyck 于 2010-11-14 21:11 发表
楼主开始了,祝你成功.给你个建议:
看LPR550的资料 你还是用±500°/s的量程比较合算,
2mV/ °/s的精度,要用运放,不然10位ADC的2103是搞不定的.
LPR550有0.08°/s/°C的0点温飘,加上noise,用10位的ADC,想控制在1度 ...

谢谢。
500度量程不安全,因为姿态是靠记录的角速率来积分的。因此一旦某次突发扰动超过了量程,会引起角速率数据丢失从而误判姿态。
运放是肯定要用的,纯数字采样的积分,误差心中无数,除非用20位以上的ADC,但那样成本复杂度都增加不少不说,数据可信度还得不到保证
因此放弃了纯数字方案,采用模拟积分。最终精度就取决于器件和设计了,模拟电路调试稍微复杂点,但算法相应简单些
lpr550的温飘不是问题,0.08°/s/°C已经是很低的数值了,关键在于噪声控制和运放漂移控制上,这个只有试了才知
这方案如果不行,就采用最早考虑的水平仪方案
作者: frankham    时间: 2010-11-14 22:33
牛贴~~跟帖学习!小弟学生 喜欢电子 喜欢机械 更喜欢楼主这样的  支持楼主!
作者: hbld723    时间: 2010-11-14 23:27
我也来顶顶。谁然看不太懂。哈哈。但是很支持
作者: md35    时间: 2010-11-15 00:09
陀螺稳定的起点比较高。。固 定 翼的必须采用重力校正的4元数算法。比4轴的要难。。。路还很长。:em00:
作者: dy1191    时间: 2010-11-15 08:25
希望早日成功,造幅于模友.
作者: heuyck    时间: 2010-11-15 08:57
陀螺仪0点0.08°/s/°C的温飘不小了。。。。
1摄氏度的温差引起的0.08°/s的角加速度,由于要对时间做二次积分,在5秒内就达到1度的积分误差,几十秒就能让飞机侧翻。
作者: 小白菜oO    时间: 2010-11-15 10:02
强烈支持DIY
作者: 揽月射天狼    时间: 2010-11-15 12:44
楼主加油,探索无极限
作者: wwk1996    时间: 2010-11-15 19:03
路漫漫其修远兮,吾将上下而求索。留个脚印。
作者: dstdx72    时间: 2010-11-15 22:06
原帖由 heuyck 于 2010-11-15 08:57 发表
陀螺仪0点0.08°/s/°C的温飘不小了。。。。
1摄氏度的温差引起的0.08°/s的角加速度,由于要对时间做二次积分,在5秒内就达到1度的积分误差,几十秒就能让飞机侧翻。

:em15: 不会滴,绝对不会滴,看来你没认真看LPY550的PDF哦~~~
影响大的是运放本身的漂移,不过我用的是最大漂移值才几微伏的运放(资料上说的,实际器件不晓得是不是买的正宗货)
作者: dstdx72    时间: 2010-11-15 22:09
感谢同学们的鼓励,今天画图ing......
很多用的是0603封装,边画眼泪都要出来了~~~半颗米粒那么大,怎么焊接啊老天!
最头痛的是陀螺仪和气压计的焊盘,没有突出引脚,真担心就算电路对了焊接都要出问题!

有手工焊接表贴元件经验的同学,麻烦你们提供点经验嘛~~~~
作者: md35    时间: 2010-11-16 11:09
手工焊接,建议最小也要用0805的器件。
作者: wd8982082    时间: 2010-11-16 11:17
是陀螺仪和气压计的焊盘 用热抢
作者: rs1999    时间: 2010-11-16 12:54
楼主抓紧,大家跟上!
作者: 香江    时间: 2010-11-16 12:56
学习中
作者: hazy    时间: 2010-11-16 14:44
原帖由 md35 于 2010-11-16 11:09 发表
手工焊接,建议最小也要用0805的器件。

手工焊0603没问题,就是比较费眼。16脚的QFN也能焊,更多脚的就不好说了
不过还是建议用0805,也不在乎那么几克重量

[ 本帖最后由 hazy 于 2010-11-16 14:46 编辑 ]
作者: arone    时间: 2010-11-16 16:55
对的,0805比较顺手,0603其实拿烙铁也好焊接,吸在烙铁上直接往焊盘上放,不过阻容原件可以,其他的费眼
作者: gale    时间: 2010-11-16 17:11
失败不怕,就怕不坚持:em24:
作者: jmp2002    时间: 2010-11-16 23:32
顶起来,祝楼主早日成功
作者: dstdx72    时间: 2010-11-17 21:05
平衡仪的图画完了,等着打样没事,上两张PCB图
作者: dstdx72    时间: 2010-11-17 21:09
昨天去买了个放大镜,一个支架,电路板放下面焊,看得很清楚,这下应该没问题了
还有就是要准备个防静电烙铁
陀螺仪芯片据说对静电很敏感,怕焊上去都坏了还不晓得咋回事

大家说有没必要买防静电的烙铁啊?
作者: heuyck    时间: 2010-11-17 21:26
楼主PCB好多空白啊...
晶振封装离CPU太远,恐怕要买质量好点的晶振.
作者: heuyck    时间: 2010-11-17 21:33
焊前洗个手,摸下烙铁,没事.
只是烙铁买个像样点的,起码黄花,有钱就白光,不要垃圾到漏电就好....
作者: dstdx72    时间: 2010-11-17 21:36
原帖由 heuyck 于 2010-11-17 21:26 发表
楼主PCB好多空白啊...
晶振封装离CPU太远,恐怕要买质量好点的晶振.

不晓得为啥看起来空白那么多,双面都排了元件的,差点就布不通了,反复布了好几次了都
晶振离cpu其实不远,整个板子才7cm*4.5cm大,线实际长2,3厘米
作者: arone    时间: 2010-11-17 21:52
买个2合一焊台,烙铁风枪都有了,价格也不贵,用起来比烙铁方便多了
作者: dstdx72    时间: 2010-11-22 12:57
PCB终于回来了!刚才到,兴奋ing.....
上个图,今天就焊接
据说手工焊贴片要看rp值的:em15:
上帝保佑焊接不要出问题,不然调试麻烦就大了~~
作者: dstdx72    时间: 2010-11-22 13:05
这个厂的做工还蛮精细的,0.3的过孔,0.6的焊盘,定位居然都非常好,完全在正中,以后都在这个厂做
作者: jmp2002    时间: 2010-11-22 15:17
恭喜啊,顶一下。打板的时候单片机啥的他们不给焊吗?能不能加点钱让他们焊啊?
作者: dstdx72    时间: 2010-11-22 18:39
原帖由 jmp2002 于 2010-11-22 15:17 发表
恭喜啊,顶一下。打板的时候单片机啥的他们不给焊吗?能不能加点钱让他们焊啊?

不晓得,没问,应该不给焊的哦。他们是专门的PCB厂
作者: dstdx72    时间: 2010-11-22 18:44
今天焊板子差点把我焊哭了!
开始焊了电源,试验的时候不小心短路了,把块子烧冒烟了!!!后来再试,居然还是好的,没彻底烧烂,好强的芯片啊!!

陀螺仪芯片才把我搞死了,引脚不外露的,根本不晓得焊通引脚没

于是又拿热风枪吹,250度吹了半天没把焊锡吹化,调到290也没吹化,最后调到320度居然都还没吹化!

不敢再吹了,取下来焊,往缝隙里面灌了很多焊锡,都不晓得联通没得
也不晓得芯片到底焊坏没

后悔用这种封装的陀螺仪芯片啊!

有没有表贴焊接高手,麻烦你们指点下嘛,这种焊盘全部在底部没外露的芯片,到底手工该如何焊上去?谢谢!
作者: NeoLu    时间: 2010-11-22 18:58
pcb 反面加大温度吹,吹到芯片一动就好了。
你用啥型号sensor
作者: dstdx72    时间: 2010-11-22 19:34
原帖由 NeoLu 于 2010-11-22 18:58 发表
pcb 反面加大温度吹,吹到芯片一动就好了。
你用啥型号sensor

我用的是lpy550,比en-03性能好多了,但也难焊多了
请教这位兄台,是不是要两把热风枪同时两面吹?温度控制在多少度?大约多长时间?枪头离芯片多远?元件引脚要预先镀锡不?
我是表贴焊接门外汉,还望高手相助!
作者: heuyck    时间: 2010-11-22 19:35
灌了很多锡小心短路....
听楼上的,焊盘上一层薄锡,从反面吹吧
作者: NeoLu    时间: 2010-11-23 00:59
1把热风枪 吹pcb反面也就是器件在上 风枪隔着pcb吹
这样正好到锡溶化温度。  :em15:
作者: liu_tianyi    时间: 2010-11-23 06:07
会不会是角加速度传感器的缘故....
作者: su8    时间: 2010-11-23 06:14
(, 下载次数: 23) :em15:

[ 本帖最后由 su8 于 2010-11-25 22:51 编辑 ]
作者: dstdx72    时间: 2010-11-23 13:18
原帖由 heuyck 于 2010-11-23 13:03 发表

那是你没理解陀螺仪芯片。。。。陀螺仪芯片是角加速度传感器,不是角速度传感器。
姿态需要角加速度与时间的二次积分。你用一次积分得到的是角速度,减速停止后为0本来就是正确的。

应该不是这样的。lpy550手册上说是角速率传感器,不是角加速度传感器,输出单位是mv/度/s,不是mv/度/s/s。
上午我用洞洞板搭了个测试电路,测试没发现昨天的效果,输出大小完全就是和角速度吻合,没有回零的情况。因此估计是焊接出了问题,有个脚没焊通,虚焊了,成了角加速度传感器了。(可惜不小心扯掉一只焊盘,这个昂贵的传感器就废了)
另外我按上面兄弟的指点,从下面吹,倒是一下就焊上去了,也没把铜箔吹掉。不过有没有虚焊的情况要通电后测试才知道。

衷心感谢上面各位兄弟们的指点!!!
作者: cheng02    时间: 2010-11-23 18:29
支持啊!!!!!
作者: zgchen    时间: 2010-11-23 22:07
看来LZ 还不怎么会用热风枪啊!:em15:
作者: dstdx72    时间: 2010-11-25 17:54
今天基本实现了姿态测量,发帖庆贺一下


程序设置成在水平状态下正负1度姿态范围内,就点亮发光二极管,超过这个范围就熄灭。实测很灵敏,手拿板子稍微倾斜下灯就灭,回到正中就亮。


现在的问题是漂移问题,静态下3分钟左右就超过1度范围,定时修正要么修正过度,要么修正不足。用陀螺仪做平衡果然难啊!高手们没说错~~~~~


下一步向最难点冲锋,先克服静态漂移,再解决动态漂移。如果这两点解决好了,整个系统估计就没什么难点了。


在陀螺仪误差修正方面,有没有高手愿意指点下的?请问一般是怎么解决漂移问题的?是不是非要卡尔曼滤波?要是有高手愿意指点,在下将十分感激!
作者: dstdx72    时间: 2010-11-25 18:09
实在不行,只有引入加速度计了。请教高手,是否两者结合是必须的?仅仅通过数字滤波,有没有可能把漂移控制在30分钟1度以内?
作者: heuyck    时间: 2010-11-25 23:30
卡尔曼滤波也没用,那是纠正遵守高斯分布的噪声误差的。对模型+外界环境不行。
外界的噪声干扰、低价陀螺的温飘、低精度ADC的误差、积分计算误差、时钟误差,基本不可能做到30分钟1度。
作者: liu_tianyi    时间: 2010-11-26 04:27
用加速度计做捷连导航算法
作者: ian11122840    时间: 2010-11-26 09:36
自己琢磨没用,先看看书吧

不过我看LZ好像只有陀螺仪??想定位姿势应该是不可能的吧。。。。

http://search.taobao.com/search?q=%BD%DD%C1%AA%B5%BC%BA%BD&cat=
作者: 145632    时间: 2010-11-26 18:18
我理解,6轴只能对飞机瞬间姿态做调整控制,长时间还需要红外平衡仪,还有gps辅助
作者: dstdx72    时间: 2010-11-26 19:08
原帖由 145632 于 2010-11-26 18:18 发表
我理解,6轴只能对飞机瞬间姿态做调整控制,长时间还需要红外平衡仪,还有gps辅助

应该如此。
早料到陀螺仪的积累误差是个大问题,但没想试验下来实际效果是如此不堪。如果不加修正,只能工作几秒钟到十来秒就漂移超过1度了。修正后最多可以到十分钟左右,但更长时间的漂移修正需要更长时间的误差采样,无法进入实用。
经数据分析,漂移主要来自单片机的ADC,噪声大,粒度太粗,线性度也不好。不过我采用的lpy550本身精度是很高的,噪声和温飘也低。
目前有两个方案:一个是用高精度外部ADC,16位甚至20位,同时引入温度传感器,按实际测量温飘来修正,但这样成本增加厉害不说,不能长久解决问题;二个是用一个可以测量恒定外界参数的传感器如红外或重力,来对陀螺仪漂移进行长期修正(普遍采用的方法)

长期修正可以用红外或加速度(gps导航可以,姿态不行),或其他任何可以感知外界参数的传感器。
红外或加速度计搞的很多了,所以我还是打算回到最初的设想上去----------用盐水传感器来做长期修正,实验表明,即便是用于短时间的FPV飞行,仅仅依靠陀螺仪+低成本外部电路是行不通的

下一步,制作水平仪,用来修正陀螺仪的长期数据
作者: heuyck    时间: 2010-11-26 19:43
用红外就不用陀螺和加速度传感器,直接可以得到XY轴姿态角了。
ps:用高精度ADC也办不到,ARM的32位积分计算的误差累计起来就不小了。
作者: dstdx72    时间: 2010-11-26 20:07
原帖由 heuyck 于 2010-11-26 19:43 发表
用红外就不用陀螺和加速度传感器,直接可以得到XY轴姿态角了。
ps:用高精度ADC也办不到,ARM的32位积分计算的误差累计起来就不小了。


我的目标只是坚持1个小时,不超过3度倾斜,都办不到吗?你帮我估计估计.....我懒得做实验了
作者: ian11122840    时间: 2010-11-26 21:39
标题: 回复 68楼 dstdx72 的帖子
楼主用的什么控制芯片呢?51单片机?
作者: heuyck    时间: 2010-11-26 22:07
我估计很难做。。。还是另谋出路吧。
作者: frankham    时间: 2010-11-26 22:18
加油坚持!!! 支持楼主!
作者: dstdx72    时间: 2010-11-26 22:23
原帖由 ian11122840 于 2010-11-26 21:39 发表
楼主用的什么控制芯片呢?51单片机?

不是51,用的arm7系列的lpc2103,不晓得运算能力足够不
作者: dstdx72    时间: 2010-11-26 22:25
原帖由 frankham 于 2010-11-26 22:18 发表
加油坚持!!! 支持楼主!

灰常感谢!无论成败,始终会对大家有个交代的:em15:
作者: dstdx72    时间: 2010-12-5 14:23
更新进度:加速度计+陀螺仪的PCB加工中,等几天就到
发个PCB图
作者: dstdx72    时间: 2010-12-5 14:25
正面
作者: hulimeng    时间: 2010-12-5 14:59
:em26:
作者: heuyck    时间: 2010-12-5 20:23
晶振是离CPU越来越远了。。。小心啊
CPU一重启,如果没有一些防备,就全完了。
作者: dstdx72    时间: 2010-12-5 20:47
原帖由 heuyck 于 2010-12-5 20:23 发表
晶振是离CPU越来越远了。。。小心啊
CPU一重启,如果没有一些防备,就全完了。


哪里远了哦,实际连线还是差不多长

上个板子工作是相当可靠的
arm7看来比80C196成熟多了
196经常遇到莫名其妙的问题,它的资料介绍不够x全面
用起来也简单
越来越喜欢arm了
再说调试完毕要启动看家狗的
你的板子做得如何了,速速更新哦
作者: 梵群    时间: 2010-12-8 15:19
楼主这个东西很烧钱吧?我以前也搞过ARM 7,做板子买元件太花钱。用的也是NXP的ARM芯片,芯片工作确实挺稳定,只是AD/DA做得很尴尬。
作者: dstdx72    时间: 2010-12-8 18:10
原帖由 梵群 于 2010-12-8 15:19 发表
楼主这个东西很烧钱吧?我以前也搞过ARM 7,做板子买元件太花钱。用的也是NXP的ARM芯片,芯片工作确实挺稳定,只是AD/DA做得很尴尬。

:em00: 确实烧钱啊,都花接近1K大米了~~,还有大部分的没做
nxp的AD确实比较尴尬,粒度粗不说,噪声还大
不知兄台有没有熟悉点的16位或20位AD的,好用点的32位芯片,给推荐下?
作者: heuyck    时间: 2010-12-8 19:45
我用过的mcu里最高就是12位的,你喜欢牛x屁的,用17xx系列好了,12位ad,m3的核。
作者: ian11122840    时间: 2010-12-8 20:35
老哥,传感器信号要经过处理的,位数高只是分辨率高,与精度无关~~

建议看下《匠人手记》吧,里面有很多种滤波处理方法

不过你既然连这个都不熟,有点悬啊...
作者: dstdx72    时间: 2010-12-8 21:18
原帖由 ian11122840 于 2010-12-8 20:35 发表
老哥,传感器信号要经过处理的,位数高只是分辨率高,与精度无关~~

建议看下《匠人手记》吧,里面有很多种滤波处理方法

不过你既然连这个都不熟,有点悬啊...


AD位数与最终积分精度有关的
比如2103的10位AD,Vref=3.0V,那么最小分度电压值为3V/1024=2.92mV
那么陀螺仪传感器输出的低于2.92mV的变化例如1.8mV的变化信号就会被忽略掉
如此反复积分,误差就积累起来了,而且这个误差相当可观,导致陀螺仪的可用时间大大减少
假如用12位AD,那么最小分度值为3/4096=0.73mV,1mV的电压变化都不会被漏掉
虽然同时采集到的噪声会增加,但噪声本身是白平衡的,不会造成累计误差,问题不是很大
于是陀螺仪的可用时间会延长。

例如,假设在10位AD下静飘为10秒/度,那么用12位AD理论上就会延长4倍,达到40秒/度
于是程序对陀螺仪的修正周期就可以延长4倍了
作者: ian11122840    时间: 2010-12-9 12:41
老大,看看这个帖子吧,德国MK的四轴开源项目的讨论帖:
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=3348262&bbs_page_no=1&search_mode=1&search_text=算法&bbs_id=1025

MK的融合代码主要做了3件事:
第一件是即时融合,就是实时地根据加速度计的数值反推出陀螺仪积分应有的数值,然后根据当前的陀螺仪积分进行调整。

第二件是长期融合,在代码里它用0.5秒的时间采集加速度计的数据,然后到0.5秒时对这些数据进行平均,依此来得到一个相对稳定的加速度计数值。根据这个数值来相对准确地知道四轴这0.5秒的姿态,然后再修整调整量,做到自动稳定到平衡位置。

第三件是根据调整量的大小,决定是否需要修改陀螺仪中立点。这部分我目前还搞不太明白,所以先暂且不提。有前2部分已经可以做到让四轴稳定到LAMA的程度了。
(, 下载次数: 16)

归根结底,是要用加速度计去算法修正陀螺仪的积分。
呵呵,我经常在四轴论坛逛,所以对这个比较熟一点。

[ 本帖最后由 ian11122840 于 2010-12-9 12:45 编辑 ]
作者: dstdx72    时间: 2010-12-9 17:59
原帖由 ian11122840 于 2010-12-9 12:41 发表
老大,看看这个帖子吧,德国MK的四轴开源项目的讨论帖:
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=3348262&bbs_page_no=1&search_mode=1&search_text=算法&bbs_id=1025

MK的融合代码主要做了3件事:
...

老弟,你发的这个图哪年就看过了,顺便给你说下,这个框图是忽悠人的。
因为它的修正系数是定值(<1),而修正的输入参数又是误差,因此输出的修正量始终是小于误差的
所以最终结果必然是误差越来越大
简而言之,这个模型的传输函数是发散的,不能收敛,所以是行不通的

肯定要用加速度计来修正陀螺,修正算法才是关键
作者: dstdx72    时间: 2010-12-9 18:02
今天把硬件部分调试成功,现在开始做融合算法
AD采样出来的噪声好大,居然达到了5mv!
LPC2103的AD确实做得太尴尬了~~~
作者: dstdx72    时间: 2010-12-9 18:09
MK的融合方式太简单,估计不适合固定翼,它是通过加速度计的平均采样值作为水平的参照依据,这对于不会长时间加减速和在大风中飞行的4轴来说问题不会太大,最多不过导致稳定性差点,飞起来摇摇摆摆,但对于固定翼麻烦就大了去了,严重时甚至可能导致炸机

因此固定翼上不能用这样简单的办法去修正陀螺的

争取1周左右把算法部分完成,周末去试验
作者: 新兵蛋子    时间: 2010-12-9 18:47
留个记号
作者: dstdx72    时间: 2010-12-10 20:47
:em25: 算法部分果然难啊

前面个老哥说得不错,要显式计算姿态角度,必须用四元数来表达旋转,欧拉角表示会有计算死角

看来只有搞简单版本的PID调节

不打算显式计算姿态了,否则lpc2103吃不消
内核时钟240MHz的时候,这家伙搞点三角函数运算都很吃力,几个角度计算下来居然要0.几秒,加上舵机控制和串口数据通讯开销,实时运算看来是不可能的了
早知如此,该搞个强点的CPU

[ 本帖最后由 dstdx72 于 2010-12-10 20:49 编辑 ]
作者: 八风舞    时间: 2010-12-12 01:43
重复劳动,毫无创新;
舍本逐末,缘木求鱼;
飞机平衡,要建模型;
汝若有才,精确制导;
坦克火炮,运动瞄准;
学以致用,勿荒青春;
良言苦口,谏者无罪.
作者: gxlzzsw    时间: 2010-12-13 23:18
强烈支持LZ的探索精神,祝LZ早日成功!:em26:
作者: darxide    时间: 2010-12-13 23:40
原帖由 dstdx72 于 2010-12-10 20:47 发表
:em25: 算法部分果然难啊

前面个老哥说得不错,要显式计算姿态角度,必须用四元数来表达旋转,欧拉角表示会有计算死角

看来只有搞简单版本的PID调节

不打算显式计算姿态了,否则lpc2103吃不消
内核时钟240 ...


三角函数……我觉得参数定点化、查表比较好,精确到1°的话查找表不大,代价就是一次内存访问、快得很;更高精度吃内存就是了,时间没变化。
本身库的实现一般就是泰勒级数展开,照着做不会有太多速度提升;而且拿定点处理器算浮点,基本加减乘除的开销都是非常大的。

[ 本帖最后由 darxide 于 2010-12-13 23:46 编辑 ]
作者: ian11122840    时间: 2010-12-14 11:28
高手都是用查表的哦~~
呵呵,甚至很多常用的函数都可以用查表做:em15:

还有我那个框图是很多事实证明可以用的哈,那个叫四两拔千斤~你去那个帖子里仔细体会下,读完了再说
作者: darxide    时间: 2010-12-14 14:35
标题: 回复 95楼 ian11122840 的帖子
那图只是把俩读数加权平均一下而已,片子比较慢、没法用复杂算法的话拿来对付一下还成。同时仅限四轴这种基本都在悬停的机子使用,固定翼用不成。

[ 本帖最后由 darxide 于 2010-12-14 14:37 编辑 ]
作者: dstdx72    时间: 2010-12-14 19:35
原帖由 darxide 于 2010-12-13 23:40 发表


三角函数……我觉得参数定点化、查表比较好,精确到1°的话查找表不大,代价就是一次内存访问、快得很;更高精度吃内存就是了,时间没变化。
本身库的实现一般就是泰勒级数展开,照着做不会有太多速度提升;而且 ...

这个主意绝对好!十分感谢!:em00: 主要本人用单片机搞运算的场合用的少,这些技巧比较缺乏。只要存储器够用,这个点子是又快又精确,佩服佩服!
作者: dstdx72    时间: 2010-12-14 20:02
原帖由 ian11122840 于 2010-12-14 11:28 发表
高手都是用查表的哦~~
呵呵,甚至很多常用的函数都可以用查表做:em15:

还有我那个框图是很多事实证明可以用的哈,那个叫四两拔千斤~你去那个帖子里仔细体会下,读完了再说

哈哈~~你发那个链接老早就看过了,里面说到点子上的基本没有,有的是大家基本都知道的“把加速度数据和陀螺数据融合”,但具体怎么个融合法,说得也是含含糊糊的
至于这个框图呢,我再明确告诉你一次,它是不能用的,连陀螺静态漂移都克服不了:
f(t)=f(t0)+I(t)-(I(t)-a)*k,其中t0为上一时刻,t为当前时刻,f( )为融合后角度,I(t)为t时刻偏移t0时刻的积分角度,a为加速度计输出的角度,k为增益<1,那么这个函数是发散的,不能收敛于a
不管函数怎么构造,它必须随着时间变量t增加,收敛于加速度计输出角度a,才能起到用加速度计修正陀螺漂移的作用,也就是从图形上看,f(t)必须不断靠近a才行

年轻人,不要看着什么感觉可行,就去拿来不加修改就用,这样是不行的

MK的四轴平衡算法,绝不是你发的框图那么简单,嘿嘿
作者: dstdx72    时间: 2010-12-14 20:15
今日进度:

1)完成用遥控的3位开关挡自由切换手动、辅助平衡、自动平衡3种模式
2)完成了手动模式下,用遥控完全操纵各舵机
3)完成了在辅助和自动模式下,从包括倒飞、俯冲、侧翻等任意姿态下改出到接近水平的控制
4)实时测量舵机信号脉宽

下一步:水平状态的精密控制
作者: dstdx72    时间: 2010-12-14 20:41
上几张图,纪念一个阶段告终,新的阶段开始。

凌乱的工作台,简陋的调试设备
作者: md35    时间: 2010-12-14 22:42
呵呵。。我都走在你的前面呀。
4元数发还是比较难的,我用ATMEGA32,也没有搞成,还是算了,用简单的积分法,用在这样的机器上没有问题,以前的4轴都是这样的。
看样子做成FY20A,还真不是很容易。
我的固定翼平衡仪已经改用红外温度的了。
作者: heuyck    时间: 2010-12-14 23:04
我在啃捷联惯导书,毕业多年,什么线代矩阵全忘光了.
搞不成就弄红外算了,省力点.
算法没做好,惯导的可靠性还是比红外来得差.
作者: ian11122840    时间: 2010-12-15 08:29
已经实机测试了?真的假的啊~
进度挺快嘛
作者: 老模友    时间: 2010-12-15 10:08
不错。加油。




欢迎光临 5iMX.com 我爱模型 玩家论坛 ——专业遥控模型和无人机玩家论坛(玩模型就上我爱模型,创始于2003年) (http://5imx.com./) Powered by Discuz! X3.3