yangyh75 发表于 2009-8-7 09:58:01

电调之实践详解

在论坛里关注很久了,对电调很感兴趣(主要是I2C的功能,便于和单片机通信),于是在淘宝上找蚂蚁兄弟买了两块散件。第一次焊接贴片元件,一边看图一边焊接测量,花了两个小半天才弄好一块。焊好后对自己的手艺感觉还可以,能不能刷机成功和正常工作,心里实在没底。管它那,先刷机再说.....

RickyZhou 发表于 2009-8-7 10:03:03

调试一定要用限流电源

yangyh75 发表于 2009-8-7 10:10:57

1、按照实际说明先使用PonyProg2000_26g——说明一下要降电调测试工具和电脑的com口相连,测试工具的spi口好电调的spi口相连,(主1#线靠内侧,即靠近R26的那一边。测试工具的跳线要正确)。设置好熔丝位,点击write(写入后)成功。
2、接着使用PonyProg2000_26g刷入bootloader时没有成功,于是关闭PonyProg2000_26g,启动Kopter_Tool_V1_63,用其bootloader刷机工具,刷入bootloader成功。——注PonyProg2000_26g刷入bootloader没有成功,可能因为操作的问题,后来没有重新试过。
3、用Kopter_Tool_V1_63的程序刷机主程序时失败,试过好多次均失败,于是在转到PonyProg2000_26g刷机主程序一次成功。

————后来都按照上述的三个步骤,均能一次刷机成功,大家可以借鉴。

yangyh75 发表于 2009-8-7 10:20:12

接下来就是上电检测了。——接通电源后电机抖了两下,心理高兴,刷机成功了?——还是打开Kopter_Tool_V1_63在其motortest选项卡里选择1#,motortest activ的复选框打钩,推到调速滑块,马达抖动几下,既然稳定的转动起来了。整个调速范围应该还算平滑,至于启动时的抖动应该是无感电机的通病吧。

http://cache.amobbs.com/bbs_upload782111/files_17/ourdev_468233.jpg
电调测试示意 (原文件名:电调测试示意..jpg)

yangyh75 发表于 2009-8-7 10:33:03

可能由于过于高兴,急于做I2C通信实验,一时忘了电调供电是12v的,将SDA,SCL地线好电源线(12v)和单片机连接后,上电,电脑黑了(单片机用电脑usb供电),单片机死了,电调也不动了,损失惨重。

——电脑主板烧了
——单片机芯片烧了
——电调B端上管烧了、shunt也烧了

yangyh75 发表于 2009-8-7 10:38:44

http://cache.amobbs.com/bbs_upload782111/files_17/ourdev_468239.JPG
电流互感器 (原文件名:shunt.JPG)

yangyh75 发表于 2009-8-7 10:55:13

shunt也烧了——不可思议吧,看原理图其两端对地,怎么会烧了?
先说说shunt吧——它是一个电流互感器,其原型是在一导线的两侧(这里以上下举例吧)放置一磁场,然后在其正交的两侧(左右)放置导体极板,这样当导线里有电流时,电子在磁场的作用下发生偏转,于是会在两极板间产生电动势,在磁场一定的条件下,电动势大小和电流大小有确定的关系,于是就能检测出流过导线的电流。——看看示意吧

http://cache.amobbs.com/bbs_upload782111/files_17/ourdev_468247.JPG
shunt示意 (原文件名:shunt示意.JPG)

yangyh75 发表于 2009-8-7 11:13:07

事实上shunt是一个非耗能型的电流传感组件,而绝非电调里面的那个波浪线(电路板里是一个弯折的印刷铜皮)。德国人之所以叫shunt实际上就是套其电流传感的近乎罢了。应该是出于造价的考虑,事实上一般的电路,都不会安装真正的shunt。
——记得论坛里面曾经有人问过一个两端接地的波浪线是怎么传感电流的?——我的shunt烧了以后仔细查看发现,其实德国人的原理图有点疑惑大众的感觉。实际电路中,它的一端接地,另一端接的是mos下管的底脚,即所有mos管的电流都会流经shunt(波浪线)芯片是靠检测波浪线上的压降来检测电流是否过流的,这也就是为什么会烧坏波浪线的原因。
——随便说一下,我看过好多电动自行车等的无刷控制器也是靠检测mos管回路的压降来测量过流的。

yangyh75 发表于 2009-8-7 11:58:17

http://cache.amobbs.com/bbs_upload782111/files_17/ourdev_468321.JPG
真实线路连接 (原文件名:真实线路.JPG)


这样电流流过波浪线时才会产生压降。

yangyh75 发表于 2009-8-7 12:15:07

好在当初买了两套散件,烧了一个,只好重新再焊接另外一个了,按照前面的步骤,这个也是一次搞定。连上单片机,继续I2C实验。
——用arduino单片机发送0x52的地址,电调无应答,接着0x54、0x56、0x58也无应答,干脆来个广播地址0x00,还是没有应答。难道蚂蚁的hex文件没有I2C代码,那就自己重新生成hex刷机了,用蚂蚁的036源码生成hex后,刷好后测试时变成了3号位置,同样也是试边了地址也无应答。?????——强行将twislave.c里的代码改成TWAR = 0x52;还是没有应答????
——用Kopter_Tool_V1_63测试时仍然是3#位有效。——到此应该可以认为实际用Kopter_Tool_V1_63测试时依靠的不是I2C总线,因为强行改地址后其测试依然不变。

yangyh75 发表于 2009-8-7 12:23:17

仔细查看源代码,发现twislave.c里接收油门信号的I2C处理代码位于ISR (TWI_vect){}函数里,找遍了这个电调的代码,都没有发现什么地方有调用过该函数的语句。看了好几个版本的电调代码,都是如此,估计问题就出于此吧。



——接下来的就请高手赐教了,希望该贴能成为电调手把手DIY的例子,感谢各位赐教......

scj666 发表于 2009-8-7 13:07:55

学习!

rei1984 发表于 2009-8-7 13:12:52

从头看到尾,yangyh75 兄弟还是没有弄懂mk_blmc的代码。

mk原理图也是,只是你的理解问题。gnd要理解为net就可以了。


ISR (TWI_vect){}//从头到尾没调用?? 看来你需要看一下gcclib帮助文件。

--------------------------------------
一切的原因出在你还没读过电调的源程序。

hn_ny_dxs 发表于 2009-8-7 13:30:41

【11楼】 yangyh75

ISR (TWI_vect){}函数 是 TWI通信中断服务程序,TWI通信用的,无需外部函数来调用它。

dasuantou 发表于 2009-8-7 20:19:02

还是中断概念的问题,中断可以说是一种硬件调用.

yangyh75 发表于 2009-8-9 13:34:48

论坛里好像有人说USB转串口不能刷机,今天测试了一下,USB转COM完全可以运行Kopter_Tool_V1_63测试电调。同时也成功使用PonyProg2000_26g进行电调的程序刷机,只是使用PonyProg2000_26g刷机时速度极其缓慢,耗时近1个小时。速度是让人无法忍受的,但在极端条件下,这个也可以作为一个无奈的办法。

110112110 发表于 2009-8-25 20:32:26

【16楼】 yangyh75
大侠能不能给个IIC通信的代码。
初次学习,有好多不明白的地方。

yangyh75 发表于 2009-9-7 14:49:41

今天终于成功用arduino单片机和电调进行了通讯。——设置电调的i2c地址为0x50,由于arduino单片机对程序代码的i2c地址进行了左移位操作,所以单片机程序的代码应该设置为0x28,即0b00101000,左移一位后为0b01010000,即0x50.这样才能和电调的i2c地址配平,继而完成通讯。
页: [1]
查看完整版本: 电调之实践详解