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

5iMX.com 我爱模型 玩家论坛 ——专业遥控模型和无人机玩家论坛(玩模型就上我爱模型,创始于2003年)
查看: 24397|回复: 368

造福中国模友,NEO版B6系充电器固件及详细使用手册

  [复制链接]
发表于 2016-11-13 05:42 | 显示全部楼层 |阅读模式
点击查看详情
本帖最后由 neosunrise 于 2017-1-10 23:37 编辑

话说楼主本来对充电没什么兴趣更没有啥研究,直至最近几个月因为要装12S的Goblin 570所以入了个二手200W的Dynamite Passport充电器。到手发现USB接口有烧蚀的痕迹,散热风扇也少了颗螺丝,后来折腾了半天总算是收拾的像个样子了(详见《入了个二手充电器,大家帮忙看看我的电池有没有问题》)。一切似乎看着都很正常,可是用了没多久发现内置温度传感器数值不正确,这倒不要紧,要紧的是,电池电压检测不准。主要表现为,常温下冷机状态电压显示值与万用表实际测得值几乎一致,最多0.01V的差距,然而当内部温度升高时,显示的电压会比实际值要低0.02V-0.03V。这对于不能设置充电截止电压的原厂固件来说真是有点要命,毕竟电池面临过充的危险。于是就想着校准充电器试试,可所有能试的方法都试了,对B6有效但对Dynamite完全没用。。网上搜了下发现第三方开源固件Cheali Charger可以校准充电器的各项数据,对此我很感兴趣就下载了下来。刷到充电器之后发现真的很不错,功能比原厂的强大了不止一点,不仅可以校准电压电流,居然还能校准温度,实在是太完美了!
然而完美主义的我很快就感觉,这个固件虽然功能强大,但界面文字实在是没有美感可言,于是乎下载了源码自己修改并编译。怎奈AVR编程从未接触过,上一次玩还是直接在Windows下用Keil C直接编译HEX文件刷到STC单片机里,这跟Cheali Charger的编译方式完全不一样。好在七折腾八折腾的把固件在Cygwin下面编译了出来,先是刷到B6当中,没发现任何问题,可当我刷到Dynamite上时,发现系统对第6片电芯的检测值不断波动(详见《充电器刷了开源固件,发现第六个电芯电压检测波动很大》)。当时非常苦恼,因而与固件作者交流了很多次,对方也非常用心的给我提出建议并给出解决方案,很是感激。可是狗血的是,当我对若干电阻以及运放芯片做了详细的测量之后发现(当时怀疑是硬件故障),源代码不做任何修改直接用CMake + MHV AVR Tools编译出来居然没有任何问题!那一刻觉得自己有种被Cygwin愚弄的感觉,当然我知道这不是它的问题,一定是AVR编译器的版本没有选好或者哪里设置不对导致的。

不管怎样,正常了就好啊!接下来把源程序的文字全部重做,尤其是大小写问题(B6系充电,包括所有以B6做基础的增强版,都采用1602液晶显示器,这玩意问题在于大小写的高度都差不多,看着很是别扭,不如全部大写看的舒服),另外很多没有对齐的地方也做精细调整。最要命的是,调试程序不像在电脑上直接运行那么直观,每次都是刷到充电器运行测试(保守估计我的单片机被擦写了不下300次),很是花了一番功夫。就当我打算开始享受新固件给我带来的喜悦时,发现Dynamite的电压检测即便是校准了,但随着内部温度的变化还是会存在偏移,数值大约在0.02V左右,真的很让人沮丧。。仔细分析发现是采样电阻的热稳定性较差所导致的,具体表现是温度越高则显示值低于实际值,反之则高于实际值。后果是啥呢?就是充电会过充,保存的时候则截止电压会高于设定的电压(如设置在3.8V,结果保存结束,测得电池电压在3.82V)。如果所有电芯电压都是这样也就罢了,咱把满电电压改低一点不就行了么?事实证明我还是太单纯了,这玩意每片电芯的采样电阻温漂程度还不一致,我去!没办法,既然已经开始折腾,那就折腾到底吧(其实花点钱买个好点的充电器是最省事的做法,可谁叫咱就好折腾呢!)。一不做二不休,既然充电器内置温度传感器,那何不用这个作为参考来对电压值进行补偿呢?想法很简单,但做起来有点难——毕竟程序不是我写的,规模也算庞大。咋办?一点一点看呗!经过几天的琢磨、编码、调试、测试,最终这个功能按照既定的目标正常的运行了,现在每片电芯的电压误差不超过0.003V,处于可以接受的范围,当然我也没耐心继续调整了,否则精度还可以更高一些。

东西弄好了,就想着和大家分享一下,一来这类充电器固件的刷写教程,尤其是中文的教程不多而且也不够详尽;二来固件的界面都是英文,很少有具体的中文资料会对每个设置项进行详细的解释。在这样的初衷下,楼主花了很多天的时间写了一本该固件的使用手册,专门针对本人仔细修改并加入新功能的固件做了深入细致的介绍,从固件的刷写到充电器参数的设置、从创建一个电池充电方案到具体充电屏幕的各项数据的含义、从自制温度感应线到连接电脑实时观测充电数据等等,都用大量的篇幅做了解说,最大程度的帮助使用者利用好这个优秀的固件。由于改动较多,楼主也花了很多的时间和精力,经过原作者的同意,现将该版本的固件命名为NEOSUNRISE充电器固件(简称NEO固件),在充电器开机时,会显示“NEOSUNRISE SMART CHARGER”的字样。

以下是NEO固件在2.00版Cheali Charger的基础上所做的修改:
  • 将除了电池缩写(如LiPo,LiFe,NiHM)之外的界面文字全部改成大写,同时调整了全部英文表述,并将界面文字对齐;
  • 对开机之后的电池列表信息进行了调整,原固件为“Lipo 2000/6”,修改之后为“LiPo 6S 2000mAh”,类似的细节还很多,这里不一一列出;
  • 为参数设置菜单中恢复初始设置及EEPROM恢复初始设置增加了确认提醒,防止误操作;
  • 调整了蜂鸣器发声频率,改善了原固件的按键及警示提醒音效;
  • 针对带有内置温度传感器的充电器设计了电压检测温度补偿功能,以抵消电压采样电阻的自身温漂问题。

NEO固件的主要功能有:
  • 支持电池类型:镍铬(NiCd)、镍氢(NiHM)、镍锌(NiZn)、铅酸(Pb)、锂离子(Li-Ion)、锂铁(LiFe)、聚合锂电池(LiPo),以及自定义电池类型
  • 镍铬、镍氢电池功能:充电、放电、循环
  • 镍锌电池功能:充电、快速充电、充电+平衡、放电、平衡
  • 铅酸电池功能:充电、快速充电、放电、循环
  • 锂电池功能:充电、快速充电、充电+平衡、平衡、保存、保存+平衡、放电
  • 电池内阻检测、单片电芯内阻检测
  • 电池连线电阻检测
  • 内部温度及外部温度监测
  • 过充过放监测
  • 20组电池设置
  • 电压、电流、温度校准
  • 电压检测温度补偿(包括输入电压、输出电压以及1-6芯单片独立调整)
  • 支持LogView (用于在计算机上实时观测记录充电器运行数据)

注意:本固件理论上支持所有以B6为基础、以ATmega32单片机为核心的4键充电器,固件目前提供两个版本的下载:50W(没有内置温度传感器、液晶屏背光不可调)以及200W(有内置温度传感器、背光可调)。若要使用电压温度补偿功能,必须有内置温度传感器并刷写200W版本的固件才可以。当然如果你希望在外部温度接口那里接个温度传感器并装到充电器内部,以此作为温度补偿的参考,我也可以帮你完成这个目标,直接在本帖回复即可。

声明:该固件仅供学习与交流之用,禁止用于任何商业目的。分享的初衷是希望大家可以更好地使用手头现有的充电器,在刷写新固件之前请一定要记住备份原有固件,以防新固件不兼容。此外,使用者请自己判断充电器是否适用该固件,本人不对使用该固件造成的一切后果承担任何责任。如果你不接受本声明,请不要使用本固件!

启动画面
IMG_9386.jpg

电池选择界面
IMG_9385.jpg

USBASP线制作
IMG_9358.jpg

温度感应线制作
IMG_9361.jpg

充电器校准
IMG_9231.jpg

电压补偿展示(电芯1)
IMG_9335.jpg

充电数据实时监测与记录
IMG_9309.jpg
LogView_Graph.png

欢迎大家在3楼下载使用NEO固件,并提出自己的感受与想法!

评分

参与人数 1威望 +2 收起 理由
wayong + 2 写的不错!

查看全部评分

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

发表于 2016-11-13 07:59 | 显示全部楼层
万用表测量准吗?我总觉得不准
来自安卓客户端来自安卓客户端
 楼主| 发表于 2016-11-13 08:24 | 显示全部楼层
本帖最后由 neosunrise 于 2017-12-6 22:00 编辑

此楼为固件更新专用
2017-08-08:iMaxB6-NEO-V110_fan.rar 该固件与2016-12-19固件相同,但增加了对有内置温度传感器和风扇的支持。
2016-12-19:iMaxB6-NEO-V110.rar 该固件允许用户自定义充电器最大充放电功率,请详细阅读压缩包内的说明文件来进行设置。
2016-12-16:iMaxB6-NEO-50W-10W-Discharge.hex 该固件将放电功率提升到10W,最大放电电流为2A,充电功率不变。

2016-11-12:
主贴中所述固件以及使用说明书下载地址:http://pan.baidu.com/s/1boFI1af
该压缩包内含以下文件:
iMaxB6-NEO.ini(LogView配置文件)
iMaxB6-NEO-50W.hex(50W充电器固件,不支持内部温度检测、背光调节以及电压温度补偿)
iMaxB6-NEO-200W.hex(200W充电器固件,支持内部温度检测、背光调节以及电压温度补偿)
iMaxB6-Stock.bin(B6原厂固件)NEOSUNRISE固件用户手册.docx(使用手册)




来自安卓客户端来自安卓客户端
发表于 2016-11-13 09:19 | 显示全部楼层
本帖最后由 kennethsu 于 2016-11-13 09:54 编辑

好样的真有你的,我现在也是用 Cheali Charger 版本比原本随机的好用多,过两天再来改您的 NEO 版本,相信一定会更完美的。
重点是如果功能或介面有疑问有人可以问或是就直接修改原始码,给你拍手叫好。

还有手册写的也很详细,感谢您!

刚才先看一遍手册后有两个问题先提出:
1. 所有的文字全都改成大写有点不习惯,建议名词可以全用大写但如果是形容或动词还是根据英文阅读习惯用小写字。
2. 如果电池设置是 2S 或 3S 的电池形式时,在充电的过程或结束后查看该电池内部的详细数据如电芯电压或内阻时没用到的第 4,5,6 的数值就不要再显示出来。
   16x2 字体的画面很小都要显示第 4,5,6 电池芯的 "0" 数值画面只会增加按键的频繁操作与画面换页的时间而已。


发表于 2016-11-13 10:40 | 显示全部楼层
一款低端产品你花费这么大功夫 咳 精神可佩
来自苹果客户端来自苹果客户端
发表于 2016-11-13 10:59 | 显示全部楼层
该淘汰的东西了。不值得 折腾。
发表于 2016-11-13 14:03 | 显示全部楼层
连续关注了楼主的几个帖子,写得都很好,这个也是精华的内容。
一直不敢更新固件,怕刷坏了就不能用了,看了这帖子有折腾一下的冲动。
以前玩过avr的编程,手里还有个usb下载线,应该能用上吧。我试试有问题再找楼主帮助。
不同意有人说这个充电器不值得折腾,折腾的目的是提高水平,增长经验,说不定哪天就把B6升级成了高大上的了。
有个问题,楼主软件也是现学的?源代码可是一个好长的程序啊!
发表于 2016-11-13 16:32 | 显示全部楼层
支持折腾。赞赏折腾。

发表于 2016-11-13 19:27 | 显示全部楼层
支持楼主的折腾,这样负责的技术贴真的不多见了,虽然不用b6,但还是要谢谢楼主认真负责的精神,
来自苹果客户端来自苹果客户端
发表于 2016-11-13 20:05 | 显示全部楼层
,收藏了!感谢LZ无私奉献
发表于 2016-11-13 23:40 | 显示全部楼层
虽然不是太懂,有些是根本不懂(例如编程),但还是认真拜读了楼主的贴子,深深被楼主敬业的折腾精神所折服!!
 楼主| 发表于 2016-11-14 01:29 | 显示全部楼层
本帖最后由 neosunrise 于 2016-11-13 12:34 编辑
kennethsu 发表于 2016-11-12 20:19
好样的真有你的,我现在也是用 Cheali Charger 版本比原本随机的好用多,过两天再来改您的 NEO 版本,相信 ...

首先感谢你的回复,论坛需要有你这样能提出真正有意义的问题的模友!关于你的建议:
1. 文字全部改成大写一部分是因为1602的部分字母大小写高度差别不大,所以个人感觉看着会有些奇怪,另外其实在国外呆久了觉得看全部是大写也挺习惯的。但这里既然是为中国模友造福,那还是应该考虑国人的习惯(我以前在国内生活的时候看全是大写的文字也是非常难受),这个建议纳入修改范围。
2. 我很赞同你的想法,但原作者的思路是在充电器一启动根据硬件设定的平衡口来决定电池信息页面的内容。举个例子,如果充电器有六个平衡口,则无论你实际插入的电池有几个口,它都会分两页显示;如果有八个口(Turnigy有款充电器可以对8S电池进行平衡充),则会对多出的两个电芯另外增加一页。换句话说,这个页面内容在充电器一开机的时候就已经决定了的(而实际插入电池的电芯数则属于运行时变量,是一个可变的数值),如果需要修改策略,那就需要进行大的调整,当然不是无法完成的任务,只是需要时间。下面列出该段代码,供参考:
  1. {Screen::Balancer::displayVoltage1_3,   PAGE_START_INFO + PAGE_BALANCE_PORT , PAGE_NONE},  // 显示电芯1-3的电压
  2. {Screen::Balancer::displayVoltage4_6,   PAGE_START_INFO + PAGE_BALANCE_PORT , PAGE_NONE},  // 显示电芯4-6的电压
  3. BALANCER_PORTS_GT_6(  // 若硬件设置(在具体充电器的配置文件中)支持的最大电芯数超过6,则显示电芯7-9的电压
  4. {Screen::Balancer::displayVoltage7_9,   PAGE_START_INFO + PAGE_BALANCE_PORT , PAGE_NONE},)
  5. {Screen::Balancer::displayResistance1_3,PAGE_BALANCE_PORT, PAGE_START_INFO + PAGE_PROGRAM(Program::Balance)},  // 显示电芯1-3的内阻
  6. {Screen::Balancer::displayResistance4_6,PAGE_BALANCE_PORT, PAGE_START_INFO + PAGE_PROGRAM(Program::Balance)},  // 显示电芯4-6的内阻
  7. BALANCER_PORTS_GT_6(  // 若硬件设置(在具体充电器的配置文件中)支持的最大电芯数超过6,则显示电芯7-9的内阻
  8. {Screen::Balancer::displayResistance7_9,PAGE_BALANCE_PORT, PAGE_START_INFO + PAGE_PROGRAM(Program::Balance)},)
  9. {Screen::Methods::displayR,             PAGE_ALWAYS, PAGE_START_INFO + PAGE_PROGRAM(Program::Balance)}, // 显示电池总内阻及电线内阻
复制代码

昨晚为了调试B6的USB接口,不小心短接了电路板不知道什么地方,单片机现在无法写入任何数据了,只能读,而且开机直接提示是否重设EEPROM,按任何键没用,看样子是短路造成的Bootloader坏了,现在从中国订了两块ATmega32,至少得三个礼拜才能到,实在是抱歉!我自己也是很郁闷。。

 楼主| 发表于 2016-11-14 01:49 | 显示全部楼层
yjy4420 发表于 2016-11-13 01:03
连续关注了楼主的几个帖子,写得都很好,这个也是精华的内容。
一直不敢更新固件,怕刷坏了就不能用了,看 ...

理论上说,只要按照说明一步步来,是不会有问题的。关于值不值得折腾的问题,每个人有不同的想法和出发点,这本无可厚非。我个人喜欢钻研,这是乐趣所在,尤其是亲手将一台本来价值不高的设备改进成为性能优良功能丰富的工具,实在是一件很有成就感的事情,而这一点,对于只知道花钱买好设备而从来不去深究的人来说,是永远体会不到的。

当然在折腾的过程中也会遇到挫折,比如之前花了很大功夫把固件弄的很好看,结果却发现硬件的温漂问题,真的很受打击。也曾一度有想法要买一台好点的,如iCharger 308那样的充电器,那样多省事啊。269美元的价格买不起么?算算Goblin 570到目前为止的投资已经差不多1300美元了,除了充电器,大概还要再花500美元的样子,你说我会在乎再掏200多美金么?显然不是。问题的关键在于,如果我既能利用好手头的设备,又能体会到硬件编程的乐趣,何乐而不为?我这人就是喜欢折腾,无论是车、电脑、手机、遥控器(目前已有地平线DX8二代,但还是想折腾富斯9,打算刷个开源固件)、充电器、万用表还是单片机等等,反正能玩的都喜欢折腾。

我算是计算机科班出身(本硕博都是计算机专业,现在也是在大学计算机系里教书),但对硬件没有系统学过,只是自己爱好。该固件的源码很多很复杂,但仔细研读还是能发现背后的逻辑。没办法,要想把东西弄好必须得搞清楚细节啊,否则装了这固件的充电器谁敢用?

 楼主| 发表于 2016-11-14 02:08 | 显示全部楼层
本帖最后由 neosunrise 于 2016-11-13 13:21 编辑

最近网络不晓得怎么回事,访问国内的网站速度都好慢,而且经常打不开页面,所以帖子发重了,此楼就先留着吧。
发表于 2016-11-14 10:01 | 显示全部楼层

发表于 2016-11-14 14:07 | 显示全部楼层



看上去好厉害的样子!

发表于 2016-11-14 19:44 ——“来自手机” | 显示全部楼层
老师厉害
发表于 2016-11-15 02:49 | 显示全部楼层
赞LZ钻研能力
更重要的是分享精神。论坛上时不时有人回复可见,或者别人贴个小经验小窍门什么要,马上就会有人跳出来说,我早就知道了…
来自安卓客户端来自安卓客户端
 楼主| 发表于 2016-11-15 07:37 | 显示全部楼层
老金 发表于 2016-11-14 13:49
赞LZ钻研能力
更重要的是分享精神。论坛上时不时有人回复可见,或者别人贴个小经验小窍门什么要,马上就会 ...

是啊,而且有一点我觉得其实不大舒服的是,我的帖子是针对该固件进行讨论,若是在RCGroups或者Helifreak这样的论坛,感兴趣的人自己进来讨论,不感兴趣的直接略过,一般不会有人说你做了这么多完全没意义,因为这玩意淘汰了。。我想这也是为什么国内的很多论坛好帖子越来越少的原因吧。

对了,你用什么充电器啊,我对308 DUO还是比较感兴趣的,马上黑五了,心有点痒

评分

参与人数 1威望 +2 收起 理由
supertankhzt + 2 同感

查看全部评分

发表于 2016-11-15 10:04 | 显示全部楼层
neosunrise 发表于 2016-11-15 07:37
是啊,而且有一点我觉得其实不大舒服的是,我的帖子是针对该固件进行讨论,若是在RCGroups或者Helifreak ...

曾经也想买一个308或者4010,后来想想飞场离我家开车就一两分钟路,没必要带外场充电,就没有折腾,目前仍旧用几年前买的A6和A9,飞550一次四块电450一次八块电足够用了。小飞机用的1S或者2S电就用专门的多路充
来自安卓客户端来自安卓客户端
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

关闭

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

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