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 ?
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
Post a Comment