一乐电子

一乐电子百科

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

快捷登录

手机号码,快捷登录

搜索
楼主: cdhigh
收起左侧

[avr] M8V7数控电源升级为M328V7,除LCD12864外,还有新功能和新赠品

  [复制链接]
 楼主| 发表于 2021-11-8 22:02 | 显示全部楼层
本帖最后由 cdhigh 于 2021-11-8 22:13 编辑
TSG1989 发表于 2021-11-8 20:54
大佬,你好,看到您在搞M8V7,很是兴奋,不知可否分享一下源代码学习一下,另外请教一下,这个M8V7改7735驱 ...

此电源的后台任务太多,不应在屏幕刷新上花费太大,尽管不是不可以,但彩屏应该不是一个好的选择,还有一个问题是因为软件使用缓冲区绘图,所以分辨率提高后,内存占用也会提高,也要看内存够不够用。所以彩屏的支持还是先放到TODO里面吧。
如果像网上有的方案一样,使用两个M8,一个专门绘图,则支持彩屏毫无压力,M8和M328的运算能力MIPS是一样的,不同的只是存储空间和部分外设的不同。
不过如果要增加成本,我宁愿将 ”PWM模拟DA方案“ 换为真正的DA芯片,AD也可以考虑外挂高位AD芯片,成本效益更好。

12864的OLED屏支持来说就简单很多,但是我搜索了一下,好像OLED屏都很小,用在这个电源上真的没意思,所以就不支持了。

关于代码开源,我本来想开源V7.26版本(M8版本)的,但是最好还是经过原作者GandF同意后再开源,不过GandF已经消失在人海中了,看有多少人对V726感兴趣,如果人多一些就开源。

至于M328V7,还在持续开发中,开源的事情要等以后再说。如果是出于学习的目的,可以发部分模块的代码给你。





点评

先谢谢狗狗的付出,关于彩屏个人认为可以单独出一个彩屏的固件,电源的作用就是电源,有些辅助功能就可以了,功能多了又复杂占用资源有多,不如满足下像我这样的小白搞一个彩屏的固件,简单好用就可以了,个人看法,  详情 回复 发表于 2022-11-9 09:56
多谢大佬了,感激不尽,我这倒是有原版的源代码,里面汇编的函数较多,还不太会转C,还是谢谢你的耐心解释,多谢了!我现在也在用ICCAVR,但这个工具太老了,不太好用!  详情 回复 发表于 2021-11-9 22:25
发表于 2021-11-9 22:25 | 显示全部楼层
cdhigh 发表于 2021-11-8 22:02
此电源的后台任务太多,不应在屏幕刷新上花费太大,尽管不是不可以,但彩屏应该不是一个好的选择,还有一 ...

多谢大佬了,感激不尽,我这倒是有原版的源代码,里面汇编的函数较多,还不太会转C,还是谢谢你的耐心解释,多谢了!我现在也在用ICCAVR,但这个工具太老了,不太好用!

点评

感谢GandF,大部分汇编代码都有C语言注释,所以转换工作也没有想象的那么难。 不过偶尔还是需要一点汇编能力,我都是现查现用的。  详情 回复 发表于 2021-11-9 23:23
 楼主| 发表于 2021-11-9 23:23 来自手机 | 显示全部楼层
TSG1989 发表于 2021-11-9 22:25
多谢大佬了,感激不尽,我这倒是有原版的源代码,里面汇编的函数较多,还不太会转C,还是谢谢你的耐心解 ...

感谢GandF,大部分汇编代码都有C语言注释,所以转换工作也没有想象的那么难。
不过偶尔还是需要一点汇编能力,我都是现查现用的。

点评

好的,请问用的什么编译器呢?  详情 回复 发表于 2021-11-11 21:07
发表于 2021-11-11 21:07 | 显示全部楼层
cdhigh 发表于 2021-11-9 23:23
感谢GandF,大部分汇编代码都有C语言注释,所以转换工作也没有想象的那么难。
不过偶尔还是需要一点汇编 ...

好的,请问用的什么编译器呢?

点评

原版M8V7只能在WINDOWSXP下使用ICCAVR6.22编译。 如果将汇编转换回C语言后,可以在WINDOWS7及以上使用ICCAVR7。但是M8就装不下了,需要换MCU了。 如果要换编译器,AVR GCC是较好的选择,官方免费IDE ATMEL SUDIO自带  详情 回复 发表于 2021-11-11 23:05
 楼主| 发表于 2021-11-11 23:05 | 显示全部楼层
TSG1989 发表于 2021-11-11 21:07
好的,请问用的什么编译器呢?

原版M8V7只能在WINDOWSXP下使用ICCAVR6.22编译。
如果将汇编转换回C语言后,可以在WINDOWS7及以上使用ICCAVR7。但是M8就装不下了,需要换MCU了。
如果要换编译器,AVR GCC是较好的选择,官方免费IDE ATMEL SUDIO自带,编译效率高,开发工具完善,就是需要改动不少代码才能移植到AVR GCC。
如果有移植问题,我愿意提供协助。


 楼主| 发表于 2021-11-16 22:06 | 显示全部楼层
升级 7.83.2 (build20211116)  
1. 优化PWM微调算法,提高电压输出精度,减小电压尾数跳动  
2. 输出电量显示为三位小数  

关于第一个优化的说明,原来版本使用单门限判断电压差值,经过调试发现,在某些情况下会导致软件频繁微调PWM值,导致输出电压上下波动。
现在采用类似迟滞比较器原理,使用双门限机制,保证不会在阀值附近多次触发软件微调PWM。
经过长时间测试,修改后的输出电压很稳定,非常满意,建议升级。

关于第二个修改的说明,程序内部本来就一直是mAh精度,之前因为是1602/1604/2004显示位置不够,才截断最后一位数字,
现在使用12864屏幕可以全部显示出来。




发表于 2021-11-16 23:12 | 显示全部楼层
 楼主| 发表于 2021-11-20 07:31 | 显示全部楼层
本帖最后由 cdhigh 于 2021-12-6 20:34 编辑

M328V7经过了示波器和红外解码器模式的“不务正业”后,终于回归正途!
电源的本质功能就是供电和充电。

而智能充电模式顺应天意的就这么来了~


2021-11-20 升级V7.84
1. 增加 通用智能充电器模式  
2. 增加配置项"default mode",可以让电源启动后自动进入某个工作模式  
3. 优化短路保护的门限判断,负载电阻小于50毫欧判定为短路

下面是关于 通用智能充电器 的说明  

M328V7的用途除了供电外,给各种电池充电也是一个非常重要的需求。
使用M328V7的Normal模式给电池充电其实已经很好用,调整好限压和限流数值,然后接入电池即可,我一直都是这样充电的。
但这种方式缺点也很明显  
  • 只能限压恒流,无法实现三段式充电或脉冲充电,对电池不好
  • 没有充满自停功能
  • 没有各种电池保护机制


先来一个充电过程中的界面展示
charger_real.png


充电器特性  
  • 支持镍氢/镍镉/磷酸铁锂/锂离子/高压锂离子/铅酸电池的充电
  • 支持单体电池或串联电池组的充电
  • 支持三段式充电(预充/恒流/恒压)和脉冲充电方式(有效去极化,是铅酸电池的更好充电方法)
  • 支持预充电时间限制(最长30分钟)和总充电时间保护
  • 支持电池温度监测,避免损坏电池或引发火灾
  • 充电过程随时显示充入的电量和当前百分比,可有效评估电池质量
  • 支持充电过程电压或电流曲线显示(第二屏)



硬件准备  
没有特别的额外硬件需求,直接正负极接电池即可。  
电池温度监测为可选项,如果需要,请参考散热器温度监测方案,使用一个LM35接入ADC4(PC4/27脚)。  


充电过程和算法  
  • 低于预充门限使用10%电流激活电池,之后转恒流充电或脉冲充电,到截止电压后转恒压充,恒压充电电流小于10%则结束充电
  • 预充时间限制为30分钟,30分钟未达到预充门限则中断充电
  • 如果接入了LM35,则随时监控电池温度,超过50度中止充电
  • 一旦设置了最长充电时间,到时间后即使没充满,也中止充电
  • 脉冲充电是为铅酸/镍氢电池设计的,在快速充电的同时能很好的抑制欧姆极化和浓度极化,可以保护电池的同时充入更多的电量,建议使用。针对锂电池,脉冲充电也有效,特别是快速大电流充电,在脉冲间隙能有效吸收充电过程中产生的气体和其他反应物

电池类型 标称电压 预充门限 充满门限 最大串联数 脉冲周期(如开启) 界面显示
锂离子电池 3.7V3.00V 4.20V 6 充1s停100ms Li3.7V
磷酸铁锂电池 3.2V2.50V 3.65V 6 充1s停100ms Li3.2V
高压锂离子电池 3.8V3.00V 4.35V 6 充1s停100msLi3.8V
镍氢电池 1.2V0.80V 1.40V 12 充电:充2.5s停0.5s
涓流:充300ms停1700ms
NiMH
铅酸蓄电池 2.0V1.70V 2.40V 12 充电:充5s停1s
涓流:充100ms停900ms
Pb-Ac


界面和操作方法  
  • 开机时按住电流编码器按键进入工作模式选择,选择"Battery charger"进入,
  • 如果您经常使用M328V7充电,也可以按住电压按键开机,进配置项"default mode"里面选择"Battery charger"并保存,这样每次启动电源都自动进入充电器模式。如果要使用充电器模式,严重推荐选择为 "Last mode",避免充电过程中偶然的断电重新来电后电源自动进入Normal电源模式,万一电源的电压电流比较高,可能会损坏电池。
  • 短按电压编码器按键进入设置模式,界面右边对应的配置项前会有光标闪烁,旋转电压编码器选择配置值,短按电压按键在各配置项目之间循环,10s未动作锁定按键,退出设置模式。
  • 接入电池后(电池识别门限为0.4V,低于此电压的电池无法被识别),短按电流编码器按键启动充电。
  • 针对完全放电(电压为零或小于0.4V)的电池,可以长按电流按键5s强制启动充电,开始会用5%的小电流尝试恢复电池电压,5分钟后如果电压没有上升到电池识别门限,则中止恢复过程,否则自动开始预充电阶段。
  • 每次启动充电后会自动将这些配置数据保存到EEPROM,下次开机不需要重新选择,方便重复充同类型的电池。
  • 充电器模式照样支持电压电流曲线显示,锁定状态下旋转电压编码器进入。

mode_select.png


charger_main.png

charger.gif


界面下方显示充电各个阶段和一些错误信息。  
显示信息                                  说明
connect battery 未检测到电池,请连接电池
press I to start 短按电流按键启动充电
recovering [00:00:00] 零伏电池恢复中
activating [00:00:00] 正在预充电,后面显示的是已充电时间
activating timeout 预充电超时,30分钟未达到预充电门限
charging [00:00:00] 正在充电中,后面显示的是已充电时间
CV charging[00:00:00] 正在恒压充电中,后面显示的是已充电时间
charging timeout 超过了设定的最长充电时间还未充满
finish 充电正常结束


其他说明   
  • 此电源没有电池反接保护,接入电池时请再三确认,避免烧毁电源或电池,如果需要反接保护电路,可以参考 <https://www.mydigit.cn/thread-168830-1-1.html>,或最简单的方法是输出端反向并联一个肖特基二极管,输出串联保险管后再接电池,一旦电池反接则烧毁保险管达到保护目的
  • 输出线粗一点短一点,避免线路压降过大影响电池电压的检测和判断
  • 对于镍氢等不方便使用夹子的电池,建议使用质量好的电池座,避免接触不良影响电压判断
  • 如果您的电源输出端并联了负载电阻,建议去掉,避免充满自停后消耗电池能量
  • 为了能适用多个串联的电池组,软件对电压电流的限制比较小,所以连接电池前建议小心确认好电压电流,避免高压大电流损坏电池或导致起火爆炸等事故
  • 充电过程中的电量百分比计算可能不一定很准,为了减小存储空间占用,软件内部使用最简单的线性化计算公式(实际的充放电电压都是曲线,不可能是直线),本身就不准,并且还受电池类型/充电电流/电池内阻/线阻等很多因素影响,结果仅供参考
  • 业界一致认为铅酸电池充电的最好方式是脉冲充电,但关于脉冲充电的时间周期选择则有很多方案,在实现此充电器模式过程中,我查阅了很多资料,最后确定这个认为比较好的5s/1s的周期。还有另一个问题是是否加入负脉冲有很多争论,有不少研究表明除非用于修复电池,否则在正常充电过程加入负脉冲对电池并没有好处,反而影响可充入的电量和电池寿命。因此,我没有加入负脉冲的功能,如果要实现,只需要加入一个放电回路,不难,现在PB0是空的,可以用来控制一个MOS+功率电阻或恒流源即可
  • 如果选择的是脉冲充电方法,则充电过程中界面显示的电压电流可能会不停变化,这是正常的
  • 我看了一些资料,说镍镉电池可以使用-dv充电,但镍氢不耐过充,使用-dv充电会影响电池寿命,而且M328V7不像一般充电器电路板和电池紧挨着,干扰小,M328V7一般情况下会使用两根线接外置电池座,干扰大,容易导致误判,所以权衡再三的结果就是不实现-dv充电算法,转而使用充到限压值后转恒压补充电量,电流小于一定程度后停止
  • 为了更好的电池寿命,涓流充电阶段我就给省了,涓流阶段也充不了多少电量,反而影响电池寿命
  • 充电器模式下不显示散热器温度,但如果您部署了散热器温度IC,还是有监测和过温保护的,只是不显示而已
  • 电池温度监测功能仅适用于ST7565及兼容的SPI屏和ST7920的串口模式,ST7920的并口模式占用了ADC4,无法接入LM35




当然了,如果是充锂电的需求,一个几毛钱成本的TP4056就解决了,所以此功能值得吗?我也说不清,不过反正不要钱(前提是已经有了M8V7)~而且TP4056的充电电流太小  

但是如果有充铅酸蓄电池的需求,市场上的电瓶智能充电器都挺贵的,这个功能至少可以部分替代这些商品充电器,剩下的问题就是M328V7的最大电流只有10A,针对大容量的电瓶充电还是有些不够。



评分

参与人数 1一乐金币 +100 收起 理由
3AG1 + 100 很给力!

查看全部评分

发表于 2021-11-20 12:20 来自手机 | 显示全部楼层
楼主更新好快
 楼主| 发表于 2021-11-20 15:52 来自手机 | 显示全部楼层
我一直很好奇此固件在真实ST7920屏上的表现,有朋友测试过配合ST7920的吗?帮忙给个反馈?

本版积分规则

QQ|一淘宝店|手机版|商店|电子DIY套件|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2024-5-5 01:45 , Processed in 0.054185 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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