Snubber circuit for a sunkko 709A Spot welder


hi all,

i've (well friend of mine) had been trying replace pcb came on sunkko 709a sot welder , circuit attached , seem work after building 5 10 packs went wrong , device goes continuous mode. may not triac smoked still works in continuous mode (attached sketch).

so reason failure? snubber circuit ?
code: [select]
byte zcd = 2;  // 0 crossing detect
const byte triac = 3;  //load output
const byte rdy = 4;
const byte btn = 6 ;
const byte bzr = 8; // 8, did not buzz @ times.
const byte l8   = 9;
const byte l7   = 10;
const byte l6   = 11;
const byte l5   = 12;
const byte l4   = 13;
const byte l3   = a2;
const byte l2   = a3;
const byte l1   = a4;
const byte pot = a5;  //pot value pin
const int debounce = 10; // ms debounce period prevent flickering when pressing or releasing button
const int holdtime = 800; // ms hold period: how long wait press+hold event
int weldcounter = 0; // prevents weld @ boot
int counter1 = 0;
int counter = 0;
int weldstepvalue;    // value of pot in milliseconds
int oldweldstepvalue; // old value of pot
int potvalue;         // actual pot value
volatile boolean zerocrossingflag = false;
int btnstate; // value read button
int buttonlast = high; // buffered value of button's previous state
long btndntime; // time button pressed down
long btnuptime; // time button released
boolean ignoreup = false; // whether ignore button release because click+hold triggered

void setup()
{
  pinmode(pot, input);
  pinmode(triac, output);
  pinmode(rdy, output);
  pinmode(l1, output);
  pinmode(l2, output);
  pinmode(l3, output);
  pinmode(l4, output);
  pinmode(l5, output);
  pinmode(l6, output);
  pinmode(l7, output);
  pinmode(l8, output);
  pinmode(bzr, output);
  pinmode(zcd, input_pullup);
  pinmode(btn, input_pullup);
  attachinterrupt(0, setflag, falling);//zero cross attach
  delay(500);
  ledrun();
  serial.begin(9600);
}
void setflag()
{
  zerocrossingflag = true; //interrupt sets flag true
}

void weldstepval()      // display pot value debug
{
  serial.print("set weld time: ");
  serial.print(weldstep());
  serial.println("ms");
}

void ledrun()           // test output ic led
{
  digitalwrite(l1, high);
  delay(100);
  digitalwrite(l1, low);
  digitalwrite(l2, high);
  delay(100);
  digitalwrite(l2, low);
  digitalwrite(l3, high);
  delay(100);
  digitalwrite(l3, low);
  digitalwrite(l4, high);
  delay(100);
  digitalwrite(l4, low);
  digitalwrite(l5, high);
  delay(100);
  digitalwrite(l5, low);
  digitalwrite(l6, high);
  delay(100);
  digitalwrite(l6, low);
  digitalwrite(l7, high);
  delay(100);
  digitalwrite(l7, low);
  digitalwrite(l8, high);
  delay(100);
  digitalwrite(l8, low);
  delay(200);
}

const int weld(int pre, int pause)  //actual weld
{
  delay(400);
  zerocrossingflag = false; //set flag false , wait next 0 crossing
  while (!zerocrossingflag) {};
  delaymicroseconds(5630);                  //delay trigger @ peak sine wave
  digitalwrite(rdy, low);
  digitalwrite(triac, high);
  delay(pre);               //preweld time
  zerocrossingflag = false; //set flag false , wait next 0 crossing
  while (!zerocrossingflag) {};
  digitalwrite(triac, low);
  delay(pause);
  while (counter1 < 1) { // set multiple welds after pre-weld, deault 1
    delay(50);
    zerocrossingflag = false; //set flag false , wait next 0 crossing
    while (!zerocrossingflag) {};
    delaymicroseconds(5630);
    digitalwrite(triac, high);
    delay(weldstep());
    zerocrossingflag = false; //set flag false , wait next 0 crossing
    while (!zerocrossingflag) {};
    digitalwrite(triac, low);
    counter1++;
  }
  counter1 = 0;
  zerocrossingflag = false;
  while (!zerocrossingflag) {};
  digitalwrite(triac, low);
  delay(300);
  digitalwrite(bzr, high);
  delay(70);
  digitalwrite(bzr, low);
}

void continousweld()
{
  delay(400);
  digitalwrite(bzr, high);
  delay(60);
  digitalwrite(bzr, low);
  delay(50);
  digitalwrite(bzr, high);
  delay(60);
  digitalwrite(bzr, low);
  while (counter < 6)
  {
    btnstate = digitalread(btn);
    if (btnstate == low)
  {
    break;
  }
  delay(1000);
  weld(50, 500);
  counter++;
}
counter = 0;
delay(500);
  digitalwrite(bzr, high);
  delay(500);
  digitalwrite(bzr, low);
}

void led_off()
{
  digitalwrite(l1, low);
  digitalwrite(l2, low);
  digitalwrite(l3, low);
  digitalwrite(l4, low);
  digitalwrite(l5, low);
  digitalwrite(l6, low);
  digitalwrite(l7, low);
  digitalwrite(l8, low);
}

void pulsesetled()      // display weld time 100, 150...... led
{
  const int wait = 200;
 
  digitalwrite(rdy, high);
  // debug
  if (oldweldstepvalue != weldstep())
  {
    weldstep();
    oldweldstepvalue = weldstep();
  }
  pulsesetled();

  // test button pressed , store down time
  if (btnstate == low && buttonlast == high && (millis() - btnuptime) > long(debounce))
  {
    btndntime = millis();
  }
}

never mind got fixed. had created own interface board weld button had shorted out due oxidation. cleaned , seems working normal.


Arduino Forum > Using Arduino > Project Guidance > Snubber circuit for a sunkko 709A Spot welder


arduino

Comments

Popular posts from this blog

Flip address is out of range arduino uno r3

Arduino Uno not uploading

Indesign and MathType fonts