Skip to main content

Spotwelder controller info for nerds

Published: 12 October 2019
Last updated: 11 May 2020

The spotwelder controller board explained

The spot welder uses the Arduino Universal AC Power Control board and can therefore be used for many other applications such as vacuum pressure controller and thermocouple temperature controller.

 Arduino battery tab spotwelder controllerDual pulse spotwelder controller

Extra connectors

  • Optional temperature sensor input DS18B20 
  • Optional custom digital output 3.3V 

Code open-source on GitHub

There are no secrets, the advantage of this spot welder is that the software is open-source unlike other controllers. Of course the software is already programmed but you can modify it if you want. 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.
Male header 6 pin.

Spotwelder FTDI

How to customize weld times

You can customize 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};

Note: software version 7.3.2 may have no bootloader, if you want to change the software with the Arduino IDE, you have to burn the bootloader via the ISP connector and for instance an USBasp programmer.