毕业设计| STM32+TI BQ76940设计48V BMS方案(资料分享)

129 篇文章 32 订阅
37 篇文章 8 订阅

今天分享的是采用STM32 MCU+TI的BQ76940AFE+BQ34Z100-G1电量计+BQ76200高端驱动设计的48V BMS方案,作为毕设较为少见,但建议对电源设计感兴趣的小伙伴可以自己自制一个。

成品介绍

这是根据TI官方那个方案改:精确监测和 50μA 待机电流、13S、48V 锂离子电池组参考设计TIDA-010030,链接如下:https://www.ti.com.cn/tool/cn/TIDA-010030#technicaldocuments

原方案里的MCU用的是TI自家的MSP430,由于没用过,我自己改成了STM32F103C8T6。

除了电量计这块没有进行充放电学习过程外,基本实现要求功能,自定义的过流,短路,过放,过温都行。可以自动识别充放电,充电过程进行电池均衡(这里设置了一节),防充电器倒冲(程序存在BUG我最后只做到了10V,如果一上来就低于10V就不管用了),CAN总线传输数据也整上了。BQ7718我买错型号了,所以这个冗余保护部分就没测试过,不过这部分所在的第二块儿PCB很简单,直接改官方的PCB也行,我就是这么干的。

本文只对关键部分进行赘述,能力有限,欢迎大佬分享经验,先上成品图:

具体方案

原理框图:

 总览原理图:

 STM32我是用Cubmx进行的快速开发,配置起来很方便,具体流程我也是根据网上各种Cubemx教程一点一点来的,在此之前完全没用过,软件一直在吃灰。。。。。。配置如下。

注意事项

1)电流采样部分的PCB布线

这块儿很重要,硬件不行直接影响后面的软件程序设计。电流采用回路没设计好直接导致采集回来的电流老飘,然后误动作,因此我重打了一块板子,唉。

这里分享一个ADI的设计方法,可以借鉴学习:https://www.analog.com/en/analog-dialogue/articles/optimize-high-current-sensing-accuracy.html

第一次给这种板子布线,傻傻的,光顾连线了,额。程序开发到一半发现电流怎么都归不了零,明明什么负载都没接,它却处于一个较高的波动,极其蛋疼。没法设计自动识别充放电了。于是第二次我参照官方的PCB进行了以下改进,做出来终于正常了。

所以布线要认真,我这一共弄了三版,第一版直接封装搞错好几个。。。。。。

2)与BQ76940的IIC通讯

Cubemx的硬件IIC下,我用的BQ7694003的IIC地址是0X08,实际上要写0X10。

由于我用的是Cubemx的硬件IIC,所以玩过这个硬件IIC的想必都碰过坑,我还行,做足了前期准备。幸运的是我参考了这篇博文:STM32F103硬件IIC在HAL库下入坑指南 https://blog.csdn.net/niushijia007/article/details/99671761

同时我还在网上搜刮到了BQ76940和BQ34Z100-G1的相关程序。

在刚开始测试与BQ76940进行IIC通讯时,发生了无法通讯的问题,其根源在于BQ76940使用的是7位IIC地址:0X08。而STM32的硬件IIC是取8位地址中的前7位(从左往右数),然后直接将其最低位强制改为0(表示写操作)或1(表示读操作),最后最高位补0。这样导致我输入的从机地址是0X08,实际上发送出去的是0X40,BQ76940根本不响应,通过逻辑分析仪才看出来。

之后通过将从机地址手动左移一位后变为了0X10,这一次终于正确了,发送出的是0X08。可是,IIC读操作回来的数据仍然对不上。经过逻辑分析仪比对,人工CRC计算,发现CRC校验没过。校验时需要用到从机地址。虽然逻辑分析仪中显示的发送地址是0X08,但从机计算时采用的却是0X10加上读操作1(即0X11)。因此主机在进行CRC计算时就需要手动在原从机地址上+1处理,修改后读操作就能成功通过CRC校验。(PS:读操作即使不进行CRC计算流程也行,不过嘛,带CRC更保险)具体原因可以看BQ76940的官方CRC通讯手册。

 

 

 补一张读操作时的图片,用下面的工具选择CRC-8,然后输入“11 FF”即可计算出从机BQ76940返回的CRC值:“B1”。

3)与BQ34Z100-G1的IIC通讯

BQ34Z100-G1这款电量计是阻抗跟踪的,比较准,不过对于新手来说也坑,它得预先配置文件,我是咸鱼专门买了个自制的EV2400然后用BqStudio配置的,要不真的很难整。

好在网上程序也好找,直接搬然后改一改就行。我只搬了后续的读取部分,初始化有些麻烦,还是老老实实用BqStudio配置吧。

还有它的IIC地址,搞得我很方,在Cubemx的硬件IIC上你写0XAA它实际输出的是0X55,就能用了,和之前那个BQ7694003的0X08你得手动左移一位不一样。

不过,芯片调试这里TI官方可是给了现成的调试软件,BQ76940有专门的上位机程序,BQ34Z100-G1有BqStudio,建议咸鱼卖个便宜的EV2400一步到位,省很多麻烦。

最后的成品我只进行过短路测试,没有进行过长期的实际使用。能力一般,水平有限。肯定有很多漏洞,还有改进空间。

【资料分享】如果大家有想要的学习资料可加群领取:769843038

下方实例教程:

一节课学会液晶屏驱动开发

从零开始构建一个智能家居项目

天猫精灵蓝牙Mesh实战

智能小车设计

小米手环软硬件开发技术

智能农业沙盘

WIFI音箱产品

  • 9
    点赞
  • 85
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值