本文原文发于网易博客上。记录的是我的飞行器学习的黑历史,主角是一台类似 阿凡达里面的双桨 VTOL (Vertical Take-Off and Landing)飞行器的详细制作过程。错字连篇,虽然烂尾,没有但是..
版权所有,转载请看


如果没看过上半部: 与飞控无关 - 记刚开始弄飞控那会儿(上)

2011/5/8

又是很久很久没更新了,觉得有点对比起谁…最近做的事不算多,调好了单片机之间的 SMBus 通信,又做好了硬件的控制系统。

照片没拍什么,所以今天更新就只是文字的啦~尽管看我废话在这里。

SMBus 的调试花了很长时间。我本来打算每一帧发送32字节的数据,后来发现不是很够,虽然有很多数据是不必须发送的,但是如果不发的话,就利于调试。我主要是通过串口发回的数据进行调试的,这样就纠结了。如果只发送必须的数据,32字节除去帧头2字节,效验2字节,还有28字节可用,压缩一下,完全够了。

后来为了方便调试,还是决定在原来的基础上多发一帧的数据,于是每个周期50Hz交换的有效数据就有56字节,够了…可以把完整的传感器,CPU占用等数据完全传输回去了。可以做到实时不丢帧。

但是,就在这里出了问题,我查了很久,后面才查出来,原来是上一个数据还没发送完,缓冲区(32字节)不够大,后来解决了,等发送完了再存进缓冲区就好了。

硬件上不知道怎么固定舵机…继续纠结,没有螺丝钉。谁告诉我最近哪里有小朋友玩的四驱车专卖店…

暂时用回形针的固定了一下…不是很好捏

刚刚写了PPM信号的解码函数,用定时器3来测时间,直接读取定时器的寄存器,这样做行不行,我是一点都不懂,哎哎。先设置成高电平触发,PPM信号直接接到外部中断1,在中断里取定时器3的值。然后切换到低电平触发。如此反复,就可以实现高低电平都产生中断,通过判断时间的长短,还可以分辨出引导段。通过测量不同的高电平宽度,就可以计算出每一个通道的PPM值。

接下来还要写 50HZ 的 PWM 信号,用来驱动舵机的,应该可以驱动6个通道的舵机,我先做4个通道的 PWM 吧,其实AFN模块还有蛮多的管教可以用的。

PWM 还需要一个定时器…现在似乎不够用了,还有一个超声波测距模块需要定时器。

AFN:

Timer0 空闲

Timer1 UART波特率

Timer2 SMBus波特率

Timer3 PPM解码

ABM:

Timer0 提供整个系统的时钟,ABM 250Hz AFN 50Hz

Timer1 UART 波特率

Timer2 SMBus 波特率

Timer3 空闲

现在整个系统,还有2个空闲的定时器,还有超声波和PWM需要定时器,这样的话刚好够用…如果UART和SMBus用同一个定时器的话,整个系统还可以多出2个定时器。不过这样SMBus速度就太慢了,只有76k,好像也还好…实在不行的时候还可以这样做。

Timer3实在不是那么好用,因为不能位寻址,有点郁闷。

2011/5/14

今天是周六,最忙的一周终于过去了。上一周,我们一共只有3节大课不用上…累死了。周四晚上进山陪舞蹈队彩排,周五晚上进山去看舞蹈队表演…不过还好~女孩子们很给力,得了个二等奖!

周四下午我的“新的”二手镜头终于到了,镜头是DT16-105。好难找啊…卖家恋恋不舍地帮我包好,寄过来…那包装实在是..一句话:从3楼砸下去里面的鸡蛋都不会破…拿到镜头直接得跟舞蹈队进山彩排了,第一次拍舞台,感觉好爽~新的镜头容易引人注目,总会有人问我价格,当然,不同的人我只能说不同的价格,大概几百块到二手价,我都说了。

话题岔开太多了…呃…

回归正题,要说什么呢,虽然课余时间少得很,但是这一周还是做了很多东西。八路舵机驱动器,一次做成功,完美不抖舵,八位分辨率。PPM 信号解析还没搭硬件,苦于没有示波器,还有就是发射机的八颗电池我实在懒得去买。但是这个周末肯定要搞定 PPM 信号。还有就是把电调焊好了,但是还没敢接上电。焊接功率器件真是费焊锡,还好我5节回家又掰了一大卷过来…并且,找到充电器用的12V电源了,电源来自我高二在“恩山论坛”买的一个路由器(刷了WRT-DD系统)。

有一个比较无语的地方是,如果要 UART 和 SMBus 公用定时器,SMBus 就会慢得出奇。UART 要工作在 9600或者 38400 下的,因为 LEA-5Q 这个 GPS 模块只支持这两个波特率。GPS 有 SPI 接口,只是因为相位这种我根本就很反感的东西,所以不打算用 SPI 接口。即使是 38400bps,算下来 SMBus 的波特率才2 5600bps,传完 64Byte 的数据需要 20ms,我 AFN 的工作周期都有20ms 了。9600bps 更不用考虑了。所以我还是打算让 UART 和 SMBus 分开各自用一个定时器产生波特率。

如果把无线通信放在ABM里,无线模块如果能做到11520bps,SMBus 的 ABM->AFN 方向传输速度也有差不多 70kbps,这样的速度还是可以接受的。

这样一来,如果把舵机驱动放在ABM上面就会好一些,因为还有一个超声波测距,而定时器里面唯一能48分频的定时器是Timer0。

现在定时器资源利用改成如下:

AFN:

Timer0 :

Timer1 :UART波特率

Timer2 :SMBus波特率

Timer3 :PPM解码

ABM:

Timer0 :八路50HZ PWM信号输出

Timer1 :UART波特率

Timer2 :SMBus波特率

Timer3 :提供整个系统的时钟,ABM 250Hz AFN 50Hz

以后需要改的时候再改。

我觉得无线通信如果能放在AFN会更好,只是现在还找不到更好的解决方法,不行的话就只能放在ABM了。这样一来,模块之间的分工好像就有些不符合原先的意愿了。

有一个小问题,就是ABM的引脚似乎不是很够用了,如果放八路舵机控制器,管脚就全圆满了,AFN还剩一堆。现在刚好够用,就这样了。先做6路舵机控制器,剩余两个,一个做工作指示,另一个留来增强ABM/AFN之间的SMBus通信可靠性,主要是怕总线死机,而且现在应用层的通信,虽然有做效验,但是没做效验不通后的回复,相当于UART的单向传输而已,没有应答标志的。不过即使这样,还经常能把我的虚拟机刷数据刷到死机的,很长时间的通信,甚至一个位都没错。赞~

另外,焊接好后我就称量了一下,所有的重量,到现在为止,工作大概已经完成了50%了吧,离飞起来的日子不远了。

看图:

重量,678g,主控电路单独称就有100多g了,如果画板打样回来的话,重量还会少几十克。电池也放上去了,还有脚架什么的也放上去了。我能想到的东西都放上去了。

如果能如此下去,总重量在700g之内是可以办到的,就算加了螺旋桨保护圈,也不会超过750g;再加上尾杆和尾翼,还有控制舵机的话,也可以控制在800g之内。.

这个如果能做到800g以下的重量,就可以很轻松地在上面加上云台,放上摄像机进行航拍。

无线摄像机(用来做第一人称操控) 50g以下,3轴或2轴云台,50g以下,摄像机100多g(用来航拍录像或拍照)。

总重在1100g这样,一块电池飞行时间我估计可以到8~10分钟。

或者在上面挂载一些几百克的“西红柿炸弹”之类的东西~用一个舵机就可以控制两个投弹~多好玩~哈哈
今天YY就到这里~哈~

2011/5/15

昨天刚刚更新…按我这懒人的习惯,起码要几个星期后才会更新的…但是,今天真的有必要记录一下!

其实也不是什么大事…也就是,成功地直接从接收机里直接提取PPM信号了,然后又直接从ABM模块输出6路PWM信号驱动舵机了,还有一点点小小的有周期性的抖舵,大概周期有3秒这样,不知道怎么解决,或者是设备的问题?

我花了 50RMB 买的 PWM转PPM 板(高手做的,点击可以看他的帖子)没用了,直接接接收机效果更好一些,经过那块板之后反倒没那么好。

现在还要解决的问题一个是舵机行程问题,这个在AFN里再写几十行代码就行了。另一个问题是如果只接上接收机,没打开遥控器之前PPM信号会全乱套,然后舵机乱跳,现在的解决方法只能在打开ABM电源之前先打开遥控器,这样舵机就不会乱串了。

比较感慨的是这次做PPM解码没用多少调试时间,虽然第一次上电必出问题,是程序员最熟悉最习惯的方式…

我的PPM信号提取…本来先做一个简易的,低频率的,玩具级别的逻辑分析仪&示波器。后来一直没空就拖到现在了。是我一直没发表的 FL project 010,以后有时间做出来再发表吧~现在的情况是没有示波器。还好我想到,我的万用表是有测频率的功能(高一的时候花了200多RMB买的一个钳形表,能测400A的“直流电”的)。于是我上网又看了一遍PPM信号的图。我的接收机是6通道的,然后分析PPM信号,信号如图(这个图是别人的经过整形的图,大概可以表达意思,借用一下)。万用表,就是我唯一的工具,我来讲一下,我是如何用万用表找到PPM信号并分析的。

我仔细分析过上面的那个图,PPM信号是通过高电平的宽度来表示各个通道的值的。于是我就可以通过测量高电平的宽度去取值。我又注意到,6个通道,每一帧数据,一共会有7次电平的涨落,我大概计算了一下,50HZ的PPM信号周期,每个周期有7个涨幅,所以万用表测出来的频率应该在 50 x 7 = 350HZ 这样。然后我就找到了接收机里离PWM输出最靠近的那个芯片,上网百度一下,找到芯片的资料,希望直接找到芯片的输入脚。百度之后发现那是一片单片机…囧。然后我就给接收机上电,打开遥控器,把万用表调整到频率档,一个一个管脚地去测,发现有一个管脚 349.XHZ 的频率!乐死我了!终于给我找到了..因为有的PPM信号在输入其他芯片的时候,可能是反相的,于是我又打到电压档,去测那个引脚。结果为1.几V的电压,结合上面的图,说明这个“西安孵化6通道接收机” PPM 信号在经过最后的单片机之前是反相的。OK,马上修改AFN的程序。

关于外部中断,好像只有固定的高电平,低电平有效。我之前在这卡了一下,还打算把外部中断0和外部中断1连接在一起,一个设置高电平有效,一个设置低电平有效,这样设置来解决问题。后来发现根本不用,只需要在电平有效的时候,设置另一个电平有效,这样就可以在每个电平变化的时候(不管是高->低,还是低->高)都产生中断了,只需要在中断里再判断一下管脚是高电平还是低电平就可以了。

PPM解码用的是AFN模块C8051F410的外部中断1,说实话,这是我第一次用“外部中断”,以前从未用过这个…不过还好啦,编程很顺利,今天直接接上AFN,改了一下相位,就OK了。现在PPM解码有一百多行C代码,功能也算完善了,接收机可以热插拔,不会影响系统。如果要加功能的话,也就是把上面的问题2解决了,在遥控器打开之前,让接收机不乱跳。解决这个问题在以后是必要的,要实现自主航线,可能会超过PPM信号的距离,到时候得由AFN模块接手了。所以我打算有关于PPM的各个通道解码,行程,微调全部放在AFN里,而ABM则负责利用AFN传来的PPM信号,结合自身计算出来的飞行器姿态进行混空,然后直接进行输出。

今天确实是个里程碑,实现了遥控->飞控的能力,虽然只是一小步,但是标志着飞控有了硬件的调试能力。

准备就能听到螺旋桨切空气的声音了~~

接下来看图说话:

上位机也新改写过了,加了PPM信号的显示,但是不知道为什么第六通道就是显示不出来,而ABM上面第六通道我一直用来当供电用,所以也没测试到。应该是单片机上的问题,以后找到原因再解决好了。

左边第一块板..供电模块,可以接5~18V的电源,用了两块L7805CV,有3A的供电能力,在电源是锂电池的时候,提供舵机和其他5V器件供电用。调试的时候直接接miniUSB口。

左边第二块板..AFN模块

右边第一块板..ABM模块

AFN和ABM上面的两个黑色的,分别是接收机和舵机。

各种乱糟糟线…

天地飞FT06C,功能偏向CCPM直升机的控,对于固定翼只提供简单的模式。我用的是固定翼模式,够用了。

各种乱…飞机装上螺旋桨的样子,酷哦~正在调试飞机上的舵机。飞机上的两个舵机是数字舵机,PWM 频率可以超过 250HZ。不过我为了兼容性,还是把 PWM 频率锁定在 50HZ,桌面上还放着两个非数字舵机,50HZ 下也可以完美驱动。这四个舵机都是金属齿轮的,不怕摔了~

主角..西安孵化的接收机。找到PPM信号之后,就在里面引出了线,懒得钻孔,就直接在这里引出来了,效果还不错。没浪费我太多时间去调试。

今天就到这里吧~ 还有三个星期就高考了,想起去年我高考的时候,和同学们一起奋斗,那感觉真好…

2011/5/17

好吧…这几天真是起劲了,连续更新~

昨天弄 IIC 电调,电调是 MK 四轴的,我用来驱动朗宇的无刷电机。一直没成功,时转时不转的,断断续续。好像通信并不成功,地址什么的都正确,却只有在上电的瞬间电机会启动。我是按地址+八位变量输出的,就是不正确,看了 MK 的源码电机驱动部分,也是这样驱动的。有几次RP转了起来,但是也不顺畅,这个电调和朗宇的无刷有兼容性问题?我不想再折腾了,马上决定换掉这两个电调。

于是马上上淘宝买了2个“好盈程序的新西达30A电调”,价格 37RMB/个。怎么说,好几年前,大概初中的时候,我第一次接触无刷电调,那时候 20A 的需要 200RMB/个,我筹钱买了一个,然后就没钱买无刷电机了。再后来就买磁钢,买废旧光驱 10RMB/个,拆光驱,用光驱电机来 DIY 功率大一点的无刷电机,线圈自己绕,磁钢摆好位置就用 502 贴好。后来还用镍氢电池和这个 DIY 的无刷电机,5030 的桨,把我自己做的飞翼飞起来了。再后来,铃铛外转子无刷电机以他的价格优势,普及了。我就买了一个,但是心里还是觉得那不算数,我心目中的无刷电机是内转子无刷。再后来,我还没有机会拥有内转子无刷,外转子无刷就遍地都是了,好在他们外形都“专业”了好多~我心里才踏实…

扯远了…这个 xxd 无刷电调是 pwm 控制的,在启动的时候是有一些需要注意的地方,我之后会写好程序。下午拿到快递(顺丰飞了不到24个小时)就赶回宿舍开工了,到现在还没吃饭(现在是晚上10点)…据说这个电调可以开 250HZ 以上的 PWM 频率,控制跟舵机一样,就省的我去弄其他的协议了,由于不是用 IIC 总线的,减少了总线的大小,也避免了几乎会使整个系统完蛋的总线死机的概率。

插上标准的接收机,马上启动遥控器,哇..那声音,真是太爽了!很流畅,两个电调和电机都工作得很好。换上EPP1045 的桨,那拉力不是一般的大,飞起来是必须的!实验了几分钟,电调不热,电池常温,看来即使是夏天,也不需要什么特殊的散热措施了。

现在的动力系统配置:

电机:朗宇2212 KV980 X2

电调:新西达 30A X2

电池:牌子不记得了,11.1V 2200mAh

现在全重有750g这样,包括所有的东西了,主要是控制电路2块板,电源板1块,无线模块1块…如果打样的话,应该可以减轻100g。总重650g是非常理想的!

推重比可以达到3…好夸张!

下面看看今天装好的图~

我把几块板都连在一起了,这样方便我收拾桌面,体积好大啊!如果要直接放在飞机上,比较难哦…

上层是ABM模块,蓝色板是串口透传,另一边的绿色板是电源模块。

AFS上层板,无线透传,ABM模块,电源模块

下层…孤零零的AFN模块…


在“机翼”上的两个黄色的,就是今天刚到的无刷电调,都能很好的工作~


嗯…各种乱糟糟的线,还有乱糟糟的飞行器,那块红色的是电池 11.1V 2200mAh

右边那一团…电源线啊,IIC总线啊,串口线啊,电源线啊…

桌子角落上是接收机…

今天就到这里吧~哈哈~

开始写混空功能咯~2个舵机和2个电调要混空的。

2011/5/23

又是很久没更新了…

从现在开始2个星期内,我可能得停止硬件调试了,原因其一因为要考试,其二…最悲剧的是我在 XP 虚拟机里用VB6 写的上位机程序,死掉了,死得噼里啪啦的…源代码全部乱码!起因是因为一次长时间的 USB 口短路,引起电脑蓝屏,虚拟机非法关机…最终结果就是源代码变成乱码了。

代码备份是有的,可惜最近一次是4月21日的了…通讯的协议我几乎每天都在改,所以早就不是那个样子了,成品倒还好好的,但是也是因为改了协议,部分功能已经显示不出来了。后来打算重新写一个,只做了界面…就听到日姐姐学习C#,看了 VS2010 的界面,很美哇!受不住诱惑,就去查了其他能编上位机的语言。

期间又尝试在win7安装了USB转串口的驱动,没想到居然就安装成功了。之前为什么开虚拟机,其中一个原因就是win7装不上那个驱动。

我早就受不了 VB6 那个98年产的,到现在也没更新过的,界面很丑的编译器了…现在倒安稳了,驱动装上了,没得选择了,果断换掉VB。于是又开始纠结用什么语言,java 和 C#?C++ 就算了,我在高中的时候已经死过一次了。学Java到时候可以编 android,可以做网站前台后台都可以,而 C# 可以也比较靠近 ASP.NET,也可以做网站后台,相对于java比较简单。考虑到C#据说比java简单一点,我现在需要的是快速开发一个上位机代替 VB 那个烂东西,就决定学C#了…

在编第二个上位机的时候,遇到了瓶颈,主要是串口通信的时候有数据延迟的问题。之前的解决方法是每次从缓冲区里取100字节的数据,然后从里面找出完整的一帧32字节来,可以做到实时显示不延迟,后果是有很多数据会被丢掉。但是这样毕竟不好,之后的调试不允许这样了,或者说,需要做到不丢帧。延迟这个问题很严重,在VB里面有,我就怀疑是我的虚拟机速度根本不够解析每一个字节,后来换成帧数据解析,情况好了一点,但是还是有很严重的延迟。

单片机发回来的数据一次有3帧,每一帧包括帧头和效验一共32字节(两个数据帧,一个命令帧)。三帧就是96字节了。我发送的频率是AFN的系统周期,50HZ,串口速度是 115200bps。这样一来,每秒钟大概传输5800Byte…这样电脑就都处理不过来了..我了个纠结!即使是现在用VS2010写出来,延迟还是很严重,大概几秒钟的延迟!用的是 serialports 类来接受,跟以前在VB里用 MSCOMM 空间接收一样的后果。

解决方法我想到了,比帧解析和字节解析处理量都小的方法,但是会丢掉最前面1~2帧的数据,应该不是很重要,大不了开机的时候多发一次第一帧。

我就把这个方法叫做:帧同步接收法

原理大概是这样:

1.一开始先设置接收一个字节就触发事件

2.判断达到帧头2个字节后,设置成接收30个字节触发事件(这一帧先忽略掉吧,接收也可以)

3.达到30字节后,设置接收32字节(一个帧的长度)触发事件

4.按顺序存入3个不同的byte[30]数组(不需要同步,这里只是写,另一个地方只是读)

5.分析其中一帧的关键数据就好了(命令帧)。

然后用定时器定时更新界面的数据,更新图表就行了

第二次在虚拟机里开发的上位机,只用了两天的时间,界面做好了,通信做好了,其他的还没做。没有做后台的分析和计算。

这是用C#做的上位机,左下角的命令栏是通过互相传送的命令帧进行调试的,右边的空的一大块是做3D姿态显示和安排一些固定的操控按钮(起飞,回家,下一个航点…,当然也可以用命令行发送命令)。参数设置用的,地图是指Google Earth API, 正在学习,结合飞行器传回来的GPS数据,写好kml文件后,就可以实时显示飞行器的位置了!哇哈哈!

2011/5/25

刚刚看了看word的左下角 “页面 55页”“字数 16,759”… 沉思了3分钟,终于得出结论,我的废话太多了…不管了,就这样费下去吧。等做完之后,我会再写一篇只有20页左右的总结性的PDF,多写技术资料,多写经验,少废话!希望各位还有耐心等下去…我相信我不会让你等到沧海桑田的~ 哈哈~

刚刚做好了混空,电机的混空还没测试,舵机的混控已经很完美了,前后摆动的幅度一致,即使推杆拉杆达到极限后,操作方向依然有动作。这样就安全些了,还把动作的幅度降低了一些,避免扭杆扭得太厉害导致超过舵机连杆的控制范围。另外,把方向操作衰减了4倍的后才加入舵机混控,我可不想方向操作太过灵敏了。

做这些主要费时间费在调整合适的行程和衰减系数。整整调了我好长一段时间,记录一下,左舵机 230 50 右舵机 255 80 。

舵机的方向和俯仰都还没有和姿态积分一起做PI运算,明天或者周末加上,其实做完这个,就可以飞了。电机的PI控制已经做好了,就等上机测试了。

另外,上位机继续完善,可以说功能越来越强大了,自己都佩服死(自恋ing)。还没做上位机回传到下位机的数据,所以右边的参数调整面板暂时不可用(要不是这样刚刚也不需要花那么多时间去调行程了),C#下操作数据和字节的转换有点麻烦,等有时间再做。

还有就是上位机的图表控件换成我最熟悉的 teechart 2010 推荐使用这个哦~CSDN有破解版下载。期间试过NTGraph MSChart…等等…

看图就好啦~ 命令栏暂时用作串口数据监控,等我做好回传程序后,命令调试栏和参数设置就真正有用了。

3D显示我还没找到方法,NI的labview 有控件,不知道怎么提取,也许只能,用D3D了…

2011/6/16

至于上次更新是什么时候,我也懒得去看了…有一件事差不多可以确定了,首飞会在家里而不是在学校,因为还有3个星期就放假咯,现在考试又多,不是很有时间做这个。

之前一直在纠结软件的问题,不管怎么说,还是作出了挺多的成果的。比较自豪的是我发明的那个“帧同步接收法”,我打算在飞行器上面也用这个方法接收电脑或者手机传上来的数据,这个方法耗CPU实在是够少的,对系统影响小到不能再小了。还没优化过就有不错的效果,对于单片机这种速度更低的器件,帧同步接收法应该是在CPU占用和数据完整性上的最优解了。接收数据时只处理几个关键字节,然后验证,就没事了,不需要分析完每一个字节。剩下的字节等CPU空闲了或者需要使用的时候再去处理。

思路已经完整了,等有时间了就写单片机上的代码。

其实这段时间也一直在做东西,我说过我不想让洞洞板飞起来,于是我学了PCB做板,视频教程看了几个小时,就开始画了。遇到了很多问题,有的是通过ourdev.cn解决的,有的是自己憋得慌憋出来的。

肚子饿死了,外卖还没来!

看看成果吧,我第一次画板。排元件排了一个下午,然后自动布线的,电源线还没改粗。只是摆元件摆得眼花。在5CM*5CM的电路板上塞下两片单片机,几个传感器,N片电源芯片,近十个接口,电阻电容几十个…只希望你看到图片不要吐出来。

对外接口有:

12V DC

PPM 信号输入

ABM/AFN调试接口

PWM 舵机驱动 (6通道,包括电源也做在板上了,独立2A电流的7805供电)

GPS 接口 (其实就是UART,独立3.3V AS1117供电)

气压传感器接口(5V供电,ADC转换)

超声波测距接口(5V供电,接中断)

I2C总线接口 (5V对外供电)

Nokia 5110 液晶屏接口

原理图就先不放出来了,因为太大了,放出来也看不清楚。

电源线还没改呢,线都是10mil宽的,改完电源线就差不多了。有一个不懂的地方,就是怎么在四个角打上螺丝钉能扭住的地方呢?郁闷。

Altium designer 6.9 大葱推荐的…

有预览功能,还是3D的,个人比较偏向蓝色或者红色的板,比较好看呐,虽然贵了50RMB…纠结!不过绿色就免了,我不想第一块板看起来就那么丑。

丝印层还要调整一下,其他的差不多了。没有大面积地线的余量,话说第一次做板就做这种那么复杂的,要是没有自动布线我不知道怎么办了…眼都花。接口太多,差不多要成筛子了…这是正面,放传感器单片机用的,背面放电源模块和电阻电容一堆。

2011/6/20

正在打样…很无语,我最不喜欢的就是等待…但是一般东西都齐全了,我又懒得动手做了。刚刚查了工程图学的成绩,还好没挂,79分,不算很高,拉学分是大三才该考虑的事…大一的我就别慌张先了。

淘宝了 L3G4200D ADXL345,还在路上,第一次遇到顺丰发了三天的情况。这三个传感器我一共花了138RMB,其实可以花得少一点的,只是曾经在一个卖家那里买过模拟的传感器和陀螺仪(就是上文我用的那块红色的板子)还有磁阻传感器,和卖家聊得来,也不用担心买到假货(这东西有假的不?)。

PCB已经重新修改过了,自己布线花了一个中午和一个下午的时间,第一次布线实在是比较纠结,什么都不懂,线也不听话。不过最终算是做完啦~

板子已经送到嘉立创打样了,过两天就到。相对于上面的,还调整了一点位置,用两片C8051F410,还能装逼一下“双核的哦”

看看板子吧~

阻焊用的是红色,比较显眼一点~纯粹为了摆炫…也是为了试飞的时候,周围的同学能一眼看出这上面还多了“电路板”而不是一个普通的模型…

反面,当然要感谢下 ourdev.cn
(图丢失)

现在应该纠结的问题是怎么焊接那两片传感器,只靠电烙铁我觉得有点悬,打算做一套预热的装置。用最简单的东西。

用易拉罐做一个小托盘,然后去外面搞点细沙回来,没有细沙就买一包盐,然后把盐或者细沙铺在托盘上,最后放上电路板。

然后给那两个传感器的管脚和电路板上的焊盘上一层锡,然后用蜡烛在托盘下加热,这样做可能达不到焊锡的熔点,但是也能使焊锡更容易融化一些,然后再用电烙铁对着焊盘焊接,再加一点锡,或者不加。不打算做温度控制。PCB有十块,烧坏一块还有9块…不怕不怕。

一切都得实验后才知道可行性...不过感觉这样做应该有效果的

2011/6/21

今天已经查到我的PCB已经发过来了,晕死,因为是深圳发过来的,我今早刚被快递吵起床,从深圳发到桂林,顺丰不超过18个小时就到了。明早我还有课呢,要是他发过来我就死定了。

今天呢,继续无聊,于是给飞机做了尾翼。

说真的,尾翼在这个无人机上可有可无的,它本身的控制能力已经可以进行全方位的控制了,尾翼在这飞机上唯一的作用就是在飞航线的时候使飞机平稳一些。这个尾翼只有升降舵,没有方向舵,尾翼的形状大概是120度的三片玻璃钢板。尾翼和尾架都是0.5mm的玻璃钢板做的,尾架上有四根牙签做加固。胶水依旧是504。

虽然用处不是很大。不过装了尾翼之后看起来更帅了~~

尾翼+尾舵机重量估计在50克整,不是很影响。只是重心要重新调了。刚刚又拆掉机架上固定尾管的部分,11g的重量。觉得好开心啊。现在除掉主控电路,且不装桨保护器的情况下,重量只有627g。这代表着什么~哈哈。

在室外,重量不到700g,室内(加将保护器)750g以内。对电池,对电调,对马达都显得毫无压力,悬停时小消耗的电流估计在10安以内,2200mah的电池可以飞12分钟,3000mah的电池可以飞18分钟…

今天拍了好多图片~看图吧~

尾部的支架,牙签作为支架,现在完全干固后会用钳子减掉多余的部分用螺丝钉与机架固定在一起。

剪刀靠在那里,做些修正,因为粘的时候发现有些倾斜了。

这是尾翼..不多说了,一样用牙签做固定,相当的坚固

整机咯~在宿舍的走廊上完成今天的工作。

换一个角度,尾翼和支架是半透明的,有点软,不过强度完全足够了。尾翼可以做升降舵运动,是整个尾翼一起动的,类似金鱼的尾巴

可以清晰地看到牙签的固定,当然里面除了牙签,里面平行于牙签的还有玻璃钢板。

有人好奇旋翼的结构,我就拍两张清晰的图给大家看看

另一边,看上去是不是一样的?那你就错了,我安装的方式是对称的,看不懂?自己好好想想

称称~哈,重量嘛~看下一张图片

638g,后来又减掉11g,就是627g。除了主控电路,其他的都在上面了哦

主控电路不会超过50g~

桨保护器一起,670多g,还少了一些支架。


这个最终成品应该在60g以下,现在还少了一些支架。这方面设计我遇到点麻烦,不知道怎么固定地好。有几种方案。

  1. 完全刚性的,继续用0.5mm的玻璃钢板,6条或者8条支架..(懒得做)
  2. 类似自行车条幅一样,用鱼线制作(很难做)

而且固定还郁闷…

算了,以后再做这个保护架。明天PCB就要到了,答应要送一片给Linda美女的,希望她能收藏好哦~

然后实验一下盐浴加热法

今天到此为止咯~明天还要交一篇论文,郁闷

2011/6/22

今天板子到了…

焊接LGA封装实在是一种挑战,不过就像焊接LQFP一样,一开始很痛苦,后来焊着焊着,觉得越焊越爽。

费了一个中午,小心翼翼终于把两个传感器焊接好了。没有用盐浴法…天气太热了!

焊接好两个传感器之后事情就变得简单了,LQFP用托焊的方法,其他的…随便了。

只是四个接口的插口,做得不是很好,打得过孔太小了!插进去费了好大的力气。下次记得改过来。

待会改程序,然后准备下载到这板子上来了。
希望一次成功不要出错,至少电路不要出错了!

2011/9/23

很久没更新了,之前的电路板子设计有问题。

我把两片C8051F410之间的通讯,ADXL345 L3G4200D 的通讯全部丢到IIC总线上了,又因为我的系统工作速度是250HZ。

实际总线速度最快只有160kbps 导致的结果是系统整个被拖慢了。

没办法,现在全部从新设计

最终方案如下

控制器 STM32F103RE

三轴陀螺仪 L3G4200D

三轴加速度计 ADXL345

三轴磁阻传感器 HMC5883L

气压传感器 MPX4115A

铁电储存器 FM25CL64

GPS LEA-5Q

超声波传感器

九轴传感器全部采用数字传感器

陀螺仪和加速度计接入STM32的SPI1接口,HMC5883L接入STM32的I2C1接口

MPX4115A接入STM32的ADC

GPS 接入 STM32的USART3。LEA 5Q 拥有38400bps的UART速度,和4HZ 的高速更新率。

FM25CL64 铁电储存器接入SPI2 将用来保存配置参数,航点信息

超声波传感器接入中断,用于贴地飞行,自主降落时精确定高

另外STM32负责解码PPM接收机,混合控制信息后,通过PWM输出。

PWM设计为6通道(因为管脚冲突,没能设计成八个通道真是遗憾)

前四通道采用250HZ高速输出。高电平为0.5~1.5ms,主要用于姿态控制的两个数字舵机和电调,使飞机具有高速反应能力。

后二通道为标准50HZ PWM输出,兼容普通舵机

I2C接口将用来拓展其他模块,例如航行LED灯控制,例如三轴云台控制模块等等

唯一的遗憾是没有加入SD卡的驱动。这个将在V0.3之后的飞控版本上加入!

新的PCB将采用蓝色的阻焊油。我一直讨厌绿色,宁可多花50RMB!

另外一个更重要的更新是 RT-Thread 将被移植到这块V0.2的控制板上。

经过前一块板子的失败,我深刻了解到,当任务很多时,顺序结构将很难胜任。这次我决定在飞行器上移植国产RTOS RT-Thread,以应对多任务的复杂度。

移植版本先暂定0.3.2 之后再考虑0.4 。0.3.2资料相对多一些,我也是第一次接触RTOS。这几天查找了很多资料,看了一整本书之后,感觉移植不会有很大的困难,接下来要做的就是要适应在操作系统上编程了。

STM32F103RE 512kB rom 和 64kB ram 足够我挥霍啦~ 要是能找到合适的TF卡座封装就好了,直接加TF卡,再移植FAT文件系统,记录更完整的飞行数据是非常有意义的事情。

新的飞控板将实现自主航行飞行功能。

当然一切都是设想。。。

后天顺丰就把新的传感器和芯片,PCB送到我手上了~~~


就是那么突然,这篇日记式的制作笔记就这么烂尾了
原文将近 70 张图,2万多字,可能是因为前面废话太多了导致写不下去了吧。。

在这之后,这个双轴飞行器,曾经尝试去飞了一次,并不成功,没有离地就翻了。飞机没有摔坏。当然,烂尾的只是这个最初的双轴飞行器,当我最后决定把飞控跑在STM32 + RT-Thread 上之后。更多地精彩和玩法一直在继续,直到最后成为了毕设。一个从大一开始做的毕设: 四轴毕业设计初说 - DBP飞控的开源与简介