You are on page 1of 13

Ponthegesztő készítése Arduinoval

Ez a ponthegesztő bárki által megépíthető, csak egy autó akkumulátorra lesz szükségünk és
néhány alkatrészre.
Bevezetés
Sokakkal előfordulhatott már az az eset, hogy a barkácsgépeikben a Ni-Cd akkumulátor teljesen
tönkrement. Maga a gép még jó állapotban van ezért sajnálják is kidobni. Utánanéznek, hogyan is
érdemes megjavítani. Általában a válasz az, hogy vegyenek nagy áramú 18650-es Lithium cellákat.
Manapság a gyártók is ilyeneket használnak, egy bökkenő van, hogy ezeket ponthegesztéssel
szokták összekötni egymással.
Az átlag embernek pedig ilyen nem igazán szokott lenni otthon a műhelyében. Ha venni akar az pedig
több tízezres tétel, akár százezres is lehet, és ez még csak a belépő kategória, így inkább a
forrasztást választják sokan. Ezzel azonban egy baj van, hogy a cellák 100°C fokon már erősen
károsodnak, 200°C-on pedig akár fel is robbanhatnak. Márpedig ha valaki egy nem elég nagy
teljesítményű forrasztópákával áll neki, akkor az lesz a vége, hogy a cella egy igen nagy része
felmelegedhet és jobb esetben csak a kapacitása csökken, vagy a belső ellenállása nő meg. Ha
gyakorlott valaki és van egy megfelelő forrasztópákája ez annyira nem jelent gondot.

Nekem sincs olyan erős pákám amivel el tudnám kerülni, hogy felmelegedjen a cella, így jött az az
ötlet, hogy készítek magamnak egy ponthegesztőt.

Először, mint mindenki más, egy mikró trafóval kezdtem, kiszedtem belőle a szekunder tekercset és a
helyére néhány menet 35mm2-es vezetéket tettem, primer tekercsét pedig egy mikrokapcsolóval
kapcsolgattam. Ezzel már lehetett is hegeszteni, viszont nem lehetett normálisan szabályozni.
Lehetett volna időrelét használni az tény, de még úgy sem lesz olyan szép és erős a kötés. Ezzel a
megoldással hiába is próbálkoztam, az eredmény mindig az volt, hogy egy idő után (1-2 hét)
elengedett.
Ekkor már tudtam, hogy ez így nem lesz jó nekem, ezért keresni kezdtem, hogy mi képes leadni több
száz Ampert is akár, majd rápillantottam a műhelyben lévő rossz autó akkumulátorra. Annyi baja
volt, hogy még egyszer be tudta indítani az autót, de utána már tölteni kelletett. Innentől már tudtam is,
hogy mivel fogok ekkora áramot előállítani.

A kérdés csak az, hogy mivel lehet ekkora áramokat kapcsolni úgy, hogy csak néhány ms-ig
vezessen. Mágneskapcsolókkal/relékkel ezt nem lehet véghezvinni, de mivel egyenáramról van szó,
így könnyedén meglehet oldani félvezetőkkel. Abból is egy IRF1324-est választottam. Ez a MOSFET
ugyan kis feszültségtűréssel rendelkezik azonban igen nagy áramok képesen rajta keresztülfolyni.
Elvileg 200A folyamatos üzemben, illetve akár 1000A is impulzus üzemben. Cellák hegesztésénél
általában 4-600A-es áram fog folyni legfeljebb. Így akár egy ilyen is elég lehetne, de én a biztonság
kedvéért többet használtam.

Szükségünk lesz egy vezérlő egységre, amivel majd tudjuk kapcsolgatni a MOSFET-ünket ms
pontossággal. Én egy Arduino NANO-t választottam, mert kicsi, olcsó és könnyű a
programozhatósága is.

Mivel ezzel elég könnyedén megoldható 2 vagy akár több impulzust is létrehozni, így úgy gondoltam,
hogy 2 impulzus elég is lesz. Az első impulzus egy kisebb amivel létre lehet hozni egy jobb kontaktot
az elektróda, a hegeszteni kívánt nickel szalag és az akkumulátor kivezetése között, egy kis szünet és
utána következhet egy hosszabb impulzus amivel létrejön maga a hegesztés.
Kelleni fog így egy kijelző is amin majd lehet látni, hogy éppen milyen értékek vannak beállítva, illetve
kell majd valami amivel lehet is szabályozni ezeket az értékeket. Ebből egy enkóderre esett a
választásom. Ilyenek vannak például a házimozikban is, amivel a hangot esetleg a bemenetet lehet
választani. Ezek általában forgó mozgást alakítanak át impulzusokká.

Szükséges alkatrészek
Először az Arduino-ról.
Sokak számára ismerős lehet már ez a név. Sok mindent meg lehet vele alkotni egyszerűen és
olcsón. A C nyelvnek egy kicsit módosított változatát használja, így aki azt ismeri, az valamennyire
könnyedén bele tud jönni ebbe is.

Maga a hardverje mivel nyílt forráskódú, ezért elég sokan készíthetnek ilyeneket. Ebay-ről rendelve
akár 7-800 Ft-ért is lehet ezeket kapni. Ahhoz, hogy programot írjunk rá, le kell szedni a honlapján
található Arduino IDE programot. Ez teljesen ingyenes, így nem jelenthet gondot.

A teljesítmény elektronika része az alábbi ábrán található:

Szükségünk lesz először a Mosfetre. Itt a kapcsolási rajzon nem jelöltem, de célszerű több darabot
használni párhuzamosan, legalább hárommal már biztos nem menne tönkre.

Kell hozzá egy Mosfet driver, amiből én egy TC4420-ast választottam, ez maximum 6A-t képes
kapcsolni. Illetve érdemes közvetlenül a lábához bekötni majd egy legalább 100nF-os kerámia
kondenzátort, mert kisebb a belső ellenállása, mint egy fólia kondenzátornak.

A lábak bekötése itt látható:

Kijelzőből pedig sok félét lehetne használni, léteznek grafikus kijelzők is, mint a NOKIA 5110 vagy
akár OLED kijelzők is. Ha valaki nagyon kis méretekben gondolkodik, ezekkel meg lehetne valósítani,
de én egy hagyományos 1602-es LCD kijelzőt használtam, ami sokkal nagyobb ezektől.

Amivel pedig tudjuk majd változtatni az adatokat az lehetne nyomógomb is, de én enkódert
használtam.
Ezeket lehet kapni ebay-en pár száz Ft-okért.
Majd jöhet a megépítése, a kapcsolási rajz az így néz ki:

Ebben a tervező programban nem találtam meg ezt a TC4420-as drivert, így egy sima 8 pines OPA-t
tettem bele, de egyébként úgy van bekötve, mint a drivert kellene majd. Bal oldalt látni a teljesítmény
részt. Az egyszerűség kedvéért itt is csak egy Mosfet-et tettem be.

Utána következik az 5V-os feszültség stabilizátor. Erre azért van szükség, mert a Mosfet drivernek
minimum 10V-a van szüksége, míg az áramkör többi részének pedig 5V-ra. Majd láthatjuk a NANO-t,
mellette pedig először az enkóderhez tartozó nyomógombot, és magát az enkódert. Majd pedig a
"ravaszt", amit benyomva lehet majd hegeszteni.

A kijelzőt én egy I2C LCD konverter segítségével működtetem. Ez annyit csinál, hogy egy I2C busz
segítségével lehet működtetni az LCD kijelzőnket, tehát a 16 kivezetés lecsökken 4-re. Ez azért is jó,
mert nem a digitális I/O portokat használja, hanem az analóg lábakon található SCL-t (A5) és SDA-t
(A4).

A hozzá való könyvtárakat én innen töltöttem le:[link]


Mielőtt feltöltődik a végleges program, az EEPROM-ot ki kell előtte törölni, hogy ne csupa 255-öt írjon
ki.

Az Arduinohoz tartozó programkód itt található:


#include<EEPROM.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd( 0x27 , 2 , 1 , 0 , 4 , 5 , 6 , 7 , 3 , POSITIVE );

const int buttonPin1 = 2 ; //Enkóder nyomógomb


const int fetPin = 13 ; //Mosfet
int d = 0;
int dlast;
int a;
int b;
int c;
int m = 1;
int A = 3 ;
int B = 4 ;
int x = 0 ;
int buttonPin = 5 ;
int ALast = LOW ;
int n = LOW ;
void setup () {
pinMode (A, INPUT );
pinMode (B, INPUT );
pinMode (buttonPin, INPUT );
pinMode (fetPin, OUTPUT );
pinMode (buttonPin1, INPUT_PULLUP );
digitalWrite (fetPin, LOW );
lcd. begin ( 16 , 2 );
lcd. clear ();
lcd. setCursor ( 0 , 0 );
lcd. print ( " Hello!" );
lcd. setCursor ( 0 , 0 );
delay ( 2000 );
lcd. print ( " " );
lcd. setCursor ( 1 , 0 );
lcd. print ( "Mem" );
lcd. setCursor ( 5 , 0 );
lcd. print ( "P1" );
lcd. setCursor ( 9 , 0 );
lcd. print ( "D" );
lcd. setCursor ( 13 , 0 );
lcd. print ( "P2" );
lcd. setCursor ( 1 , 1 );
m = EEPROM . read ( 1023 );
lcd. print (m);
lcd. setCursor ( 5 , 1 );
a = EEPROM . read (m * 3 );
b = EEPROM . read (m * 3 + 1 );
c = EEPROM . read (m * 3 + 2 );
lcd. print (a);
lcd. setCursor ( 9 , 1 );
lcd. print (b);
lcd. setCursor ( 13 , 1 );
lcd. print (c);
}

void loop () {
if ( digitalRead (buttonPin1) == LOW ) {
d++;
if (d > 4 )
d = 0;
if ( digitalRead (buttonPin1) == LOW )
while ( digitalRead (buttonPin1) == LOW )
{
delay ( 10 );
}
}

if (d != dlast) {
switch (d) {
case 0 :
lcd. setCursor ( 0 , 1 );
lcd. print ( " " );
lcd. setCursor ( 4 , 1 );
lcd. print ( " " );
lcd. setCursor ( 8 , 1 );
lcd. print ( " " );
lcd. setCursor ( 12 , 1 );
lcd. print ( " " );
break ;

case 1 :
lcd. setCursor ( 0 , 1 );
lcd. print ( ">" );
break ;

case 2 :
lcd. setCursor ( 0 , 1 );
lcd. print ( " " );
lcd. setCursor ( 4 , 1 );
lcd. print ( ">" );
break ;

case 3 :
lcd. setCursor ( 4 , 1 );
lcd. print ( " " );
lcd. setCursor ( 8 , 1 );
lcd. print ( ">" );
break ;

case 4 :
lcd. setCursor ( 8 , 1 );
lcd. print ( " " );
lcd. setCursor ( 12 , 1 );
lcd. print ( ">" );
break ;

}
}
dlast = d;
n = digitalRead (A);
if ((ALast == HIGH ) && (n == LOW )) {
if ( digitalRead (B) == LOW ) {
switch (d) {
case 1 :
if (m > 1 )
m--;
EEPROM . write ( 1023 , m);
lcd. setCursor ( 1 , 1 );
lcd. print ( " " );
lcd. setCursor ( 1 , 1 );
lcd. print (m);
a = EEPROM . read (m * 3 );
b = EEPROM . read (m * 3 + 1 );
c = EEPROM . read (m * 3 + 2 );
lcd. setCursor ( 5 , 1 );
lcd. print ( " " );
lcd. setCursor ( 5 , 1 );
lcd. print (a);
lcd. setCursor ( 9 , 1 );
lcd. print ( " " );
lcd. setCursor ( 9 , 1 );
lcd. print (b);
lcd. setCursor ( 13 , 1 );
lcd. print ( " " );
lcd. setCursor ( 13 , 1 );
lcd. print (c);
break ;

case 2 :
if (a > 0 )
a--;
EEPROM . write (m * 3 , a);
lcd. setCursor ( 5 , 1 );
lcd. print ( " " );
lcd. setCursor ( 5 , 1 );
lcd. print (a);
break ;

case 3 :
if (b > 0 )
b--;
EEPROM . write (m * 3 + 1 , b);
lcd. setCursor ( 9 , 1 );
lcd. print ( " " );
lcd. setCursor ( 9 , 1 );
lcd. print (b);
break ;

case 4 :
if (c > 0 )
c--;
EEPROM . write (m * 3 + 2 , c);
lcd. setCursor ( 13 , 1 );
lcd. print ( " " );
lcd. setCursor ( 13 , 1 );
lcd. print (c);
break ;
}
} else {
switch (d) {
case 1 :
if (m < 255 )
m++;
EEPROM . write ( 1023 , m);
lcd. setCursor ( 1 , 1 );
lcd. print (m);
a = EEPROM . read (m * 3 );
b = EEPROM . read (m * 3 + 1 );
c = EEPROM . read (m * 3 + 2 );
lcd. setCursor ( 5 , 1 );
lcd. print ( " " );
lcd. setCursor ( 5 , 1 );
lcd. print (a);
lcd. setCursor ( 9 , 1 );
lcd. print ( " " );
lcd. setCursor ( 9 , 1 );
lcd. print (b);
lcd. setCursor ( 13 , 1 );
lcd. print ( " " );
lcd. setCursor ( 13 , 1 );
lcd. print (c);
break ;

case 2 :
if (a < 255 )
a++;
EEPROM . write (m * 3 , a);
lcd. setCursor ( 5 , 1 );
lcd. print ( " " );
lcd. setCursor ( 5 , 1 );
lcd. print (a);
break ;

case 3 :
if (b < 255 )
b++;
EEPROM . write (m * 3 + 1 , b);
lcd. setCursor ( 9 , 1 );
lcd. print ( " " );
lcd. setCursor ( 9 , 1 );
lcd. print (b);
break ;

case 4 :
if (c < 255 )
c++;
EEPROM . write (m * 3 + 2 , c);
lcd. setCursor ( 13 , 1 );
lcd. print ( " " );
lcd. setCursor ( 13 , 1 );
lcd. print (c);
break ;
}
}
}
ALast = n;

if ( digitalRead (buttonPin) == HIGH ) {


digitalWrite (fetPin, HIGH );
delay (a);
digitalWrite (fetPin, LOW );
delay (b);
digitalWrite (fetPin, HIGH );
delay (c);
digitalWrite (fetPin, LOW );
delay ( 200 );
if ( digitalRead (buttonPin) == HIGH )
while ( digitalRead (buttonPin) == HIGH )
{
delay ( 10 );
}
}
}

A kapcsolási rajzot igyekeztem úgy berajzolni, ha valaki úgy építi meg és ezt a programot tölti fel az
Arduino-ra, akkor működjön úgy is, de ez egyébként már a végleges verzióhoz tartozik.

Megépítés
Következhet a nyák megépítése. Én úgy gondoltam, hogy célszerűbb lenne megoldani modulárisnak,
ezért a teljesítmény részt külön vettem a vezérléstől.

A teljesítmény rész nyákja így néz majd ki:


Először is látható két nagy felület, ide fognak majd kerülni a kivezetések. A Drain részéhez megy majd
az elektróda, a Sourcehoz pedig az akkumulátor negatív sarka. Az akkumulátor pozitív kivezetése
közvetlenül kapcsolódik majd a másik elektródához. Ezeknek a vezetékeknek igen vastagnak,
legalább 16mm2-eseknek kell lenniük és maximum 1m hosszúak lehetnek, de inkább vastagabb
vezetékeket használjunk, ha lehet. A nyák mérete nálam 100x60mm lett. Kevesebb Mosfet-el ez
kisebb is lehetne és akkor már lehetne használni kisebb OLED kijelzőt is akár. A mérete ekkor a fele is
lehetne akár, mint ennek. Észrevehető még továbbra, hogy a Drain-t én a tokozásról veszem le, nem
pedig a lábáról. Ez egyrészt segíti a hűtést, másrészt kisebb lesz így az áramkör ellenállása is, ami
nagyobb áramokat eredményez.

A vezérlőegység nyákterve itt látható:

A távtartók helyeit, hogy hova kell majd kötni azokat kimértem, mint látni az ábrákon is. Ha valaki más
alkatrészeket használna, azoknak értelemszerűen máshova kell majd tenniük ezeket a pontokat. Majd
következhet a nyák kimarása. Ha valaki nem csinált még ilyet akkor a következőképpen tudja majd
megcsinálni: vesz először egy TN150-es marószert (vas-klorid), ezzel lesz majd kimarva a nyák, ha
már rajta van a minta. A mintát többféleképpen fel lehet vinni a nyákra. Létezik az egyszerű vasalásos
technika, ahol a nyáktervet kinyomtatjuk lézeres nyomtató segítségével (lehetőleg HP márkájú) egy
vastagabb fotópapírra. Majd ezt a mintát rávasaljuk a nyáklemezre, addig vasalva, amíg a papír másik
oldalán nem látjuk a mintát. De csak óvatosan szabad vasalni... A másik pedig venni egy lakkfilccel
megrajzolni, én egy ICO gyártmányú filcet használtam a nyákok megrajzolásához. Ha valakinek
szüksége lenne a pdf-re illetve a Sprint Layout nyáktervre, az itt férhet hozzá: [link]

Végeredmény
Ha megépítettük akkor majd valahogy így fog kinézni:
Itt látható hogyan lettek beültetve az alkatrészek.
Itt pedig, hogyan néz ki a teljesítmény panel. Én itt nem TC4420-as drivert használtam, hanem egy
saját készítésűt, mert ezzel volt olcsóbb.

Elektródából pedig lehetőleg minél vastagabb réz rúd, a végén pedig lekerekítéssel, ne pedig
hegyesre legyen megcsinálva, mint itt is látszik:

Itt pedig, hogy-hogyan is lehet vele hegeszteni.

Megépítési költség:
Arduino: 700-800Ft
Kijelző+I2c kon verter: 800-900Ft
Mosfetek: 3000-5000Ft
Mosfet driver: 400Ft
Enkóder: 300Ft
Nyák: 500Ft:

Sok sikert a megépítéséhez!

You might also like