根据公司需要开发了以ML5238电池管理芯片+STM8S为核心的电池管理系统。由于前期对BMS系统还是了解甚少,开发起来也遇到了不少困难。再开发管理系统的同时,我也开发了管理系统的上位机,上位机用C#开发我也是第一次。经过自己一个月我开发,终于把管理系统和上位机开发完成了。今天特写篇文章来写下心得以记录自己的成果。

开发环境:window10系统

开发软件:IAR for STM8S;visual studio 2017;

开发工具:电脑一台;ST_link V2烧录器一个;

ML5238介绍:

ML5283是16节锂电池组二次保护系统的模拟前端IC. ML5283提供电池电压监控, 充放电电流监控功能,并且可以检测每个电池单元充电/放电的过充/过放情况。 ML5238具有短路电流检测功能, 可以主动关断充电/放电的MOS_FET,而无需外部MCU。

上位机介绍:

为了配合电池包的使用,开发的一套上位机对电池包的监控和设置,上位机分两个页面,一个是电池包状态显示页面,另一部分是电池包参数设置页面。http://buy.42iot.com

电池包状态显示页面:

上图中可以显示没个单元的电池电压,电池均衡状态以及其它的状态。

电池包参数设置界面:

这个页面可以根据需求修改电池包的参数以满足自身需求。

电池保护板源码设计:

电池保护板的MCU IC采用的是STM8S105K4T6,ST公司的产品性价比还是很高的,此产品价格比51低性能比51强不少。

MCU与ML5238芯片的通信是采用4线SPI(模式0),MCU与上位机的通信方式是串口(波特率为9600)。

程序流程图:

在程序设计上,读取和保存EEPROM代码如下:

在main函数上加上看门狗防止异常,看门狗代码如下:

在代码设计均衡算法时,要特别注意ML5238使用手册上的说明,我把那部分翻译并截取过来;

欢迎大家关注。

至此,我就介绍到这里

ML5238电池管理芯片笔记的更多相关文章

  1. exynos 4412 电源管理芯片PMIC 的配置及使用方法

    /** ****************************************************************************** * @author    Maox ...

  2. BQ24296充电管理芯片使用过程中的注意事项

    BQ24296遇到的一点问题 概述:BQ24296是TI出品的具有窄范围VDC控制.基于I2C通讯的最大支持3A充电电流的开关式电源路径管理芯片.可以轻松实现2A以上的大电流充电,能量转换效率达到90 ...

  3. C++内存管理学习笔记(5)

    /****************************************************************/ /*            学习是合作和分享式的! /* Auth ...

  4. C++内存管理学习笔记(6)

    /****************************************************************/ /*            学习是合作和分享式的! /* Auth ...

  5. C++内存管理学习笔记(7)

    /****************************************************************/ /*            学习是合作和分享式的! /* Auth ...

  6. Docker Image管理学习笔记,ZT

    Docker Image管理学习笔记 http://blog.csdn.net/junjun16818/article/details/38423391

  7. 浪潮各机型管理芯片BMC IP(智能平台管理接口)设置

    NF5240m3/NF5140m3/NF5280m3/SA5212H2/NP5540M3NF5270M3/NF5170M3/NF8420m3 IPMI主板集成管理芯片BMC IP 设置开机按DEL键进 ...

  8. Android4.4电池管理

    一.概述 Android4.4的电池管理功能用于管理电池的充.放电功能. 整个电池管理的部分包含Linux电池驱动.Android电池服务.电池属性和參数.电池曲线优化四个部分. Linux电池驱动用 ...

  9. 三节锂电池充电管理芯片,IC电路图如何设计

    关于三节锂电池供电的产品,在三节锂电池上,需要三个电路系统: 1,三节锂电池保护电路, 2,三节锂电池充电电路, 3,三节锂电池输出电路. 1.三节锂电池保护电路,芯片电路图 控制三节锂电池池的充电电 ...

随机推荐

  1. Python---进阶---常用模块os、jso

    一.写一个6位随机验证码程序(使用 random模块),要求验证码中至少包含一个数字.一个小写字母.一个大写字母 import randomimport string #help(string) co ...

  2. 【leetcode】1129. Shortest Path with Alternating Colors

    题目如下: Consider a directed graph, with nodes labelled 0, 1, ..., n-1.  In this graph, each edge is ei ...

  3. CSS中的自适应单位vw、vh、vmin、vmax

    1.vw.vh.vmin.vmax各单位的意义 上面的自适应单位可以统称为视口单位. 可以先了解一下视口指的是什么? 在PC端,视口指的是在PC端,指的是浏览器的可视区域:而在移动端,它涉及3个视口: ...

  4. 设计模式学习笔记——Visitor 访问者模式

    1.定义IVisitor接口,确定变化所涉及的方法 2.封装变化类.实现IVisitor接口 3.在实体类的变化方法中传入IVisitor接口,由接口确定使用哪一种变化来实现(封装变化) 4.在使用时 ...

  5. (转)mnist.load_data()出现错误

    解决方法:本地导入1.下载mnist.npz文件mnist.npz链接imdb.npz链接2.将上述文件放于合适位置(执行keras程序的python环境中),因为我用的是python虚拟环境,所以我 ...

  6. db2用户权限赋值

    <!------------创建db2用户和组-------------------------------------------> [root@localhost ~]# userad ...

  7. jni中arm64-v8a,armeabi-v7a,armeabi文件夹的意义和用法<转>

    jni中arm64-v8a,armeabi-v7a,armeabi文件夹的意义和用法 起因 之前并没有关注这块,直到:您的应用被拒绝,原因:xplay5sQ心里点击笑值点击拍照显示停止运行,查看发过来 ...

  8. ORACLE DG添加redo日志成员

    ORACLE DG在线日志添加日志成员 SQL>select SEQUENCE#,first_time,next_time,APPLIED, THREAD# from v$archived_lo ...

  9. ajax传递json参数

    var pros = []; for(var i = 1; i <= 2; i++) { var obj = {}; obj.id = i; obj.age = i*20; pros = pro ...

  10. java开发客户端发送请求到服务器端出现这样:JSON parse error: Unexpected character ('}' (code 125)): was expecting

    org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Unexpected cha ...