Arduino-Controlled Lithium Battery Charger


Lithium Battery Charger - Construction

(Circuit diagram - open new Tab.)

Component Selection

The LT1510 is a buck/switcher type constant-current, contstant-voltage regulator running at 200kHz which can put more stress on its supporting components than a conventional 'linear' type regulator. Capacitors, in particular, need to handle relatively high ripple currents and at the higher frequency, 200kHz, than is normally associated with conventional power supply components.

It's well worth reading both the LT1510 datasheet and the LT1510 design manual both of which go into great detail about component selection.

The following table lists the more critical (and/or less common) components. It's not a full list of all the parts used.

CR1, CR31N5819        
CR21N914 or 1N4148 
L133uH 1.35A Inductorebay
C247uF 50v electrolytic capacitor 
C5100uF 50v electrolytic capacitor 
R169.8k 0.1% 
R2a100k 0.1% 
R2b5.62k 0.1% 
Q1, Q2, Q32N7000 MOSFET 
FBFerrite Beadsebay
IC1LT1510CN, LT1510CN#BPF, LT1510IN or LT1510IN#BPFLinear Technology
Heatsink6.3mm x 20mm Farnell, ebay
RegulatoruA7833CKCS (3.3v) Pin-compatible with the LM7805. Farnell
IC2ATmega328With Arduino Bootloader
LCDNokia 5110 LCDDealExtreme, ebay, etc
Current SensorAdafruit INA219 breakout boradphenoptix, Adafruit
Fuse1.1A resettable fuseCPC
EnclosureHammond Instrument EnclosureFarnell
Connector42x42mm Speaker Box Connectorebay
Fan25mm x 25mm x 10mm 0.08A cooling fanebay

PCB Layout

Download Circuit Wizard layout


The Nokia 5110 LCD

The Nokia 5110 LCD is available from several suppliers. Unfortunately, they all have different pinouts. In addition, some need a +ve supply for the backlight LED to light, others need ground.

I always try to design my projects with the possible requirement to replace components but designing the PCB for whatever version of the display I may be able to get hold of in the future isn't straightforward.

Even re-defining the LCD's data pins in the ATmega software wouldn't take into account the two supply pins (Vcc and GND) or the backlight which makes designing a 'universal' PCB virtually impossible. I decided instead to design the PCB around one popular version (from DealExtreme) and different displays are catered for by crossing over the connections as required in the ribbon cable. It's not particularly pretty but it does serve its purpose.

The PCB has provision to connect the backlight's 330 ohm series resistor to Vcc or GND or to ATmega328 output A0 (configured as a digital output). Connecting it to a digital output means that only a software change is required to connect the backlight to either HIGH or LOW - ie Vcc or 0v - (depending on the particular display).

Most displays arrive with the 8-pin header already attached but some use the top row of connections, some the bottom row. When the header is fitted to the bottom row, it ends up very close to the 4-pin PCB socket/connector for the push button panel. To avoid any potential problems, I changed the 8-pin header on the display for a right-angled one. Alternatively, the header could be removed and replaced in the top row of connection holes.

I also used a 4-way JST-XH connector for the cable to the push button panel, to increase the clearance, as it has a lower profile than the usual pin header.


The Completed PCB

Various views of the completed PCB under final testing. The aluminium square bolted through to the PCB's copper ground plane is to assist with the cooling but I'm not sure if it makes much difference.

I used sockets for the INA219 and the LT1510 because this is a prototype/development PCB. The LT1510 would probably run slightly cooler if it were soldered to the PCB.

Fan - Speed Adjustment

The PCB for the fan control is mounted on the fan itself. Most of the photos above show an earlier version. In the final version, I added a 10k preset for speed adjustment and the PCB is flipped over so the component side faces the enclosure end plate and the potentiomenter shaft protrudes through the end plate by about 1mm.


Fan - Update

As there are a few analogue inputs spare on the ATmega328, I decided to use one to monitor the temperature of the LT1510. As I already had a spare TMP36 in a TO-92 package in my spares box, it was simple enough to add. I drilled a couple of new 0.8mm holes in the main PCB near the 3.3 volt regulator to pick up the 3.3v supply to the sensor and I'd already provided solder pads for the unused analogue pins on the ATmega328 so I used input A1.

I used a thin film of superglue to attach the sensor to the LT1510 heatsink.

Although it won't be very accurate, it's useful to have some idea of what the temperature is. The fan can now be switched on and off depending on the heatsink temperature.

The Enclosure


Back to Index | Page 1 | Page 2 | Page 3

This site and its contents are © Copyright 2005 - All Rights Reserved.