此篇文章不作为元件选型参考,而是作为元件选型已定的情况作为使用指导。 一、功能描述OZ3714为应用于7~14串电池管理系统的模拟前端芯片,配备两个独立的高精度的ADC用来对电压电流温度参数的采样和库仑计容量计算,具备基本的过压、欠压、放电过流、充电过流、短路等保护,两路NTC检测温度,IIC通信,应用框图如下: 关键控制PIN脚 EFETC:是MCU控制AFE的DSG通断的输入控制信号,可配置输出高有效或低有效。通过PWMEFETC寄存器0X0B设置EFETC工作模式。 WKUP/VM:作为唤醒:当AFE在shutdown模式下,拉高(type=2.8V)可以唤醒AFE。 作为检测负载:当DFET断开 & sw_load_detect_enable = 1时,接入负载会将pack+/pack-短路在一起,pack+的电流Ivm流进WKUP/VM(引脚内部有500K电阻下拉到地),也就会将WKUP/VM拉高(type=1.2V),如果断开负载,Ivm会导致WKUP/VM管脚低于Vvm-th(1V),即可判断WKUP/VM接入负载为高,移除负载为低。 ALERTN:告警信号,为开漏输出,需要上拉,正常为高。当有告警信号输出中断信号时拉低。可通过寄存器0x01~0x04配置输出状态。如需输出高电平激活MCU,可使用PMOS转换电平逻辑的方式实现。MCU将高电平的ALERTN拉低也可触发ADC采样。 CHG:除了正常情况下作为充电MOS的驱动,CHG还可作为充电唤醒管脚使用。判断充电器插入,在shutdown模式下,插入充电器即可唤醒。在sleep/active模式下,需要CFET断开 & sw_chgrin_detect_enable=1时,插入充电器后,由于充电器电压总会高于电池电压,这会将CHG脚拉低于B-(type=-0.4V),判断为负压,即插入充电器。 Watchdog Timer(建议禁用) 看门狗定时器用于在active模式下监控IIC的状态,如果MCU在wkup_time[2:0]内没有执行IIC,AFE则会认为MCU已经断开连接,AFE会产生一个标志位vmcu_timeout_flag,64ms后会产生一个vmcu_hang_flag并关掉DFET和CFET,并停止auto_scan模式。如果MCU清除了vmcu_timeout_flag,那么vmcu_hang_flag也会同时被清除,恢复正常工况。 三种功耗状态切换 进入shutdown模式:uv shutdown和IIC shutdown command 进入sleep模式:IIC sleep command 进入active模式:着重注意两种唤醒方式:①、WKUP/VM脚拉高;②、Charger-In接入充电器。 (在sleep模式还可以通过放电、定时器唤醒) 三种电池状态切换 进入放电状态:SAR ADC测量精密电阻的压差 > Vdsg-th1(在0X06寄存器设置阈值)@Tdet=125ms~1s,或者Analog Comparator检测精密电阻的电压高于Vdsg-th2(5mV)。 进入充电状态:SAR ADC测量精密电阻的压差 > Vchg-th1(在06寄存器设置阈值)@Tdet=125ms~1s。 进入静置状态:电流 < Vchg-th1 or Vdsg-th1。 三种扫描工况 Auto-Scan:(0E寄存器使能) 14bit的SAR ADC测量所有的电压、电流、温度参数@Tdet=125ms/250ms/500ms/1s执行一次。ADC通道测量执行顺序:Current Channel、Cell14 Channel ... Cell01 Channel,检查是否发生电流电压保护。可选择执行高精度模式:执行8次ADC测量计算平均值作为Final ADC value。 Trigger-Scan: 执行触发扫描的两种方式 1、 MCU设置0X35寄存器的trigger_req;2、MCU将为高时的Alertn脚拉低 在0X35寄存器可选择trigger-scan的通道,执行完Trigger Scan,会检查是否触发电压电流保护。也可选择执行高精度模式:执行8次ADC测量计算平均值作为Final ADC value。 当OZ3714处在auto-scan模式且在执行时(Tdet=125ms~1s),接收到trigger-scan指令时,需要等待auto-scan执行完毕再执行trigger-scan。执行完毕trigger-scan会将0X01寄存器的trigg_sacn_flag置1,以通知MCU。当禁用Auto-scan时,一旦接收到trigger-scan就会立即执行。在sleep模式也可执行Trigger-scan。 Channel-Scan: OZ3714提供一些虚拟寄存器(0x40~0x4E,0x55~0x5F)来存储电压温度ADC的值。另外,在CTO检测时,0x21~0x2E寄存器存储cell电压可供MCU读取。当MCU读取上面任一寄存器的值,3714都会执行一次ADC采用并发送ADC值给MCU。 可在Active和Sleep模式可以执行Channel-Scan,也需要等待Auto-Scan优先执行完毕。 Channel-Scan的值可以直接读取寄存器0x60~0xE,0x75~0x7F,但这些值不用来判断是否发生保护事项。 温度测量 由上图的温度-电压曲线可知,在低温使用120uA时,Vt电压过高超出ADC输入范围,而20uA在低温下变化曲线依旧较为明显,可准确测量温度。 在高温使用20uA时,超过40℃后Vt变化不大,导致测量误差大,而120uA在高温下变化曲线依旧较为明显,可准确测量温度。 所以当处于室温及高温环境,建议使用120uA,当处于低温环境建议使用20uA。 VMCU供电LDO VMCU引脚输出3.3V电压供主机使用,最大电流输出能力为20mA,如果持续20mA输出可能会导致OZ3714过热关机(die temperature=130℃),正常使用建议≤5mA,为应对上电瞬间的汲电流,可视情况在引脚外接个较大电容(<4.7uF)。 OZ3714配置的两个ADC 1)、14bit SAR ADC 多通道ADC,16bit单口输出数据(有1次和八次模式可选) 单次转换模式下,有效的LSB = 312.5uV,可读的LSB = 78.125uV,是有效LSB的4倍,最低的两位LSB是无效的。 在8次连续转换模式下,有效的LSB = 78.125uV,16位的数据都是有效的。 注意SAR ADC是有增益/衰减比例的功能,以便测量高/低电压,增益倍数如下图: 2)、16bit Σ△ADC单通道ADC 用于电流测量和库仑计计算(有单次触发和连续模式可选) 测量范围:-256mV~256mV,LSB=7.8125uV,转换时间:125ms。 两种工作模式,单次触发转换和连续转换(可在寄存器0X38中设置) 连续模式:ADC会每隔125ms测量ISN和ISP两端的库仑值,将会存放在0x3A(CCHR)和0x3B(CCLR)中,可以存储的范围为-582548uVh~582548uVh,当使用1mR的精密电阻时,可以计算的容量范围有-582Ah~582Ah OZ3714支持Current DeadBand死区设置,即当电流小于设置值时,不纳入库仑计的容量计算,可以在0x38寄存器cadc_db_th[5:0]设置。 3)、CADC控制寄存器设置(0X38) Sw_cadc_dither_enable:用来调整ADC的性能,不建议使用,可能会增加ADC的噪声。 cc_always_enable:设置为1,则一直打开CADC进行库仑计算。当接收到单次CADC触发请求时,会执行CADC触发和添加CADC值到库仑计。单次触发结束后,会自动继续执行库仑计的CADC操作。如果设置为0,则CADC的执行依赖于sw_cadc_ctrl的设置。 Moving_average_enable:当cc_always_enable=1时,CADC会一直执行,这意味着,相邻两次转换之间没有时间间隔。这种情况下,如果conse_cadc_rdy_enable=1(hi_acy_mode设置无效),一旦CADC转换完成,OZ3717将会取最近四次的CADC值求平均后写入0X39寄存器CMDATA,并将标志位置1,conse_cadx_rdy_flag=1。 Cadc_one_or_four: =0时,只采样一次;=1时,采样四次并求平均值。只在单次触发模式有效,并且会产生一个中断 sw_cadc_ctrl:单次触发CADC请求,CADC请求单次触发完成后,设置会自动变为00,且标志位置1,cadc_trigger_flag = 1, MOS驱动和控制 DSG脚——推挽输出(on=4mA/off=9mA);CHG脚——10uA恒流源/高阻 MCU通过EFETC管脚控制DSG,可通过0X0B寄存器efetc_cfg配置。MCU可以通过配置sw_chg_ctrl和sw_dsg_ctrl来控制MOS的开/关。 为了防止电流流过mos的体二极管导致发热严重,所以建议chgon_indsg_disable和dsgon_inchg_disable置0,即在放电时强制打开充电mos,在充电时强制打开放电mos。 除了Charger Pump的MOS驱动,为什么低边DSG和CHG的驱动电路结构都不一样呢? 其实是参考地的考虑。CHG OFF后,CHG MOS的源级处于悬浮状态,视情况添加MOS关断时所需的快速泄放电路。 PWM放电模式(没用过) OZ3714可通过设置0X0B寄存器配置为PWM放电模式,此模式下,放电MOS不是一直导通的,OZ3714仍然可以正常执行放电过流保护和短路保护,PWM模式下的保护延时基于两种不同的机制: 1、 计算放电过流和短路的PWM周期次数,次数可在0XA7中设置。 2、 放电过流和短路延时和正常保护时一致。 在PWM放电模式下,如果两个过流脉冲间隔超过1ms,PWM循环计数器会被清零。在单脉冲情况下,如果脉冲数超过了0XA7寄存器中设置的值,或者脉冲长度超过了Tdoc2/Tsc,就会触发DOC2/SC故障保护。 硬件保护(硬件比较器) DOC2和SC是通过硬件触发执行过流保护的,这样可以保证快速响应。 还有一个使用到硬件比较器的地方是放电状态(Indsg_flag)的判断,放电状态的电流阈值判断可在UVSHUTDOWN寄存器0X06中设置。 均衡功能 内部均衡功能的均衡电流比较小(<10mA),且内部开关管使用的是PMOS,Rdson约为320Ω。外部均衡的均衡电流可根据需求设置,重点说下外部均衡电路搭建注意点。 如下左图,当内部开关管导通时,采样线上的电阻形成分压电路,使得外部开关管导通。 如下右图,因为引脚内部的开关管为PMOS,外部最低一串的均衡开关管应该使用低导通的PMOS或者PNP三极管,且注意采样线上的电阻分压值,确保能使管子导通,B0上的采样电阻为100R,使用NMOS/NPN很难导通。开关管的选择可全部选择PMOS/PNP三极管,或者NMOS/NPN和PMOS/PNP结合的方式,总结起来就是,最低串的开关管一定是PMOS/PNP。 OZ3714在执行ADC采样时,会停止均衡操作,并且相邻电芯不可同时进行均衡操作。主机发送一次均衡命令后,均衡会在Tcb(32S)后自动停止,如需持续均衡,需要每隔Tcb(32S)循环发送均衡命令。 二、方案设计应用指导1、上电顺序:OZ3714上电必须先接B-,其他可以按任意顺序接。但为了避免在装配时产生其他莫名的故障,建议按照从低到高按顺序上电。在参考电路中,可以看到每个采样线都有接二极管到地,这是防止在乱序上电情况,给已连接的最低串提供一个外部电流回路,不然电流从内部二极管走时,容易损坏二极管,导致IC引脚失效。但在接二极管的情况下会存在一种弊端,就是二极管的漏电流Ir会导致电芯耗电,且不同的电压下,漏电流不一致,导致电芯电压出现偏差。最好的方式是保证电池包在装配时先接B-。如无法满足时,再考虑使用接二极管的方式。 2、开漏引脚:ALERTN、SDA、SCL脚为开漏输出,需要接4.7k上拉电阻到VMCU。 3、采样输入滤波电路 输入电容:输入电容的放置建议直接连接到地,这样共模电容会比差模电容(连接在采样线两端)更能减少输入噪声,共模电容建议为22nF,差模电容建议为10nF,但要注意共模电容的耐压值要增高。 输入电阻:推荐使用的电阻值为1.5K,但为了提高Cell1的采样精度,B0采样线的电阻建议为100R。 从公式得知22nF的电容搭配1.5k的电阻组成的滤波电路适用于大部分产品应用。同时,避免在均衡时影响ADC的采样精度,建议在共模电容中,RC不高于33us,在差模电容中,RC不高于15us, 4、供电输入滤波电路 输入电容:当在PWM模式时使用高感性负载会拉低VCC电压,输入电容需要维持VCC的电压大于Vp-dn(7.2V),使用4.7uF的电容可以适用大多数产品应用。 二极管:在输入滤波电路(电阻)前串一个二极管,可以使电容在暂态短路时继续维持VCC供电。 输入电阻:输入电阻的选择不仅需要考虑供电电流的大小,也要考虑稳压二极管导通后电流的大小。电池装配时电容初始值是0V,电阻的耐流需要考虑尖峰电流和初始电容充电的电流。 稳压二极管:用于钳位,不超过VCC工作的最大值,防止损坏管脚。 5、串数设置 三、寄存器配置指导1、解锁写寄存器:向0F寄存器写入0x3714可将unlock_cfg_wrt置1,才可配置05~0E寄存器,05~0E寄存器内容为一些保护参数的设置和基本的运行条件设置,配置完05~0E寄存器后,写入任意值都可将unlock_cfg_wrt置0。 2、0X16寄存器是电源工作模式设置,写入0x3714解锁此寄存器可进行写操作。①、写入0XDEED会进入shutdown;②、写入0XABBA会进入休眠且VMCU无输出;③、写入0XBCCB会进入休眠且VMCU有输出。 3、0E写入0x01可使能auto-scan,scan-rate=125ms,auto_one每个通道单次采集ADC值。 4、0X38是配置CADC的寄存器,即库仑计的容量计算,具体参照ADC部分的详细说明。 5、向0x10写入0x03即可开启mos,即将sw_chg_ctrl/sw_dsg_ctrl=1,如果发现此时mos仍未打开,则看下mcu_timeout_flag是否为1,将其置0即可(建议将0x0b写入0x0c关闭wkup功能和关闭efetc功能) 6、通过配置0x01~0x04可使配置ALERTN输出状态,如果使能了0x02和0x04的中断功能,对应的flag置1后,ALERT(正常为高)会拉低,输出一个中断给MCU。 ☆注:寄存器的设置稍为繁杂,仅重点指出基本设置,可保证OZ3714正常执行而已,其余需自行理解设置。 四、ADC测量精度和误差16bits的∑△ADC测量范围是-256mV~256mV,LSB=7.8125uV 电压误差:±25mV@-40 ~ 85℃ 电流误差:±0.3mV/1mR=±0.3A @ -40 ~ 85℃;±0.15mV/1mR=±0.15A @ 0 ~ 85℃ 温度误差:根据计算出的阻值对比NTC阻值表,对比温度范围内最高和最低温度下的阻值温度差值即可得出温度误差。 ±15mV/120uA=±125R @ 150mV~2000mV;建议在高温使用120uA,±3℃@85℃ ±15mV/20uA=±750R @ 150mV~2000mV;建议在低温使用20uA,±1℃@-20℃ 温度误差:±3℃ @-40℃~85℃ ADC扫描时间:125ms/250ms/500ms/1s可配置 五、IIC通信,使用模拟IIC的方式,程序见附录A。OZ3714仅支持双字节读写操作,MSB First,OZ3714写器件地址0X56,读器件地址0X57。 ① 、写操作+CRC检验 写数据格式:DeviceAddr+RegAddr+HighByte+LowByte+CRC,如下: IIC字节先发送高字节MSB,如CRC检验正确,数据将写入OZ3714的寄存器,OZ3714拉低表示Ack;如果CRC校验错误,数据被认定为损坏,无法写入寄存器,且不产生Ack。 详见:void OZ3714_Write_Cmd(u8 DeviceAddr,u8 RegAddr,u16 DataToWrite) ② 、读操作+CRC检验 读数据格式:DeviceAddr+RegAddr+ (DeviceAddr +0x01)+HighByte+LowByte+CRC,如下: IIC字节先发送高字节MSB,MCU需要进行CRC检验,判断读取的数据是否正确,每读一次都要发送Ack给OZ3714,发送nAck表示终止读操作,。 详见:void OZ3714_Read_Cmd(u8 DeviceAddr,u8 RegAddr,u16 DataToRead) 附录A
|