Homemade Spot Welder

by tuenhidiy in Circuits > Arduino

16412 Views, 125 Favorites, 0 Comments

Homemade Spot Welder

Title-1.JPG
Homemade Spot Welder

I recently had a broken microwave oven at my home and its transformer was in good condition. I used the available equipment that I had on hand to turn it into a spot welder. I'm willing to share how I build it, please check out video below and let's get started.

Supplies

Main components:

  • 1pcs x Microwave Oven Transformer (MOT).
  • 1pcs x 220V to 5V Power Supply.
  • 1pcs x Arduino Uno R3.
  • 1pcs x Prototyping Shield for Arduino.
  • 1pcs x LCD 16x2 with I2C Module.
  • 1pcs x 5V Relay Module 1 Channel.
  • 1pcs x Contactor 2P/3P at least 20A.

  • 1pcs x Emergency Push Button Switch.
  • 2pcs x Round Push Button.
  • 1pcs x Potentiometer 10K.
  • 1pcs x LED 5mm.
  • 1pcs x 330Ω Resistor.
  • 1pcs x 100Ω Resistor 2W.
  • 1pcs x 0.1uF - 310V (or 275V) Safety Capacitor.
  • 4pcs x Screw Terminal Block Connector 2PIN.
  • 2pcs x Copper Tubes Diamerter 8mm, Length 45mm, Thickness 2mm.
  • 2pcs x Copper/Aluminium Busbar Length 100mm, Width 20mm, Thickness 4mm.
  • 2pcs x Copper Soldering Tip 4mm.
  • 15m x Copper Wire, diameter ~2mm.
  • 5m x Flexible Wire 1mm2 (Red and Black color).
  • 1m x Heat Shrinkable Tube Ø14mm.
  • PVC fittings including straight connectors and endcaps: diameter Ø21, Ø34 and Ø42mm.
  • 4pcs x Springs. I reused big springs from the broken desoldering tools and small springs from a broken office printer.

Update additional parts:

  • 1pcs x Thermistor NTC 100KΩ.
  • 1pcs x Potentiometer 100KΩ.
  • 1pcs x RGB Led, common cathode, 10mm.
  • 3pcs x 330Ω Resistor.

Microwave Disassembly

If you decide to take apart a microwave oven, please consult multiple guides before attempting this disassembly for safety reasons.

There're some dangerous parts are as follow:

  • High voltage capacitor: Usually we disassemble the microwave to make use of its parts when it has been broken. For some reasons, the high voltage capacitor is still fully charged when we open the microwave, improper touching or improper discharging this capacitor can cause a electric shock and even kill us.
  • Magnetron: contain an insulator called beryllium oxide (BeO), it is extremely toxic and can cause a permanent lung disease.

After I got the transformer, the first thing I did was measure the primary winding resistance to see if it was still usable? I then used a handsaw and chisel to cut and remove the secondary coil.

Rewinding MOT's Secondary Coil

I used copper wire, 1 single core with inner copper diameter 2mm, and outer PVC insulation diameter 3.5mm to rewind the secondary coil.

I put together 6 pieces of wire, each about 2.5m long, and wound them into 3 turns for the secondary coil. According to calculations, I can thread 8 wires of such diameter into the space of the secondary coil, but in reality it is impossible.

Two copper tubes were used for output terminal connectors.

Like this.

Spot Welding Pen

I reused two thermocouple blocks to connect the secondary coil output to the solder pen.

After measuring, I drilled some holes on the busbar for these connections.

Tightening thermocouple block to aluminium busbar with M4 bolts.

I created an insulated handle that holds the busbar and this is its head. It was made of Ø21mm PVC endcap and connecting pipe.

Check to see if it fitted tightly between the gaps.

And this is handle's end, it was also cut 2 grooves on the side.

I joined them together using PVC straight connector and thus I had a reliable insulated handle. Since the PVC fitting thickness is 3mm plus the 2mm thick connecting pipe, so the total is about 5mm thick for this handle, except at the grooves where the thickness is 3mm.

Self-balancing Welding Pen

To make a self-balancing welding pen, I added two springs to the head and end of my handle.

My original idea was to connect the transformer output cable to this big hole on the busbar but finally I have fixed a spring in that position. And the cable will be connected to the thermocouple block.

And this is spring at handle's head.

I made two similar handles and mounted 2pcs soldering tip 4mm for testing.

These two handles should have been attached together to form a true force-balanced handle, but I didn't do that. I kept them seperate.

Schematic

Spot_Welding_schem.jpg

I had some contactors from LS that I have thrown away in a unused corner, their nameplates GMC-40, number of poles: 3, control coil voltage: 220VAC, operational voltage and current: 380VAC/40A. I used 2 power contacts (2 poles), connecting to transformer. If my contactor had auxiliary contacts and thermal overload relay (TOR), it might be better for safety.

An RC snubber circuit has been connected to the two coil terminals when some characters on the LCD screen were garbled after a few times of opening and closing the contactor.

The high resolution schematic in PDF format is attached below.

Soldering Arduino Shield

I soldered some headers and terminals on the prototype shield following the schematic on the previous step.

Electrical Connection

I used a wooden wine box to mount the equipment inside, including: microwave oven transformer, 220V to 5V power supply, Arduino and its prototype shield, 5V one channel relay, contactor, potentiometer, LED and all interconnection wires.

An emergency stop button was added later for safety reasons after some test welding operations. When we press the E-Stop button, the 220VAC control voltage will be isolated from the relay contact to the contactor coil.

The transformer output cables were supported by a Ø42mm PVC pipe mounted on the box lid and connected to the aluminum busbars with 2xM4 bolts at each position.

On the top of each handle, I added a push button so spot welding could be done by pressing the button on the left or right handle.

The cable connecting to the push buttons was hanged freely and connected to screw terminals on the prototype shield.

LCD Noise Issues and Snubber Circuit

A snubber circuit is used to protect sensitive electronic components from voltage spikes or transient faults. My simple snubber circuit consists of a series combination of resistance (100Ω - 2W) and safety capacitance (0.1uF X2 40/110/56/B) in parallel with contactor coil. The snubber circuit can act as a power filter in the circuit, especially EMI (Electromagnetic Interference) problems caused by contactor/ relay opening and closing that affect the LCD display, for examples: LCD garbled, random or noise/garbage characters...

After soldering to wires, I covered them with heat shrink tubes.

As shown below, the red and black wires are connected in parallel to the contactor coil (220VAC) at terminals A1 & A2.

After installing this snubber circuit, my LCD worked very well, no more garbled text or random characters displayed.

Monitoring Secondary Winding Temperature

I added one thermistor NTC 100KΩ, RGB led common cathode 10mm, and one header for N.O contact of emergency button (it has one N.O and one N.C contact). Instead of putting a 100KΩ resistor in series with the themistor NTC, I used a 100KΩ potentiometer so I could adjust the value I wanted. And I can also do transformer winding temperature simulation.

I placed the thermistor inside the secondary winding like this.

Arduino Programing

In the video, I have not added the winding temperature sensor and displayed it on the LCD screen, nor connected the emergency button to the external interrupt pin of the Arduino. Here below is my updated program.

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F, 16, 2);  // I2C address: 0x3F, columns x rows = 16x2

#define RELAY       7   // Connect to 5V relay 1 channel
#define LEDREADY    8   // The spot welder is READY when this led is ON
#define LEFTBUTTON  12  // Left button to start the spot welding
#define RIGHTBUTTON 13  // Right button to start the spot welding
#define ESTOP       2   // Connect to N.O of emergency button

// RGB led for winding temperature indication
#define REDPIN      3   // RGB LED common cathode - Red Pin
#define GREENPIN    5   // RGB LED common cathode - Green Pin
#define BLUEPIN     6   // RGB LED common cathode - Blue Pin

// RGB LED - Color code
#define REDCOLOR      0xFF,0x00,0x00
#define ORANGECOLOR   0xFF,0xA5,0x00
#define YELLOWCOLOR   0xFF,0xFF,0x00
#define CYAN          0x00,0xFF,0xFF
#define GREENCOLOR    0x00,0xFF,0x00
#define TEALCOLOR     0x00,0x80,0x80
#define BLUECOLOR     0x00,0x00,0xFF
#define PURPLECOLOR   0x80,0x00,0x80
#define MAGENTA       0xFF,0x00,0xFF
#define WHITECOLOR    0xFF,0xFF,0xFF
#define CLEARCOLOR    0x00,0x00,0x00

// Temperature protection range
#define LOWLOWLIMIT     18   // Low Low limit
#define LOWLIMIT        45   // Low limit
#define HIGHLIMIT       55   // High limit
#define HIGHHIGHLIMIT   65   // High high limit

int weldingtime = 0;        // Spot welding time in millisconds
int delaytime = 2000;       // Delay time between weldings
int interlock = 0;          // Interlocking with welding buttons, E-Stop and winding temperature

// Potentiometer for setting up welding time
int timePin       = A0;

// Thermistor NTC 100K
int thermistorPin = A1;
int Vo;
const float Beta = 3974.0;
const float roomTemp = 298.15;  // Room temperature in Kelvin
const float Ro = 100000.0;      // Resistance of the thermistor at room temperature
const float R1 = 90710.0;       // Resistance of the known resistor - I used a potentiometer 100K
float R2, tCelsius;
unsigned long samplingtime = 0;

void setup()
{
pinMode(LEFTBUTTON, INPUT_PULLUP);
pinMode(RIGHTBUTTON, INPUT_PULLUP);
pinMode(ESTOP, INPUT_PULLUP);

pinMode(RELAY, OUTPUT);
pinMode(LEDREADY, OUTPUT);
pinMode(REDPIN, OUTPUT);
pinMode(GREENPIN, OUTPUT);
pinMode(BLUEPIN, OUTPUT);

digitalWrite(LEFTBUTTON, HIGH);
digitalWrite(RIGHTBUTTON, HIGH);
digitalWrite(RELAY, LOW);
digitalWrite(LEDREADY, HIGH);

attachInterrupt(digitalPinToInterrupt(ESTOP), EmergencyStop, LOW); // Defining Emergency Stop, using pin D2
lcd.init();
lcd.backlight();
lcd.home();  
}

void EmergencyStop()
{
  while(digitalRead(ESTOP) == LOW) // When emergency button is pushed and locked off
  {
    digitalWrite(LEDREADY, LOW);  // Turn off the status led
    digitalWrite(RELAY, LOW);     // Turn off the relay
    digitalWrite(REDPIN, LOW);    // Turn off RGB LED - Red
    digitalWrite(GREENPIN, LOW);  // Turn off RGB LED - Green
    digitalWrite(BLUEPIN, LOW);   // Turn off RGB LED - Blue
  }
}

void setColor(int red, int green, int blue)
{
  analogWrite(REDPIN, red);
  analogWrite(GREENPIN, green);
  analogWrite(BLUEPIN, blue);
}    

void readTemp()
{
if ( (unsigned long) (micros() - samplingtime) > 1000  )
  {
    Vo = analogRead(thermistorPin);
    R2 = R1 * (1023.0 / (float)Vo - 1.0); // Resistance of the Thermistor
    tCelsius = ((Beta * roomTemp) /(Beta + (roomTemp * log(R2 / Ro))))- 273.15;
    if (tCelsius >= LOWLOWLIMIT && tCelsius < LOWLIMIT)  // 18 <= Temperature < 45
    {
      setColor(GREENCOLOR); // Set green color
      interlock = 0;
    }
    else if (tCelsius >= LOWLIMIT && tCelsius < HIGHLIMIT) // 45 <= Temperature < 55
    {
      setColor(BLUECOLOR); // Set blue color
      interlock = 0;
    }
    else if (tCelsius >= HIGHLIMIT && tCelsius < HIGHHIGHLIMIT)  // 55 <= Temperature < 65
    {
      setColor(ORANGECOLOR); // Set orange color
      interlock = 2;
    }
    else if (tCelsius >= HIGHHIGHLIMIT)  // 65 <= Temperature
    {
      setColor(REDCOLOR); // Set red color
      interlock = 2;
    }
    else
    {
      setColor(WHITECOLOR); // Set white color
      interlock = 2;
    }
      samplingtime = micros();
  }
}

void loop()
{
weldingtime = map(analogRead(timePin), 0, 1024, 0, 999); // 0 to 999 milliseconds
readTemp();
// If left or right welding button is pressed, E-Stop is released and no interlocking
if(((digitalRead(LEFTBUTTON) == LOW)|| (digitalRead(RIGHTBUTTON) == LOW)) && (digitalRead(ESTOP) == HIGH) && (interlock == 0))
 {
  interlock = 1;
 }
if (interlock == 1)
{
  digitalWrite(LEDREADY, LOW);
  digitalWrite(RELAY, HIGH);
  delay(weldingtime);
  digitalWrite(RELAY, LOW);
  delay(delaytime);           // Delay time for next welding
  digitalWrite(LEDREADY, HIGH);
  interlock = 0;  
}
else if (interlock == 2)
{
  digitalWrite(RELAY, LOW);
  digitalWrite(LEDREADY, LOW);
}
else
{
  digitalWrite(LEDREADY, HIGH);
}
// Pint to LCD welding time and winding temperature
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("ON Time: ");
lcd.print(weldingtime);
lcd.print(" ms");
lcd.setCursor(0, 1);
lcd.print("Temp: ");
lcd.print(tCelsius);
lcd.print((char)223);
lcd.print("C");
delay(100);
}              

Information displayed on the LCD screen:

The RGB led color indicates the temperature range of transformer winding. It was placed in front of me and in an easy-to-see position.

The updated schematic is attached below.

Simulation and Emergency Stop

I did the winding temperature simulation without using a heat gun or lighter because the NTC thermistor was placed inside the transformer, making it difficult for me to manipulate.

By reducing the upper and lower limits plus adjusting the potentiometer 100KΩ as shown above, I had different temperature values at analog pin A1 for testing Arduino program as well as its interlockings, for example:

// Temperature range
#define LOWLOWLIMIT       5   // Low Low limit
#define LOWLIMIT          10   // Low limit
#define HIGHLIMIT         20   // High limit
#define HIGHHIGHLIMIT     25   // High high limit

In the video presentation, I only used the E-Stop button to isolate the 220VAC control source through the N.C contact. To be more reliable, I connected the remaining N.O contact on E-Stop to pin D2 - Arduino and made an external interrupt. So when the E-Stop button is pressed, it is not only isolates the 220VAC control source, but also performs Interrupt Service Routines (ISR) in the program, as below:

attachInterrupt(digitalPinToInterrupt(ESTOP), EmergencyStop, LOW); // Defining Emergency Stop, using pin D2
void EmergencyStop()
{
  while(digitalRead(ESTOP) == LOW) // When emergency button is pushed and locked off
  {
    digitalWrite(LEDREADY, LOW);  // Turn off the status led
    digitalWrite(RELAY, LOW);     // Turn off the relay
    digitalWrite(REDPIN, LOW);    // Turn off RGB LED - Red
    digitalWrite(GREENPIN, LOW);  // Turn off RGB LED - Green
    digitalWrite(BLUEPIN, LOW);   // Turn off RGB LED - Blue
  }
}

I also prepared a circuit breaker (CB) so that I can isolate the main power supply going through the microwave oven transformer. I didn't have a 1-pole or 2-poles CB available so I temporarily use a 3-poles CB.

Testing

First step, I isolated 220VAC from relay contact and contactor coil and test 5VDC control circuit, as well as, Arduino program via potentiometer and welding button.

Second step, I set to the maximum spot welding time and measured the no-load output voltage from microwave oven transformer. It's approximately 3VAC. I extended the welding time range (10 second for example) to make this measurement and then return it to the original value (~1 second):

weldingtime = map(analogRead(timePin), 0, 1024, 0, 10000);

Third step, I increase slightly the spot welding time. I tested with three thickness of nickel strip: 0.10, 0.15 & 0.2 mm, width 5mm. My spot welder worked very well with above thickness and battery 18650, I adjusted the spot welding time as follow:

  • Nickel strip: 0.10mm, spot welding time: 35 ~ 55ms.
  • Nickel strip: 0.15mm, spot welding time: 55 ~ 75ms.
  • Nickel strip: 0.20mm, spot welding time: 75 ~ 95ms.

It also depends on the hand's force, welding tip shape and the government main power source as well.

Fourth step, I always press a E-Stop button and keep it in this safe state when I power it on and have't performed welding operations yet. I only release the E-stop button by right hand when my left hand has held a welding arm. (I'm right-handed).

And one more important thing, check the spot welding time immediately after turning on the power. In the first picture below, I was not careful and left the soldering time to 1 second, it destroyed my 18650 battery immediately when I pressed the welding button. Be careful, it could injure you...

Welding quality is also not bad. And I can use it for portable household appliances that use rechargeable batteries.

Conclusion

Finish-5.JPG
Finish-10.JPG
Finish-2.JPG
Finish-11.JPG
Finish-12.JPG
Finish-3.JPG
Finish-6.JPG

I trust the contactor's operation as it makes sound, even though it is quite noisy. Like when a high or medium voltage substation is under maintenance, even though all the circuit breakers are off, the electrican will always need to see the disconnect switch with physical clearance and the earthing switch in action.😁.

Thank you for reading my work!

If you want to make a spot welder at home using a microwave transformer, pay attention to safety issues first!