资源描述
蓄电池充电器设计
作者姓名: 专业班级:2012060504
指导教师:
摘要
随着现代科学技术水平的不断提高,微型处理器技术已经广泛应用于生活中的方方面面,利用微型处理器制作一款针对多种铅酸蓄电池充电的多功能充电器已经成为了可能。在生产生活中我们常会使用到各种型号的蓄电池,如果每种蓄电池都需要一个不同的充电器,这不仅使用时相当麻烦而且会浪费空间和金钱。该充电器以AT59c52单片机为核心,使用ADC0809为AD转换模块智能判断被充电蓄电池型号,然后控制电路输出,以恒压充电的方式对相应的蓄电池充电,可以满足12V10Ah、24V10Ah、36V12Ah、48V20Ah铅酸蓄电池的充电需求。使用此款多功能充电器不仅免去了购买和使用多种充电器的麻烦,而且减少了购买多种充电器的花费,所以该充电器有较高的商用价值,值得开发和使用。
本次设计首先对充电技术和充电技术的发展做了探讨,然后进行了对方案的讨论与确立,之后设计电路图,确立了电路图后开始购买电路中所需零配件来制作实物,最后进行的是编写程序和调试。
关键词:多功能充电器; AT89c52单片机; ADC0809;恒压充电
Design of battery charger
Abstract: With the continuous improvement of the modern scientific and technological level, micro processor technology has been widely used in all aspects of life, using micro processor making a variety of lead-acid battery charging of the multifunctional charger has become possible. In industry and life, we often use a variety of models of the battery, if each battery needs to be a different charger, which is not only used in trouble and will waste space and money. The charger in order to AT59c52 as the core, using ADC0809 for AD conversion module intelligent judgment is charged battery type, then the control output circuit, with constant voltage charging of battery charging, can meet 12v10ah, 24V10Ah, 36v12ah, 48V20Ah lead-acid battery’s charge power demand. Using the multi-function charger not only eliminates the purchase and use of a variety of charger of trouble but also reduce the purchase cost of a variety of charger. So the charger had partly commercial value, it is worth developing and using.
This design firstly did the study of charging technology and its development , then had carried on the discussion to the plan and established it , next designed circuit diagram by proteus8.0, I began to buy circuit required spare parts to make real after circuit diagram established, writing the program and debugging as the last process .
Key words: multifunctional charger; AT89c52 MCU; ADC0809; constant voltage charging
目录
第1章 前言 1
1.1 充电技术的发展现状 1
1.2 本课题设计思路 1
1.3 设计的主要技术要求 1
1.4 设计的目的、意义及主要解决问题 2
第2章 系统方案设计 3
2.1主电路方案 3
2.1.1 四个AC/DC模块的方案 3
2.1.2 一个AC/DC模块加三个DC/DC模块方案 3
2.2控制电路方案 3
2.3 系统组成 5
第3章 系统硬件设计和程序编写 6
3.1系统硬件设计 6
3.1.1系统电路图设计 6
3.1.2器件选用 9
3.1.3重要系统器件说明 10
3.2系统程序编写(使用KeiluVision3) 12
3.2.1程序流程图 12
3.2.2 端口定义 12
3.2.3延时子程序 13
3.2.4电池检测程序段 13
3.2.5电池型号判断程序段 13
3.2.6充电状态检测程序段 14
3.2.7充电状态判断程序段 15
3.2.8过电流保护程序段 16
3.2.9系统完整程序 16
第4章 实物调试 23
4.1实物介绍 23
4.2电池识别测试 26
4.3电池充电完毕测试 27
4.4电池反接测试 28
4.5过流或短路测试 28
4.6超温测试 28
结论 29
致谢 30
参考文献 31
III
成都理工大学2016届学士学位论文(设计)
第1章 前言
1.1 充电技术的发展现状
现代生产生活广泛应用的充电技术有恒流充电,恒压充电和恒压恒流组合的阶段充电技术。因为以上充电技术成本低实现简单,能满足大部分生活中的充电需求。生活中常见的手机充电器和汽车电瓶充电就是用的5V恒压充电,电瓶车快速充电采用的横流充电技术,大部分电瓶车自带充电器采用恒流恒压结合的阶段充电方式充电。
在比较先进的充电技术方面,现在已经研究出脉冲式充电法,变电流间歇充电法,变电压间歇充电法等。这些充电法虽然更加比传统充电法优秀,但是由于充电器成本等原因并没有广泛应用于生产生活中仅在一些特殊的充电设备上有使用。
另外无线充电技术成为近年来充电技术研究的热门话题,所谓无线充电技术就是在以上充电技术的基础上以无线的方式将电能冲入蓄电池中。
1.2 本课题设计思路
在这次多功能充电器是针对12V10AH,24V10AH,36V12AH,48V20AH四种型号的铅酸蓄电池,充电方式是采用传统的恒压充电方式。
当一个电路中各部分的电流和电压被确定后,那么这一电路的特性也就被掌握了[1]。所以充电器先用AD转换器先测出电池的电压传输给单片机以判断出电池的型号,然后单片机再根据电池的型号控制输出电路输出相应电池的充电电压来充电,然后不断地检测充电电流的大小,当电流小于相应值的时候判断电池充满断开充电电路,当电流大于相应值的时候判断为短路或者过流而断开充电电路,实现对充电器和电池的保护。
1.3 设计的主要技术要求
本设计要求充电器能准确快速的判断出充电电池的型号而对其充电,在充电过程中保持电路稳定,当电池充电完成时充电器能判断出该状态并断开充电电路,在充电过程中出现短路、超温等异常状况时充电器能及时断开充电电路实现保护功能。
在充电器的设计方面被设计要求充电器的电路简单稳定,外型尽量精巧,充电器成本尽量减小以增加充电器的实用性。
1.4 设计的目的、意义及主要解决问题
本次设计的目的是设计一款实用性很强的多功能充电器,可以对12V10AH,24V10AH,36V12AH,48V20AH四种型号的铅酸蓄电池充电。充电器使用的AT89c52作为控制核心,AT89c52是一款低电压高性能的cmos8位单片机,该单片机价格低适用性强在电子行业中被广泛的使用,采用KeiluVisiong3对单片机进行编程实现单片机对输入的识别与对输出的控制。
在生活中我们常会使用多种规格的铅酸蓄电池,如果每一种蓄电池都需要一个充电器,那么一大堆充电器不仅占用空间而且辨别相应的充电器也会带来不小的麻烦。这一款多功能的充电器是正好针对这个问题设计的,12V10AH、24V10AH、36V12AH、48V20AH四种型号涵盖了生产生活中使用的大部分铅酸蓄电池,也就是说使用这一款充电器基本上实现了一个充电器可以解决大部分铅酸蓄电池充电问题。
第2章 系统方案设计
2.1主电路方案
2.1.1 四个AC/DC模块的方案
在构思多功能充电器的设计方案初期,预想方案为分别由4个AC/DC模块来产生对4种蓄电池充电的输出。通过AT89c52单片机配合相应的传感器和控制电路,先识别蓄电池再根据蓄电池型号,再控制相应的AC/DC模块输出来对蓄电池充电。
这种方案电路十分简单明了易于充电器设计和制作。但后来再实际接触配件时发现,4个AC/DC模块不仅成本高昂而且体积很大,这样制作的充电器实用价值不高。
2.1.2 一个AC/DC模块加三个DC/DC模块方案
经过思考后觉得四个AC/DC模块的方案不可行,于是在这个方案上我进行了一下改进。DC/DC变换器是一种内部有开关管把输入的直流电压转换成另一种直流电压的集成电路[2]。而且接触实物我发现DC/DC模块不仅相对AC/DC模块价格低廉而且体积要小很多,于是我将四个AC/DC模块中的三个用三个DC/DC模块替换。其他电路基本不变,通过AT89c52单片机配合相应的传感器和控制电路,先识别蓄电池再根据蓄电池型号,再控制相应的AC/DC模块输出来对蓄电池充电。
这种方案虽然比方案2.1.1略复杂,但其电路任然属于非常简单,易于充电器的设计和制作。在成本方面,将方案2.1.1中三个AC/DC模块替换成了三个DC/DC模块几乎节省了一半的成本。在外形方面,三个DC/DC模块相对三个AC/DC模块体积要小很多(三个DC/DC模块加起来都没有一个AC/DC大),所以三个DC/DC模块更加适宜外型的设计。
2.2控制电路方案
在控制电路的设计上难点在于如何用AT89c52来识别蓄电池和控制相应的DC模块输出。
在识别蓄电池型号方面首先我对蓄电池放点后的特性做了很多实验,见下表。
(由于经费的原因本人只购买了两块12V1.3AH的铅酸蓄电池构成12V和24V的样本)
表2-1电池放电数据
电池型号
未放电电压
放电完毕后1min
放电完毕后5min
放电完毕后1h
12V1.3AH
12.8V
11.30V
11.46V
12.44V
12V1.3AH
12.87V
11.40V
11.51V
12.47V
24V1.3AH
26.1V
22.9V
23.4V
24.9V
24V1.3AH
25.9V
22.8V
23.3V
24.7V
经过对上表数据的思考我得出结论以12V为一个单元计算,在电池满电到电池正常完全放电,电池电压在13.5-11V之间。以此我类推出12V10AH,24V10AH,36V12AH,48V20AH四种型号的铅酸蓄电池其端口电压范围分别为11V-13.5V,22V-27V,33V-40.5V,44V-54V。
那么对蓄电池型号的识别方法就相应的产生了。先对蓄电池电压进行分压再用ADC0809转换进行AD转换将信息传输给单片机,AT89c52单片机根据每种电池的电压范围来对ADC0809所传输的数据识别从而判断出电池的型号。
在控制相应的DC模输出方面,我采用的方案是用单片机控制四个5v的小型继电器,每个继电器对应一种电池的充电电路,实现在识别出蓄电池型号后控制相应的充电电路输出。在对实物数据的分析中我发现单片机的引脚只能输出1mA左右的电流,所以单片机是不能直接驱动继电器的。在收集了一定的资料后我采用9012为中介来驱动继电器,9012是一种PNP型的三极管,将单片机的相应引脚接9012的基极中间串一个4.7K的电阻来限流,把继电器的线圈端接在9012的发射极和地之间,9012集电极接VCC。当单片机该引脚为低时,三极管导通,继电器吸合常开门闭合而实现相应的充电电路导通。
2.3 系统组成
切换
48V充电模块
36V充电模块
单片机
蓄电池
24V充电模块
12V充电模块
检测
图2-1 系统组成
此框图体现了该充电器的组成及运行原理。单片机辨别出电池型号后打开相应的充电模块输出来对蓄电池进行充电。
第3章 系统硬件设计和程序编写
3.1系统硬件设计
3.1.1系统电路图设计
以下电路图均采用proteus8.0画得。
图3-1为单片机复位和晶振电路,考虑实际情况我将单片机复位电路设计为上电自动复位。
图3-1单片机复位和晶振电路
下图为ADC0809驱动和与单片机通讯电路
图3-2 ADC0809驱动和与单片机通讯电路
下图为风扇电路
图3-3风扇电路
下图为系统主电路。在电气设备中,直接承担电能的变换或控制任务的电路被称为主电路[3]。值得注意的是,在实际的应用中除AD-DC5V模块外其他的AC-DC和DC-DC模块并不是输出标准的的48V/36V/24V/12V,因为他们的电压需要直接给相应的蓄电池充电。经查阅蓄电池资料发现12V铅酸蓄电池蓄电池的恒压充电电压为13.5V-14V,24V铅酸蓄电池的恒压充电电压为27V-28V,36V铅酸蓄电池的充电电压为40.5V-42V,48V铅酸蓄电池的充电电压为54V-56V。所以在实际应用中应将这些模块的电压分别调整到该范围内(注意:应先调整220VAD-DC48V模块电压再调整其他模块电压)。
图3-4系统主电路
下图为系统控制电路。
图3-5系统控制电路
在图3-4的主电路中我用一个1000欧和一个100欧的电阻串联在蓄电池的充电端口的两端。当充电器接通电源蓄电池接通充电器时,两串联电阻的电压和等于蓄电池的端电压,有串联分压原理得出,100欧电阻两端电压为蓄电池端口电压的1\11,蓄电池端口电压最高即在使用48V蓄电池的情况下为54V那么分压后为4.9V在ADC0809 IN端口测量电压范围内。而在54V的情况下1000+100欧电阻的功率为2.65w在电阻可承受范围内。所以通过检测100欧电阻正端电压可判断出蓄电池型号。
在四种蓄电磁型号中容量最小的为10Hh,查阅蓄电池充电说明可以发现,以恒压法给蓄电池充电,当充电电流小于蓄电池Ah容量的百分之三时即视为蓄电池电量已充满。所以四种蓄电池中档蓄电池充满电是的最小充电电流为0.3A,而ADC0809对电压的分辨率为0.02v,所以可以在充电电路中串联一个0.1欧的电阻,通过检测该电阻的分得的电压来判断出充电电流,进而判断充电状态。
值得注意的是当充电电流最大时48V20Ah蓄电池的充电电流约为220vAC-48vDC开关电源满工作电流5A。充电状态检测电阻功率为2.5w,而检测电池型号电阻此时的功率约为2.5W,总共约5W的发热量在充电器中是不可忽略的,所以此两组电阻应安装在充电器的通风处,并由散热风扇散热。
3.1.2器件选用
表3-1器件选用
器件类型
选用型号
使用个数
备注
单片机
AT89c52
1
加底座
AC-DC模块
MW SP-240-48(5A)
1
直接使用的开关电源作为AC-DC模块
DC-DC模块
60V48V降压可调稳压电源15A同步整流模块ZS-Q5A
3
无
AD转换器
ADC0809
1
加底座
分频器
SN74HC74N
1
加底座。提供ADC0809的震荡频率
风扇
5v直流小风扇
1
无
电容
23pf
2
陶瓷
电容
sl36m(10uf)
1
电解电容
晶振
12.000MHZ
1
无
电阻
1000欧
7
1w
电阻
200欧
1
1w
电阻
4.7K欧
4
1w
二极管
SBR350
4
无
二极管
3mm发光二极管
5
4黄,1绿
继电器
5v,10A
4
无
三极管
9012
4
无
万用版
普通万用版
1
无
开关
按钮开关
1
无
DC-DC模块
48v-5v
1
给单片机和继电器供电
温控开关
4021(85°)
1
无
导线
各种型号
若干
无
万用表
万用表
1
无
组装工具
组装工具
若干
悍锡枪,焊锡等
3.1.3重要系统器件说明
表3-2重要器件说明
AT89c52
AT89C52具有外部双向输出/ 输入(I/O)端口32个,引脚40个,同时单片机内含有外中断口2个, 16位的可编程定时计数器3个,读写口线2 个。通常,I/O数据有并行和串行两种传送方式[4]。该单片机有可以全双工工作的串行通信口2个。AT89C52的编程方法可以在线编程,也可以使用常规方法编程。该单片机将Flash存储器和通用的微型处理器结合在一了起,可以有效地降低开发成本,特别是使用了可反复擦写的 Flash存储器。
AT89C52有三种封装形式分别是PDIP、PLCC及PQFP/TQFP等,为了适应不同产品的需要。
AT89C52是一款性能优越的8位COMS单片机,使用低电压产出高性能,单片机内含可以反复擦写的Flash只可读程序存储器8k bytes的和可以存取数据随机存储器(RAM)256 bytes,该单片机使用ATMEL公司的技术生产,具有高密度、非易失性存储的特点,兼容标准的MCS-51单片机的指令系统,片内置可以通用的Flash存储单元并且还具有8位中央处理器,AT89C52单片机广泛应用于日常生活和电子工业中。
ADC0809
实现A/D转换的电路称为A/D转换器,简写为ADC(系Analog-Digital Converter的缩写)[5]。ADC0809是美国国家半导体公司制作的8位逐次逼近式CMOS工艺8通道A/D模数转换器ADC0809,它由8位开关树型A/D转换器, 定时电路,地址锁存与8路模拟开关、译码器、比较器、逐次逼近寄存器、逻辑控制所构成。
其实从某种意义上可以把ADC0809称为一种传感器。因为从广义的角度说,可以把传感器定义为:一种能把特定的信息(物理、化学、生物)按一定规律转换成某种可用信号输出的器件和装置[6]。
转换时间为100微秒(所需振荡频率为640KHz时),130微秒(所需振荡频率为500KHz时)。省去了零点和满刻度的校准, 0~+5V的测量电压输入范围。-40~+85摄氏度是他的工作温度范围。
其内部有一个多路开关是八通道的,它可以锁存译码后的信号根据所接收的地址码,只使用8个端口模拟输入信号中的一个输入来A/D转换。8位特性的A/D转换器,8路的输入通道,即它的分辨率是8位的。
具有开始和停止转换的端口。
ADC0809只使用一个5V的电压供电,它的功耗很低,只有15mw。选拔三位的地址通过A/B/C三个端口输入进去再使ALE等于1,这样地址锁存器中就锁存了选通的输入端的地址。这个地址经过译码来选通八个模拟输入通道其中对应的那一个。当start有上升沿的时候逐次逼近比较器被复位,下降沿的时候开始 A/D转换,紧接着EOC的输出信号变为低电平,这标志着转换正在进行。当EOC跳到搞电频时标志着A/D转换已经完成,锁存器中已存入了结果的数据,这个信号可以用来当作中断的申请。当个OE端输入一个高电频后,三态门被打开开始输出,转换结果以八位并行的二进制形式通过数据总线输出。
74HC74
7474是常用的双D中规模集成电路触发器芯片,每片芯片中包含两个带复位、置为端的上升沿触发的D触发器[7]。具有独立的时钟 (CP)输入、复位(RD)输入、设置(SD)和、数据(D)输入、以及互补的Q和Q输出的74HC74芯片是双路的D 型上升沿触发器。
74HC74是运行速度很快的的一款CMOS器件,该芯片的引脚兼容肖特基TTL(LSTTL)低功耗系列。该芯片制作遵守了JEDEC标准的no.7A。异步低电平可以复位和设置,而且并不依赖时钟信号的输入。
该芯片的数据输入口在时钟脉冲的上升时将信息输送到Q口。为了让得到的结果更加理想,在时钟的脉冲上升沿来临之前D输入必须保持稳定的一段就绪时间。
48v5A开关电源 MW SP-240-48
这是一款通用的开关电源。通用开关电源的特点是通用性强,它不局限于某一特定使用对象或特定场合[8]。全球通用全范围交流输入电压。内置主动式功率因素校正电路,功率因素:115VAC时PF>0.96;230VAC时PF>0.93。有短路保护/过载保护/过电压保护/过热保护。国际安规认证:UL/TUV/CB/CE。上海乐兹科技发展有限公司制作。由内置转速控制直流风扇强制通风冷却。90KHz固定开关频率。LED指示工作状态。高效、长寿命、高可靠。100%满载老化测试。采用无铅制程,符合环保RoHS要求。直流输出范围 48V,0~5A。输出电压精度 ±1%。纹波 240mV。效率 89%。输入电压范围 85~264VAC/120~370VDC。输入浪涌电流 冷启动, 230V时为40A。电压调整范围 额定输出电压的±10%。功率因素 PF〉0.93/230VAC ; PF〉0.98/115VAC (满载时)。漏电流 <2mA / 240VAC。过载保护 过电流点在105%~135%,自动检测,自动复原。过电压保护 额定输出电压的115%~120%时关断输出电压,重启复原。过热保护 85℃±5℃(晶体管散热器温度)时关断,温度下降后自动恢复。启动上升保持时间 230VAC满载时800ms,50ms,20ms。绝缘特性 输入端与输出端间:3KVac,输入端与外壳间:1.5KVac,输出端与外壳间:0.5KVac,1分钟。工作温度 -20~+70℃(参见输出降载曲线)。抗震动性 10~500Hz,2G 10分钟/周期,XYZ各轴各60分钟。平均无故障时间≥28.4万小时,MIL-HDBK-217F(25℃)。
发光二极管
发光二极管(Light-Emitting Diode,LED)通常用元素周期表中Ⅲ、Ⅴ族元素的化合物制成,如砷化镓、磷化镓等[9]。
因化学性质又分为无机发光二极管LED和有机发光二极管OLED。
氮化镓二极管可以发出蓝色的光,碳化硅二极管可以发出黄色的光,磷化镓二极管可以发出绿色的光,砷化镓二极管可以发出红色的光。
在电路中有很多使用方法,可以做指示灯可以做led来显示数字或者汉字。其发光原理为电子与空穴复合时辐射出可见的光,因而称之为发光二极管。
60V48V降压可调稳压电源15A同步整流模块ZS-Q5A
非隔离降压模块(BUCK)。输入电压:10-60V(极限62V,请留余量)。输出电压:1-36V连续可调 。输出电流:正常10A 最大(MAX)15A 所标电流是特定条件下最大电流(实测12降5V)实际输出电流大小不是固定的,与输入输出压差,温度有关联。输出功率:通风良好自然散热功率 长期100W,加强散热最大可达200W,如长时间工作请留余量注意温升并作好散热。工作温度:-10~+85度。工作频率:180KHz。转换效率:最高94%(效率与输入、输出电压差、输出电流有关)。过流保护:有 (输出电流要超过最大取样电流(15A)才保护)。反接保护:有。接线方式:大电流接线端子,免焊接,IN+ 为输入正,IN-为输入负,OUT+为输出正, OUT-为输出负。
3.2系统程序编写(使用KeiluVision3)
3.2.1程序流程图
检测电池型号是否符合
是 否
打开相应充电电路
检测充电电流是否小于阈值
是 否
关闭充电电路等待
图3-6 程序流程图
3.2.2 端口定义
#include<52.h>
sbit st=P3^3; //0809的start端口定义
sbit oe=P3^1;//0809输出控制端定义
sbit eoc=P3^0;//0809转换完成信号端定义
sbit a=P3^2;
sbit v4=P1^0;
sbit v3=P1^1;
sbit v2=P1^2;
sbit v1=P1^3;
sbit led=P1^4;
3.2.3延时子程序
void delay(unsigned int i)
{
unsigned int j;
unsigned int k ;
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
该子程序的作用为,延时i毫秒。
3.2.4电池检测程序段
delay(1000);//延时消抖
oe=0;
a=0;
st=0;
st=1;
st=0;
delay(50) ;
while(!eoc);//判断AD转换器是否转换完成
oe=1;//输出转换结果
3.2.5电池型号判断程序段
if(P2<=63)
{
if(51<=P2)//该区间为经换算后的该蓄电池检测信号区间
{
v1=0 ;
}} //12V10Ah蓄电池
if(P2<=126)
{
if(102<=P2)
{
v2=0 ;
}} //24V10Ah蓄电池
if(P2<=189)
{
if(153<=P2)
{
v3=0 ;
}} //36V12Ah蓄电池
if(P2<=252)
{
if(204<=P2)
{
v4=0 ;
}} //48V20Ah蓄电池
在实际的程序中,每个判断都会以多层判断结构连续判断三次有效才会打开相应的充电输出,以此来减小由电压波动产生的误判。
3.2.6充电状态检测程序段
delay(100);//延时消抖
oe=0;
a=1;
st=0;
st=1;
st=0;
delay(50) ;
while(!eoc);//判断AD转换器是否转换完成
oe=1;//输出转换结果
3.2.7充电状态判断程序段
if(P2<=2) //该阈值为经换算后的蓄电池充电完成电流阈值
{
v1=1;
led=0;
while(1);
} //12V10Ah
if(P2<=2)
{
v2=1;
led=0;
while(1);
} //24V10Ah
if(P2<=2)
{
v3=1;
led=0;
while(1);
} //36V12Ah
if(P2<=3)
{
v4=1;
led=0;
while(1);
} //48V20Ah
在充电过程中不断的循环判断充电电流。与判断电池的型号一样,在实际的程序中,每个判断都会以多层判断结构连续判断三次有效才会关闭相应输出并打开充电完成警示灯,以此来减小因为电压波动产生的误判。
3.2.8过电流保护程序段
if(P2>=41)
{
v1=1;
v2=1;
v3=1;
v4=1;
while(1);
} //当电流超过8A时断开充电电路
在充电过程中不断的循环该判断程序段判断是否超电流,同样当连续三次超电流才算判定有效断开充电电路。实际运用中,48V开关电源已经具有过电流保护功能,所以我省略了该程序段。
3.2.9系统完整程序
34
#include <reg51.h>
sbit st=P3^3;
sbit oe=P3^1;
sbit eoc=P3^0;
sbit a=P3^2;
sbit v4=P1^0;
sbit v3=P1^1;
sbit v2=P1^2;
sbit v1=P1^3;
sbit led=P1^4;
void delay(unsigned long i)
{
unsigned int j;
unsigned int k ;
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
void main ()
{
delay(1000);
while(1)
{
a=0;
oe=0;
st=0;
st=1;
delay(1);
st=0;
delay(20);
while(!eoc) ;
oe=1;
delay(10) ; //电池型号检测
if(P2<=63)
{
if(51<=P2)
{
a=0;
oe=0;
st=0;
st=1;
delay(1);
st=0;
delay(20);
while(!eoc) ;
oe=1;
delay(10) ; //电池型号检测
if(P2<=63)
{
if(51<=P2)
{
a=0;
oe=0;
st=0;
st=1;
delay(1);
st=0;
delay(20);
while(!eoc) ;
oe=1;
delay(10) ; //电池型号检测
if(P2<=63)
{
if(51<=P2)
{
v1=0 ;
delay(200);
while(1)
{
P2=0XFF;
a=1;
oe=0;
st=0;
st=1;
delay(1);
st=0;
delay(20);
while(!eoc) ;
oe=1;
delay(10) ; ;
if(P2<=2)
{
P2=0XFF;
a=1;
oe=0;
st=0;
st=1;
delay(1);
st=0;
delay(20);
while(!eoc) ;
oe=1;
delay(10) ;
if(P2<=2)
{
v1=1 ;
led=0;
while(1) ;
}
}}
delay(200);
}}}
}
} } //对12V电12Ah 蓄电池的充电
if(P2<=126)
{
if(102<=P2)
{
a=0;
oe=0;
st=0;
st=1;
delay(1);
st=0;
delay(20);
while(!eoc) ;
oe=1;
delay(10) ;
if(P2<=126)
{
if(102<=P2)
{
a=0;
oe=0;
st=0;
st=1;
delay(1);
st=0;
delay(20);
while(!eoc) ;
oe=1;
delay(10) ;
if(P2<=126)
{
if(102<=P2)
{
v2=0 ;
delay(200);
while(1)
{
P2=0XFF;
a=1;
oe=0;
st=0;
st=1;
delay(1);
st=0;
delay(20);
while(!eoc) ;
oe=1;
delay(10) ; ;
if(P2<=2)
{
P2=0XFF;
a=1;
oe=0;
st=0;
st=1;
delay(1);
st=0;
delay(20);
while(!eoc) ;
oe=1;
delay(10) ;
if(P2<=2)
{
v2=1 ;
led=0;
while(1) ;
}
}}
delay(200);
}}}
}
} } //对24V 10Ah蓄电池的充电
if(P2<=189)
{
if(153<=P2)
{
a=0;
oe=0;
st=0;
st=1;
delay(1);
st=0;
delay(20);
while(!eoc) ;
oe=1;
delay(10) ;
if(P2<=189)
{
if(153<=P2)
{
a=0;
oe=0;
st=0;
st=1;
delay(1);
st=0;
delay(20);
while(!eoc) ;
oe=1;
delay(10) ;
if(P2<=189)
{
if(153<=P2)
{
v3=0 ;
delay(200);
while(1)
{
P2=0XFF;
a=1;
oe=0;
st=0;
st=1;
delay(1);
st=0;
delay(20);
while(!eoc) ;
oe=1;
delay(10) ; ;
if(P2<=2)
{
P2=0XFF;
a=1;
oe=0;
st=0;
st=1;
delay(1);
st=0;
delay(20);
while(!eoc) ;
oe=1;
delay(10) ;
if(P2<=2)
{
v3=1 ;
led=0;
while(1) ;
}
}}
delay(200);
}}}
}
} } //对36V12Ah的蓄电池充电
if(P2<=252)
{
if(204<=P2)
{
a=0;
oe=0;
st=0;
st=1;
delay(1);
st=0;
delay(20);
while(!eoc) ;
oe=1;
delay(10) ;
if(P2<=252)
{
if(204<=P2)
{
a=0;
oe=0;
st=0;
st=1;
delay(1);
st=0;
delay(20);
while(!eoc) ;
oe=1;
delay(10) ;
if(P2<=252)
{
if(204<=P2)
{
v4=0 ;
delay(200);
while(1)
{
P2=0XFF;
a=1;
oe=0;
st=0;
st
展开阅读全文