[go: up one dir, main page]

CN1421975A - 自适应充电控制芯片 - Google Patents

自适应充电控制芯片 Download PDF

Info

Publication number
CN1421975A
CN1421975A CN01129099A CN01129099A CN1421975A CN 1421975 A CN1421975 A CN 1421975A CN 01129099 A CN01129099 A CN 01129099A CN 01129099 A CN01129099 A CN 01129099A CN 1421975 A CN1421975 A CN 1421975A
Authority
CN
China
Prior art keywords
mod
goto
bcf
status
movwf
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN01129099A
Other languages
English (en)
Inventor
袁永斌
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
CHENGDU SHINENG SCI-TECH Co Ltd
Original Assignee
CHENGDU SHINENG SCI-TECH Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by CHENGDU SHINENG SCI-TECH Co Ltd filed Critical CHENGDU SHINENG SCI-TECH Co Ltd
Priority to CN01129099A priority Critical patent/CN1421975A/zh
Publication of CN1421975A publication Critical patent/CN1421975A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Charge And Discharge Circuits For Batteries Or The Like (AREA)

Abstract

本发明是一种自适应充电控制芯片,由硬件和软件组成,其硬件为具备三路以上模数转换器、四路以上输入输出口、程序存储器的单片机,软件为计算机程序,使芯片工作在六个状态中:开始、故障提示、预充电、快速充电、补充充电、涓流充电。三路模拟信号由程序控制分时扫描进入模/数转换,量化的数据作为程序进行计算的依据,计算出的结果又引导程序进入相应的阶段发挥相应的功能。对不同电池和不同阶段,读入的数据产生不同的作用,在开始阶段,是判定故障的依据;在预充电阶段,是各种参数设置的依据;在快速充电阶段,对所设置的参数进行修正,并控制输出端工作。本发明有自适应调整充电电流、模糊充满准则和自动判定电池类型的特点。

Description

自适应充电控制芯片
本发明涉及电池充电领域,具体是一种自适应充电控制芯片。
在可充电池的运用过程中,充电器是其成功运用的重要装置,所以可充电池一出世,充电器便是个关键问题,因为充电器的好坏直接影响到电池的两个重要技术指标:可充电池的使用容量和可充电池的循环使用次数,即使用寿命。然而直到六十年代以前,充电器技术普遍采用的方法主要是恒流或恒压充电方法,这种状况直到六十年代Mascc博士基于最低出气率可充曲线原理发现电池可接受充电电流大小随时间按指数规律下降这一规律后,才证实恒流或恒压充电均不是最适合的方法。
根据Mascc曲线,又提出了所谓的两段式,三段式或更多段式充电。所谓两段式充电指首先对电池进行恒流或恒压充电,当电池电压达到一定程度,然后对电池进行涓流充电;所谓三段式一般是首先对电池进行恒流充电,待电池电压达到电压阀值后转化为第二阶段,即所谓限压充电阶段,当充电电流小到某种程度后转化为第三阶段,即涓流充电。另外,由于实际运用的需要,往往还希望对电池进行快速充电。Mascc博士进一步指出,影响充电器快速充电还有两个重要因素:一是极化电压,二是记忆效应,其中极化电压是在充电过程中,电荷堆积于电池电极上而产生的反向电压,实际上表现为对电池内阻的增加上,消除它的有效方法是采用负脉冲方法在电池两端瞬间放电去除电极上堆积的电荷,并由此产生了脉冲充电方法;记忆效应并不是所有电池都有,可以通过多次的充放电即可消除。上述两种效应应该在充电控制器设计中予以重视。
实际上,充电控制器在近年来取得了长足的发展,一个明显的标志就是世界上大多数的半导体厂商大都出品了自己的充电器芯片,有的还带有中央处理器(即CPU),所以充电控制技术是一个被大多数半导体集成电路厂商普遍关注的技术,世界上比较知名的从事该领域的研究与产品开发的有Motorola,Maximum,Phlips,TI等,一般情况下对于每种类型的电池都有相对应的IC(充电器芯片)。然而,对电池充电技术的不同理解将会导致不同的充电控制策略,充电技术发展的关键是对电池特性的更深层次的理解。
现有技术中,尚未有一家采用过自适应控制技术,然相关文献中提到了一些现代充电技术的新方法,比如:
1、在中国专利CN1042626A中提到了一种动态修正充电电流的最大允许电流时间函数,希通过调整其中的参数a达到充电过程严格控制在理想充电电流曲线范围,从而使充电器具有了相当程度智能,然而由于对a参数本身并不具有自动化,使该项技术并不属于真正意义上的自动;
2、在中国专利CN1135673A中指出了对两种电池类型的全自动充电器,通过检测电池的温度与电压,实现从9种充电模式中选择一种认为是最佳的充电模式。该项技术具有了一定程度的多变量跟踪的设想,然而固化的9种充电模式是否就是最佳的尚还需要推敲;
3、在中国专利CN2265618Y中提到了一种放电控制电路以及检测滤波电路,实际上有一种希望就是检测电池的内阻,在文献中并未明确表示出来,其中的充电控制算法比较简单,实际上也没有提出自适应的策略;
4、Ullah,Z.,Burford,B.and S.D.在Fast intelligent battery charging:neural-fuzzy approach.(IEEE Aerospace and Electronics Systems Magazine,1996,11(6),p.26-34)一文中提出了一种充电控制的新途径,即模糊神经网络控制方法,该方法依据电池厂家给出的电池特性曲线,建立神经网络模型,在充电过程中检测电池的状态从而修正充电电流的方法实现,但该方法具有相当程度的对电池厂家的依赖性,并且在这种情况下所采用的方法具有相当程度的个性,即对每个电池厂家的电池均需重新设计才能实现其初衷,即只在局部范围内具备了自适应的特点。
从这些充电控制的新技术看来,充电控制技术是长期研究的课题,并且在局部情形下都有一定自适应控制的影子,但目前尚未见从综合因素考虑的全面解决方案。
本发明的目的在于提供一种自适应充电控制芯片,该芯片具有自适应调整充电电流、模糊充满准则和自动判定电池类型的特点。
本发明的目的是通过下述技术方案来实现的。
自适应充电控制芯片由硬件和软件两部份组成,硬件为具备三路以上模数转换器、四路以上输入输出口、程序存储器的单片机,软件为计算机程序,其框图见附图1。将上述计算机程序注入到单片机中的程序存储器上,即得到自适应充电控制芯片。
上述方案中,将上述计算机程序注入到上述单片机中的程序存储器上,使单片机中的1脚为VCC脚,作为电源正电压,该电源电压范围为2~6V,典型应用5V;2脚为MOD脚,作为充电控制端,通过自适应调整此脚的脉冲波形,达到控制电池快速充电,补足充电及涓流充电的不同模式;3脚为DIS脚,作为放电控制端,当需要消除电池极化效应时作用,而无此必要时输出为低电平;4脚为CS脚,作为片选/同步端,高电平工作,低电平休止,该端用于同步时,可以运用在均衡充电情况下便于控制;5脚为LED/MCC脚,作为故障显示输出端,该引脚在8脚封装时(单独引出除外)有两个功能,MCC指通过外接分压电阻输入该充电器的最大充电电流(只在上电瞬间有效);LED用于指示充电器的工作状态,低电平有效,当充电器处于快速充电时,此脚一直为低;当充电器处于补足充电时,此脚电平在高电平及低电平间缓慢变化;而充电器处于故障状态时,则快速闪动提示用户,同时停止充电直到故障消除;6脚为BAT脚,作为电压信号输入端,电池组电压经过外接电阻分压后,接入该脚;7脚为TC脚,作为电流信号输入端;8脚为GND脚,作为电源负端,接地;
当芯片加电时,计算机程序处于自动加电复位,芯片的片选信号CS为高电平,软件和硬件处于起始工作状态,计算机程序开始运作进入开始阶段:检测被充电池是否加入电路中;充电控制端MOD和放电控制端DIS处于低电平(关断),CPU扫描电流信号输入端TC和电压信号输入端BAT,在一定时间内,反复多次对TC和BAT数据输入的检测,以模糊数学方法的原则判断,如果TC和BAT没有信号输入,即判定电池没有加入或者电池开路,转入故障提示阶段;否则转入预充电阶段;故障检测程序自始至终都在运行;
如果计算机程序进入了故障提示阶段,故障显示输出端MCC/LED为故障信号指示,该指示灯闪亮;直到故障排除(关机排除)后,芯片再次加电,即可进入预充电阶段;
在预充电阶段,计算机程序先进行状态检测,此时硬件电路中的多路转换器,按分时选通三路TC、BAT、MCC的模拟信号进入数字滤波器;消除模拟信号输入中的干扰和谐波成分;模拟信号进入模/数转换器,把取样的模拟信号:电池电压、电池电流、充电电压量化后送入主控CPU,计算机程序依据这些数字信号,判定电池的类别,首先看电池的电压范围,低于1.8V为锂电池类型,1.8V~2V为铅酸电池类型,2V~2.4V为镉镍、氢镍电池类型,当该方法难于区分时,采用测量电池内阻的方法,内阻小于5mΩ为镉镍与氢镍电池,高于5mΩ而小于50mΩ为铅酸电池,大于50mΩ为锂电池;然后根据电池的类别进行参数设置,包括由MCC脚决定的最大充电占空比,最大为97%,对应MCC电压为4.5V,最小为5%,对应MCC电压为0.1V;最长充电时间的初始值定为16位计数器的满值,即65535个计时单元,每个单元为8个指令周期,每个周期随外加的振荡频率的1/4决定;根据三路模拟信号输入端的数据,初步计算出电池的容量,根据容量的不同再一次决定充电进入的下一个阶段,如果容量小,即可转入快速充电阶段;如果容量大,不进入快速充电阶段,直接进入涓流充电阶段;在即将结束预充电阶段时,为了防止硬件数据出错和其它充电控制失控,根据电池的数据,充电的最长时间记时开始,这个值不是一个定值,也是一个变量,进入不同的状态后,根据采样数据,对最长时间进行修正;
在快速充电阶段,硬件电路对MOD进行脉动式控制,这个脉冲式的周期即占空比是根据数据输入来进行调整的,加快充电,占空比变大,反之变小;在充电过程中,放电控制端在伴随充电脉冲的中间,有一个“负脉冲”,即是放电用的控制脉冲,该脉冲的周期也是变化的,要根据采样收集的数据决定;采样数据又是在负脉冲的终止后沿进行,所以,采样、充电、放电是交叉动态的根据电池的状态进行;快速充电的终止条件是BAT脚的电压等于终止电压,而终止电压是根据起始阶段已检测出的电池种类和电池数量在1.058~3.99V范围内设定取值;在快速充电阶段中,芯片根据电池充电后的各种参数,对最长充电时间进行修正,另一方面充电电池的BAT数据送入CPU后,与终止电压进行比较,如果终止条件满足或终止条件未满足而最长充电时间已到,将终止快速充电,进入补充充电阶段;
在补充充电阶段,采用恒压控制,CPU对电池的容量进行检测,硬件上TC、BAT、MCC模拟数据通过多路转换开关送入数字滤波器,再经模/数转换,其结果送入CPU的寄存器,寄存器的数据由软件计算,得出快速充电的结果是否满足快速充电终止条件,如果满足,在时间控制上就作为补充充电的时间算出参考量;如果不满足而是由时间控制结束快速充电的,不再进行时间计算,直接考察补充充电的终止条件,其终止条件是TC脚的电压等于终止电压,而终止电压是根据起始阶段已检测出的电池种类和电池数量在0.049~0.108V范围内设定取值;软件执行读三路模数转换的结果,与补充充电终止条件比较,同时又确认补充定时控制是否满足,二种条件具备了一种即结束补充充电进入涓流充电阶段;
在涓流充电阶段,采用恒压充电即对电池进行浮充,此时芯片按浮充电压进行充电,其终止条件是BAT脚的电压等于终止电压,而终止电压是根据起始阶段已检测出的电池种类和电池数量在1.058~3.722V范围内设定取值;当电池的电压达到该设定值,充电结束,计算机程序关断MOD端和DIS端,指示灯LED显示充电完成,计算机程序停止。
上述方案中,计算机程序如下:
;*****************************************************************
;this program used for adaptive control of battery charge
;*****************************************************************
;

  list p=16c711
;*****************************************************************
;Define some used constants
;*****************************************************************
OPTION_VAL  equ b’00001111’
INTCON_VAL  equ b’01100000’
TRISA_VAL   equ b’00011111’
TRISB_VAL   equ b’00000001’
;
bat equ 0×00
tc  equ 0×01
tm  equ 0×02
mcc equ 0×03
clk_pin equ 0×04
;
cs equ 0×00
				
				<dp n="d5"/>
sync   equ 0×00
data_pin    equ 0×00
;
led1  equ 0×01
led2  equ 0×02
led3  equ 0×03
led4  equ 0×04
;
led equ 0×05
mod equ 0×06
dis equ 0×07
;
;***************************************************************
;
;The following defined some registers used to store any datas
;
;***************************************************************
s_mod       equ 0×21
work_mod    equ 0×23
data1_bat   equ 0×24
data2_bat   equ 0×25
max_curr    equ 0×26
delay_val   equ 0×27
timer_1     equ 0×28
timer_2     equ 0×29
timer_3     equ 0×2A
timer_4     equ 0×2B
work_dis    equ 0×2C
work_stop1  equ 0×22
work_stop2  equ 0×2D
				
				<dp n="d6"/>
w_temp      equ 0×2E
status_temp equ 0×2F
pclath_temp equ 0×30
state       equ 0×31
;01-------------A/D channel selection
;2--------------mark for lion or notlion
;3--------------mark can charging or not
;****************************************************************
;include file

  INCLUDE<DEV_FAM.INC>;PIC16 device specific definitions

  INCLUDE<MATH16.INC> ;PIC16 math library definitions
;  INCLUDE<MATH16.MAC> ;PIC16 elementary function macros

  #include″p16c711.inc″
;
;Start at the reset vector

  org 0×3ff

  goto begin

  org 0×000
;First to initialize the chip
begin    clrf    STATUS

  clrf    TMRO
  call    initial

  goto    main
;
;Start at intteruput vector

  org 0×04

  MOVWF  w_temp
  SWAPF  STATUS,W

  CLRF   STATUS

  MOVWF  status_temp

  MOVF   PCLATH,W
				
				<dp n="d7"/>
  MOVWF   pclath_temp

  CLRF    PCLATH
;SERVICE PROGRAM
  btfsc INTCON,TOIF;TMRO OVERFLOW

  bcf INTCON,TOIF
;

  clrwdt
:RETURN FROM INTTERRUPT SERVICE PROGRAM

  MOVF    pclath_temp,W

  MOVWF   PCLATH

  SWAPF   status_temp,W

  MOVWF   STATUS
  SWAPF   w_temp,F

  SWAPF   w_temp,W

  btfss   status_temp,Z

  bcf STATUS,Z

  btfsc   status_temp,Z

  bsf STATUS,Z

  return
;
;****************************************************************
;The following is the initialized procedure
;****************************************************************
initial clrf    PORTA

  clrf    PORTB
;For define the OPTION

  bsf STATUS,RPO

  movlw  b’00000111’

  movwf  OPTION REG

  bcf STATUS,RPO

  clrf   TMRO

  bsf STATUS,RPO
				
				<dp n="d8"/>
  movlw  OPTION_VAL

  movwf  OPTION_REG
;For I/O ports design

  movlw  TRISA_VAL

  movwf  TRISA

  movlw  TRISB_VAL

  movwf  TRISB
;For intcon setup

  bcf STATUS,RPO

  movlw  INTCON_VAL

  movwf  INTCON
;For A/D setup

  bsf STATUS,RPO

  clrf  ADCON1

  bcf STATUS,RPO
;

  clrf    state
  retlw   0
;****************************************************************
;The following is the main procedure
;****************************************************************
delay    clrwdt

  clrf    TMRO

  decfsz  delay_val,f

  goto    delay

  retlw   0
;----------------------------------------------------------------
error_1 movlw  0×ff

  movwf  AARGBO
E_1 bcf PORTB,led

  call    delay

  call    delay
				
				<dp n="d9"/>
  call    delay

  call    delay

  decfsz AARGBO,F

  goto    E_1

  bsf PORTB,led

  movlw    0×ff

  movwf AARGBO
E_2 call    delay

  call    delay

  call    delay

  call    delay

  decfsz  AARGBO,F

  goto    E_2

  retlw   0
;----------------------------------------------------------------
adc_ini movlw   b’00000001’

  movwf    ADCONO

  btfsc    state,0

  bsf ADCONO,CHSO

  btfsc    state,1

  bsf ADCONO,CHS1
;

  bsf STATUS,RPO

  bcf STATUS,RPO

  bsf INTCON,ADIE

  bsf INTCON,GIE
;

  bsf ADCONO,GO
adccomp btfss ADCONO,ADIF

  goto    adccomp

  bcf ADCONO,ADIF

  retlw    0
				
				<dp n="d10"/>
;---------------------------------------------------------------------
;*********************************************************************
;can not charging the battery,regulate the max_curr setup
uncharg bcf STATUS,C

  rrf max_curr,F

  bcf STATUS,C

  rrf max_curr,F

  bcf STATUS,C

  rrf max_curr,F

  movf    max_curr,W

  sublw   0×02

  btfss   STATUS,C

  goto    u_1

  movlw   0×02

  movwf   max_curr
u_1 movlw   0×0a

  movwf   s_mod

  goto    loop_0
;*********************************************************************
main    clrf    STATUS
;First to detect the battery ON or OFF

  clrf    PORTB
bat_t    bcf state,0

  bcf state,1

  call    adc_ini

  movf    ADRES,W

  sublw   0×19      ;larger than 0.5V?

  btfss   STATUS,C

  goto    step_1

  call    error_1

  goto    bat_t
;to decide the battery style
				
				<dp n="d11"/>
step_1  bcf state,2  ;marking for not lion style

  movf    ADRES,W
  sublw   0×6b     ;larger than 2.1V?

  btfsc   STATUS,C

  bsf state,2      ;marking for lion style

  bcf PORTB,led    ;marking for charging state

  movlw   0×0a

  movwf   delay_val

  call    delay
;For step 2 to test temperure &amp; maximum mod
step_2  bsf state,0

  bsf state,1

  call    adc_ini

  movf    ADRES,W

  movwf   max_curr    ;Store the maximum charging current the power can suply
;

  movlw   0×0a

  movwf   delay_val

  call    delay

  bcf state,0

  bsf state,1

  call    adc_ini

  bsf state,3        ;marking can charged eneble

  movf    ADRES,W

  sublw   0×cd      ;larger than 4V?that is the tempture less than 10cc

  btfss   STATUS,C

  bcf state,3        ;marking can not charged eneble
;
;The following for deal with charging prodcedure
step_3  btfss    state,3

  goto    uncharg
;can charging the battery
				
				<dp n="d12"/>
  movlw    0×0a

  movwf    s_mod
loop_0 movf  s_mod,W

  movwf  work_mod

  movlw  0×fa

  movwf  timer_1
loop_1  movf    work_mod,W

  sublw  0×ff

  movwf  work_stop1

  bcf STATUS,C

  rrf work_stop1,W

  movwf    work_stop1

  movwf    work_stop2
loop_2  bcf PORTB,dis

  bcf PORTB,led

  bsf PORTB,mod

  movlw    0×50
  movwf    delay_val

  call     delay

  decfsz   work_mod,F

  goto     loop_2

  decf     timer_1,F
;************************************************************
step_4 bcf PORTB,mod

  bcf PORTB,led

  movlw    0×0a

  movwf    work_dis
loop_3 bcf PORTB,mod
  bcf PORTB,led

  movlw    0×0a

  movwf    delay_val

  call     delay
				
				<dp n="d13"/>
  decfsz  work_stop1,F

  goto    loop_3
loop_4  bsf PORTB,dis

  bcf PORTB,led
  clrwdt

  clrf    TMRO

  decfsz  work_dis,F

  goto    loop_4

  bcf PORTB,dis
loop_5  bcf PORTB,mod

  bcf PORTB,led

  movlw   0×0a

  movwf   delay_val

  call    delay

  decfsz  work_stop2,F

  goto    loop_5
;****************************************************************

  movf    timer_1,W

  xorlw   0

  btfsc   STATUS,Z

  goto    loop_new

  movf    s_mod,W

  movwf   work_mod
  goto    loop_1
loop_new
;To test the battery ON or OFF

  bcf state,0

  bcf state,1

  call    adc_ini

  movf    ADRES,W

  sublw   0×19        ;larger than 0.5V?

  btfsc   STATUS,C
				
				<dp n="d14"/>
  goto    bat_t
;****************************************************************

  btfsc   state,2

  goto    lion

  movf    ADRES,W

  sublw   0×b9        ;(3.6v)29.6V arrive?

  btfss   STATUS,C

  goto    NO_LION_COM

  goto    continu
lion    movf   ADRES,W

  sublw   0×6c        ;2.1v(4.2V)arrive?

  btfss   STATUS,C

  goto    LION_COM
continu btfsc state,3

  goto     contt
;*****************can charging fast?*******************************

  bcf state,0

  bsf state,1

  call    adc_ini

  movf    ADRES,W

  sublw   0×cd      ;larger than 4V?that is the tempture less than 10cc

  btfsc   STATUS,C

  goto    main
;
contt    movf    s_mod,W

  subwf   max_curr,W

  btfsc   STATUS,C

  goto    admod

  movf    s_mod,W

  xorlw   0×01
				
				<dp n="d15"/>
  btfsc   STATUS,Z

  goto    loop_0

  decf    s_mod,F

  goto    loop_0
admod    movf    s_mod,W

  xorlw   0×fa

  btfsc   STATUS,Z

  goto    loop_0

  incf    s_mod,F

  goto    loop_0
;------------following marking the LION battery charging complete---------
LION_COM
;************************************************************************************

  bsf PORTB,led
  bcf PORTB,mod

  bcf PORTB,dis
Eloop_0 movf  s_mod,W

  movwf  work_mod
  movlw  0×0a

  movwf  timer_1
Eloop_1 movf  work_mod,W

  sublw  0×ff

  movwf  work_stop1
Eloop_2 bcf PORTB,dis

  bsf PORTB,led

  bsf PORTB,mod

  movlw  0×50

  movwf  delay_val

  call   delay

  decfsz work_mod,F
  goto   Eloop_2

  decf   timer_1,F
				
				<dp n="d16"/>
;
Eloop_3 bcf PORTB,mod

  bsf PORTB,led

  movlw    0×0a

  movwf    delay_val

  call     delay

  decfsz   work_stop1,F

  goto     Eloop_3

  bcf PORTB,dis
;To test the battery ON or OFF

  bcf state,0

  bcf state,1

  call     adc_ini

  movf     ADRES,W

  sublw    0×19       ;larger than 0.5V?
  btfsc    STATUS,C

  goto     bat_t
;****************************************************************
  movf     timer_1,W

  xorlw    0

  btfsc    STATUS,Z

  goto     Eloop_new

  movf     s_mod,W

  movwf    work_mod

  goto     Eloop_1
Eloop_new

  movf     ADRES,W

  sublw    0×6c        ;(2.1v)4.2V arrive?

  btfsc    STATUS,C

  goto     Eadmod

  movf     s_mod,W

  xorlw    0×01
				
				<dp n="d17"/>
  btfsc    STATUS,Z

  goto     Eloop_0

  decf     s_mod,F

  goto     Eloop_0
Eadmod    movf    s_mod,W

  xorlw    0×fa

  btfsc    STATUS,Z

  goto     Eloop_0

  incf     s_mod,F

  goto     Eloop_0
;*******************************************************************************
;------------following marking the NO_LION battery charging complete----------
NO_LION_COM

  bcf PORTB,led

  bcf PORTB,mod

  bcf PORTB,dis

  movf     s_mod,W

  sublw    0×20

  btfss    STATUS,C

  goto     fff

  btfsc    STATUS,Z

  goto     fff

  bcf STATUS,C

  rlf s_mod,F

  bcf STATUS,C

  rlf s_mod,F

  bcf STATUS,C

  rlf s_mod,F

  goto    Cloop_0
fff movlw   0×e0

  movwf   s_mod
				
				<dp n="d18"/>
;
Cloop_0 movf    s_mod,W

  movwf    work_mod

  movlw    0×04

  movwf    timer_1
Cloop_1 movf    work_mod,W

  sublw    0×ff

  movwf    work_stop1
Cloop_2 bcf PORTB,dis

  bof PORTB,led

  bsf PORTB,mod

  movlw    0×0a

  movwf    delay_val

  call     delay

  decfsz   work_mod,F

  goto     Cloop_2

  decfsz   timer_1,F

  goto     Cstep_4

  bsf state,0     ;testing the charging current

  bcf state,1

  call    adc_ini

  bcf PORTB,mod
;
;this part used to compute the charging current with result W
;**************************************************************

  movf    ADRES,W

  movwf   AARGBO
  movf    s_mod,W

  movwf   BARGBO

  call    FXM0808U

  movlw   0×ff
				
				<dp n="d19"/>
  movwf   BARGBO

  call    FXD1608U
;************************************************************

  movf    AARGB1,W

  sublw   0×02

  btfss   STATUS,C

  goto    Cstep_4
;************************************************************

  bsf PORTB,led

  bcf PORTB,dis

  bcf PORTB,mod
  movlw    0×07

  subwf    work_stop1,F
;
d_0 movlw    0×0a

  movwf    delay_val

  call     delay

  decfsz   work_stop1,F

  goto     d_0
;------------following marking chaging complete-----------
Dloop_0 movf    s_mod,W

  movwf    work_mod

  movlw    0×04

  movwf    timer_1
Dloop_1 movf    work_mod,W

  sublw    0×ff

  movwf    work_stop1

  movf     work_mod,W

  xorlw    0×00

  btfsc    STATUS,Z

  goto     Dloop_3
Dloop_2 bcf PORTB,dis
				
				<dp n="d20"/>
  bsf PORTB,mod

  movlw    0×0a

  movwf    delay_val

  call     delay

  decfsz   work_mod,F

  goto     Dloop_2
;
Dloop_3 bcf PORTB,mod

  movlw    0×0a

  movwf    delay_val

  call     delay

  decfsz   work_stop1,F

  goto     Dloop_3

  bcf PORTB,dis
;To test the battery ON or OFF

  bcf state,0

  bcf state,1

  call    adc_ini

  movf    ADRES,W

  sublw   0×19      ;larger than 0.5V?

  btfsc   STATUS,C
  goto    bat_t
;**********************************************************************
;

  decf    timer_1,F

  movf    timer_1,W

  xorlw   0×00

  btfsc   STATUS,Z

  goto    Dloop_new

  movf    s_mod,W

  movwf   work_mod

  goto    Dloop_1
				
				<dp n="d21"/>
Dloop_new

  movf    ADRES,W

  sublw   0xad        ;(3.3v)27.6V arrive?

  btfsc   STATUS,C

  goto    Dadmod

  movf    s_mod,W

  xorlw   0×00

  btfsc   STATUS,Z

  goto    Dloop_0

  decf    s_mod,F

  goto    Dloop_0
Dadmod movf  s_mod,W

  xorlw   0×fa

  btfsc   STATUS,Z

  goto    Dloop_0

  incf    s_mod,F

  goto    Dloop_0
;**********************************************************
Cstep_4 movf    timer_1,W

  xorlw   0×00

  btfss   STATUS,Z

  goto    tt_reg

  movlw   0×07

  subwf   work_stop1,F
tt_reg bcf PORTB,mod

  bcf PORTB,led

  bcf PORTB,dis
d_1 movlw   0×0a

  movwf   delay val

  call    delay

  decfsz  work_stop1,F

  goto    d_1
				
				<dp n="d22"/>
;
;To test the battery ON or OFF

  bcf state,0

  bcf state,1

  call    adc_ini

  movf    ADRES,W

  sublw   0×19         ;larger than 0.5V?

  btfsc   STATUS,C

  goto    bat_t
;*******************************************************************
;

  movf    timer_1,W

  xorlw   0

  btfsc   STATUS,Z

  goto    Cloop_new

  movf    s_mod,W
  movwf   work_mod

  goto    Cloop_1
Cloop_new

  movf    ADRES,W

  sublw   0×b9        ;(3.6v)29.6V arrive?

  btfsc   STATUS,C

  goto    Cadmod

  movf    s_mod,W

  xorlw   0×01

  btfsc   STATUS,Z

  goto    Cloop_0

  decf    s_mod,F

  goto    Cloop_0
Cadmod  movf    s_mod,W

  xorlw   0×fa
				
				<dp n="d23"/>
  btfsc   STATUS,Z

  goto    Cloop_0

  incf    s_mod,F

  goto    Cloop_0
;ADD &amp; SUB SUBROUTINE(AARGBO,1 BARGO,1 TO AARGBO,1
;********************************************************************************
***********
ADD MOVF    BARGB1,W

  ADDWF   AARGB1,F

  MOVF    BARGBO,W

  BTFSC   STATUS,C

  INCFSZ  BARGBO,W

  ADDWF   AARGBO,F

  RETURN
SUB  MOVF   BARGB1,W

  SUBWF   AARGB1,F

  MOVF    BARGBO,W

  BTFSS   STATUS,C

  INCFSZ  BARGBO,W

  SUBWF   AARGBO,F

  RETURN
;********************************************************************************
************

  INCLUDE<FXM88.A16>
;

  INCLUDE<FXD68.A16>
;********************************************************************************
************

  end
上述方案中,硬件为具备三路以上模数转换器、四路以上输入输出口、程序存储器的单片机,其型号为PIC12C671、PIC12C672、PIC12C673、PIC12C674、PIC16C71、PIC16C72、PIC16C72A、PIC16CR71、PIC16C73、PIC16C73A、PIC16C74、PIC16C74A、PIC16C74B、PIC16C76、PIC16C77、PIC16C710、PIC16C711、PIC16C712、PIC16C715、PIC16C716、PIC16C717、MDT2051、MDT2051A、MDT1051、MDT1051A。
本发明的发明者花了相当多的精力研究了各种类型电池的特性,其中着重从电池的动态特性入手,测试了大量的实验数据,从电池的动态性质上我们不仅可以知道电池内阻与电池容量的关系,而且也容易从动态过程中正确区分不同品种的电池类型,值得注意的是,这里所说的动态过程不仅指的是充电过程,也包括电池的放电过程。这些研究成果可以帮助我们设计我们独特的充电控制方法,其中得出的基本结论是电池充电(或放电)是一个电池性质随该过程动态变化的过程。
下面分别说明我们的控制方法的几个要点:
1)总体控制方法:
我们采用了正负(包括0脉冲)脉冲(即负脉冲技术)作为对电池的充放电控制波形,其中正脉冲为充电脉冲,负脉冲为放电脉冲,0脉冲间于充电与放电脉冲间,表示充放电的休止期。事实上,上述三种脉冲在后面讲的控制过程中都有可能时间长度为0,比如,0脉冲和负脉冲的时间周期为0时,我们的总体控制波形仿真限压充电模式;而特定的组合脉冲形式又可以仿真为恒流充电等。总之,通过调整这种波形可以仿真几乎所有的充电波形和充电模式;而负脉冲(也称放电脉冲)已经被充电控制领域公认的去极化的重要方法,因为不论是什么样的充电技术,在电池充电的后期电池可接受能力将明显下降,充电电流随之下降的结果必然容易导致小电流工作模式的记忆效应,明显影响电池的使用;然而在许多其他半导体厂家出品的充电控制芯片并不包含负脉冲或者认为是可以选择的,因此在这里还要特别强调的是,在我们的方法中负脉冲是不可或缺的必要条件。因为负脉冲在我们的充电中不仅要完成去极化以及消除记忆效应的任务,还要完成测试任务,在我们的方法中通过放电脉冲来检测电池的内阻变化,进而跟踪电池容量的变化等。
2)采集的信息:
在本方法中,我们采集的信息包括:正脉冲期间的充电电流大小及其随时间的变化;负脉冲期间的放电电流及其随时间的变化量;电池温度及其随时间的变化量;电池电压及其随时间的变化量。这些信息是我们用于学习和控制的第一手材料,通过对他们的分析可以估算电池的内阻,进而计算出电池当前所处的状态等;在我们的控制技术中,要同时对多个变量跟踪,因为单一变量的结果必然在某些情况下(特别是所关注的变量并未如期望的那样如期出现的情况)会出现对电池的过充,严重伤害电池的性能,所以我们要求必须多变量跟踪。这些变量包括三种类别,一是电池电压类跟踪;二是电池温度类跟踪;三是时间类跟踪。下面分别讨论:
(1)电池电压类跟踪,包括电池的最高电压(指的是在任何条件下均不能超过的电压);电池电压的变化斜率(正斜率表示电池电压的上升速度;而下降斜率往往指电池电压出现的负增量,即-ΔV;而零斜率表示电池的电压未变化,即0ΔV),这些条件都是电池快速充电的结束条件,其中任何一个条件出现均应终止快速充电,这完全是由电池的性质所决定的,多数电池在充电的后期均表现出电压的快速增长,而负斜率或零斜率表明电池已有过充行为;
(2)电池温度类跟踪,包括电池的最高温度,与环境温度相比的相对温度变化以及温度变化斜率,电池温度升高的原因往往是电池已经过充,当然电池充电的时候允许温度有一定的升高,但绝对不能超过绝对最高温度,这主要是基于电池安全的考虑。其中温度的变化斜率也是在充电的后期,电池温度的急剧变化,应该终止快速充电过程;
(3)时间类跟踪,包括最长充电时间的控制。最长充电时间取决于电池的当前状态与目前的充电电流,其中与此有关的是电池的内阻与容量的变化。
3)充满判断规则:
对充电电池是否在充电过程中已充满的判断是充电器的重要指标,如果电池未充满而错判为充满将导致电池欠充,反过来则将导致电池过充,两种情况都对电池的寿命有重大影响。
综合起来,判断规则有如下几种:
定时控制;.电压控制(含最高电压;电压负增量;电压零增量等);温度控制(包括最高温度,最高温升;温度变化率等);.电流控制等。本方法采用综合判断方法,对每个指标进行跟踪,并按模糊数学原理的要求分别记分,按照置信度作出最佳判断。在电池状态或跟踪参数的检测中,如何保证判断的准确性是一个充电控制芯片能否正确工作的关键所在。电池充电是一个典型的非线性过程,在该过程中时常会有一些虚假的现象出现,如何在这些现象中去除真伪,我们的方法是采用了模糊控制技术,对每种现象采取置信度考察,当这些现象确实为真时,采取相应的措施,反之则忽略。
下面说明本发明的特点:
(1)本发明能自适应地动态调整充电脉冲各参数值,使电池充电曲线与电池当前的充放电曲线一致,由于该曲线是变化的,所以充电脉冲也是不断变化和调整的;
(2)终止充电策略由于采用了模糊数学原理,充电器具有稳定可靠的特点,使充电不至错判,从而大幅度提高充电器的可靠性;
(3)本发明对电池类型没有要求,也就是说本充电技术可同时对铅酸、镉镍、银锌、氢镍或锂电池充电,而且充电效果并不因为电池类型的不同而有所差异;
(4)更进一步,本发明对电池的当前状态也没有要求,即只要电池没有短路或者断路,都可以对电池进行正常充电,所以本充电技术还可对性能有所下降的电池有恢复或治愈的功能;
由于采用了自适应控制方法,对电池无伤害,更加上上面4点,本技术可延长电池的使用寿命。
下面从充电控制芯片产品的角度将《智能快速充电器设计与制作》(王鸿麟等,科学出版社,1998)一书中记载的芯片与本发明的芯片进行比较如下:
1、与ICS1700相比
ICS1700内藏微处理器、16脚封装,能监控电池的充电状态,具备充放电脉冲等,与本发明的芯片相比,有如下差异:
(1)ICS1700有充电波形,但不动态变化,而本发明的芯片可以;
(2)具备测温能力,但不计算温升变化,而本发明的芯片要计算;且ICS1700只对高温感兴趣,对低于10℃的情形不做处理,而本发明的芯片要做;
(3)ICS1700一开始就快充,是不合适的,充电过程快速充电和维护充电两个阶段,而本发明的芯片具备4个阶段;
(4)ICS1700用于氢镍和镉镍电池充电,不具备自动识别能力,快速充电电流固定,且需要开关转换,而本发明的芯片无此缺点。
2、与UT550相比
UT550内藏微处理器、28脚封装,可实现对氢镍、镉镍电池智能快速充电,与本发明的芯片相比,有如下不同:
(1)UT550有与本发明的芯片相似的充电4个阶段,但UT550不具备自适应功能。即不根据电池状态调整充电4个阶段的流程,而采用时间控制加上经验数据控制,不妥;
(2)UT550具备较强的充满判断能力,即有-ΔV、0ΔV、ΔV/Δt、Vmax、ΔT/Δt、Tmax检测,但不具备本发明的芯片那样的模糊判定能力;
(3)消除记忆效应的方法不同,UT550采用彻底放电、不完全放电,并多次反复的方法来做,本发明的芯片则采取不彻底放电,利用大电流充放电,从而搅拌电池电解液以消除记忆效应的方法,效率要高得多;
(4)电量指示的方法不同,UT550采用单一的电压或时间作为依据,而本发明的芯片除此之外,还能计算的方法获得容量和电量指示功能,从而本发明的芯片更科学等。
3、与MAX2003相比
MAX2003是MAXIM公司继MAX712/713后的新品,16脚封装,与BQ2003可互换,性能优于MAX712/713。MAX2003采取五种终止快速充电方法:电池温度变化率、电池电压负增量、电池最高温度、电池最高电压和最长充电时间。与本发明的芯片相比,有以下不同:
(1)MAX2003虽有5种快速终止方法,但本发明的芯片不同的是采取了模糊判断准则,与MAX2003谁先到条件就依谁的方法大不相同。本发明的芯片更可靠,因为上述几种方法中,每种方法都可能是误信号;
(2)MAX2003消除记忆方法采取先放电的方法,有可能没有完全消除记忆效应,而本发明的芯片方法不同;
(3)温度检测后对10℃以下未处理;
(4)MAX2003充电脉冲固定,而本发明的芯片是动态变化的。
4、与BQ2002相比
BQ2002是国外产品中最廉价的,只有8脚封装,与本发明的芯片相比,有以下差异:
(1)充电控制状态有3个,即快充、补足充电和涓流充电,但过程不自动切换;
(2)有温度测量,但对10℃以下未做处理;
(3)BQ2002充电脉冲固定,未做动态变化;
(4)BQ2002主要采取-ΔV、最长充电时间、电池最高温度、温度变化速终止的方法判断充满与否,未有本发明的芯片的模糊判断准则等。
5、与TEA1100/1101相比
TEA1100/1101为16脚封装,与本发明的芯片相比有如下不同:
(1)TEA1100/1101采用-ΔV检测(TEA1101采用0ΔV检测),数字滤波和无电流电压检测方法判断电池充足电状态,本发明的芯片同样具备,只是把这些变量作为充足电其中的一个依据;
(2)TEA1100/1101可以测温,且仅把此作为一种保护。本发明的芯片同样测温,但温度有两个用途,一是充满依据之一;二是保护电池,且比TEA1100/1101更全面,因为处理了10℃以下状态;
(3)TEA1100/1101充电时间、充电周期可以调整,但不像本发明的芯片那样是动态变化的;
(4)TEA1100/1101在电池电压过低、温度过高或过低时,自动进入涓流充电,而本发明的芯片是一个全面的判断,不像TEA1100/1101单一的判断等。
6、其他如MAX712/713等与本发明的芯片的差异,在此不进一步比较,因为有些还不如上面提到的IC。另外,上面提到的一些IC均不具有对电池类型自动判断的能力,由这些IC制作的充电器只对一种类型的电池充电,而本发明的芯片是自动判断的。另外,对铅酸电池专用的控制IC如UC3906(16脚)也不做进一步的比较,因为都不具备本发明的芯片的三大特点:自适应调整充电电流、熟悉电池特性;模糊充满准则;电池类型自动判定等。
7、与锂离子电池充电控制器的比较:
这类控制器有LM3402、MC33346、BQ2504等,概括起来,上述几种IC均具有强烈的专用性,全部采用恒流/恒压(或限压)充电方式,而本发明的芯片在锂离子电池安全范围内,创造性地采用了脉冲充电方案,从而大大地提高了充电效率,充电时间大大缩短。
8、其他充电控制IC
有些充电控制器需要接微处理器实现可编程变化,但成本过高,不与本发明的芯片作进一步比较。
综上所述,本发明在下面几个方面具有优点:
●技术优点
1)多变量跟踪技术保证了芯片所需要的所有参数的来源;2)模糊数学原则保证了可靠终止快速充电过程;3)对电池内阻参数的跟踪可以方便芯片识别电池的当前状态;4)基于内阻变化而导致的自适应跟踪电池充电时可接受能力严格按指数曲线的原则,即充电波形自动跟踪电池可接受能力曲线,也是本发明的核心部分。
●性能优点
采用本发明实现的充电器具有:1)可以可靠终止快速充电过程;2)由于具有充电的预充等四个过程,最终可以保证充电器的充满度;3)由于采用了负脉冲技术等,可以保证充电器的充电效率;4)在充电过程中检测电池的内阻变化可以预知电池的当前状态,从而保证了电池的应有寿命参数;5)在充电器的整机设计中,由于芯片设计与电源设计的独立性,可以简化充电器的设计与试验过程,特别适合于现代电子电路设计的方向,可以保证快出产品,出好产品的目的等。
下面结合附图和实施例进一步详述本发明。
图1是软件赋予芯片充电新功能管脚图。
图2是软件程序流程框图。
实施例一
自适应充电控制芯片由硬件和软件两部份组成,硬件为PIC12C671型单片机,其管脚图如图1所示,未注入计算机程序时芯片各管脚原功能如下:脚1为电源正端;脚2为多功能I/O(输入/输出)端,二进制的I/O口、振荡输入、时钟源输入;脚3为多功能I/O端,二进制的I/O口、振荡输入、时钟源输出、模拟输入;脚4为多功能端输入端,主复位、程控电压输入;脚5为多功能I/O端,二进制的I/O口、中断输入、模拟输入;脚6为多功能I/O端,二进制的I/O口、串行程控中断和程控时钟、模拟输入;脚7为多功能I/O端,二进制的I/O口、串行程控数据、模拟输入;脚8为电源负端。注入图2所示的计算机程序后各管脚功能如下:VCC:电源正电压,该电源电压范围为2V∽6V,典型应用5v;GND:电源负端,接地;MOD:充电控制输出,通过自适应调整此脚的脉冲波形,达到控制电池快速充电;补足充电及涓流充电的不同模式;DIS:专用放电控制脚,当需要消除电池极化效应时作用,而无此必要时输出为低电平;BAT:电池电压取样输入。电池组电压经过外接电阻分压后,接入该脚。要求接入该脚的电压是组成电池组的单元格电压(分压电阻完成);TC:充电电流取样输入;LED/MCC:该引脚在8脚封装时(单独引出除外)有两个功能,MCC指通过外接分压电阻输入该充电器的最大充电电流(只在上电瞬间有效);LED用于指示充电器的工作状态,低电平有效,当充电器处于快速充电时,此脚一直为低;当充电器处于补足充电时,此脚电平在高电平及低电平间缓慢变化;而充电器处于故障状态时,则快速闪动提示用户,同时停止充电直到故障消除。CS:为片选/同步端,高电平工作,低电平休止。该端用于同步时,可以运用在均衡充电情况下便于控制。
从原芯片的功能管脚得知,如2、3、5、6、7的引脚都是双向I/O口,即可作为输入信号使用也可作为输出控制,芯片功能的转变,完全取决于内部的操作程序,程序注入芯片后也就决定了芯片的功能。原芯片没有程序时,是任何功能都没有。即使任何高档或低档的单片机,只有注入了相应的工作程序,方能达到相应的功能。
该芯片注入图2所示的智能充电控制程序后,其功能为:
三路模拟信号(TC、BAT、MCC),由程序控制分时扫描进入模/数转换,通过量化的数据作为程序进行计算的依据,计算出的结果又作为程序进入相应的阶段程序中发挥相应的功能。对不同个性的电池和程序运行到不同阶段时,读入的数据产生不同的作用。在开始阶段,读入的数据是作为判定电池是否正常接入电路中;在预充电状态中读入的数据是作为各种参数设置的依据;在快充阶段中读入的数据对所设置的参数进行修正,并有效的控制输出控制端工作。简而言之,充电控制端(MOD)和放电控制端(DIS)及故障指示端的各种功能,都是根据三路数据输入结合相应的公式计算处理后决定的。
从图2中可见,程序启动后检查有没有故障,即判定电池接入没有,如果有故障进行故障显示,程序中断,等待故障排除后,重新启动。如果没有故障,操作系统与软件开始进行参数设置,并对芯片的运行状态进行检测,没有异常,或者说通过多次检测,按照模糊数学统计原理,判定系统正常,就对电池进行预充。同时“最长时间终止法”开始计时。预充电阶段的时间和电流及其它参数都是由程序设定。预充电结束自动进入“快速充电”阶段,同时就对“最长时间终止法”的时间参数予以修正。程序反复检测快速充电的终止条件满足没有,满足与不满足也是进行多次检测,同样运用模糊数学原理判定“快速充电”结束。程序运行正常;芯片及外部电路都没有问题,充电就进入“补充充电”阶段,在这段时间里“补充充电”的电流和各种参数设定,程序根据电池的温度、电压进行调整,满足终止条件才进入最后的“涓流充电”。如果“快速充电”阶段中有故障出现,就以最长时间来判定充电的结束,如果“最长时间结束”方式中发生了故障,程序就转入“故障提示”状态,等待故障排除,重新启动程序。在以上运作中检测与控制及其它的动作都是并发执行的,有些事件一直处于激活状态的,如“故障检测”从通电就开始进行,时时刻刻对运作进行监测,而计时操作是在预充电后一直处于激活状态。芯片总的工作在六个状态中:即开始、故障、预充、快充、补充、涓充(结束)。下面简要的说明铅酸电池和锂离子电池的每个状态(开始状态除外)的起始与终止条件。
(一)铅酸电池每个单体电池的电压为2V,其各状态内容为:
1.故障状态:主要检测电池是否正确的接入充电端,当在任何情况下检测到电池的开路或短路,芯片立即终止当前的工作状态,进入“故障提示”;只有故障消失后,进入下一个阶段;故障检测程序自始至终都在运行。
2.预充状态:在这个状态下面,芯片主要完成对充电参数的设置。如最大充电电流值,并且芯片将从较小的脉冲占空比开始,一直要达到充电电源可以达到的最大占空比,这样做的目的有两个:一是检验充电电源的性能;二是逐渐使所充电池处于充电状态,这个举措可以保证电池的寿命参数。另外,在预充阶段,还要完成对电池容量的初步检测,如果电池容量已经很高,芯片将可能直接进入涓充状态(指的是电池电压在这个状态下已经处于电池的最高电压),普通情况下,芯片将检测到电池的容量的百分比,而顺利进入快充。
3.快速充电状态:该状态的终止条件是电池电压处于最高电压或者未达到最高电压而出现了负斜率变化。最高电压限值可由如下公式计算确定: V BAT _ cut = 37 51 . VCC 上式中的Vcc电压数值为2.5V~5.5V,即在BAT脚的电压范围为1.814V~3.99V。当上述终止条件并未得到满足时,芯片的工作包括首先在充电过程中修正最长充电时间值并按照该值决定最长充电时间;当该值已达到上述的终止条件仍未满足的情况下将终止快速充电而进入补充充电阶段,应该注意的是,在条件判断上采用了模糊数学的原理,按照置信度的原则作出综合的判断。在快速充电阶段仍然时刻监测是否产生了故障,如果故障出现将进入故障状态。
4.补充充电状态:在补充充电阶段中,采用恒压控制,电池容量的检测再一次被激活,目的是为了检测在快速充电过程中的结果。如果是因为终止条件满足而终止的,将计算结果作为补充充电的时间考量;如果是因为时间到了而终止快速充电,则不进行计算,直接进入考量补充充电的终止条件是否满足,考量公式如下: V TC _ cut = 20 1024 . VCC = x . V TC 公式中X参数为当前充电波形的占空比,VTC为充电瞬间的充电电流在电流取样电阻上的电压值(是一个实时测量值),Vcc取值范围同上为2.5V至5.5V,TC脚的电压范围为0.049V~0.107V。在这个过程中仍然时刻监测有否故障出现。
5.涓流充电状态:在涓流充电阶段,芯片按照浮充电压的要求进行,终止电压如下公式求得: V BATfloat = 178 263 VCC 充电波形也将按照该公式进行调整,此时故障检测仍然在进行。式中的Vcc取值范围同上为2.5V至5.5V,即BAT脚的电压范围为1.692V~3.722V。
(二)锂离子电池每个单体电池电压为3.6V,其各个状态为:
1.故障状态:主要检测电池是否正确的接入充电端,当在任何情况下检测到电池的开路或短路,芯片立即终止当前的工作状态,进入“故障提示”;只有故障消失后,进入下一个阶段。
2.预充电状态:在这个状态下面,芯片主要完成对充电参数的设置。如最大充电电流值,并且芯片将从较小的脉冲占空比开始,一直要达到充电电源可以达到的最大占空比,这样做的目的有两个:一是检验充电电源的性能;二是逐渐使所充电池处于充电状态,这个举措可以保证电池的寿命参数。另外,在预充电阶段,还要完成对电池容量的初步检测,如果电池容量已经很高,芯片将可能直接进入涓流充电状态(指的是电池电压在这个状态下已经处于电池的最高电压),普通情况下,芯片将检测到电池的容量的百分比,而顺利进入快速充电;
3.快速充电状态:该状态的终止条件是电池电压处于最高电压或者未达到最高电压而出现了负斜率变化。最高电压限值可由如下公式计算确定: V BAT _ cut = 11 26 . VCC 在锂离子电池充电中,式中单体电池的VBAT-CUT结果控制在4.2V,如果是对单体电池进行充电,上式中Vcc取值为2.5V~5.5V,即在BAT脚的电压范围为1.058V~2.327V。当上述终止条件并未得到满足时,芯片的工作包括首先在充电过程中修正最长充电时间值并按照该值决定最长充电时间;当该值已达到上述的终止条件仍未满足的情况下将终止快速充电而进入补充充电阶段,应该注意的是,在条件判断上采用了模糊数学的原理,按照置信度的原则做出综合的判断。在快速充电阶段仍然时刻监测是否产生了故障,如果故障出现将进入故障状态;
4.补充充电状态:在补充充电阶段,采用恒压控制,电池容量的检测再一次被激活,目的是为了检测在快速充电过程中的结果。如果是因为终止条件满足而终止的,将计算结果作为补充充电的时间考量;如果是因为时间到了二终止快速充电,则不进行计算,直接进入考量补充充电的终止条件,及考量公式如下: V TC _ cut = 20 1023 Vcc = x . V TC 公式中X参数为当前充电波形的占空比,VTC为充电瞬间的充电电流在电六取样电阻上的电压值,Vcc的取值同上为2.5V至5.5V,TC脚的电压范围为0.049V~0.108V。在这个过程中仍然时刻监测有否故障出现。
5.涓流充电状态:在涓流充电阶段,芯片按照浮充电压的要求进行,终止电压如下公式求得: V BAT _ cut = 11 26 VCC 上式中Vcc的取值为2.5V至5.5V,即BAT脚的电压范围为1.058V~2.327V。充电波形也将按照该公式进行调整,此时故障检测仍然在进行。
以上只是铅酸和锂离子电池的充电状态下的各个起始和终止条件,不同类型、不同个性的电池接入充电时,具体参数是不相同的,程序在运行中自动的进行判定而做出相应的处理。

Claims (4)

1.自适应充电控制芯片由硬件和软件两部份组成,其特征在于硬件为具备三路以上模数转换器、四路以上输入输出口、程序存储器的单片机,软件为计算机程序,其框图如下:
芯片起始进入开始状态,首先检测有没有故障存在;如果有,进入故障提示状态,否则进入参数设置与状态检测状态,包括电池的电压,内阻,容量,温度状态,进行一系列的参数设置,包括最长充电时间的初始设置;然后芯片进入预充阶段,同时最长充电时间开始计时,控制充电控制脚的占空比使充电电流从小变大;然后芯片进入快速充电状态,同时对最长时间进行修正直至该参数准确为止,另外同时检测各个快速充电终止条件是否满足,如果未满足则进行最长时间判断,如果未达到则继续,否则进入补充充电状态,当快速充电终止条件满足则直接进入补充充电状态;然后芯片进行故障的检测,当存在故障则终止充电进入故障提示状态,当故障消除后进入预充阶段,如果在快速充电过程中未出现故障,其他的条件未满足,则芯片继续快速充电,以便条件满足后进入补充充电状态;在补充充电状态,检测终止条件,如果确实已满足则进入涓流充电状态,并通过外接指示灯告知用户已经充满点,如果不出现故障,芯片的工作停留在此,若有故障芯片可以重新初始化并重新在新的条件下工作,除非停电,芯片才结束工作。
将上述计算机程序注入到上述单片机中的程序存储器上,即得到自适应充电控制芯片。
2.根据权利要求1所述的自适应充电控制芯片,其特征在于将计算机程序注入到单片机中的程序存储器上,使单片机中的1脚为VCC脚,作为电源正电压,该电源电压范围为2~6V,典型应用5V;2脚为MOD脚,作为充电控制端,通过自适应调整此脚的脉冲波形,达到控制电池快速充电,补足充电及涓流充电的不同模式;3脚为DIS脚,作为放电控制端,当需要消除电池极化效应时作用,而无此必要时输出为低电平;4脚为CS脚,作为片选/同步端,高电平工作,低电平休止,该端用于同步时,可以运用在均衡充电情况下便于控制;5脚为LED/MCC脚,作为故障显示输出端,该引脚在8脚封装时(单独引出除外)有两个功能,MCC指通过外接分压电阻输入该充电器的最大充电电流(只在上电瞬间有效);LED用于指示充电器的工作状态,低电平有效,当充电器处于快速充电时,此脚一直为低;当充电器处于补足充电时,此脚电平在高电平及低电平间缓慢变化;而充电器处于故障状态时,则快速闪动提示用户,同时停止充电直到故障消除;6脚为BAT脚,作为电压信号输入端,电池组电压经过外接电阻分压后,接入该脚;7脚为TC脚,作为电流信号输入端;8脚为GND脚,作为电源负端,接地;
当芯片加电时,计算机程序处于自动加电复位,芯片的片选信号CS为高电平,软件和硬件处于起始工作状态,计算机程序开始运作进入开始阶段:检测被充电池是否加入电路中;充电控制端MOD和放电控制端DIS处于低电平(关断),CPU扫描电流信号输入端TC和电压信号输入端BAT,在一定时间内,反复多次对TC和BAT数据输入的检测,以模糊数学方法的原则判断,如果TC和BAT没有信号输入,即判定电池没有加入或者电池开路,转入故障提示阶段;否则转入预充电阶段;故障检测程序自始至终都在运行;
如果计算机程序进入了故障提示阶段,故障显示输出端MCC/LED为故障信号指示,该指示灯闪亮;直到故障排除(关机排除)后,芯片再次加电,即可进入预充电阶段;
在预充电阶段,计算机程序先进行状态检测,此时硬件电路中的多路转换器,按分时选通三路TC、BAT、MCC的模拟信号进入数字滤波器;消除模拟信号输入中的干扰和谐波成分;模拟信号进入模/数转换器,把取样的模拟信号:电池电压、电池电流、充电电压量化后送入主控CPU,计算机程序依据这些数字信号,判定电池的类别,首先看电池的电压范围,低于1.8V为锂电池类型,1.8V~2V为铅酸电池类型,2V~2.4V为镉镍、氢镍电池类型,当该方法难于区分时,采用测量电池内阻的方法,内阻小于5mΩ为镉镍与氢镍电池,高于5mΩ而小于50mΩ为铅酸电池,大于50mΩ为锂电池;然后根据电池的类别进行参数设置,包括由MCC脚决定的最大充电占空比,最大为97%,对应MCC电压为4.5V,最小为5%,对应MCC电压为0.1V;最长充电时间的初始值定为16位计数器的满值,即65535个计时单元,每个单元为8个指令周期,每个周期随外加的振荡频率的1/4决定;根据三路模拟信号输入端的数据,初步计算出电池的容量,根据容量的不同再一次决定充电进入的下一个阶段,如果容量小,即可转入快速充电阶段;如果容量大,不进入快速充电阶段,直接进入涓流充电阶段;在即将结束预充电阶段时,为了防止硬件数据出错和其它充电控制失控,根据电池的数据,充电的最长时间记时开始,这个值不是一个定值,也是一个变量,进入不同的状态后,根据采样数据,对最长时间进行修正;
在快速充电阶段,硬件电路对MOD进行脉动式控制,这个脉冲式的周期即占空比是根据数据输入来进行调整的,加快充电,占空比变大,反之变小;在充电过程中,放电控制端在伴随充电脉冲的中间,有一个“负脉冲”,即是放电用的控制脉冲,该脉冲的周期也是变化的,要根据采样收集的数据决定;采样数据又是在负脉冲的终止后沿进行,所以,采样、充电、放电是交叉动态的根据电池的状态进行;快速充电的终止条件是BAT脚的电压等于终止电压,而终止电压是根据起始阶段已检测出的电池种类和电池数量在1.058~3.99V范围内设定取值;在快速充电阶段中,芯片根据电池充电后的各种参数,对最长充电时间进行修正,另一方面充电电池的BAT数据送入CPU后,与终止电压进行比较,如果终止条件满足或终止条件未满足而最长充电时间已到,将终止快速充电,进入补充充电阶段;
在补充充电阶段,采用恒压控制,CPU对电池的容量进行检测,硬件上TC、BAT、MCC模拟数据通过多路转换开关送入数字滤波器,再经模/数转换,其结果送入CPU的寄存器,寄存器的数据由软件计算,得出快速充电的结果是否满足快速充电终止条件,如果满足,在时间控制上就作为补充充电的时间算出参考量;如果不满足而是由时间控制结束快速充电的,不再进行时间计算,直接考察补充充电的终止条件,其终止条件是TC脚的电压等于终止电压,而终止电压是根据起始阶段已检测出的电池种类和电池数量在0.049~0.108V范围内设定取值;软件执行读三路模数转换的结果,与补充充电终止条件比较,同时又确认补充定时控制是否满足,二种条件具备了一种即结束补充充电进入涓流充电阶段;
在涓流充电阶段,采用恒压充电即对电池进行浮充,此时芯片按浮充电压进行充电,其终止条件是BAT脚的电压等于终止电压,而终止电压是根据起始阶段已检测出的电池种类和电池数量在1.058~3.722V范围内设定取值;当电池的电压达到该设定值,充电结束,计算机程序关断MOD端和DIS端,指示灯LED显示充电完成,计算机程序停止。
3.根据权利要求1或2所述的自适应充电控制芯片,其特征在于计算机程序如下:
;*************************************************************
; this program used for adaptive control of battery charge
;*************************************************************
;
   list p=16c711
;*************************************************************
; Define some used constants
;*************************************************************
OPTION_VAL equ b’00001111’
INTCON_VAL equ b’01100000’
TRISA_VAL  equ b’00011111’
TRISB_VAL  equ b’00000001’
;
bat equ 0×00
tc  equ 0×01
tm  equ 0×02
mcc equ 0×03
clk_pin equ 0×04
;
cs equ 0×00
sync equ 0×00
data_pin equ 0×00
;
led1    equ 0×01
led2    equ 0×02
led3    equ 0×03
led4    equ 0×04
;
				
				<dp n="c4"/>
led equ 0×05
mod equ 0×06
dis equ 0×07
;
;*************************************************************
;The following defined some registers used to store any datas
;
;*************************************************************
;
s_mod        equ 0×21
work_mod     equ 0×23
data1_bat    equ 0×24
data2_bat    equ 0×25
max_curr     equ 0×26
delay_val    equ 0×27
timer_1      equ 0×28
timer_2      equ 0×29
timer_3      equ 0×2A
timer_4      equ 0×2B
work_dis     equ 0×2C
work_stop1   equ 0×22
work_stop2   equ 0×2D
w_temp       equ 0×2E
status_temp  equ 0×2F
pclath_temp  equ 0×30
state        equ 0×31
;01-------------A/D channel selection
;2--------------mark for lion or notlion
;3--------------mark can charging or not
;*************************************************************
				
				<dp n="c5"/>
;include file

  INCLUDE<DEV_FAM.INC>  ;PIC16 device specific definitions

  INCLUDE<MATH16.INC>   ;PIC16 math library definitions
;  INCLUDE<MATH16.MAC>   ;PIC16 elementary function macros

  #include″p16c711.inc″
;
;Start at the reset vector

  org 0×3ff

  goto  begin

  org 0×000
;First to initialize the chip
begin    clrf    STATUS

  clrf    TMRO

  call    initial

  goto    main
;Start at intteruput vector

  org 0×04

  MOVWF  w_temp

  SWAPF  STATUS,W

  CLRF   STATUS

  MOVWF  status_temp

  MOVF   PCLATH,W

  MOVWF  pclath_temp

  CLRF   PCLATH
;SERVICE PROGRAM

  btfsc  INTCON,TOIF;TMRO OVERFLOW

  bcf INTCON,TOIF
;

  clrwdt
;RETURN FROM INTTERRUPT SERVICE PROGRAM
				
				<dp n="c6"/>
  MOVF    pclath_temp,W

  MOVWF   PCLATH

  SWAPF   status_temp,W

  MOVWF   STATUS

  SWAPF   w_temp,F

  SWAPF   w_temp,W

  btfss   status_temp,Z

  bcf STATUS,Z

  btfsc   status_temp,Z

  bsf STATUS,Z

  return
;
;****************************************************************
;The following is the initialized procedure
;****************************************************************
initial clrf    PORTA

  clrf    PORTB
;For define the OPTION

  bsf STATUS,RPO

  movlw    b’00000111’

  movwf    OPTION_REG

  bcf STATUS,RPO

  clrf     TMRO

  bsf STATUS,RPO

  movlw    OPTION_VAL

  movwf    OPTION_REG
;For I/O ports design

  movlw    TRISA_VAL

  movwf    TRISA

  movlw    TRISB_VAL

  movwf    TRISB
;For intcon setup
				
				<dp n="c7"/>
  bcf STATUS,RPO

  movlw    INTCON VAL

  movwf    INTCON
;For A/D setup

  bsf STATUS,RPO

  clrf    ADCON1

  bcf STATUS,RPO
;

  clrf    state

  retlw   0
;*************************************************************
;The following is the main procedure
;*************************************************************
delay    clrwdt

  clrf    TMRO

  decfsz  delay_val,f

  goto    delay

  retlw   0
;-------------------------------------------------------------
error_1 movlw    0×ff

  movwf    AARGBO
E_1 bcf PORTB,led

  call    delay

  call    delay

  call    delay

  call    delay

  decfsz  AARGBO,F

  goto    E_1

  bsf PORTB,led

  movlw   0×ff

  movwf   AARGBO
E_2 call    delay
				
				<dp n="c8"/>
  call    delay

  call    delay

  call    delay

  decfsz  AARGBO,F

  goto    E_2

  retlw   0
;-------------------------------------------------------------------
adc_ini movlw  b’00000001’

  movwf    ADCONO

  btfsc    state,0

  bsf ADCONO,CHSO

  btfsc    state,1

  bsf ADCONO,CHS1
;

  bsf STATUS,RPO

  bcf STATUS,RPO

  bsf INTCON,ADIE

  bsf INTCON,GIE

  bsf ADCONO,GO
adccomp btfss ADCONO,ADIF

  goto    adccomp

  bcf  ADCONO,ADIF

  retlw   0
;-------------------------------------------------------------------
;*******************************************************************
;can not charging the battery,regulate the max_curr setup
uncharg bcf STATUS,C

  rrf max_curr,F

  bcf STATUS,C

  rrf max_curr,F

  bcf STATUS,C
				
				<dp n="c9"/>
  rrf max_curr,F

  movf     max_curr,W

  sublw    0×02

  btfss    STATUS,C

  goto     u_1

  movlw    0×02

  movwf    max_curr
u_1 movlw    0×0a

  movwf    s_mod

  goto     loop_0
;******************************************************************
main    clrf    STATUS
;First to detect the battery ON or OFF

  clrf    PORTB
bat_t    bcf state,0

  bcf state,1

  call    adc_ini

  movf    ADRES,W

  sublw   0×19       ;larger than 0.5V?

  btfss   STATUS,C

  goto    step_1

  call    error_1

  goto    bat_t
;to decide the battery style
step_1  bcf state,2    ;marking for not lion style

  movf    ADRES,W

  sublw   0×6b       ;larger than 2.1V?

  btfsc   STATUS,C

  bsf state,2        ;marking for lion style

  bcf PORTB,led      ;marking for charging state

  movlw   0×0a

  movwf   delay_val
				
				<dp n="c10"/>
  call    delay
;For step 2 to test temperure &amp; maximum mod
step_2  bsf state,0

  bsf state,1

  call    adc_ini

  movf    ADRES,W

  movwf   max_curr    ;Store the maximum charging current the power can suply
;

  movlw   0×0a

  mowf    delay_val

  call    delay

  bcf state,0

  bsf state,1

  call    adc_ini

  bsf state,3        ;marking can charged eneble
  movf    ADRES,W

  sublw   0×cd       ;larger than 4V?that is the tempture less than 10cc

  btfss   STATUS,C

  bcf state,3        ;marking can not charged eneble
;
;The fol lowing for deal with charging prodcedure
step_3  btfss    state,3

  goto    uncharg
;can charging the battery

  movlw   0×0a

  movwf   s_mod
loop_0 movf  s_mod,W

  movwf    work_mod

  movlw    0×fa

  movwf    timer_1
loop_1  movf    work_mod,W

  sublw    0×ff
				
				<dp n="c11"/>
  movwf    work_stop1

  bcf STATUS,C

  rrf work_stop1,W

  movwf    work_stop1

  movwf    work_stop2
loop_2  bcf PORTB,dis

  bcf PORTB,led

  bsf PORTB,mod

  movlw    0×50

  movwf    delay_val

  call     delay

  decfsz   work_mod,F

  goto     loop_2

  decf     timer_1,F
;***************************************************************
step_4  bcf PORTB,mod

  bcf PORTB,led

  movlw    0×0a

  movwf    work_dis
loop_3  bcf PORTB,mod

  bcf PORTB,led

  movlw    0×0a

  movwf    delay_val

  call     delay

  decfsz   work_stop1,F

  goto     loop_3
loop_4  bsf PORTB,dis

  bcf PORTB,led

  clrwdt

  clrf     TMRO

  decfsz   work_dis,F

  goto     loop_4
				
				<dp n="c12"/>
  bcf PORTB,dis
loop_5  bcf PORTB,mod

  bcf PORTB,led

  movlw    0×0a

  movwf    delay_val

  call     delay

  decfsz   work_stop2,F

  goto     loop_5
;******************************************************************

  movf     timer_1,W

  xorlw    0

  btfsc    STATUS,Z

  goto     loop_new

  movf     s_mod,W

  movwf    work_mod

  goto     loop_1
loop_new
;To test the battery ON or OFF

  bcf state,0

  bcf state,1

  call    adc_ini

  movf ADRES,W

  sublw   0×19          ;larger than 0.5V?

  btfsc   STATUS,C

  goto    bat_t
;***********************************************************

  btfsc   state,2

  goto    lion

  movf    ADRES,W

  sublw   0×b9         ;(3.6v)29.6V arrive?

  btfss   STATUS,C

  goto    NO_LION_COM
				
				<dp n="c13"/>
  goto    continu
;
lion    movf    ADRES,W

  sublw   0×6c      ;2.1v(4.2V)arrive?

  btfss   STATUS,C

  goto    LION_COM
;
continu btfsc    state,3

  goto    contt
;*****************can charging fast?*******************************

  bcf state,0

  bsf state,1

  call    adc_ini

  movf    ADRES,W

  sublw   0×cd        ;larger than 4V?that is the tempture less than 10cc

  btfsc   STATUS,C

  goto    main
;
contt    movf    s_mod,W

  subwf   max_curr,W

  btfsc   STATUS,C

  goto    admod

  movf    s_mod,W

  xorlw   0×01

  btfsc   STATUS,Z

  goto    loop_0

  decf    s_mod,F

  goto    loop_0
admod    movf    s_mod,W

  xorlw   0×fa

  btfsc   STATUS,Z

  goto    loop_0
				
				<dp n="c14"/>
  incf    s_mod,F

  goto    loop_0
;------------following marking the LION battery charging complete----------
LION_COM
;**********************************************************************************

  bsf PORTB,led

  bcf PORTB,mod

  bcf PORTB,dis
Eloop_0 movf    s_mod,W

  movwf    work_mod

  movlw    0×0a

  movwf    timer_1
Eloop_1 movf    work_mod,W

  sublw    0×ff

  movwf    work_stop1
Eloop_2 bcf PORTB,dis
  bsf PORTB,led

  bsf PORTB,mod

  movlw    0×50

  movwf    delay_val

  call     delay

  decfsz  work_mod,F

  goto     Eloop_2

  decf     timer_1,F
;
Eloop_3 bcf PORTB,mod

  bsf PORTB,led

  movlw    0×0a

  movwf    delay_val
  call     delay

  decfsz   work_stop1,F

  goto     Eloop_3
				
				<dp n="c15"/>
  bcf PORTB,dis
;To test the battery ON or OFF
  bcf state,0

  bcf state,1

  call    adc_ini

  movf    ADRES,W

  sublw   0×19       ;larger than 0.5V?

  btfsc   STATUS,C

  goto  bat_t
;********************************************************************

  movf   timer_1,W 

  xorlw  0

  btfsc  STATUS,Z

  goto   Eloop_new

  movf   s_mod,W

  movwf  work_mod

  goto   Eloop_1
Eloop_new
  movf   ADRES,W

  sublw  0×6c       ;(2.1v)4.2V arrive?

  btfsc  STATUS,C

  goto   Eadmod

  movf   s_mod,W

  xorlw  0×01

  btfsc  STATUS,Z

  goto   Eloop_0

  decf   s_mod,F

  goto   Eloop_0
Eadmod movf  s_mod,W

  xorlw  0×fa

  btfsc  STATUS,Z

  goto   Eloop_0
				
				<dp n="c16"/>
  incf    s_mod,F

  goto    Eloop_0
;********************************************************************************
;------------following marking the NO_LION battery charging complete----------
NO_LION_COM

  bcf PORTB,led

  bcf PORTB,mod

  bcf PORTB,dis

  movf    s_mod,W 

  sublw   0×20

  btfss   STATUS,C

  goto    fff

  btfsc   STATUS,Z

  goto    fff

  bcf STATUS,C

  rlf s_mod,F

  bcf STATUS,C

  rlf s_mod,F

  bcf STATUS,C

  rlf s_mod,F

  goto  Cloop_0
fff movlw    0×e0

  movwf    s_mod
Cloop_0 movf    s_mod,W

  movwf    work_mod

  movlw    0×04

  movwf    timer_1
Cloop_1 movf    work_mod,W

  sublw    0×ff
				
				<dp n="c17"/>
  movwf    work_stop1
Cloop_2 bcf PORTB,dis

  bcf PORTB,led

  bsf PORTB,mod

  movlw    0×0a

  movwf    delay_val

  call     delay

  decfsz   work_mod,F

  goto     Cloop_2

  decfsz   timer_1,F

  goto     Cstep_4

  bsf state,0       ;testing the charging current

  bcf state,1

  call    adc_ini

  bcf PORTB,mod
;this part used to compute the charging current with result W
;***************************************************************

  movf    ADRES,W

  movwf   AARGBO

  movf    s_mod,W

  movwf   BARGBO

  call    FXM0808U

  movlw   0×ff

  movwf   BARGBO

  call    FXD1608U
;***************************************************************

  movf     AARGB1,W

  sublw    0×02
  btfss    STATUS,C

  goto     Cstep_4
;***************************************************************
				
				<dp n="c18"/>
  bsf PORTB,led

  cf PORTB,dis

  bcf PORTB,mod

  movlw    0×07

  subwf    work_stop1,F
;
d_0 movlw    0×0a

  movwf    delay_val

  call     delay

  decfsz   work_stop1,F

  goto     d_0
;------------following marking chaging complete----------
Dloop_0 movf    s_mod,W

  movwf    work_mod

  movlw    0×04

  movwf  timer_1
Dloop_1 movf    work_mod,W

  sublw    0×ff

  movwf    work_stop1

  movf     work_mod,W

  xorlw    0×00

  btfsc    STATUS,Z

  goto     Dloop_3
Dloop_2 bcf PORTB,dis

  bsf PORTB,mod

  movlw    0×0a

  movwf    delay_val

  call     delay

  decfsz   work_mod,F

  goto     Dloop_2
;
Dloop_3 bcf PORTB,mod
				
				<dp n="c19"/>
  movlw    0×0a

  movwf    delay_val

  call     delay

  decfsz   work_stop1,F

  goto     Dloop_3

  bcf PORTB,dis
;To test the battery ON or OFF

  bcf state,0

  bcf state,1

  call    adc_ini

  movf    ADRES,W

  sublw   0×19       ;larger than 0.5V?

  btfsc   STATUS,C

  goto    bat_t
;****************************************************************
;

  decf    timer_1,F

  movf    timer_1,W

  xorlw   0×00

  btfsc   STATUS,Z

  goto    Dloop_new
  movf    s_mod,W

  movwf   work_mod

  goto    Dloop_1
Dloop_new

  movf ADRES,W
  sublw   0×ad      ;(3.3v)27.6V arrive?
  btfsc   STATUS,C

  goto    Dadmod
  movf    s_mod,W

  xorlw   0×00
  btfsc   STATUS,Z
				
				<dp n="c20"/>
  goto     Dloop_0
  decf     s_mod,F

  goto     Dloop_0
Dadmod  movf    s_mod,W

  xorlw    0×fa

  btfsc    STATUS,Z

  goto     Dloop_0
  incf     s_mod,F

  goto     Dloo_0
;**********************************************************
Cstep_4 movf    timer_1,W

  xorlw    0×00

  btfss    STATUS,Z

  goto     tt_reg

  movlw    0×07

  subwf    work_stop1,F
tt_reg  bcf PORTB,mod

  bcf PORTB,led

  bcf PORTB,dis
d_1 movlw    0×0a
  movwf    delay_val

  call     delay

  decfsz   work_stop1,F

  goto     d_1
;
;To test the battery ON or OFF

  bcf state,0

  bcf state,1

  call    adc_ini

  movf    ADRES,W

  sublw   0×19    ;larger than 0.5V?
				
				<dp n="c21"/>
  btfsc   STATUS,C

  goto    bat_t
;*****************************************************************
;
  movf    timer_1,W

  xorlw   0

  btfsc   STATUS,Z

  goto    Cloop_new

  movf    s_mod,W

  movwf   work_mod

  goto    Cloop_1
Cloop_new
  movf    ADRES,W

  sublw   0×b9       ;(3.6v)29.6V arrive?

  btfsc   STATUS,C

  goto    Cadmod

  movf    s_mod,W

  xorlw   0×01

  btfsc   STATUS,Z

  goto    Cloop_0

  decf    s_mod,F

  goto    Cloop_0
Cadmod  movf    s_mod,W

  xorlw   0×fa

  btfsc   STATUS,Z

  goto    Cloop_0

  incf    s_mod,F

  goto    Cloop_0
;ADD &amp; SUB SUBROUTINE(AARGBO,1 BARGO,1 TO AARGBO,1
;*****************************************************************
************
ADD MOVF    BARGB1,W
				
				<dp n="c22"/>
  ADDWF    AARGB1,F

  MOVF     BARGBO,W

  BTFSC    STATUS,C

  INCFSZ   BARGBO,W

  ADDWF    AARGBO,F

  RETURN
SUB MOVF     BARGB1,W

  SUBWF    AARGB1,F

  MOVF     BARGBO,W

  BTFSS    STATUS,C

  INCFSZ   BARGBO,W
  SUBWF    AARGBO,F

  RETURN
;*****************************************************************
***********

  INCLUDE<FXM88.A16>
;

  INCLUDE<FXD68.A16>
;*****************************************************************
*************

  end
4.根据权利要求1或2所述的自适应充电控制芯片,其特征在于硬件为具备三路以上模数转换器、四路以上输入输出口、程序存储器的单片机,其型号为PIC12C671、PIC12C672、PIC12C673、PIC12C674、PIC16C71、PIC16C72、PIC16C72A、PIC16CR71、PIC16C73、PIC16C73A、PIC16C74、PIC16C74A、PIC16C74B、PIC16C76、PIC16C77、PIC16C710、PIC16C711、PIC16C712、PIC16C715、PIC16C716、PIC16C717、MDT2051、MDT2051A、MDT1051、MDT1051A。
CN01129099A 2001-11-23 2001-11-23 自适应充电控制芯片 Pending CN1421975A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN01129099A CN1421975A (zh) 2001-11-23 2001-11-23 自适应充电控制芯片

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN01129099A CN1421975A (zh) 2001-11-23 2001-11-23 自适应充电控制芯片

Publications (1)

Publication Number Publication Date
CN1421975A true CN1421975A (zh) 2003-06-04

Family

ID=4668894

Family Applications (1)

Application Number Title Priority Date Filing Date
CN01129099A Pending CN1421975A (zh) 2001-11-23 2001-11-23 自适应充电控制芯片

Country Status (1)

Country Link
CN (1) CN1421975A (zh)

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101783184A (zh) * 2010-01-15 2010-07-21 哈尔滨工业大学 基于fpga的ddr2内存故障注入工具及注入方法
CN101079549B (zh) * 2006-02-28 2011-08-24 凌特公司 用于产生传送电路状态信息的信号的装置和方法
CN102253346A (zh) * 2011-06-28 2011-11-23 惠州Tcl移动通信有限公司 电池充电自动测试方法及装置
CN102457094A (zh) * 2010-10-21 2012-05-16 南京德朔实业有限公司 充电系统
CN102856603A (zh) * 2011-02-16 2013-01-02 江苏技术师范学院 可避免低温充电失水的阀控式铅酸蓄电池的预热充电方法
CN103337673A (zh) * 2013-06-27 2013-10-02 浙江天能电池(江苏)有限公司 电动道路车辆电池充电方法
CN103618362A (zh) * 2013-11-28 2014-03-05 兰溪市迅捷机电有限公司 阀控密封铅酸蓄电池充电器及其充电方法
CN103985916A (zh) * 2014-06-05 2014-08-13 北京纽曼腾飞科技有限公司 一种电池充电方法
CN106230040A (zh) * 2016-07-27 2016-12-14 深圳市金立通信设备有限公司 充电装置及其充电方法
CN106410908A (zh) * 2016-10-28 2017-02-15 上海传英信息技术有限公司 一种具有充电保护的充电系统及充电方法
CN106687816A (zh) * 2014-09-12 2017-05-17 Ntn株式会社 电池检查器
CN107248757A (zh) * 2017-05-11 2017-10-13 顺丰科技有限公司 一种自适应智能充电方法、充电器
CN108574323A (zh) * 2018-03-23 2018-09-25 加码技术有限公司 一种电池充电控制电路
CN110994780A (zh) * 2019-12-27 2020-04-10 深圳市南霸科技有限公司 无线应急启动电源控制方法
CN117453464A (zh) * 2023-12-25 2024-01-26 深圳市芯科云科技有限公司 多芯片智能穿戴设备的芯片切换控制方法

Cited By (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101079549B (zh) * 2006-02-28 2011-08-24 凌特公司 用于产生传送电路状态信息的信号的装置和方法
CN101783184A (zh) * 2010-01-15 2010-07-21 哈尔滨工业大学 基于fpga的ddr2内存故障注入工具及注入方法
CN102457094B (zh) * 2010-10-21 2014-06-11 南京德朔实业有限公司 充电系统
CN102457094A (zh) * 2010-10-21 2012-05-16 南京德朔实业有限公司 充电系统
CN102856603A (zh) * 2011-02-16 2013-01-02 江苏技术师范学院 可避免低温充电失水的阀控式铅酸蓄电池的预热充电方法
CN102856603B (zh) * 2011-02-16 2014-08-06 江苏理工学院 可避免低温充电失水的阀控式铅酸蓄电池的预热充电方法
CN102253346A (zh) * 2011-06-28 2011-11-23 惠州Tcl移动通信有限公司 电池充电自动测试方法及装置
CN103337673B (zh) * 2013-06-27 2015-06-17 浙江天能电池(江苏)有限公司 电动道路车辆电池充电方法
CN103337673A (zh) * 2013-06-27 2013-10-02 浙江天能电池(江苏)有限公司 电动道路车辆电池充电方法
CN103618362A (zh) * 2013-11-28 2014-03-05 兰溪市迅捷机电有限公司 阀控密封铅酸蓄电池充电器及其充电方法
CN103618362B (zh) * 2013-11-28 2015-11-11 浙江迅捷电气科技有限公司 阀控密封铅酸蓄电池充电器及其充电方法
CN103985916A (zh) * 2014-06-05 2014-08-13 北京纽曼腾飞科技有限公司 一种电池充电方法
CN106687816A (zh) * 2014-09-12 2017-05-17 Ntn株式会社 电池检查器
US10459036B2 (en) 2014-09-12 2019-10-29 Ntn Corporation Battery checker
CN106230040A (zh) * 2016-07-27 2016-12-14 深圳市金立通信设备有限公司 充电装置及其充电方法
CN106230040B (zh) * 2016-07-27 2019-07-12 深圳市金立通信设备有限公司 充电装置及其充电方法
CN106410908A (zh) * 2016-10-28 2017-02-15 上海传英信息技术有限公司 一种具有充电保护的充电系统及充电方法
CN106410908B (zh) * 2016-10-28 2024-04-12 上海传英信息技术有限公司 一种具有充电保护的充电系统及充电方法
CN107248757A (zh) * 2017-05-11 2017-10-13 顺丰科技有限公司 一种自适应智能充电方法、充电器
CN108574323A (zh) * 2018-03-23 2018-09-25 加码技术有限公司 一种电池充电控制电路
CN110994780A (zh) * 2019-12-27 2020-04-10 深圳市南霸科技有限公司 无线应急启动电源控制方法
CN117453464A (zh) * 2023-12-25 2024-01-26 深圳市芯科云科技有限公司 多芯片智能穿戴设备的芯片切换控制方法
CN117453464B (zh) * 2023-12-25 2024-04-12 深圳市芯科云科技有限公司 多芯片智能穿戴设备的芯片切换控制方法

Similar Documents

Publication Publication Date Title
CN1421975A (zh) 自适应充电控制芯片
CN1030361C (zh) 电池充电方法和装置
CN1072406C (zh) 电池的充电方法和装置
CN112366375A (zh) 一种锂离子动力电池快速充电方法
CN100350713C (zh) 备用电池的充电电路
CN101101323B (zh) 一种最高限定充电电压为4.2v的锂电池的电池容量的检测方法
CN1184713C (zh) 电池的快速充电方法
CN107015163B (zh) 一种电池容量的获取方法和装置
CN1866665A (zh) 充电器
CN1230798A (zh) 蓄电池的充放电管理方法
CN1916653A (zh) 劣化判断装置、劣化判断方法、计算机程序
CN105903692A (zh) 锂离子电池一致性筛选方法
CN1437295A (zh) 电池组件充电装置及充电方法
CN1610986A (zh) 用于估算二次电池剩余容量的方法和装置、电池组系统以及电动车辆
CN104459558A (zh) 锂离子电池筛选方法
CN103018683A (zh) 一种电池循环性能加速评估方法
CN110429322A (zh) 锂电池一致性分类方法、装置、设备和可读存储介质
CN102640345A (zh) 充电方法和用于确定镍基电池充电结束标准的方法
CN111077457A (zh) 一种梯次利用磷酸铁锂电池加速衰减的评价方法及装置
CN111092270B (zh) 一种铅蓄电池化成工艺优化方法
CN108445414A (zh) 一种三元锂离子电池循环寿命的快速测试方法
CN100385728C (zh) 一种可充电电池充电过程控制方法
CN1531164A (zh) 二次电池的充电方法及使用该方法的装置
CN109116246B (zh) 铅酸蓄电池滥用过放电性能评价方法及容量恢复方法
CN109638906A (zh) 一种电池管理方法、系统及存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C57 Notification of unclear or unknown address
DD01 Delivery of document by public notice

Addressee: Chengdu Shineng Sci-Tech Co., Ltd.

Document name: Notice of publication of application for patent for invention

C57 Notification of unclear or unknown address
DD01 Delivery of document by public notice

Addressee: Huang Wei

Document name: Notification before expiration of term

C57 Notification of unclear or unknown address
DD01 Delivery of document by public notice

Addressee: Huang Wei

Document name: Deemed as a notice of withdrawal

C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication