Skip to main content
Wie wil meedoen met de solarbike zelfbouw club?
Who wants to join the solarbike DIY club?

Old spot welder controller smd v5

Published: 31 December 2014
Last updated: 07 July 2021

For the new version see HERE

I have developed the D.I.Y spot welder because I needed a special spot welder for the building of my Maxun One solar bike. It turned out that the spot welder is being built by many people worldwide.

This spot-welder timer controller is completely ready:

  • Including the TFT display
  • Including the 110VAC ... 240VAC mini power supply
  • Completely assembled
  • Programmed with the Arduino bootloader and the spotwelder code
  • Fully tested
  • Ready for use

You can use it for:

Spot welder control board with TFT displaySpot welder control board with TFT display


There are cheap spot welders timers for sale on eBay. These are pretty good, but they do not have a zero crossing detector circuit. This is necessary for the reduction of the weld transformer inrush current, to prevent the mains fuse blow up.

Menu controlled operation with TFT display

The big advantage of this spot-welder timer is that the control is menu-driven and therefore very simple. A manual is actually unnecessary.

Wiring and mounting

No connectors are required, because screw terminal blocks are used.
Note: the in and output connectors are for AC voltage and there is no + or -.

Spot welding pulse timer controller wiringSpot welding pulse timer controller wiring

  • MAINS: 110VAC to 240VAC input
  • OUT: output to the welding transformer
  • Footswitch (optinionally)


  • 3.3V-out: optionally output
  • SEL: optionally external switch connection
  • UP: optionally external switch connection
  • DOWN: optionally external switch connection

Weld times

The time-table has a logarithmic distribution. The distance between the steps is 20% to 30%:
0, 10, 20, 30, 40, 50, 60, 80, 100, 120, 150, 200, 250, 300, 400, 500, 600, 800, 1000ms.

The welding times are different for 60Hz mains: 8.3, 16.7, 25.0, 33.3, 41.7, 50.0, 66.7ms etc. But because these are not round numbers, the fictional weld times for 50Hz are still used for 60Hz. So at 60Hz, a welding time of 1s is actually 830ms.

  • Pre-weld time: 0ms to 1000ms 
  • Weld pause time: 0ms to 1000ms
  • Weld time: 0ms to 1000ms

To protect the microwave oven transformer, the maximum welding time is 1s. For longer welding times, use the continuous mode.

Here are some oscilloscope images of the measured weld current:

Weld current for weld time 10msWeld current for weld time 10msWeld current for weld time 20msWeld current for weld time 20msWeld current for weld time 30msWeld current for weld time 30ms


Note that the thyristors are not cooled. The reason is that the controller is used mostly for welding nickel tabs on batteries where the welding time is maximal 250ms. With this short welding time, the thyristors do not become hot. A cooling plate makes the controller bigger and heavier and the shipping costs would exceed the costs of the controller.

There is another reason: the controller is used mostly in combination with a transformer from a microwave oven (MOT). The MOT is not designed for welding and is quickly overheated so that long welding times are not allowed. In practice, the MOT is overheated much faster than the thyristors.

Interval time

We also have to take into account the minimum interval time between successive welds. The MOT and the thyristors need some time to cool down. When we weld batteries manually, the electrodes must be accurately moved from one weld to another each time, this ensures sufficient interval time.

Practical welding examples

The thyristors do not get too warm at a total welding time, including pre-weld, of 500ms and a time between the successive welds of 10s. But the MOT and the welding cables will then become already very hot. With a welding time of 250ms and an interval time of 10s, no parts get too hot.

Controlling high-power spot-welding machines

The controller can be used also for professional, high-power spot-welding machines. The thyristors must then be replaced by larger ones. But here, longer welding times are common, up to 3s. The thyristors may get too hot when using long welding times with short intervals. You have to use a heatsink when the thyristors get to warm.  Pay attention to electrical safety when mounting a heatsink! Check the temperature of the thyristors after the voltage has been removed.

Open-source software

There are no secrets, the advantage of this spot welder is that the software is open-source unlike other controllers.
Download the software at Github
Because the software is open source, it can be customized. If you have an idea how to improve it, please let me know. Then I will implement it and add to Github. You can read here how to update the software yourself with the Arduino IDE.

To re-program the spot welder you need this:
FTDI Basic Program Downloader Module
For sale on eBay for €2.50 including shipping.

Spotwelder FTDI

Built-in power supply

The controller contains a mains power supply and works on all mains voltages worldwide from 110V to 240VAC, 50 and 60Hz. You only need an extra microwave transformer. 

How to customize weld times

You can change the weld-times yourself in the Arduino sketch, which you can download at GitHub. The weld times are in this section: 

int preweldTimeValues[]={10, 20, 30, 40, 50, 60, 80, 100, 120, 150, 200, 250, 300, 400, 500, 600, 800, 1000};
MenuItem preweldTimeItem = MenuItem("Preweld, ms", UpDownValueTable(4, preweldTimeValues, arrayLenght(preweldTimeValues))); // valuesPtr, table, arrayLenght

int pauseTimeValues[]={10, 20, 30, 40, 50, 60, 80, 100, 120, 150, 200, 250, 300, 400, 500, 600, 800, 1000};
MenuItem pauseTimeItem = MenuItem("Pause, ms", UpDownValueTable(14, pauseTimeValues, arrayLenght(pauseTimeValues)));

int weldTimeValues[]={10, 20, 30, 40, 50, 60, 80, 100, 120, 150, 200, 250, 300, 400, 500, 600, 800, 1000};
MenuItem weldTimeItem = MenuItem("Weld time, ms", UpDownValueTable(11, weldTimeValues, arrayLenght(weldTimeValues)));

For instance, to add two weld time steps 1200ms and 1500ms, change this line:

int weldTimeValues[]={10, 20, 30, 40, 50, 60, 80, 100, 120, 150, 200, 250, 300, 400, 500, 600, 800, 1000, 1200, 1500};

Drilling the front panel

Spotwelder controller front panel drawingSpotwelder controller front panel drawing

Microwave oven repair safety precautions

Working on a microwave oven is extremely dangerous. You will normally NOT survive the high voltage of 4000V, the available power of more than 1000W is enough to kill you instantly like an electric chair. Normal insulated tools are not safe, the high voltage may strike through it. Please read this article first

The microwave oven high-voltage is 5 times as dangerous as the overhead line of a train, see the video here:

Microwave oven repair safety precautionsMicrowave oven repair safety precautions


If you have any questions, please post them on

Circuit description

Solid state relays with standard TRIACs will not work here, because the load is highly inductive. Standard TRIACs have turn-off problems with inductive loads, while SCRs always turn off at the negative half-cycle. Therefore, an antiparallel back to back connected thyristor control is used here. For controlling high inductive loads, there are currently suitable varistors available, in the new version of the spot welder that will come in a year, these will be used.
The RC snubber network R11 and C3 protects the circuit from voltage transient spikes. D1 and D2 are transient-voltage-suppression diodes (TVS) but superfluous, in the next version they are not used anymore. The FTDI connector J4 is for re-programming. The ICSP connector is for burning the Arduino bootloader.

Spot welding pulse timer control panel with TFT display circuitSpot welding pulse timer control panel with TFT display circuit

Zero crossing detector circuit

This circuit necessary for the reduction of the weld transformer inrush current, to prevent the mains fuse blow up. The current through the weld transformer, which is an inductive load, will lag behind the voltage by 90º. This is the reason that, to reduce the inrush current, the optimal switch-on time is not the zero point of the mains sinus but the top of the sinus. To be able to do this, the Arduino has to detect the mains zero crossings, this is done by U2. The delay time in the software "sinusMax_us" is 4583µs, this strange number is the average of 1/4 cycle of 50Hz and 60Hz. 

PhaseInductive load phase shift

Setting the power of the welding current is done only with time control and not also with current value control. At some spot welder controllers, the current value can be set too, but because this works with phase control, this will increase the inrush current with the risk of blow up the main fuse. Weld-time setting has the same effect.

High voltage!


Pay attention: the PCB is directly connected to the mains, just the low voltage part is safe. Usage is at your own risk.

Maximum thyristor current

The maximum RMS on-state current for the BT151-800R is 12A. However, for short weld times we can take the non-repetitive peak on-state current, this is 50A for weld times below 0.5s. For a normal microwave oven transformers the thyristors are adequate oversized. Take stronger thyristors if you are using a large weld transformer, e.g. the TN5015H-6T, TN5015H-6I, CMA30E1600PB, which max. RMS current is 50A and max. average current 30A.

Alternistors for high inductive loads

You can also use a high power alternistor instead of stronger thyristors. One alternistor replaces both thyristors, it is also cheaper.
An alternistor is a special kind of triac, different names are used:

  • Snubberless triac
  • Three-quadrant triac
  • Alternistor
  • High commutation triac

The T3050H-6I, available at Mouser, works very well. Just replace Q2 with the alternistor, remove Q1 and make R9 0 Ohm:

Alternistors for high inductive loadsAlternistors for high inductive loads

User guide

  • Use the up, down and select button for setting the parameters, see the video on YouTube.
  • The settings are stored in the EEPROM.
  • Press the weld button or the foot pedal to weld.
  • The LED on the back flashes continuously to indicate that the controller is working correctly.

Continuous mode:

There is a possibility to weld as long as the weld button is pressed. To enable this mode, set the welding time to 0 (*note*), press and hold down the weld button simultaneously during power on for 1 second and than release the button. Now you can weld continuously without the timer. Take care: the transformer will be overheated easily, so use this feature only for testing or for measuring the weld current. 

More information

You may find some more information at the article of the old spotwelder controller.