Capacitive Discharge (CD) Welder for Battery Tabs




Introduction: Capacitive Discharge (CD) Welder for Battery Tabs

About: An engineer who likes to tinker with electronics and make stuff!

Welcome to my latest project, a Capacitive Discharge (CD) welder. This is the technique often used for the welding of battery tabs. I have a plan to make an electric bike and the cost of the battery packs are about half the cost of the whole electrical installation (typically $500 for a mid sized 12AH battery). I believe I can make a reasonable pack from old cells removed from old laptops or similar devices which use the common 18650 cell size. Hopefully this source of 2nd hand batteries is free so the total costs are really only the tab material itself. On the issue of costs, the welder as built is not cheap. The capacitor I used were new and purchased from Digikey, as were the MOSFET's. However I'm hoping the machine will give years of good service for about 10% of the cost of a commercial unit.

PLEASE NOTE: this project is based largely on a design by Ian Hooper of Perth WA you can find the project on his website here:

Take a look around Ian's site and marvel at the great projects he has completed and the products he has for sale!

Step 1: Safety

OK - electricity can be dangerous!

This device has is designed to work at low voltages, typically 16Volts maximum. That means the likelihood of electrocution is low. However, on the other hand I estimate the amperage of the welding circuit is well over 1000amps albeit for a very short period of time!

When the weld is performed I have experienced a certain amount of sparking at the weld site - I think this is a result of not having enough pressure on the weld electrodes - I advise the use of safety glasses and gloves when performing the welds.

Step 2: Harvesting Laptop Batteries

There are lots of videos on YouTube about how to harvest 18650 cells from laptop battery packs. What I have included here is a short video on the use of 'Packprobe'. Packprobe allows you to interrogate the on board chip inside the battery pack where you can glean useful information such as the number of charge cycles the pack has been exposed to.

More details can be found here:

Step 3: Why Weld When You Can Solder?

...well that is a good question!

It is possible to fix the battery tab to the battery using traditional soldering techniques. It does have some very distinct drawbacks however:

1) You are introducing a large amount of heat to the terminal of the battery. This could 'cook' the battery literally and when I have tried to do this with my desktop soldering iron it seems to take a while to get the joint up to temperature and the rest of the battery gets hot also. I guess if you have a higher wattage iron you may be able to create a solder in a second or two and...

2) You will need to clean the solder joint of flux residue afterwards.

So in summary it is quicker, cleaner and much less likely to damage the battery.

Step 4: The Principles of Battery Tab Welding

Welding battery tabs is an industry standard technique used by all the major manufacturers. The idea being to pass a whole heap of amps into a small space in a short period of time to create a resistance weld. Machines are available 'off the shelf' specifically designed to do this. Of course they do a good job and of course they are expensive!

My intention is to make a homemade version with some of the features of the units you can by commercially, but at less than 10% of the cost.

Here is a link to good resource of information I have found dedicated to battery tab welding:

...and here is a link to a manufacturer who has a number of videos on their website showing battery tab welding:

Step 5: Information on Battery Tab Material

Battery tab (or strip) can be purchased from various sources on the internet such as ebay, aliexpress or alibaba. The manufacturers of quality battery packs use either copper (with a nickel plate) or pure nickel. I make no comment on the copper, it is a very good conductor but you would need more power than this welder can provide to creats a good weld. The pure nickel is the material of choice but this can be tricky to obtain.

Certiain suppliers clearly state the material the tab is made from but others pass off steel/nickel plated tab as pure nickel! While this might be acceptable for some battery packs you should realise the differences between the 2 alternative materials:

1) The steel cored tab will suffer corrosion if the nickel plate is scratched.

2) The resistance of the steel is about 2x (twice) that of its pure nickel counterpart.

Watch the video but please take care if you try this test at home! You can perform a similar test overnight by just using salty water.

Step 6: The Design Requirements - Dual Pulse!

As I said in the introduction, this welder was based on one developed by Ian Hooper. I was keen to use the basic set-up that Ian has developed but I liked the idea of potentially refining it to include some features available on commercial machines. Over the past few years I've done a number of projects based around the Arduino microprocessor and thought that that platform was an ideal one to use for this application.

My main aims were to:

1) Create the ability to do a dual pulse by having the MOSFET gates controlled from the Arduino.

2) Use a display to show the main process parameters.

3) Have the ability to change the main process parameters with inputs from potentiometers

4) Use a foot switch to initiate the weld

5) Use a buzzer to audibly indicate that a weld is in process and to indicate when the welder is ready to weld

Step 7: The Circuit(s)

I have documented the circuitin the following pages. I have subdivided it to make it easier to understand. I hope it is accurate and complete as I documented it after the build!

Rather than designing the circuit I just built it! I roughly knew what I wanted it to do and just set about implementing each feature as I went along.

The Capacitor PCB's is detailed here on Ian Hooper's page:

Step 8: Circuit Wiring 1 the Main Control Voltage Wiring and Arduino I/O

This first wiring diagram shows the main control voltage input which is from a 12VDC lead acid battery.

There is an on/off switch mounted in the front panel which energises the unit. I included 2 protection diodes just in case of accidental reverse polarity.

The Arduino I/O is also shown. See the following wiring diagrams to see the details of each sub circuit.

Step 9: Circuit Wiring 2 - Connecting the LCD

I used a 128 x 64 LCD and mounted it behind the panel. THe LCD is based upon a ST7920 chipset and I have driven it using just a 3 wire data interface to the Arduino.

In the Arduino program I have used the library U8Glib The pins used are Digital Pins 10,11 and 13

Step 10: Circuit Wiring 3 - I/O Connections

Here are the wiring connections for:

1) Foot Switch - connected to D4

2) Buzzer - (optional but it is uselful)! I didn't buy the buzzer I harvested it from a defunct piece of equipment. I used a transistor to drive as I was not sure the arduino could provide the current to drive this (Arduino is limited to 40mA from memory)

3) 3 x 10k Liear multi turn Potentiometers - connected to A4, A5& A6

NB: The 1uF capacitor across the footswitch to "debounce" the input to the Arduino

Step 11: Circuit Wiring 4 - the MIC4452 Mosfet Driver

This driver chip is easily available as a SMD component. I used a mini SOIC pcb to make it easy to use in a hand build circuit!

See the attahced PDF for detailed informationont he chip. I just copied the instructions on page 5 for the external connections and components. Also added is a resisitor from the Arduino Pin6 to limit the current that the Arduino can supply. Also a diode is place on the output. Possibly not necessary but it safgards the MIC 4452 chip just in case of a 'flyback' current.

Step 12: Circuit Wiring 5 - Capacitor Charge/discharge - and Voltage Sensing

Here I show the connection to the capacitor bank from the benchtoppower supply.

The benchtop supply is directly connected to the positive and negative bus bar.

The blled circuit resistors are also both connected to the same rails. They will constantly bleed power (and therefor lover the voltage) on the capcitors. Thisensure that they are not left in a charged state whrn you finishe using the welder. I just happened to have 4 x 48Ohm resistors on hand soIused them 2 in parallel and 2 in series. If you want to choose some other value or power rating just make sure you use V=IR and I2R calculations to ensure they will be ok.

The Voltage divider simple divides the voltage into 1/3 of the input (the analog pin on an Arduino only goes up to 5v max). I could have put a zener diode in here to protect the A0 pin but my power supply is limited to less than 15 volts anyway.

Step 13: The PCB's

These PCB's are entirely Ian Hooper's design. I took his suggestion and had them made at Seeed studio - great experience - I highly recommend it, all you need to do is submit the Gerber file, choose how many PCB's you want (I choose 20 as I might make 2 machines)! The PCB's arrived about 2 weeks later.

Step 14: Assembling the PCB's

Start by adding the 4 small SMD resistors on each of the PCB's

1) 2 x 100Ohm resistors. These resistors limit the current used to turn on the gates on each of the 2 MOSFET's

2) 2 x 10k Ohm resistors. These resistors are placed between the MOSFET gates and the GND and they ensure the gate on the MOSFET's are held 'low' when the gate signal is off.

The chips are 1206 size and are large enough to be hand soldered. Having said that, working under an LED illuminated desk magnifying glass is a great help!

NB: DO NOT add the capacitor on the PCB - In this design the gates are driven from the Arduino whereas in Ian's welder the gates are 'held' open by these capacitors until all their charge has been dissipated into the weld.

Step 15: Add the 2 MOSFET's and the 3 Capacitors

Continue the PCB assembly by adding the 2 MOSFET's. Ensure they are placed the right way around with the metal tabs facing the capacitors. Then add the 3 capacitors. Each board is now complete.

The parts used are as follows:

1) Capacitors (30 off on 10 PCB's) Digikey link for 47,000uF 16V capacitor

2) MOSFET's (20 off on 10 PCB's) Digikey link for MOSFET 195A 40V N Channel

Step 16: Repeat the PCB Assy

Repeat the previous 2 steps until you have the number of PCB's you need (I decided to do 10).

Step 17: Mounting the PCB's on Busbars

I machined 2 lengths of aluminum to form 2 nice chunky bus-bars. The PCB's were then mounted onto the bus-bars (back to back) with the addition of some carbon loaded grease to ensure a good and sustainable joint to the PCB's.

The PCB's are held in place with M4 nuts ad bolts.

The PCB's can then be connected together with short links.

Link for the carbon loaded grease:

Jaycar Carbon Loaded Grease

Step 18: Add the PCB Links

The PCB's can then be connected together with short links.

The 3 links are

1) The positive link - to be connected to a bench top power supply.

2) The negative link - to be connected to a bench top power supply.

3) The signal link - wired from the MIC4422 gate driver.

NB: In hindsight I would prefer these to be pluggable rather than permanently soldered. If a MOSFET were to fail it would be a mini nightmare to find out which one had failed!

Step 19: Add the 'flywheel' Diodes

I have added 5 flywheel diodes to stop any back emf circulating a reverse current when the MOSFET gate switches off. Hopefully, there is not much inductance in the circuit so the need for this is not too great. I do not have the equipment necessary (a good oscilloscope) to look for the voltage spikes so I hope 5 diodes are enough! - there is a lot of 'hope' in this step! The failure mode is likely to be a blown MOSFET - it will be difficult to determine which one has blown if it has simply gone short circuit.

Any advice from a better electronics person than me would be good!

The diode I used is an available from Element 14:

STTH6002CW Ultra fast Diode

Step 20: The Control PCB

As I said earlier I just built this as I went along, making changes and modifications as necessary. I'm sure it can be done more neatly and most certainly on a smaller footprint if required. So, rather than detailing this part of the build I just offer a few photographs and a description of the main parts used.

Parts Used:

1) The Prototyping breadboard used was: Jaycar Prototyping PCB

1) DC-DC power supply (to turn down 12VDC to 5VDC) ebay link for DC-DC converter

2) Arduino Pro Mini 5V 16MHz (clone) ebay link for Arduino Pro Mini

3) MIC4452YM MOSFET gate driver (mounted on a mini PCB - SOIC mini PCB ). A 10k resistor holds the digital output pin on the Arduino low.

4) Buzzer (salvaged from a failed piece of equipment) - driven from a digital output pin and a small transistor.

5) Power Resistors to bleed energy from the capacitors when you want to reduce the voltage (or from a safety point of view they will make the device safe when switched off). I used 4 47Ohm 5 Watt resistors. Jaycar 47Ohm 5W resistor

6) 2 resistors for the voltage divider, 1 @ XXX ohm and 1 at YYYohm.

7) 2 Diodes on the 12V input to provide input polarity protection.

8) A foot switch. Jaycar Foot Switch . A 1uF capacitor across the foot switch terminals ensures that the input to the Arduino is 'debounced'.

Step 21: The Electrodes

I made my electrodes from aluminum bar - the diameter is about 10mm. In other designs I have seen the electrodes just rounded to a blunt point. This seems absolutely fine but I decided to make the tips replaceable just in case I want to experiment with different tip profiles. To do this I bored a 3mm hole in the end of the electrode then used a short length of 3mm copper rod as a tip. The tip is held in place with a 3mm grub screw

At the other end of the electrode there is a slot to accommodate the crimp terminal on the end of the 8 gauge cable. A 4mm bolt and nut hold it in place - remember to use some conductive grease in this joint The whole assembly is then covered in heat shrink tubing.

Electrode cabling

I purchased 1 meter of red and black 8SWG cable.

Jaycar 8SWG cable - Red

Jaycar 8SWG cable - Black

The ends are terminated with crimped lugs

Jaycar 10mm2 crimp lugs

Step 22: Packaging the Welder

I wanted to box up the parts to provide a reasonably robust and neat finished product. I had an old broken mini UPS in the garage and when I'd stripped out all the inner parts seemed to be an ideal fit.

1) I first fitted the LCD screen to the front. This required me to enlarge the aperture and provide 4 fixings, one for each corner of the LCD.

2) I then fitted 2 XXmm conduit bulkhead fittings for the 2 electrode wires.

3)Finally, I fitted an on/off push button switch. This switch isolates the battery supply for the control PCB

Step 23: Back Panel of the Case

Now prepare the back panel. I used the back panel to route all the external inputs.

1) 1 connection for the external 12VDC battery

2) 1 Connection for the bench top power supply

3) 1 connection for the foot switch.

I reused some existing holes and retained the use of the fuse carrier. The battery input is routed through the fuse first and then via the front panel push button.

Step 24: Mounting the 10 PCB's

Using materials I already had around the garage I mounted the PCB assembly inside the case. I rested the bottom of the capacitors on a wooden former. This was easily made from a small piece of plywood. I drilled 32mm holes then split the piece in half. I then fixed the bus-bars in position using 2 plastic bars (again ones from a previous project), held in place with m4 bots and screws.

Step 25: Mounting the Control PCB and Completing the Internal Wring

The control circuit is mounted directly onto the plastic bars with 4 self tapping screws.

The internal cabling was now connected up.

Step 26: The Arduino Software

The Arduino software is included here. Its uploaded using a USB lead and a FTDI converter as shown in the photograph.

NB you will need to download and use the U8glib library which is used for the LCD display!

Please use and amend the software as you wish., but be careful I can not guarantee its efficacy - however it seems to work for me!

Key points are:


3 inputs from multi-turn potentiometers connected to analogue inputs A4, A5 and A6

1 switch input for a foot switch linked to digital input pin 4

1 voltage input to show the actual voltage on the capacitors via a voltage divider) on analogue pin A0


1 output for the MOSFET gate driver chip (MIC4422) on digital pin 6

1 output for a buzzer on digital pin 5

3 digital outputs to drive the ST7920 LCD display (SPI serial)

There are numerous comments in the software and a number of 'print' commands which are commented out which you may want to 'un-comment' to help with debugging!

Step 27: Powering Up and Testing

Step 28: Improvements?!

Thanks for getting to the end of my instructable. Well done you!, any ideas for improvements please let me know.

Be the First to Share


    • Cold Challenge

      Cold Challenge
    • Block Code Contest

      Block Code Contest
    • Baking Contest

      Baking Contest



    Question 1 year ago on Step 26

    Hi, Very good project. I am trying to load the code but it shows some error.
    I am good at electronics but know nothingabout coding. Please help.
    I am not new to Arduino and have done fews projeccts.


    Answer 1 year ago

    It says "Done Compiling" is it a fatal error? It's difficult to see the errors in red due to screen size and zoom, but it looks like a formatting error for a variable.


    Reply 1 year ago

    I have been trying to find solution but could not. I am back to you for help.

    the error is with the line that starts with Char*

    Char* StatusText (2) = {"Stabalising volts", "Ready to weld"};

    Warning: ISO C++ forbids converting a string constant to 'Char*' (-Wwrite-strings)


    Reply 1 year ago

    Please reply to my earlier msg.


    1 year ago

    Did you do up a PCB for the controll board?


    Question 2 years ago on Step 1


    A question came into my mind... These batteries can output several Amps, are those spot welds wide enough to transfer such current?

    I did not made any calculation, but let's consider 10Amps @ 3.7v, it would require around 1.5mm2 of surface (equivalent to 16 AWG).

    I think that a certain size & number of spots must be used, depending on the involved current, to prevent overheating and losses!

    Cheers 😉


    Answer 2 years ago

    Thanks for your comment. I usually do 2 separate spot welds which results in 4 contact points. Hopefully it results in a reasonable contact surface area, given its 2 flat plates against each other.


    Reply 2 years ago you think that it's the flat plat surface that must be considered instead of the weld spots?


    3 years ago

    Great DIY Buid project, perfect thanks!

    I see some improvments to be made on circuitry though. A linear regulator after dc/dc aux supply for 5v arduino.

    Pins 6 and 7 on that gate driver should be tied together as close as possible to pins.

    The 15,000 pF polycarbonate capcitor tied between gate driver output and griound is in 'test circuits' in datasheet, so i think this is to simulate a mosfets gate when doing test with the IC. SO I dont think you need and it may hinder output current drive of the driver as it has to charge that cap in addition to all other mosfet gates.

    The 0.1uF should be connected as close to pins 1 and 4 as possible and another 0.1uf should be conected the same way over pins 5 and 8.


    5 years ago

    Good evening,

    Truly wonderful project.

    Can work like this?

    The power is enough?


    6 years ago

    is there a mistake in the comment line of

    U8GLIB_ST7920_128X64_1X u8g(13, 11, 12); // SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17

    should the 18 be 15?

    if so it is starting to make sense how to connect lcd


    Reply 6 years ago

    Yes - its a typo in the sense that I connected my screen with the 3 digital outputs 13, 11 and 12 (not 18, 16, 17 as the comment suggests). the line is a copy and paste from the u8glib example and I forgot to update the comment.


    Reply 6 years ago

    thanks, i assumed the 15, 16, 17 were the lcd end.


    Reply 6 years ago

    The connections on the LCD end can be confusing as it depends on how the manufacturer has labeled the PCB - google search for st7920 images and you will see what I mean.

    To solve this 'off line' Id suggest just loading up the u8glib example to your Arduino and getting that working first. If you are still struggling then I can take a photo of my LCD but that means going under the lid and will take me a day or so too do.


    Reply 6 years ago

    ok, i can not find any real understandable info so someone please help?

    what does this line mean? does the order of the 11,12,13 matter? i assume they are the pins on the arduino and that they go to pins 4, 5, 6 on the lcd, but which one goes where? to make matters worse my lcd is numbered backwards!! please a detailed explaination?

    U8GLIB_ST7920_128X64_1X u8g(13, 11, 12); // SPI Com: SCK = en = 15, MOSI = rw = 16, CS = di = 17


    Reply 6 years ago

    I'll look inside my welder this weekend and take some more photos and jot down some details to see if I can help.


    Reply 6 years ago

    sjowett, if you could make a hand drawn schematic of the board i would be happy to make the files for board production and the supporting sch file. i recon this would be good experiance for me and help many people who would want to make this.


    Reply 6 years ago

    Ok I've updated the instructable and added a number of new steps covering the circuit. I hope this helps!


    Reply 6 years ago

    when i read the line in the code with the

    U8GLIB_ST7920_128X64_1X u8g(13, 11, 12); i saw that this was assigning outputs and the comment following was referencing inputs on the st7920 except for the typo where the 18 should be 15. then i found this drawing and it should work. waiting on parts but i think i understand it mostly. this is one of the better designs in my opinion as it give more control and also has better user interface.


    6 years ago

    hi, nice project but why not use a car battery instead of the caps? as to wiring, a simple hand drawn diagram would help many of us as the connection to the lcd is not so obvious and the size and connection of the pots is not given? many thanks.

    ps i am sorry but i found the ino file as i was not familiar with the layout of this site!