楼主yulin wang 想使用BQ76930设计一款锂电池控制线路,但是对其初始化功能以及如何使用不太明白,故发帖求助: 我现在接入8节锂电池 通过I2C初始化QP769306 我需要设置哪些寄存器呢?我的理解是:1.设置CELLBAL和 CELLBAL1 2.设置SYS_CTRL1和 SYS_CTRL2 3.设置PROTECT1和PROTECT2 4.设置OV_TRIP和UV_TRIP 5. 设置CC_CFG = 0x19. 还有 假如我想设置OV_TRIP为3.7V 那么我该对应的向OV_TRIP中写入什么值?那个换算关系是怎么样的?我看过手册了,没怎么看明白 另外,假如我读到VC1_HI和VC1_LO中断数据为0x8aa,那么对应的我该如何换算成所需要的电压值呢,换算关系是怎么样的? 最后 我如何知道电池包的SOC呢?谢谢了!
帖子链接如下所示:http://www.deyisupport.com/question_answer/analog/battery_management/f/35/t/67317.aspx
对于楼主的这个问题,TI FAE: Richard Tang 给出了解答:通常来讲,初始化的时候需要对0X01~0X0B地址的寄存器进行配置,这些决定了这个芯片的行为。关于OV_trip的设置,你需要参考规格书23页的内容,先计算出完整的14bits的值,然后去掉高两位和低四位,把中间的8位填进去就好了。关于电压的换算关系,你需要参考规格书19页的内容,根据芯片内部的Gain和offset来计算。至于SOC,因为BQ76930本身并不支持电量计,所以需要你自己在MCU里面进行计算,当然,如果配合TI的BQ78350就可以直接读取了。
下面我们再来看看楼主的另外一个问题:我想确认下 那个Gain和offset 的值 是芯片自己已经设定好了的么?还是需要我人为的设置呢?
对于这个问题,TI的技术人员同样给出了解答:是芯片出厂的时候已经校正了的,你只需要读出来。因为BQ78350本身就是一个很大的MCU,所以一般来讲是不需要另外再加MCU的,就如笔记本电池方案的应用一样。由于BQ78350目前还没有正式的Release,请和你们公司对应的TI的FAE联系。
我们再来了解一下楼主的另外一个疑问:还有个疑问 BQ78350和BQ76930它们之间有什么区别? 我想要监测8节电池的单体电压、 温度、SOC、充放电 有没有哪款芯片都集成了这些功能?
对于这个问题,TI 技术人员的解答如下:BQ76930是一个模拟前端,可以采集每节电池的电压,还有温度,电流,同时还有驱动的控制和硬件保护,BQ78350是配套的MCU,通过I2C读取76930里面的信息,可以实现软件级别的各种保护,同时实现智能的均衡和保护恢复等功能,还有采用TI CEDV算法的电量计算功能。外部可以通过SMBUS从78350读出任何需要的信息,比如电池电压,温度,电流,满充容量,剩余容量,SOC,保护状态等。而且对于设计人员来讲,不需要编写软件,只需要把相应的参数配置进78350即可,就如TI的笔记本电池方案一样。
以上就是关于BQ76930 初始化问题相关问题的解答,我们可以好好学习一下。
那么 BQ76930究竟是一款什么样子的芯片呢?我们改如何正确的使用BQ76930来设计电池监控线路呢。这些都是我们在设计中需要学习的问题,下面我们就一起去学习一下 BQ76930这款芯片的详细功能,如下图所示,是 BQ76930的封装结构图:
关于BQ76930的封装,其实就是很简单的TSSOP 30PIN的结构,整体的功能还是很强大的,下面我们来看看BQ76930的的输入输出参数,如下图所示:
如上图所示,我们可以看到BQ76930 的支持各种锂电池的结构。其典型的通讯方式为IIC。内部各种功能还是相当的强大的。了解了BQ76930 的这些参数,这个对我们的设计就简单多了。
下面我们再看看BQ76930 的典型的应用电路图,如下所示:
在这里给大家简单的介绍一下BQ76930:bq76930 系列稳健耐用模拟前端 (AFE) 器件作为针对下一代高功率系统(诸如轻型电动车辆、电动工具和不间断电源)的完整电池组监控和保护解决方案的一部分。 bq76930 在设计时充分考虑低功率要求;可启用/禁用集成电路 (IC) 中的子块来控制整个芯片流耗,以及可将电池组置于超低功率状态的 SHIP 模式。bq76930 处理多达 10 节串联电池或典型值为 36V 的电池组。
那么我们在使用BQ76930 的时候,除了楼主说的初始化问题,还需要注意哪些方面呢。首先就是热阻问题了,这个关系到BQ76930 的损耗以及热方面的问题,如下图所示:
对于BQ76930的保护,我们可以参考下面的计算公式:
温度的监控计算公式如下:
还有内置的硬件保护电路:
关于CHG以及GSG的设计电路我们也可以直接参考,如下图所示:
最后我们可以了解一下关于BQ76930 的IIC通讯时序问题,可以参考下面的图:
以上就是关于BQ76930 初始化问题的分析学习,以及使用BQ76930设计电路需要注意的一些问题,与大家分享一下。
LIANGPING HU1:
对于BQ76930方面的设计问题,我们也可以参考TI的评估板:bq76930EVM。bq76930EVM 是附带的电路板,用于评估 bq76930 模拟前端 (AFE) 和作为完整电池组监控和保护解决方案一部分的 bq78350 电池管理控制器,这些解决方案针对 6 至 10 节含有锂离子、磷酸铁锂及更多电池化学物质的电池。 与 EV2300 或 EV2400 接口适配器及网站上提供的合适的评估软件一起使用时,它可提供全面的环境以评估 AFE 的寄存器控制或控制器配置,并显示器件电池系统的电流控制。
LIANGPING HU1:
回复 LIANGPING HU1:
BQ76930的TI的评估板:bq76930EVM的基本资料如下所示,大家在设计的时候也可以直接参考使用,如果在测试的时候遇到什么问题,也可以对比评估板的测试波形,便于快速的定位问题,资料的链接如下:http://www.ti.com.cn/cn/lit/ug/slvu925b/slvu925b.pdf
基本参数:
系统接线图:
LIANGPING HU1:
回复 LIANGPING HU1:
关于BQ76930的相关设计,大家还可以去了解一下TI的在线设计工具,WEBNCH,可以进行参数选型,原理图设计,并且可以根据自己的实际需要进行相应的线路优化,这个对于我们前期的电路设计是有很大的帮助的。
LIANGPING HU1:
回复 LIANGPING HU1:
关于BQ76930的芯片选型,大家还可以考虑同意系列的BQ76920以及BQ76940,他们的相关参数基本一致,只是在部分参数上面有细微的差异,我们在使用的时候,也可以根据自己的实际需要去综合考虑选择。下面是几种芯片的参数对照,大家可以参考一下。
LIANGPING HU1:
回复 LIANGPING HU1:
关于BQ76930的芯片的设计问题,我们可以参考TI的技术说明书,里面对相关的硬件以及软件的设置都有详细的说明介绍,并且还列出了相关的参数的计算以及典型的应用,还有相关的限制,我们在设计的时候需要注意,相关的链接如下所示:http://www.ti.com.cn/product/cn/BQ76930
LIANGPING HU1:
回复 LIANGPING HU1:
对于BQ76930的芯片的设计,以及实际应用中,大家如果有什么问题,或者有相关的经验的话,,欢迎一起来讨论一下,大家相互学习,可以避免在以后的设计中犯同样的错误,同时也有一个借鉴意义。
DZ_HY:
回复 LIANGPING HU1:
你好,我使用的芯片是BQ76930003ATG4C5ZC,使用了一块BQ76930EVM板和EV300,在上位机上显示的地址是0X08,电压数据正常,现在我自己写了一个IIC程序(是使用MCU的IIC接口,不是模拟IIC程序),硬件环境是使用一块8位的飞思卡尔DZ60芯片和BQ76930EVM,将EVM的IIC接口与MCU的IIC接口接上,两块板共地,拔掉了EVM板上J14上的所有跳帽,这个程序测试读写支持IIC协议的AT24C02的EEPROM芯片正常,但是现在不能读取到BQ76930的电压数据,我写的地址是0x10,读的地址是11,急待解决。初始化BQ769芯片的寄存器写入的地址BQ769_INITAdd[11] ={0x00,0x01,0x02,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b}; 在初始化寄存器中写入的配置数据BQ769_INITdata[11]={0x08,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0xAC,0x97,0x19};现在没有数据出来,SDA和SCL都是5V(读取AT24C02时SDA和SCL也是5V),REGOUT是4.5V,使用上位机时EVM这几个电压为2.5V写入和读取的程序模块:////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
byte BQ769_INITAdd[11] ={0x00,0x01,0x02,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b}; //要初始化的寄存器 byte BQ769_INITdata[11]={0x08,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0xAC,0x97,0x19};//向初始化寄存器中写入的数据byte BQ769_RegAdd[12]={0x0c,0x0d,0x0e,0x0f,0x51};//读取电压的地址
Init_IIC( ); for(i=0;i<11;i++) { WRITE_IIC(BQ769_INITAdd[i],BQ769_INITdata[i]);//初始化,写入配置数据,该数据为上位机上的配置信息数据,写命令地址为0X10,先发写命令地址0X10再发读命令地址为0X11(AT24C02读写是这样操作的,这个我也是这样操作) delayms(5); } delayms(1000); for(i=0;i<4;i++){ readbuf[i]=IIC_read_one_byte(BQ769_RegAdd[i]);//读取电压 cansendbuf[i]=readbuf[i]; delayms(5); } (void)CAN1_SendFrameExt(0x002a,0x00,8,cansendbuf);//CAN返回电压数据////////////////////////////////////////////IIC读写函数////////////////////////////////////////////////////////////////////////IICD=0x10; //发送芯片地址,写命令 while(!IICS_IICIF ); temp = IICS; IICS_IICIF=1; IICD=addres; //发送寄存器地址 while(!IICS_IICIF); temp = IICS; IICS_IICIF=1; IICD=date;//写第1个字节 while(!IICS_IICIF); temp = IICS; IICS_IICIF=1;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
IICD=0x10; //发送芯片地址,写命令 while(!IICS_IICIF); temp = IICS; IICS_IICIF=1; IICD=address; //发送寄存器地址 while(!IICS_IICIF); temp = IICS; IICS_IICIF=1; IICC1_TXAK=1; IICC1_RSTA=1; //重新启动 IICD=0x11; //读命令 while(!IICS_IICIF); temp = IICS; IICS_IICIF=1; IICC_TX=0; //读使能 temp=IICD; while(!IICS_IICIF); temp = IICS; IICS_IICIF=1; temp=IICD; //读一个字节
WEI PAN2:
回复 DZ_HY:
楼上的问题解决了吗,我也遇到了这样的问题,能加QQ吗,7 9 2780548
DZ_HY:
回复 WEI PAN2:
你好,只要你的IIC驱动能读写其它的IIC接口器件一般IIC就没问题了,我这个程序是没问题的,是硬件上电平不兼容导致的,76930是3.3V的我的单片机是5V在转电平时的电路有点点问题,改正了就好了。你可以用示波器看看波形,你可以看我其它的回复,有上传我当时的波形的。就是电平不兼容导致的,程序可以用。感觉76930这种芯片做产品可能是操作问题还是什么,小问题还是有的,有时出现烧坏的情况
DZ_HY:
回复 WEI PAN2:
还有就是如果你选择的后缀名不同的76930有些是带CRC的,如果带CRC的你没作CRC电压是读取不正常的,当时我们就是在不带CRC功能的76930上用,电压读取正常,换成后缀为03的带CRC的76930后发现电压无法正常读取了,就是CRC的问题,你看看你的这个带不带CRC,上面那个程序是在不带CRC上的芯片上测试的,这个带不带CRC在它的手册有写