本帖最后由 haujj 于 2013-5-31 23:21 编辑
本人喜欢模型多年,平时都在关注论坛,做个资深潜水员。其实自己一直都在玩直升机,家里大大小小的都快十来架了,可自己很少飞,到目前为止还是只能悬停,勉勉强强飞个航线
近年来开始流行四轴,自己也曾经有过想玩的念头,在大约2年前也在论坛收了一套kk的飞控回来,当时手头没有KK刷机线,买回来也没多大心思想玩,买回来后一直扔在某个角落里。直到今年4月份自己工作比较轻松,对四轴再次产生想玩的念头。买现成的飞控还是自己组一个呢,本着自己是喜欢动手的那一类人,加上自己认为焊功还是比较了得(当时没有接触过此类传感器,不知传感器大小,现在看来有点不知天高地厚的感觉)认为自己能轻松搞定,逐决定自己组一个,就是这个决定才有了这遍帖子的产生。希望自己的一点经验,能够给后续的模友有个交流的地方。
先来一张成果照片,把接收机整合焊接接在一块,这样简洁很多
下面这张照片大家能看出亮点在哪里吗,有什么好处,有人知道不???
多人回帖的话我就公开,哈哈哈.........
言归正传:
通过论坛及网上的一番收索,目前比较流行的飞控是MWC,属于国外的一个开源项目,目前玩的模友比较多,比较容易查阅相关资讯,逐决定采用ATM2560+MS5611 HMC5883L MPU6050这一配置,目前算是比较好的一种,容易扩展其他功能象GPS什么的,价格便宜等优点。目标锁定后马上上网进行采购,在网上我就买了这几样东西,其他那些零碎电子零件都是在当地电子市场配齐。
主要是空飞控板、FT232读写器、和MS5611 、HMC5883L、 MPU6050这三个传感器,ISP下载器是之前需要用买的。说实在话,在组这个飞控板的过程中自己有后悔过,为什么不去买一个现成的呢,难道就为了省下那一百多元,自己也不至于差那点钱啊,现在往回看,自己蛮开心的,因为自己学到了不少单片机的知识,这是后话。因为在组的过程中,没有留下照片,自己只能将我在制作的过程中遇上那些难题及需要注意的事项,一一讲出来,希望对大家有点启发。
零配件到齐后,第一时间是准备焊接,没错,是焊接,当时我太高估了自己的焊接能了,不过也得佩服自己的折腾能力,过程我就不说了,在这里主要讲讲焊接的顺序。
首先要焊接的是2560这个大芯片和其他周边的小零件,MS5611、 HMC5883L、 MPU6050这三个暂不要焊接,原因很简单,如焊接某块芯片出现短路或虚焊,你就很难查出问题所在,我在这里吃了一个大亏,一次性焊好,结果通电无反应,自己刚接触单片机小白一个,结果到处问到处找资料,白白的花了几天时间去查找故障原因。
言归正传,2560及周边焊好后,检查各引脚无短路虚焊,有万能表的模友可以测量一下正电源焊脚与地是否相通,如不幸真的相通就及时排查一下,没问题就可以接上FT232读写器或ISP下载器通电,看看电源指示灯亮不亮,芯片有没有发烫现象,如过指示灯不亮或芯片发烫,应马上断电检查。如指示灯亮了,那就好办,下一步就准备刷2560的bootloader了
一般新买的2560芯片里面都是空的,需要刷bootloader,其实我也不是很懂什么是bootloader,只知道如果不刷bootloader,那你就不能刷如程序,好吧,那就刷吧,怎么刷呢,对于单片机小白的我来说,又是一个难题,论坛找资料,发短信问前辈,能做的都做了,在这感谢曾经帮助过我的模有,借用论坛宝贵资源,对你们说声:谢谢!
其实刷bootloader搞明白了并不是很难,前提是你要选对刷机软件和设置好熔丝,刷bootloader只能用ISP下载器,先安装ISP的驱动程序,一般安装好在电脑设备管理器中能看到“USBasp”设备就说明安装成功了。记住:飞控板的MISO 连接ISP下载器的MISO,VCC 、SCK 、MOSI、RESET、GND一样,把飞控板的接口与ISP下载器一一对应接上,连接电脑,一般ISP下载器是使
用AVR
或progisp
这两个软件,如果对熔丝设置不是很熟悉的模友,我不建议使用AVR或progisp这两个软件刷bootloader,使用avrdude-GUI相当简单方便,点下面可以下载
AVR dude GUI.part02.rar
(194.07 KB, 下载次数: 316)
AVR dude GUI.part01.rar
(244.14 KB, 下载次数: 377)
两个一起下载后解压缩就行了
这个软件设置熔丝很简单直观
打开软件第一步,选择avrdude-5.6应用程序位置,当然是你已下载好啦
第2、3步选对应你自己的isp,我是用这个
第4步,选择芯片型号,这不用说当然是选择2560啦
第5步读取芯片熔丝位
这个步骤要强调说说,如果熔丝位设置不对,是不能刷进bootloader的,更有可能导致芯片锁住,所以要认真看清楚,还有一个注意点是Lock Bit这个熔丝位,每次刷完bootloader,再次读取这个熔丝位,它是会自己改变为3F,如需要再次刷bootloader,必须将它改回0F才能正常刷。
这是arduino里面提供的各型号的熔丝位说明截图,有需要的模友可自己去打开看看,在你下载的arduino里面arduino-1.0.4/hardware/arduino/boards这个文档
第6步是选择bootloader文件位置,一般是在arduino里面arduino-1.0.4/hardware/bootloaders/stk500v2/stk500boot_v2_mega2560.hex
选好bootloader就可以开刷啦
洗刷刷洗刷刷,咦,怎么卡在哪里不动了
如果那个绿色进度条停在半途不动,请不要慌张,不要以为死机了刷不进去,那是正常,因为2560内存大,所以刷起来有点慢,不像其他芯片,1、2、3、4、5搞掂,没这么快,大概要个6、7分钟才能搞掂,所以耐心等待一下,刷好了会跳出一个提示框框,一大堆的English,大概是这内容
avrdude.exe: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.02s
avrdude.exe: Device signature = 0x1e9801
avrdude.exe: erasing chip
avrdude.exe: warning: cannot set sck period. please check for usbasp firmware update.
avrdude.exe: reading input file "C:\Users\Administrator\Desktop\arduino-1[1].0.4-windows\arduino-1.0.4\hardware\arduino\bootloaders\stk500v2\stk500boot_v2_mega2560.hex"
avrdude.exe: input file C:\Users\Administrator\Desktop\arduino-1[1].0.4-windows\arduino-1.0.4\hardware\arduino\bootloaders\stk500v2\stk500boot_v2_mega2560.hex auto detected as Intel Hex
avrdude.exe: writing flash (261406 bytes):
Writing | ################################################## | 100% 80.98s
avrdude.exe: 261406 bytes of flash written
avrdude.exe: verifying flash memory against C:\Users\Administrator\Desktop\arduino-1[1].0.4-windows\arduino-1.0.4\hardware\arduino\bootloaders\stk500v2\stk500boot_v2_mega2560.hex:
avrdude.exe: load data flash data from input file C:\Users\Administrator\Desktop\arduino-1[1].0.4-windows\arduino-1.0.4\hardware\arduino\bootloaders\stk500v2\stk500boot_v2_mega2560.hex:
avrdude.exe: input file C:\Users\Administrator\Desktop\arduino-1[1].0.4-windows\arduino-1.0.4\hardware\arduino\bootloaders\stk500v2\stk500boot_v2_mega2560.hex auto detected as Intel Hex
avrdude.exe: input file C:\Users\Administrator\Desktop\arduino-1[1].0.4-windows\arduino-1.0.4\hardware\arduino\bootloaders\stk500v2\stk500boot_v2_mega2560.hex contains 261406 bytes
avrdude.exe: reading on-chip flash data:
Reading | ################################################## | 100% 75.96s
avrdude.exe: verifying ...
avrdude.exe: verification error, first mismatch at byte 0x1e000
0xff != 0x0d
avrdude.exe: verification error; content mismatch
avrdude.exe done. Thank you.
不懂English不再惊慌了,这回我有经验了,这是校验错误,是使用usbtinyisp下载时,可以正常下载,只是会出现校验错误,不影响正常使用。这问题要再次感谢某论坛里的一位高手,一位名叫弘毅 的高手是他的帖子及及时解答我的疑问,为我排除了bootloader一直刷不进去这个难题。谢谢!嘿嘿不知他有没有在这个论坛转。
好了,bootloader刷好了,就可以测试一下,连接上FT232读写器看看在arduino 能不能刷mwc的程序,先安装好FT232的驱动,安装好在电脑设备管理器里可以看到其相应端口
FT232有5个接口。借用一下商家的照片,自己懒得去拍了
除了3.3V这个不用接,其他5个接口都要接,FT232的+5V与飞控板的vcc接收,GND对GND,DTR对DTR,需要注意的是RX和TX这两根线,FT232的RX与飞控板TX对接,FT232的TX与飞控板RX对接,接好后可以尝试打开arduino 软件了
打开菜单默认是英文的
可以改为中文菜单,点菜单File下拉菜单Preferences,在Editor Languages这个菜单里选择简体中文,按0k,然后退出再重新打开就会变为中文菜单了
首先选择芯片型号
然后选择端口
选择mwc程序文件,我的是2.2版本,在你下载的MultiWii_2_2里面的/MultiWii/MultiWii.ino这个就是了
打开后跳出这个页面
然后点写入
这是烧写过程
如果没有烧写成功是这个样子
如果没什么意外的话应该是一次成功写入的
。如能刷进MWC程序,那证明2560已经可以正常工作,那下一步就是焊接MS5611 、HMC5883L、 MPU6050这三个芯片,如果没有热风台的话,只有一把电烙铁,那还是听从论坛高手们的建议,拿到外面请修手机的师傅帮忙焊一下吧,一般外面修手机师傅的技术还是可以的,基本一次焊好是没多大问题,不过还是有朋友遇上失败的案例。没有热风台自己单靠一支电烙铁焊这三块芯片难度相当大,焊接时间过长,容易热坏芯片,所以焊接温度和时间要掌握好。
自己焊我建议先焊MPU6050这一块芯片,还是那句话,如果你一次将三块芯片焊好,哪怕有一只信号输入脚短接或没有焊好,在GUI里面是会出现一大堆的I2C错误,一般你还真不好测量是哪个芯片没焊好还是焊坏了。焊接前最好先测量一下芯片供电电压,正常情况应该是3.3v。
|