DIY Arduino Dual Pulse Capacitive Discharge Spot Welder





Introduction: DIY Arduino Dual Pulse Capacitive Discharge Spot Welder

About: design and maker

This Instructables includes plans to build a dual pulse capacitive discharge spot welder that can output 400 amps in 60 micro seconds.

Step 1: Theory


The reason for this a portable capacitive discharge spot welder, which can be used to aid in the process of building a battery pack for the UMD Bulldogbots combat robot team. Because the battle bots require battery packs that are not readily available the battery packs must be made in house. By having the capabilities to create a battery pack to the exact specifications required by the Bulldogbots team, they can minimize document is to ascertain the building of cost and have the flexibility to design the battery pack to the dimensions needed. By having a portable spot welder the team can weld nickel tabs to the multiple A123 now B345 battery cells that form the battery pack. This assures a quick and durable connection which if far more reliable than soldering and will not degrade the performance of the battery cells.


In order for the spot welder to meet the needs of the Bulldogbots team it must adhere to the following specifications. Since the spot welder must be portable it should be no bigger than 9 inches long by 9 inches wide and have a height of 13 inches. It must also be powered by a standard wall outlet 120VAC /15A. The use of a lab power supply capable of triple output is also needed. The design must also contain ultra capacitors with a minimum capacitance of 350F and 2.5V per cell. For safety concerns there should be a way of telling whether or not the ultra capacitors are charged. This can be done with an LED or a voltmeter. Also there must be a way to discharge the capacitors once welding has been completed. In order to protect the intricate circuits a fuse should also be incorporated in the design. An Arduino UNO and a MIC4451 MOSFET Driver to send the control signals to the IGBT should control the circuitry, which delivers the pulse of electricity used to weld. The leads used to deliver the high current of up to 700 amps pulse should be no smaller than 4-gauge high strand cable. A momentary footswitch with ¼” audio jack is used to send the control signal the micro controller.

Step 2: Circuit

The Norr 9000 uses a triple output laboratory DC

power supply that is capable to charge up the capacitor bank at up to 3amps at 15v. There is also a regulated 5V and 12V supply to provide logic power to the microcontroller and mosfet driver. A laboratory power supply was chosen for its ease of accessibility and the ability to be current limited source while charging the capacitor bank. Based off commercial spot welders, a dual current pulse was employed. This allows for the circuit to first make a smaller discharge in order to clean the surface of the material of impurities such as oil and create a weak weld. The second pulse with more energy makes the final bond. In order to have a stable pulse during discharge a large capacitor was employed. It was chosen to use the Maxwell BMOD0058 E016 B02 Ultra-capacitor module because of it’s high capacitance of 58 Farads at 16.2 Volts and it’s built in capacitor balancing circuit for long life. The capacitor typical short circuit is 730 A as defined by the manufacture, because of resistance and inductance from the welding material and electrodes the output of the capacitor is less than that value.

Step 3: Code

Arduino Microcontroller



** NORR WELDER 9000 v1.0.12





#define I2C_ADDR 0x27 // Define I2C Address where the SainSmart LCD is


#define En_pin 2

#define Rw_pin 1

#define Rs_pin 0

#define D4_pin 4

#define D5_pin 5

#define D6_pin 6

#define D7_pin 7

LiquidCrystal_I2C lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);

// set pin numbers:

const int buttonPin = 8; // the number of the pushbutton pin

const int ledPin = 11; // the number of the output pin

// Variables will change:

int ledState = HIGH; // the current state of the output pin

int buttonState; // the current reading from the input pin

int lastButtonState = LOW; // the previous reading from the input pin

// the following variables are long's because the time, measured in miliseconds,

// will quickly become a bigger number than can be stored in an int.

long lastDebounceTime = 0; // the last time the output pin was toggled

long debounceDelay = 1000; // the debounce time; increase if the output flickers

void setup()


lcd.begin (16, 2);

// Switch on the backlight



// Position cursor and write some text

lcd.home (); // go to the first line, first character

lcd.print("NORR WELDER 9000 ");

lcd.setCursor ( 0, 1 ); // go to the 2nd line

lcd.print("v1.0.12 ");

pinMode(buttonPin, INPUT);

pinMode(ledPin, OUTPUT);


void loop() {

if (digitalRead(buttonPin)==HIGH) {


delay(20); //First Pulse in milliseconds to clean connection


delay(5); //Delay Until Second pulse in milliseconds


delay(45); //Second Pulse in milliseconds to make the actual weld





Step 4: Enclosure

The welder had its circuitry designed and tested before the design to make it user friendly. Using Solidworks, a 3D CAD program we were able to design the case using ¼” lexan and because of the flexibility of CAD, I was able to added in mounting holes and user elements such as a handle. Using the DXF files generated from the Solidworks model we then used the OMAX waterjet in the mechanical engineering department to cut out the case. The custom red and black copper electrode hookups were design also in Solidworks and were then 3D printed out for use in the welder.

Step 5: Operation


Standard safety equipment such as gloves and goggles should be worn while using the Norr Welder 9000. Never let the two electrodes touch while welding as this may cause excessive current to flow through the welder causing failure.

1. Hookup the power leads and other connections to the welder with the power supply off

2. Set the laboratory power supply to 14 volts at 1.5amps and turn the supply on making sure the rear capacitor discharge switch is turned off.

3. Turn on the front power switch for the logic power supply; this will turn on the Arduino.

4. When the front LED is bright green or the supply is showing 14V the welder is then ready to weld

5. Firmly place the copper electrodes where you want the desired welds and activate the footswitch. If you do not press the electrodes down with pressure you will likely have poor welds, large sparks, and likely vaporize the metal under the electrode.

6. When finished welding follow the procedure in reverse order and flip the switch on the back of the welder to discharge the capacitor. It takes about 10 minutes for the capacitor to be fully discharged.



    • Water Contest

      Water Contest
    • Oil Contest

      Oil Contest
    • Clocks Contest

      Clocks Contest

    22 Discussions

    the BOM says use a single 2.7V 350F cap but the instructions say use a 16.2V 50F cap and the pictures clearly show a bank of six 2.7V 50F in series to equal the 16.2V 50F cap. While the single 2.7V 350F is better for space and holds about 100 joules more energy, is 2.7V enough to overcome the resistance it needs to go through to get to the weld?

    2 replies

    Also... the bank pictured is 6x 350f in series. Total c is (c of one cell)/(#inSeries) * #of paralell rows

    none of the other designs ive seen use under 10v. im guessing not.

    awesome project. I shelled out 120 for 20 of the maxwell 350f and then another 20 for a 6s 2p balance board. As i wait for the board i was sweating bullets over if the ESR will be low enough on the 350f model in series or if i wasted my money. Seeing your design with a Maxwell factory assembled cap module using the same caps calms me quite a bit. That said, one critique: its a cap bank or cap module its very imprecise to refer to it as "the capacitor". Its not technically wrong but Its not precise either. Its not like it aids in understanding either. If an ee student/someone were to read the side of the module they could probably figure it out but its not like the shell holding 6 super caps is in the shape most people associate with "a capacitor"

    2 replies

    That's a good price, where'd you find them at that price?

    guy on ebay selling them. i looked a few weeks ago and he still was.. shipping added like 30 if i recall

    @Nobster146 It's apples and oranges: An IGBT is much like a mosfet front-end and a BJT back-end combined together. New devices of both types have improved so much that either can do the job if selected properly. You want to look at voltage, amperage and especially the SOA characteristics of the devices (datasheet) and determine the needs of the application. IGBTs used to be best for under <20khz operation, but newer ones have pushed that limitation up.

    2 replies

    thank you. I'm trying to find the most fiscally conservative way to build this. MOSFETs look to be significantly cheaper than the equivalent IGBTs.

    IGBT has a nasty(for this application) hard voltage drop of about 2v . If i understand correctly it increases with the log of the current. Id go with the lowest Rdson mosfets you can find in paralell

    there's a third resistor in the schematic that is not on the BOM. Any help you can offer?

    Very cool !!!!! I've wanted to make on for a while time permitting. I'd love to see more weld result pictures and/or a video!!!!

    Were did you source the IGBT? Specs?

    2 replies

    Thanks studleylee, I used a Eupec IGBT BSM 300GA 120DNS. They run for about $215 off of Digikey but you can find them on eBay for about $35. I've heard of people finding IGBTs at surplus stores for only a few dollars too.

    what would be the reason to not use a power mosfet in place of the IGBT? Cost seems to favor the power mosfet.

    Now I saw that you did not include either the header in the sketch code

    There is still no real scheme to which the LCD, what's the struggle?
    Can you publish

    Yup, that's correct. I used a foot switch from eBay with a standard 1/4 inch mono jack.

    In the schematic i see labeled components such as R7 and L1 but no mention of the recommended Resistance or inductance of said component. Any added info would be nice.

    1 reply

    The BOM is uploaded under the Circuit section. For the inductors (L1) that was a place holder for the welding cable. Enough current flows through that the nickel tabs will jump toward the wire while in use.

    A schematic would be nice, did I miss it?