本帖最后由 rollei120 于 2015-7-28 11:00 编辑
之前一直想学习一下单片机的编程,但限于时间和环境,一直未能掌握要领。去年有些空余,又找了下单片机的资料来了解一下,无意中看到Microchip有个Ni-MH充电器的应用资料,里面包含了源代码,电路图,以及详解,加之手头上有对应的IC。于是有了依葫芦画瓢,照做一个的想法。中间遇到了不少问题,加上未有太多空余时间,一直拖到现在,才出来个像样的板子。
先列一下基本的参数: 1, 主控IC为PIC 18F14K50,带USB通讯。输出PWM信号,驱动MOS管给电池进行脉冲式充电。 2, 5V输入电流大概为450mA-500mA左右,给到电池的电流大概为1A,有两个AA电池槽,充电模式为单节。给2200mAh的电池充电,大概需要4小时。 3, 输入接口为Micro-USB,电压5V。 4, 具备电池类型判断能力。 5, 带温度检测,温度低于0℃或高于45℃时,会关断充电。
接下来,说一下我们需要用到的工具: 1, 主要电子元器件:单片机ICPIC 18F14K50,N-MOS,P-MOS,电感,运放等。 2, 绘制电路图的软件,比如protel,PADS。 3, Microchip的平台软件MPLAB,因为我手上的仿真器是ICD2,不兼容新版本,只能用旧版本的MPLAB IDE v8.92. 4, C语言编译器:MPLAB C18。 5, 烧录器,或仿真器。我是用仿真器ICD2.如果用烧录器,需要找能支持18F14K50的。
原文档链接 大家可以在下面这两个链接里找到设计的文档: 里面包含了: 1, AN1384应用笔记 (AN1384) 2, AN1384对应的软件代码 (AN1384source code) 3, 18F14K50的datasheet (PIC18F14K50) 里面包含了: 1, AAA Battery Charger Windows GUI (Windows的充电检测软件,该软件能与充电板通讯,并收集充电过程的数据) 2, AN1384 - Ni-MH Battery Charger Application Library(AN1384应用笔记,和上面那份是一样的。) 3, Battery Charger MAC GUI (苹果电脑上用的检测软件) 4, USB AAA Battery Charger - Energizer DataSheet (Energizer电池的规格书) 5, USB AAA Battery Charger Firmware (AAA充电板的固化程序,建议用自己调试的软件来烧录程序。除非你的硬件和他的demo板完全一致。) 6, USB AAA Battery Charger Presentation (AAA电池充电板介绍)
7, USB AAA Battery Charger Schematics(充电板完整电路)
NI-MH电池 先来了解一下Ni-MH电池的基本特性,Microchip的应用笔记AN1384里面有详细的说明,我这里摘录一些要点。 1, 镍氢电池与镍镉电池的比较。 2, 放电性能。 图2显示了电池以5小时速率(C/5速率)放电时的典型放电曲线。开路电压最初非常快速地从约1.4V降至1.2V稳定状态。在电池电量接近耗尽时,呈现出急拐弯的“膝盖”形状,此时电压下降得非常快。
3, 充电特性 为金属氢化物电池充电时,电压最初急升,之后缓慢升高,直到完全充电。当电池到达过充时,电压达到峰值,之后逐渐降低。由于金属氢化物电池的充电过程是放热的,因此整个充电过程都在释放热量。当电池到达过充时,大量传入能量转换为热量,使电池温度大幅升高。 压力在充电期间也会缓慢增大,但在过充时会大幅升高,因为产生的气体量超出了电池的重新组合能力。如果没有安全口,C 速率(或更高速率)下不受控制的充电会对电池造成物理损坏。 温度对充电效率的影响是镍氢电池与镍镉电池之间的另一个差异所在。镍氢电池的充电接受能力随着温度的升高而降低(从低于20°C的温度开始)。镍镉电池的充电接受能力在室温达到峰值。对于两种电池类型来说,高温下充电接受能力较低是一个严重问题。在靠近热源的位置或者通风有限的隔间中安装电池时,产品设计人员应多加小心。 镍氢电池的充电接受能力还会随着充电速率的加快而提高,因此快速充电器更加高效。 快速可靠地检测到进入过充至关重要,尤其在使用高充电速率的方案中。这是最大限度延长电池寿命的关键。主要的充电控制方案通常依赖于对电池温度快速上升或电压峰值的检测。
电路硬件 一、方框图: 这里画一张方框图,让大家理解一下整个电路。 充电器的原理比较简单,打个比方,如果你要装满一桶水,你要做的步骤是: 1, 打开水龙头,让水桶接水。 2, 控制水龙头的大小,即流量的大小。 3, 留意水桶的情况,差不多满的时候,关闭水龙头。 框图中的单片机,是整个电路的核心,对电压、流量、温度等参数进行监控,并控制相对应的电路。 一、具体电路。
我把电路分为A-I,9个部分。基本和之前的方框图对应。 1, 电路A:输入、输出以及软件烧录接口。
2, 电路B:LED指示灯。 LED灯由单片机端口直接驱动。
3, 电路C:单片机,每个端口的具体作用,请参考其规格书
4, 电路D:温度检测。 R17为热敏电阻,其电阻随温度而变化,从而影响RC7端的电压,单片机靠检测该电压来判断温度。
5, 电路E:2.5V参考电压。 该电路可以用TL431代替,输出一个2.5V的基准电压即可。
6, 电路F:DC-DC电压变换
该电路的核心器件为:Q4、D5、L1以及后面的C14。单片机输出的PWM信号进入Q4的g极,让Q4产生开关的动作,斩断5V直流电。电感L1和Cout(电路里的C14)为储能器件,在Q4关断时释放能量。D5为释放的能量提供单向的导通路径。经过这一DC-DC变换后,5V电压被降为1.6-1.7V左右的直流电(在快速充电状态时)。 Q4用低压导通的型号即可,我用AP3401替代。
7, 电路G&H:MOS管开关电路 & Ni-MH电池。 单片机的RB4和RB6分别控制Q2和Q3的导通/关断。这一在共用一个DC-DC电源的情况下,实现2路电池的单独充电,互不影响。 MOS管用低压导通的型号即可,比如我用的AP3400A替代。
这里再说一下,充电的模式。 当放入1节电池时: 下图是IC输出的PWM信号,从波形可以看出,这是一种断续充电模式,充1秒,暂停1秒。
下图是电池端的波形,也是对应为充1秒,暂停1秒。
当放入2节电池时: 下图是2节电池时,IC输出的PWM信号,可以看到,之前空闲的1秒,被用来给第二节电池充电,模式也是一样的,充1秒,停1秒。A、B电池交替充电和休息。
8, 电路I:电流采样 充电电流流过R14时,会产生一个压降,R14的值很小,0.056欧姆。需要用运用进行放大,电路中的放大倍数为10倍。我手头没有MCP6V01,我用LM258替代。 软件 一、软件平台:MPLAB IDE v8.92 因为我的仿真器是ICD2,用不了MPLAB最新的版本,只能用8.92的旧版本。(使用ICD2仿真器,需要在winxp中安装MPLAB,否则ICD2会有通讯问题。) MPLAB 8.92官方下载地址如下:
同时还需要安装编译器MPLAB-C18,这里有破解版,方法如下:
安装完MCC18后,还需要在MPLAB IDE中导入MCC18这个编译器。大家可以在网上搜索一下方法。
|