Inhoudsopgave:

Spot Welder 1-2-3 Arduino Firmware - Ajarnpa
Spot Welder 1-2-3 Arduino Firmware - Ajarnpa

Video: Spot Welder 1-2-3 Arduino Firmware - Ajarnpa

Video: Spot Welder 1-2-3 Arduino Firmware - Ajarnpa
Video: Spot Welder 1-2-3 UI 2024, November
Anonim
Image
Image

Waarom nog een puntlasproject?

Het bouwen van een puntlasmachine is een van de (aantoonbaar weinige) gevallen waarin je iets kunt bouwen voor een fractie van de prijs van de commerciële versie met vergelijkbare kwaliteit. En zelfs als build-before-buy geen winnende strategie zou zijn, is het erg leuk!

Dus besloot ik aan het project te beginnen en ik keek hoe andere mensen dit hebben gedaan. Er is letterlijk een heleboel interessante informatie en video's hierover op het net, met een vrij grote variatie in kwaliteit van ontwerp en constructie.

De kwaliteit van de constructie die men realistisch kan bereiken, hangt af van de beschikbare gereedschappen, machines en faciliteiten, dus het was niet verrassend om een vrij grote variatie op dit front te zien. Aan de andere kant had ik niet verwacht te zien dat de meeste projecten gewoon een simpele handmatige schakelaar gebruiken om het lasproces te starten en te stoppen.

Nauwkeurige controle van de lastijd is de sleutel tot de kwaliteit van uw lassen, en u kunt dat niet bereiken door een schakelaar met de hand om te zetten.

Ik had het gevoel dat, hoewel het bouwen van een puntlasmachine een onderwerp is dat waarschijnlijk al doodgeslagen is, je misschien een betere machine zou kunnen maken door het driestapslasproces met nauwkeurige timings te gebruiken, zoals professionele machines doen. Dus gaf ik mezelf vijf hoofdontwerpdoelen voor mijn project:

Ondersteuning voor driestaps lasproces

Nauwkeurige en configureerbare timings

Mogelijkheid om lasprofielen permanent op te slaan en op te halen

Eenvoud van ontwerp en bouw

Gebruik van alleen algemeen verkrijgbare componenten

Het resultaat is mijn 1-2-3 Spot Welder, en in deze instructable zal ik het lasprocesbesturingsgedeelte van het project uitleggen. De video en deze instructable tonen foto's van het prototype testlasser, voordat alle componenten in een goede behuizing zijn gemonteerd. Een bord voor dit project wordt beschreven in een aparte instructable.

Als u vertrouwd moet raken met het concept van weerstandslassen en hoe u een lasser kunt maken met behulp van een microgolftransformator, doe dit dan voordat u verder leest. Ik zal me concentreren op de controle van de lasser, niet op hoe een lasser werkt of hoe een lasser te bouwen. Ik heb het gevoel dat dit elders goed wordt behandeld.

Stap 1: Recept

1-2-3 Lassen
1-2-3 Lassen

Laten we eens kijken naar de componenten van een weerstandslasser:

Lassen transformator. Levert de laagspanning/hoge stroomuitgang die nodig is voor weerstandslassen door conversie van de AC-lijnspanning. Voor een zelfgemaakte lasser wordt de lastransformator normaal gesproken verkregen door een magnetrontransformator om te zetten voor een laagspannings-, hoge stroomuitgang. Dit wordt gedaan door de hoogspannings-secundaire wikkeling van de APK te verwijderen en een nieuwe secundaire wikkeling te wikkelen bestaande uit enkele windingen van een zeer dikke koperen kabel. Er zijn veel video's op YouTube die je laten zien hoe je dit doet

Stroomcircuit. Schakelt de lastransformator in en uit, en de werking ervan wordt geregeld door het regelcircuit. Het stroomcircuit werkt op netspanning

Besturingsschakeling. Regelt alle bewerkingen voor de lasser:

    Hiermee kan de gebruiker lastijden instellen en wijzigen

    • Hiermee kan de gebruiker lastijden opslaan en ophalen.
    • En, last but not least, stelt de gebruiker in staat om een lasproces te starten door commando's te sturen naar het Power Circuit, dat de transformator in- en uitschakelt.

gebruikersinterface. De gebruiker communiceert met het regelcircuit via een gebruikersinterface

Deze instructable beschrijft de gebruikersinterface en het besturingscircuit. Het ontwerp van de gebruikersinterface en het besturingscircuit dat ik voorstel, zijn eigenlijk vrij onafhankelijk van de andere blokken en kunnen eenvoudig achteraf worden aangebracht op een bestaande puntlasmachine, op voorwaarde dat uw huidige incarnatie van het vermogenscircuit het digitale uitgangssignaal van het besturingscircuit aankan. Dus als u al een elektronisch geschakelde lasser heeft, kunt u de hier beschreven besturings- en UI-componenten daarbovenop toevoegen zonder andere wijzigingen.

Als je nu alleen een handmatige aan / uit-schakelaar hebt, moet je ook een stroomcircuit bouwen.

Voordat we de werking van de firmware voor het regelcircuit beschrijven, laten we eerst wat meer in detail kijken hoe het lasproces werkt.

Stap 2: 1-2-3 Lassen

Professionele lasmachines lassen niet in één stap; ze gebruiken een geautomatiseerde reeks van drie stappen. Weerstandslassen in drie stappen bestaat uit:

Opwarmstap. Lastransformator is ingeschakeld en stroom vloeit via de elektroden door de werkstukken. Dit is bedoeld om het metaal alleen maar op te warmen

Druk op stap: Lastransformator is uitgeschakeld; de werkstukken worden strak tegen elkaar gedrukt gehouden. De zacht geworden, hete metalen werkstukken maken nu een zeer goed mechanisch en elektrisch contact

Lasstap: Lastransformator wordt weer ingeschakeld. De metalen oppervlakken die nu in nauw contact staan, worden onder druk gelast

De duur van de afzonderlijke stappen is over het algemeen niet uniform en hangt af van de beschikbare stroom van de lasser, het type materiaal dat u probeert te lassen (voornamelijk de weerstand en het smeltpunt) en de dikte van de werkstukken.

Veel van de zelfgebouwde lassers die ik heb leren kennen, hebben geen geautomatiseerde timingcontrole, wat een herhaalbare en betrouwbare werking erg moeilijk maakt.

Sommige hebben wel de mogelijkheid om een lastijd in te stellen, vaak via een potentiometer. Kerry Wong heeft een hele mooie gedaan in deze klasse met een extra paar elektroden speciaal om batterijen te lassen.

Er zijn maar weinig zelfgebouwde lassers die de drie lasstappen zoals hierboven beschreven automatisch kunnen uitvoeren. Sommige hebben slechts één set vaste looptijden, zoals deze en deze. Bij anderen kun je een aantal van de looptijden wijzigen, zoals bij deze. Het heeft een vaste duur voor de opwarm- en persstappen, terwijl de duur van de lasstap kan worden gewijzigd via een potentiometer.

Dit maakt het proces gedeeltelijk instelbaar, maar het kan moeilijk zijn om opnieuw een instelling te vinden wanneer u dat specifieke batterijlipmateriaal na enige tijd opnieuw wilt lassen. Als je eenmaal de juiste timing voor een bepaalde materiaal- en diktecombinatie hebt gevonden, wil je het niet opnieuw hoeven te doen. Het is een verspilling van tijd (en materiaal), en het kan een beetje frustrerend zijn.

Wat je (nou ja, ik) hier echt wilt, is volledige flexibiliteit (configureerbaarheid) voor alle timings en de mogelijkheid om instellingen op te slaan en op te halen zodra we ze goed hebben.

Gelukkig is het niet zo moeilijk. Laten we eens kijken hoe u weerstandslassen in drie stappen kunt regelen.

Stap 3: 1-2-3 lascontrole

1-2-3 Lascontrole
1-2-3 Lascontrole

We implementeren het besturingscircuit met een microcontroller (MCU). De MCU-firmware werkt als een toestandsmachine met vier toestanden zoals we in de vorige stap zagen:

o Toestand 0: Niet lassen

o Toestand 1: Lassen, opwarmstap

o Status 2: Lassen, druk op stap

o Toestand 3: Lassen, lasstap

Ik gebruik pseudo-code in C-stijl om de programmastroom hier te beschrijven, omdat het gemakkelijk te relateren is aan de eigenlijke MCU-code die in C/C++ is geschreven.

Na de instellingsstap behandelt de MCU-hoofdlus de gebruikersinvoer en statusovergangen als volgt:

01: lus

02: switch (status) { 03: case 0: 04: readUserInput 05: case 1, 2, 3: 06: if (lastimer is verstreken) { 07: // ga naar de volgende status 08: status = (status + 1) % 4; 09: schakel vermogensregeling 10: if (status is niet 0) { 11: stel de nieuwe stapduur in en herstart de lastimer 12: } 13: } 14: eindlus

Als de huidige status 0 is, lezen we de UI-status om gebruikersinvoer te verwerken en door te gaan naar de volgende iteratie.

We gebruiken een lastimer om de duur van de lasstappen te regelen. Stel nu dat de lasvolgorde net is begonnen wanneer we de switch-instructie invoeren. De stroomregeling is ingeschakeld, de lastransformator is bekrachtigd en de huidige status is 1.

Als de lastimer niet is verstreken, wordt de voorwaardelijke (regel 6) geëvalueerd als onwaar, we verlaten de switch-instructie en gaan verder met de volgende iteratie van de gebeurtenislus.

Als de lastimer is verstreken, gaan we de voorwaardelijke (regel 6) in en gaan we verder:

1. Bereken en sla de volgende toestand op (regel 8). We gebruiken modulo 4 rekenkunde om de correcte toestandsvolgorde 1-2-3-0 te volgen. Als de huidige toestand 1 was, gaan we nu naar toestand 2.

2. Vervolgens schakelen we de vermogensregeling in (regel 9). In stand 1 stond de vermogensregeling aan, dus nu is deze uit (zoals het hoort in stand 2, druk op stap, met de lastransformator niet bekrachtigd).

3. De staat is nu 2, dus we voeren de voorwaardelijke in op regel 10.

4. Stel de lastimer in voor de nieuwe stapduur (duur van de drukstap) en start de lastimer opnieuw (regel 11).

De volgende herhalingen van de hoofdlus zullen vrij rustig verlopen totdat de lastimer weer afloopt, d.w.z. de persstap is voltooid.

Op dit moment voeren we het lichaam van de voorwaardelijke in op regel 6. De volgende staat (toestand 3) wordt berekend op regel 8; de stroom naar de transformator wordt weer ingeschakeld (lijn 9); de lastimer wordt ingesteld op de duur van de lasstap en opnieuw gestart.

Als de timer weer afloopt, wordt de volgende toestand (toestand 0) berekend op regel 8, maar nu wordt regel 11 niet uitgevoerd, dus de timer wordt niet opnieuw gestart omdat we klaar zijn met de lascyclus.

Bij de volgende lus-iteratie zijn we terug bij het verwerken van gebruikersinvoer (regel 4). Gedaan.

Maar hoe beginnen we überhaupt met het lasproces? Welnu, we beginnen wanneer de gebruiker op de lasknop drukt.

De lasknop is verbonden met een MCU-invoerpin, die is bevestigd aan een hardware-interrupt. Als u op de knop drukt, treedt er een onderbreking op. De interrupt-handler start het lasproces door de status in te stellen op 1, de lastimer in te stellen op de duur van de opwarmstap, de lastimer te starten en de stroomregeling in te schakelen:

19: start Lassen

20: status = 1 21: stel de duur van de opwarmstap in en start de lastimer 22: schakel de vermogensregeling in 23: einde startLassen

Stap 4: UI-beheer, stand-by en andere firmware-complicaties

UI-beheer, stand-by en andere firmware-complicaties
UI-beheer, stand-by en andere firmware-complicaties

De gebruikersinterface bestaat uit een display, een encoder met drukknop, een momentele drukknop en een led. Ze worden als volgt gebruikt:

Het display geeft feedback aan de gebruiker voor configuratie en toont de voortgang tijdens het lassen

De encoder met drukknop regelt alle interactie met de firmware, behalve het starten van een lassequentie

De kortstondige drukknop wordt ingedrukt om een lasreeks te starten

De led brandt tijdens een lasreeks en gaat herhaaldelijk in en uit tijdens stand-by

Er zijn een aantal dingen die de firmware moet doen naast het regelen van het lasproces zoals uitgelegd in de vorige stap:

Gebruikersinvoer lezen. Dit omvat het lezen van de encoderpositie en knopstatus. De gebruiker kan de encoder naar links of rechts draaien om van het ene menu-item naar het volgende te gaan en om parameters op het display te wijzigen, of kan op de encoderknop drukken om een ingevoerde waarde te bevestigen of om een niveau hoger in de menustructuur te gaan

  • De gebruikersinterface bijwerken.

    Het display wordt bijgewerkt om gebruikersacties weer te geven

    Het display wordt bijgewerkt om de voortgang van het lasproces weer te geven (we tonen een indicator naast de duur van de huidige stap in de lasprocedure)

    De led gaat aan als we beginnen met lassen en uit als we klaar zijn

Stand-by. De code houdt bij hoe lang de gebruiker inactief is geweest en gaat in stand-by wanneer de inactiviteitsperiode een vooraf ingestelde limiet overschrijdt. In stand-by is het display uitgeschakeld en gaat de led op de gebruikersinterface herhaaldelijk in en uit om de stand-bytoestand aan te geven. De gebruiker kan stand-by verlaten door de encoder in beide richtingen te draaien. In stand-by zou de gebruikersinterface niet moeten reageren op andere gebruikersinteracties. Merk op dat de lasser alleen in stand-by mag gaan als hij in toestand 0 is, b.v. niet tijdens het lassen

Standaard beheer, opslaan en ophalen van profielen. De firmware ondersteunt 3 verschillende lasprofielen, d.w.z. instellingen voor 3 verschillende materialen/diktes. De profielen worden opgeslagen in het flashgeheugen, zodat ze niet verloren gaan wanneer u de lasser uitschakelt

Voor het geval je het je afvraagt, ik heb de standby-functie toegevoegd om inbranden van het scherm te voorkomen. Wanneer het lasapparaat is ingeschakeld en u de gebruikersinterface niet gebruikt, veranderen de tekens op het scherm niet en kunnen ze inbranden. Uw kilometerstand kan variëren, afhankelijk van de schermtechnologie, maar ik gebruik een OLED-scherm en ze zijn gevoelig voor Branden vrij snel in als er niet voor wordt gezorgd, dus het is een goed idee om de automatische weergave uit te schakelen.

Al het bovenstaande compliceert natuurlijk de "echte" code. Je kunt zien dat er wat meer werk aan de winkel is dan waar we in de vorige stappen naar hebben gekeken om een mooi ingepakt stukje software te krijgen.

Dit bevestigt de regel dat bij software de implementatie van wat je om de kernfunctionaliteit heen bouwt vaak complexer is dan de implementatie van de kernfunctionaliteit zelf!

U vindt de volledige code in de repository-link aan het einde van dit instructable.

Stap 5: Besturingscircuit

Besturingsschakeling
Besturingsschakeling

De firmware is ontwikkeld en getest met behulp van deze componenten:

  • Besturingsschakeling:

    Arduino Pro Mini 5V 16MHz

  • gebruikersinterface:

    • Roterende encoder met drukknop
    • 0,91” 128x32 I2C Wit OLED-scherm DIY op basis van SSD1306
    • Momentdrukknop met ingebouwde led

Natuurlijk hoeft u niet precies deze componenten in uw build te gebruiken, maar het kan zijn dat u enkele codewijzigingen moet aanbrengen als u dat niet doet, vooral als u de weergave-interface, het type of de grootte wijzigt.

Arduino Pin-toewijzing:

  • Invoer:

    • Pinnen A1 A2 A3 naar roterende encoder gebruikt om profielen en parameters te selecteren/wijzigen
    • Pin 2 aangesloten op een tijdelijke drukknop die wordt ingedrukt om te beginnen met lassen. De drukknop wordt normaal gesproken op een paneel naast de encoder gemonteerd en kan parallel worden aangesloten op een pedaalschakelaar.
  • Uitgang:

    • Pinnen A4/A5 voor I2C die het display besturen.
    • Pin 11 voor digitale uitgang naar de led, die aanstaat tijdens een lascyclus, en in en uit fadet tijdens standby. Er is geen stroombegrenzende weerstand voor de led in het schema omdat ik een led heb gebruikt die in de lasknop is ingebouwd en die met een serieweerstand is geleverd. Als je een aparte led gebruikt, moet je ofwel een weerstand in serie toevoegen tussen pin 11 van de Pro Mini en pin 3 van connector J2, of deze in serie solderen met de led op het voorpaneel.
    • Pin 12 voor digitale uitgang naar het netvoedingscircuit (ingang naar voedingscircuit). Deze pin is normaal gesproken LAAG en wordt HOOG-LAAG-HOOG tijdens een lascyclus.

Na het prototypen op een breadboard, heb ik het stuurcircuit op een op zichzelf staand protobord gemonteerd, inclusief een netvoedingsmodule (HiLink HLK-5M05), de condensator en weerstanden om de lasknop te debouncen, en connectoren voor display, encoder, led, knop en uitgangsstroomcircuit. De aansluitingen en componenten zijn weergegeven in het schema (behalve de netvoedingsmodule).

Er is ook een connector (J3 in het schema) voor een voetschakelaar die parallel is aangesloten op de lasknop, zodat men kan beginnen met lassen vanaf het paneel of met een voetschakelaar, wat ik veel handiger vind.

De J4-connector wordt aangesloten op de optocoupler-ingang van het stroomcircuit, dat in het prototype op een apart proto-bord is gemonteerd.

Voor de aansluiting op het display (J6-connector), vond ik het eigenlijk gemakkelijker om een 4-aderige platte kabel te gebruiken met twee draden naar een twee-pins-connector (overeenkomend met pinnen 1, 2 van J6), en twee draden met Dupont vrouwelijk connectoren die rechtstreeks naar pinnen A4 en A5 gaan. Op A4 en A5 heb ik een twee-pins mannelijke header direct bovenop het Pro Mini-bord gesoldeerd.

Ik zal waarschijnlijk ook debouncing voor de encoderknop toevoegen in de uiteindelijke build. Een verbeterd PCB-ontwerp voor dit project wordt beschreven in een aparte instructable.

Stap 6: Stroomkring

Stroomcircuit
Stroomcircuit

WAARSCHUWING: Het stroomcircuit werkt op netspanning met stromen die ruim voldoende zijn om u te doden. Als u geen ervaring heeft met netspanningscircuits, probeer er dan geen te bouwen. U moet minimaal een scheidingstransformator gebruiken om werkzaamheden aan netspanningscircuits uit te voeren.

Het schema voor het stroomcircuit is zeer standaard voor een aansturing van een inductieve belasting met een TRIAC. Het signaal van het stuurcircuit stuurt de emitterzijde van de MOC1-optocoupler aan, de detectorzijde stuurt op zijn beurt de poort van de T1-triac aan. De triac schakelt de belasting (de APK) via een snubbernetwerk R4/CX1.

Optocoupler. De MOC3052 is een optocoupler met willekeurige fase, niet het nuldoorgangstype. Het gebruik van willekeurige-faseschakeling is geschikter dan nuldoorgangsschakeling voor een zware inductieve belasting zoals de MOT.

TRIAC. De T1-triac is een BTA40 die is geclassificeerd voor een continue stroom van 40 A, wat misschien een overkill lijkt in termen van de stroom die door de APK in stabiele toestand wordt getrokken. Aangezien de belasting echter een vrij hoge inductantie heeft, moeten we ons zorgen maken over de niet-repetitieve piekstroom in de staat. Dit is de inschakelstroom van de belasting. Deze wordt elke keer tijdens de inschakelstroom door de APK getrokken en zal meerdere malen hoger zijn dan de aan-statusstroom. De BTA40 heeft een niet-repetitieve piekstroom van 400 A bij 50 Hz en 420 A bij 60 Hz.

TRIAC-pakket. Nog een reden om voor een BTA40 te kiezen, is dat deze wordt geleverd in een RD91-verpakking met geïsoleerd lipje en mannelijke spade-aansluitingen heeft. Ik weet niet hoe het met u zit, maar ik geef de voorkeur aan een geïsoleerd lipje voor vermogenshalfgeleiders op netspanning. Bovendien bieden de mannelijke spade-aansluitingen een solide mechanische verbinding waarmee het hoge stroompad (draden gemarkeerd met A in het schema) volledig van de proto- of printplaat kan worden gehouden. Het hoge stroompad gaat via de (dikkere) bruine draden gemarkeerd met A in de afbeelding. De bruine draden zijn verbonden met de triac-spade-klemmen via piggyback-klemmen die ook via de (dunnere) blauwe draden zijn verbonden met het RC-net op het bord. Met deze montagetruc is het hoge stroompad van de proto- of printplaat. In principe zou je hetzelfde kunnen doen met soldeerdraden op de pootjes van het meer gebruikelijke TOP3-pakket, maar de montage zou mechanisch minder betrouwbaar zijn.

Voor het prototype heb ik de triac op een kleine heatsink gemonteerd met het idee om wat temperatuurmetingen te doen en deze eventueel op een grotere heatsink te monteren of zelfs in direct contact met de metalen behuizing voor de uiteindelijke build. Ik merkte op dat de triac nauwelijks opwarmt, deels omdat hij voldoende groot is, maar vooral omdat de meeste vermogensdissipatie in de junctie te wijten is aan het schakelen van de geleidingstoestand en de triac duidelijk niet vaak schakelt in deze toepassing.

Snubber netwerk. R4 en CX1 zijn het snubbernetwerk om de veranderingssnelheid te beperken die de triac ziet wanneer de belasting is uitgeschakeld. Gebruik geen condensator die u in uw reserveonderdelenbak heeft: CX1 moet een X-type (of beter Y-type) condensator zijn die geschikt is voor gebruik met netspanning.

Varistor. R3 is een varistor die is aangepast aan de piekwaarde van uw netspanning. Het schema toont een varistor met een nominale waarde van 430 V, wat geschikt is voor een netspanning van 240 V (let op, de nominale spanning in de varistor-code is een piekwaarde, geen RMS-waarde). Gebruik een varistor die geschikt is voor 220V-piek voor een netspanning van 120V.

Componentfout. Het is een goede gewoonte om uzelf af te vragen wat de gevolgen zijn van het uitvallen van onderdelen en de ergste scenario's te identificeren. Een slechte zaak die in dit circuit kan gebeuren, is dat de triac uitvalt en de A1/A2-aansluitingen kortsluit. Als dit gebeurt, wordt de APK permanent geactiveerd zolang de triac is kortgesloten. Als u de transformator niet zou horen brommen en zou lassen met de APK permanent erop, zou u het werkstuk/de elektroden oververhitten/ruïneren (niet leuk), en mogelijk de kabelisolatie oververhitten/smelten (zeer slecht). Het is dus een goed idee om voor deze storingsconditie een waarschuwing in te bouwen. Het makkelijkste is om een lamp parallel aan de APK-primair aan te sluiten. De lamp gaat branden wanneer de APK is ingeschakeld en geeft een visueel signaal dat de lasser werkt zoals bedoeld. Mocht het licht aan gaan en blijven branden, dan weet je dat het tijd is om de stekker eruit te trekken. Als je de video aan het begin hebt bekeken, is het je misschien opgevallen dat tijdens het lassen een rood lampje op de achtergrond aan en uit gaat. Dit is wat dat rode licht is.

Een APK is geen erg goed opgevoede belasting, maar ondanks dat ik me aanvankelijk een beetje zorgen maakte over de betrouwbaarheid van het schakelen via het stroomcircuit, heb ik geen problemen gezien.

Stap 7: Laatste opmerkingen

Laatste opmerkingen
Laatste opmerkingen

Nou, allereerst heel erg bedankt aan de vele mensen die de tijd hebben genomen om op het net uit te leggen hoe je een puntlasapparaat bouwt met behulp van een hergebruikte magnetrontransformator. Dit is een enorme boost geweest voor het hele project.

Wat de Spot Welder 1-2-3-firmware betreft, zou het een lang en vervelend werk zijn geweest om de code te schrijven zonder de abstracties die worden geboden door een aantal bibliotheken naast de standaard Arduino IDE. Ik vind deze timer (RBD_Timer), encoder (ClickEncoder), menu's (MenuSystem) en EEPROM (EEPROMex) bibliotheken erg handig.

De firmwarecode kan worden gedownload van de Spot Welder 1-2-3 coderepository.

Als je van plan bent om dit te bouwen, raad ik je ten zeerste aan om het hier beschreven PCB-ontwerp te gebruiken, dat een aantal verfijningen bevat.

Aanbevolen: