Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Lasergraveren met DIY Arduino SCARA Robot

In deze tutorial laat ik je zien hoe ik mijn DIY 3D-geprinte SCARA-robotarm die ik in een van mijn vorige video's heb gebouwd, heb geconverteerd om als lasergraveerder te werken. Je kunt de video na de video bekijken of het onderstaande artikel lezen.

Projectoverzicht

De SCARA-robot heeft 4 vrijheidsgraden die worden aangedreven door 4 NEMA 17-stappenmotoren en worden bestuurd met behulp van een Arduino-bord. In de originele video gebruikte ik een Arduino UNO-bord in combinatie met een CNC Shield, maar nu gaan we een Arduino MEGA-bord gebruiken in combinatie met een RAMPs-bord. We hebben deze combinatie nodig omdat we de Marlin 3D Printer-firmware zullen gebruiken voor het besturen van de robot.

Wat betreft het mechanische gedeelte, ik moest alleen het grijpermechanisme vervangen door een lasermodule. In dit geval gebruik ik een lasermodule van 5,5 W, wat goed genoeg is voor graveren.

Een coole functie die we krijgen met deze SCARA-robotopstelling, is dat we een groter bereik van de Z-as-beweging kunnen hebben en dus grotere objecten kunnen lasergraveren.

Het werkgebied is ook behoorlijk indrukwekkend gezien de kleine voetafdruk van de robot. Het kan zowel het gebied ervoor als aan beide kanten gebruiken. We kunnen het zelfs zo instellen dat bijna de hele 360 ​​graden rond de robot als werkgebied wordt gebruikt. We kunnen dat doen dankzij de open-source Marling 3D-printerfirmware met opties voor lasergraveren en SCARA-robotconfiguratie.

Voor het genereren van de G-codes gebruik ik nog een andere open-source software, Inkscape en een plug-in ervoor genaamd Inkscape-Lasertools. We kunnen G-codes genereren met alleen contouren of met contouren en infill van hetzelfde vectorbeeld, en we hebben verschillende opties zoals het aanpassen van de laserstraal, rijsnelheid, infill-snelheid, omtreksnelheid, laser aan en uit commando's inclusief PWM-besturing van de laser enzovoort.

Desalniettemin zal ik je nu door het hele proces leiden van het opzetten van een SCARA-robot om als lasergraveerder te werken. We zullen kijken naar het ontwerp van deze SCARA-robot, hoe we de Marlin-firmware kunnen installeren en configureren volgens onze machine, en hoe we de tekeningen en de G-codes voorbereiden voor het graveren. Dus laten we beginnen.

Ontwerp en 3D-model

Hier is een snelle blik op het 3D-model van deze SCARA-robot, zodat je kunt zien hoe het werkt voor het geval je de originele tutorial nog niet hebt bekeken waarin ik in detail uitleg hoe ik het heb gebouwd.

De robot is zo ontworpen dat de meeste onderdelen eenvoudig in 3D kunnen worden geprint. De verbindingen worden aangedreven door NEMA 17 stappenmotoren waarvan de snelheid wordt verminderd met behulp van GT2-riemen en enkele geschikte 3D-geprinte GT2-poelies. De robot heeft 4 vrijheidsgraden, maar in dit geval hebben we slechts 3 DOF nodig, twee rotaties om een ​​willekeurig punt in het werkgebied te bereiken en één lineaire beweging om de hoogte van de laser aan te passen.

Het 4e gewricht dat de eindeffector roteert, wordt niet gebruikt, hoewel de lasermodule erop wordt bevestigd. Ik heb de houder voor de laser zo gemaakt dat de laserstraal zich in het rotatiecentrum van die 4e as bevindt, dus zelfs als de as draait, heeft dit geen invloed op de uiteindelijke positie.

U kunt dit 3D-model vinden en downloaden, en het ook verkennen in uw browser op Thangs:

Download het 3D-assemblagemodel van Thangs.

Bedankt Thangs voor het ondersteunen van deze tutorial.

STL-bestanden voor 3D-printen:

Gesponsord


Ik heb deze SCARA-robot ontworpen met behulp van 3DEXPERIENCE SOLIDWORKS for Makers, dat ook de sponsor is van deze video. Ja, je hebt het goed gehoord. Met 3DEXPERIENCE SOLIDWORKS for Makers brengt SOLIDWORKS eindelijk hun toonaangevende ontwerptools naar allerlei soorten makers tegen een waanzinnig lage prijs.

Makers hebben nu toegang tot de beste SOLIDWORKS-ontwerptools voor slechts $ 99 per jaar, maar voor MIJN kijkers biedt SOLIDWORKS een tijdelijke aanbieding waarmee je deze tools nog goedkoper krijgt!

Klopt. Voor kijkers van deze video:je kunt vandaag deze bundel krijgen – die een cloud-verbonden versie van SOLIDWORKS bevat, evenals browsergebaseerde ontwerptools zoals 3D Creator en 3D Sculptor – voor een speciale prijs van 20% zolang de voorraad strekt!

Het enige wat u hoeft te doen is op mijn volgende link te klikken en uw gratis 3DEXPERIENCE ID aan te maken, waarmee u toegang krijgt tot deze speciale aanbieding van 20% korting - zodat u vandaag met het beste kunt beginnen. Grote dank aan SOLIDWORKS voor het sponsoren en ondersteunen van educatieve inhoud zoals deze.

Bekijk SOLIDWORKS voor makers

20% korting op SOLIDWORKS voor makers


De lasermodule installeren

Eerst heb ik het grijpmechanisme van de robot verwijderd, dat met vier bouten op zijn plaats werd gehouden.

De draden die worden gebruikt voor het besturen van de grijperservo worden nu gebruikt voor het besturen van de lasermodule.

De specifieke lasermodule die ik heb, werkt op 12V en kan worden bestuurd met behulp van een PWM-signaal met slechts twee draden, aarde en VCC. Voor het aansluiten van de laser heb ik de connector gebruikt die bij de module zit, die met de 3 pinnen. De linker zwarte draad is aarde en de middelste, de witte draad in mijn geval is de VCC. Ik heb twee mannelijke jumper-draadconnectoren aan deze draden gesoldeerd, zodat ik ze gemakkelijk kan aansluiten op de draden voor de eindeffector.

Dan plaats ik gewoon de connector op zijn plaats, steek de draad door een van de openingen van de houder en zet de lasermodule vast met twee M3-bouten. Met vier M4-bouten heb ik de lasermodule aan de robot bevestigd.

Vervolgens hebben we, zoals ik eerder al zei, in plaats van het Arduino UNO-bord dat ik gebruikte voor het besturen van de robot in de originele video, nu een Arduino MEGA-bord en een combinatie met een RAMPS-bord nodig.

Hier moeten we eerst de stapresolutie van de stuurprogramma's selecteren. Voor een vloeiendere beweging moeten we natuurlijk de hoogst mogelijke resolutie selecteren door drie jumpers toe te voegen voor elke stepper-driver. Ik gebruik de A4988-stappendriver met een resolutie van 16 stappen, maar we kunnen ook de DRV8825-stappendriver gebruiken met een resolutie van 1/32 stappen.

Dan kunnen we alle draden op hun plaats aansluiten. Ik had al mijn draden gemarkeerd, zodat ik ze niet verpruts.

SCARA Robot Laser Engraver Circuit Diagram

Hier is het schakelschema van hoe alles moet worden aangesloten.

De stappenmotoren gaan recht boven de drivers en de eindschakelaars die normaal gesloten zijn met twee draden gaan respectievelijk naar de eindstops S en - pinnen voor elke as.

Voor het aansturen van de lasermodule zullen we de pin D9 gebruiken die in een 3D-printeropstelling wordt gebruikt voor het aansturen van een ventilator. Deze pin is PWM-compatibel, zodat we de intensiteit van de laser ermee kunnen regelen. Voor het voeden van alles hebben we een 12V-voeding nodig met een minimale stroomsnelheid van 3A.

U kunt de componenten die nodig zijn voor dit project verkrijgen via de onderstaande links:

  • Stappenmotor – NEMA 17……………… 
  • A4988 Stepper-stuurprogramma………………..… 
  • RAMPS 1.6-bord……………………..…
  • Arduino MEGA……………….…..………
  • Eindschakelaar …………………………………. AmazonBanggood  / AliExpress
  • DC-voeding …………………………. Amazon  / Banggood  / AliExpress
  • Lasermodule ……………………………… Amazon / Banggood / AliExpress
  • Laser veiligheidsbril ………………….. Amazon / Banggod / AliExpress

Wat betreft de mechanische componenten, u kunt het originele artikel raadplegen.

Nadat ik alles had aangesloten zoals uitgelegd, kneep ik een beetje in de draden en bedekte elektronica zodat alles er mooi en schoon uitziet.

De montage afmaken

Er is nog één ding dat ik op mijn SCARA-robot moest veranderen, zodat deze goed werkt, en dat is om te veranderen wanneer de eindschakelaar van de tweede arm wordt geactiveerd. Omdat de SCARA-robot rechtshandig gaat werken, moet de homing van de tweede arm op 0 graden zijn, of in lijn met de eerste arm, terwijl hij naar links moet kunnen draaien. Voor dat doel heb ik eenvoudig een klein stukje op het armgewricht gelijmd, zodat het de eindschakelaar op de beschreven positie activeert.

Eigenlijk is er nog een klein detail dat ik moest veranderen. De oorspronkelijke trekker van de eindschakelaar verstoorde een van de moeren aan de onderkant van de arm, zodat de arm zijn volledige beweging niet kon bereiken.

Ik heb die moer eenvoudig verwijderd en vervangen door een inzetstuk met schroefdraad, zodat het niet uitsteekt als het onderdeel weer op zijn plaats wordt vastgezet.

En dat is het. De SCARA-robot is nu klaar om te werken als lasergraveerder, maar natuurlijk moeten we eerst de firmware op het Arduino-bord installeren.

Zie ook: DIY Arduino-robotarm met smartphonebediening

Marlin-firmware voor lasergraveren met SCARA-robot

Zoals ik al zei, zal ik de Marlin-firmware gebruiken, een van de meest gebruikte open source-firmware voor 3D-printers, die ook opties heeft voor lasergravure en SCARA-robotopstellingen. We kunnen de Marlin-firmware downloaden van de officiële website of Github.com.

Om de Marlin-firmware op het Arduino MEGA-bord te installeren, gebruiken we PlatformIO IDE in plaats van Arduino IDE. Omdat de Marlin-firmware groot en complex is, kan de Arduino IDE soms fouten geven en niet kunnen compileren.

PlarformIO is gebouwd bovenop de Visual Studio Code-editor en kan als uitbreiding daarop worden geïnstalleerd. Dit betekent dat we eerst Visual Studio Code moeten installeren, vervolgens naar PlatformIO moeten zoeken in de extensiemanager en het vanaf daar moeten installeren.

Zodra de installatie is voltooid, kunnen we op de knop Project openen klikken, naar de Marlin-map navigeren die we hebben gedownload en uitgepakt en op "Marlin openen" klikken.

Hiermee worden alle Marlin-bestanden in de editor geladen, zodat we ze kunnen openen en bewerken. De twee belangrijkste bestanden waarin we alle aanpassingen doen volgens onze machineconfiguratie, zijn de Configuration.h- en Configuration_adv.h-bestanden.

Voordat we de Marlin-map openen, moeten we eigenlijk eerst naar de configuratierepository op Github.com gaan van waaruit we enkele vooraf geteste configuratiebestanden kunnen downloaden die voor ons geschikt zijn. In de map "Voorbeelden" moeten we naar de map "SCARA" gaan en deze twee configuratiebestanden kopiëren en in onze Marlin-map plakken.

Zie ook: Hoe GRBL in te stellen & Bedien CNC-machine met Arduino

De Marlin-firmware configureren

Dus zodra we de Marlin-map opnieuw openen met de "SCARA"-configuratiebestanden, kunnen we het Configuration.h-bestand openen en enkele parameters volgens onze machine bewerken. Het eerste wat je hier moet doen, is het type SCARA-robot selecteren dat we hebben.

/**
 * MORGAN_SCARA was developed by QHARLEY in South Africa in 2012-2013.
 * Implemented and slightly reworked by JCERNY in June, 2014.
 */
//#define MORGAN_SCARA

/**
 * Mostly Printed SCARA is an open source design by Tyler Williams. See:
 *   https://www.thingiverse.com/thing:2487048
 *   https://www.thingiverse.com/thing:1241491
 */
#define MP_SCARA

#if EITHER(MORGAN_SCARA, MP_SCARA)
  // If movement is choppy try lowering this value
  #define SCARA_SEGMENTS_PER_SECOND 100

  // Length of inner and outer support arms. Measure arm lengths precisely.
  #define SCARA_LINKAGE_1  228.15  // Arm 1 lenght - 228(mm)
  #define SCARA_LINKAGE_2 136.2    // Arm 2 lenght - 136.5(mm)

  // SCARA tower offset (position of Tower relative to bed zero position)
  // This needs to be reasonably accurate as it defines the printbed position in the SCARA space.
  #define SCARA_OFFSET_X    300       // (mm)
  #define SCARA_OFFSET_Y    150       // (mm)Code language: Arduino (arduino)

De "MORGAN_SCARA" is voor parallelle SCARA-robot en de "MP_SCARA" is voor seriële SCARA-robot, net zoals degene die we hebben. Dit is gebaseerd op een open-sourceontwerp van Tyler Williams dat inverse kinematica implementeert op de G-codes die worden gegenereerd voor normale cartesiaanse systemen.

In mijn vorige tutorial heb ik al uitgelegd wat inverse kinematica is en hoe het werkt met deze SCARA-robot, dus voor meer details kun je die tutorial bekijken. In het kort, met inverse kinematica berekenen we onder welke hoeken de twee armen moeten positioneren om een ​​gegeven X, Y-coördinaat te bereiken. De wiskunde achter de inverse kinematica is gebaseerd op trigonometrie en het resultaat hangt uitsluitend af van de lengte van de twee armen.

Dat gezegd hebbende, moeten we hier de lengte van de robotarmen invoeren, en in dit geval is dat 228 mm voor de eerste arm en 136,5 mm voor de tweede arm. De volgende parameter die we moeten instellen, is de nulpositie van het werkbed. Deze waarde wordt ingevoerd met de SCARA_OFFSET_X- en Y-waarden en het is de afstand van de toren of de eerste verbinding ten opzichte van de nulpositie tot het bed.

Er is nog een set parameters die we moeten aanpassen aan onze machine, en dat is de MANUAL_X_HOME_POS voor zowel X als Y. Deze waarden zijn de X- en Y-afstanden van de robotarmeindeffector of de laser wanneer deze zich in de thuispositie bevindt, relatief naar de bed-nulpositie die we eerder hadden ingesteld. Om deze waarden te krijgen, heb ik een eenvoudige schets gemaakt in SOLIDWORKS met de twee lijnen die de twee armen van de SCARA-robot vertegenwoordigen.

Van hieruit kan de gewenste nulpositie van het bed worden ingesteld en de waarden voor de MANUAL_X_HOME_POS-variabelen worden opgehaald.

Vervolgens moeten we de eindstopconnectoren definiëren. In ons geval hebben we één eindstop voor elke as, die op de minimale positie staat.

#define USE_XMIN_PLUG
#define USE_YMIN_PLUG
#define USE_ZMIN_PLUGCode language: Arduino (arduino)

Daarnaast moeten we X_HOME_DIR definiëren tot -1, wat de richting van de eindstops aangeeft bij het naar de startplaats gaan.

// Direction of endstops when homing; 1=MAX, -1=MIN
// :[-1,1]
#define X_HOME_DIR -1
#define Y_HOME_DIR -1
#define Z_HOME_DIR -1Code language: Arduino (arduino)

Hier moeten we ook controleren of alle __MIN_ENDSTOP_INVERTING variabelen zijn ingesteld op "FALSE".

Vervolgens moeten we de DEFAULT_AXIS_STEPS_PER_UNIT-waarden aanpassen aan onze machine.

#define DEFAULT_AXIS_STEPS_PER_UNIT   { 177.7777777, 142.2222222, 400, 93 }Code language: Arduino (arduino)

Deze waarden geven aan hoeveel stappen het programma naar de stappenmotoren moet sturen om de motor één eenheid te laten bewegen, en in dit geval is dat een rotatie van het gewricht van één graad. Hier is hoe ik deze waarden heb berekend voor mijn SCARA-robot.

De NEMA 17 stappenmotoren nemen 200 stappen voor volledige rotatie, maar omdat we de 16e stapresolutie gebruiken, betekent dit dat we 3200 stappen naar de driver moeten sturen om de motor volledige 360 ​​graden rotatie te laten maken. Daarnaast hebben we voor het eerste gewricht een snelheidsreductie van 20:1, wat betekent dat we 64000 stappen nodig hebben voor volledige rotatie. Als we deze waarde delen door 360, krijgen we het getal 177.777, wat eigenlijk het aantal stappen is dat het programma naar de bestuurder moet sturen om de verbinding één eenheid of één graad te draaien.

De tweede arm heeft een snelheidsreductie van 16:1, dus de waarde is 142.222. Voor de Z-as hebben we een spindel met een spoed van 8 mm, wat betekent dat één volledige rotatie van de motor resulteert in een lineaire beweging van 8 mm. Eén eenheid is hier één mm, dus we moeten de 3200 stappen delen door 8, en dus krijgen we de waarde van 400, wat het aantal stappen is dat nodig is om de Z-as één eenheid of één mm te laten verplaatsen. De vierde waarde hier is voor de extruder-stepper, maar omdat we hier geen extruder hebben, hoeven we deze niet te wijzigen.

De richting van de stappenmotor hangt af van de manier waarop we de draden hebben aangesloten. In het geval dat we het verkeerd hebben, kunnen we de draden omdraaien of het hier in de software wijzigen door de INVERT_X_DIR-variabelen in te stellen op TRUE.

// Invert the stepper direction. Change (or reverse the motor connector) if an axis goes the wrong way.
#define INVERT_X_DIR false
#define INVERT_Y_DIR false
#define INVERT_Z_DIR falseCode language: Arduino (arduino)

We zouden nog een paar wijzigingen moeten aanbrengen om deze Marlin-firmware te laten werken. Aangezien Marlin voornamelijk firmware is voor klassieke cartesiaanse stijlprinters, heeft de SCARA-modus die het bevat enkele kleine bugs die nog niet waren opgelost toen ik dit project maakte. Dit zijn de wijzigingen die ik heb aangebracht om het werkend te krijgen.

In scara.cpp, regel 75 heb ik MORGAN_SCARA vervangen door MP_SCARA. In motion.cpp moest ik de regel 1716 en 1717 becommentariëren, in cofiguration.h comment VALIDATE_HOMING_ENDSTOPS en in configuration_adv.h uncomment QUICK_HOME.

Zelfs met deze veranderingen werkte de homing nog steeds niet 100% goed, maar ik zal de tijdelijke oplossing uitleggen die ik heb gebruikt om het werkend te krijgen.

Desalniettemin kunnen we nu op de knop Uploaden linksonder in de editor klikken en wordt de Marlin-firmware op het Arduino-bord geïnstalleerd. Je downloadt deze specifieke Marlin-firmware met alle wijzigingen die ik heb aangebracht om met deze SCARA-robot te werken hieronder of je kunt natuurlijk de originele Marlin-firmware downloaden van Github.com en alle wijzigingen zelf aanbrengen, zoals ik heb uitgelegd.

Besturingssoftware – Rapetier-host

Oké, dus als we de Marlin-firmware eenmaal hebben geïnstalleerd, hebben we nu een computerprogramma nodig om de robot te besturen en er G-codes naar te sturen. Er zijn veel opties, maar ik heb ervoor gekozen om Rapetier-host te gebruiken, een populaire 3D-afdruksoftware. We kunnen deze software gratis downloaden en gebruiken. Zodra we het hebben geïnstalleerd, kunnen we naar Config> Printer Settings gaan en hier verschillende dingen aanpassen.

We moeten de COM-poort selecteren waarop onze Arduino is aangesloten en de baudrate selecteren die we in de Marlin-firmware hebben ingesteld. Op het tabblad Printervorm moeten we de X- en Ymax-waarden en het printergebied instellen.

Zodra we deze instellingen hebben toegepast, kunnen we op de knop Verbinden klikken en de software moet verbinding maken met onze SCARA-robot. Dan kunnen we naar de handmatige bediening gaan en vanaf hier proberen de printer te verplaatsen.

Merk op dat wanneer op de X- of Y-pijlen wordt gedrukt, de robot zich vreemd kan gedragen omdat hij meteen inverse kinematica implementeert en waarschijnlijk beide armen zal bewegen, zelfs als er maar op één pijl wordt gedrukt.

Niettemin, om de robot aan het werk te krijgen, moeten we hem eerst thuisbrengen. Voordat we op de home-knop klikken, moeten we de verbindingen handmatig dichter bij de eindschakelaars brengen.

Wanneer we op de Home-knop klikken, zou de robot naar de eindschakelaars moeten gaan bewegen. In feite zal de tweede arm naar zijn eindschakelaar gaan bewegen, terwijl de eerste arm tegenovergesteld zou moeten bewegen. Zodra de tweede arm of de Y-as de eindschakelaar raakt, zal de eerste arm of de X-as ook in de richting van de eindschakelaar gaan bewegen. Zodra de X-eindschakelaar is bereikt, gaat de robot voor de Z-eindschakelaar.

Dus nadat de homing is voltooid, zouden we in staat moeten zijn om te beginnen met graveren of de robot handmatig door het werkgebied te verplaatsen. Als we echter meteen iets proberen te doen, zal de robot zich om de een of andere reden misdragen en vreemde bewegingen maken. Om dit vreemde gedrag te voorkomen, hoeven we na de homing alleen maar de robot los te koppelen van de software en vervolgens opnieuw aan te sluiten .

Nu kunnen we handmatig verplaatsen of graveren en de robot werkt naar behoren. Dit is waarschijnlijk een bug in de Marlin-firmware, en het is daar omdat de SCARA-modus in deze firmware niet goed wordt ondersteund omdat er niet veel interesse in is.

Desalniettemin, als we het G-code-commando G00 X0 Y0 sturen, zou de robot naar zijn nulpositie moeten gaan, de positie die we hebben ingesteld in het Marlin Configuration.h-bestand.

Vervolgens kunnen we de laser activeren door het M106 S10-commando te verzenden. De waarde achter S kan van 0 tot 255 zijn en het is eigenlijk de PWM-regeling van het laservermogen van 0 tot 100%. We gebruiken hier dus een waarde van S10, zodat het niets zal verbranden, maar het zal zichtbaar zijn, zodat we de nulpositie kunnen zien en ook de focus van de laser kunnen aanpassen.

De focus kan handmatig worden aangepast door de laserlens aan de onderkant te draaien en is tegelijkertijd afhankelijk van de afstand tussen deze en het werkstuk. Het wordt aanbevolen om een ​​afstand van ongeveer 5 cm in te stellen en de focus aan te passen tot je de kleinst mogelijke stip krijgt.

Lasergraveren met de SCARA-robot 

Om de machine te kalibreren, is het een goed idee om te beginnen met het graveren van een eenvoudige vierkante vorm, zodat we kunnen zien of deze goed werkt.

Bij mijn eerste poging was de vierkante vorm niet in de juiste positie en richting en dat komt omdat ik een verkeerde waarde heb ingesteld voor de variabele MANUAL_X_HOME_POS. Toen ik het eenmaal had gecorrigeerd, kwam de vierkante vorm in de buurt van wat het zou moeten zijn.

Dus laad ik een G-code van mijn logo en stel de robot in om het te graveren.

Om eerlijk te zijn, kijken naar deze SCARA-robot die als lasergraveur werkt, is zo cool, maar houd er rekening mee dat we een laserveiligheidsbril MOETEN gebruiken dat onze ogen zal beschermen tegen het ultraviolette licht van de laser, omdat het erg gevaarlijk is. We moeten ook een veiligheidsmasker gebruiken en werk in open ruimte of goed geventileerde ruimte, aangezien de dampen die vrijkomen bij het lasergraveren ook gevaarlijk zijn voor onze gezondheid.

Desalniettemin kwam de logo-gravure goed uit, maar ik merkte dat het niet helemaal vierkant was.

Dus ging ik terug naar het graveren van de eenvoudige vierkante vorm om erachter te komen wat het probleem veroorzaakte. Ik realiseerde me dat het probleem zit in de afmetingen voor de lengtes van de armen. Omdat de robot niet zo stijf is, zorgt het gewicht van de armen zelf ervoor dat de robot een beetje naar voren leunt wanneer de armen gestrekt zijn. Hierdoor wijkt de werkelijke afmeting of positie van de armen een beetje af.

Na tientallen tests te hebben gedaan, heb ik uiteindelijk de waarden voor de lengtes aangepast van 228 tot 228,15 mm voor de eerste arm en van 136,5 tot 136,2 mm voor de tweede arm. Dit gaf me het meest nauwkeurige resultaat en nu was de vierkante vorm goed. Hoewel, afhankelijk van de locatie van het afdrukken, of de arm nu volledig is uitgestrekt of niet, de nauwkeurigheid nog steeds kan variëren.

G-code genereren voor lasergravure

Laat me je tot slot laten zien hoe ik de tekeningen heb voorbereid en G-codes heb gegenereerd om ze te lasergraveren. Ik heb daarvoor Inkscape gebruikt, een open-source vector grafische software.

Hier moeten we eerst de paginagrootte instellen op de grootte van ons werkgebied. Als voorbeeld zal ik je laten zien hoe ik het Arduino-logo heb voorbereid voor lasergraveren.

Ik heb een afbeelding van het Arduino-logo gedownload en geïmporteerd in Inkscape. Met behulp van de Trace Bitmap-functie moeten we eerst de afbeelding converteren naar een vectorformaat. We kunnen alleen G-codes genereren uit vectorvormen en voor dat doel heb ik een plug-in gebruikt met de naam Inkscape-Lasertools. We kunnen deze plug-in downloaden van Github.com en we kunnen deze installeren door de bestanden uit het zipbestand te kopiëren en ze in de Inkscape-extensiemap te plakken.

Dus zodra we de plug-in hebben geïnstalleerd, kunnen we naar Extensies> Lasertools gaan om deze te openen en deze te gebruiken om een ​​G-code te genereren. Er zijn verschillende opties om in te stellen en aan te passen met deze plug-in. Omdat we onze laser hebben aangesloten op de D9-pin die wordt gebruikt voor het aansturen van een ventilator, kunnen we de laser activeren door het M106-commando te verzenden.

We kunnen kiezen of de G-code alleen de contouren van de vorm zal bevatten of ook de invulling op gesloten lussen. We kunnen de laserbewegingssnelheid, de laserinvulsnelheid en de omtreksnelheid instellen.

Als we bij het kiezen van een infill de intensiteit van de laser in het infill-gebied willen verlagen, kunnen we de PWM-waarde toevoegen aan de M106-opdracht om de laserintensiteit in te stellen, bijvoorbeeld M106 S128 voor 50% laservermogen. We zouden een soortgelijk effect kunnen bereiken als we het laservermogen op 100% laten staan, maar de rijsnelheid in het opvulgebied verhogen. Dit zijn dus eigenlijk instellingen waarmee we moeten spelen om te zien wat voor ons het beste werkt.

In de Voorkeuren-tap kunnen we "Verwijder kleine invulpaden" selecteren en op het tabblad Begrenzingsvak kunnen we "G-code genereren voor voorbeeld van begrenzingsvak" selecteren. Deze functie is erg handig omdat het een voorbeeld-G-code genereert van het gebied waar de tekening zal plaatsvinden, zodat we ons werkstuk precies kunnen positioneren.

Oké, dus zodra we de G-code hebben gegenereerd, kunnen we deze in het Repetier-Host-programma laden. Aangezien dit geen 3D-printen is, maar alleen reisbewegingen, moeten we het selectievakje "Reisbewegingen weergeven" selecteren om een ​​voorbeeld van onze G-code te bekijken.

We kunnen eindelijk op de knop "Afdrukken" klikken en onze SCARA-robot zal het werkstuk lasergraveren. Ik zei het al, het kijken naar deze SCARA-robotlasergravure is zo bevredigend en we kunnen er zoveel dingen mee lasergraveren.

Een goede eigenschap is dat het een verstelbare Z-as heeft, wat betekent dat we grotere objecten kunnen lasergraveren, zoals bijvoorbeeld deze houten kist voor mijn Forstner-bits. Ik heb mijn logo op de voorkant gegraveerd en een tekst "Forstner bits" op de achterkant van de doos.

Hier is een voorbeeld van het graveren van dezelfde vectorvorm, in dit geval een batmansilhouet, met alleen contouren en met vulling op gesloten lussen.

Bij het graveren met infill is de tijd die nodig is om de klus te klaren natuurlijk veel langer, maar ook het uiteindelijke uiterlijk is veel beter.

Laat me je tot slot laten zien hoe ik deze enorme tekening met een oppervlakte van 600x450 mm heb gegraveerd met deze SCARA-robot.

Ik plaatste de robot bovenop het werkstuk zodat hij de voorkant en de twee zijkanten kan bereiken. Ik heb het werkstuk en de robot handmatig afgesteld om in het midden en parallel aan elkaar te staan.

In de Marlin-firmware heb ik de nulpositie ingesteld op de linkerbenedenhoek van het werkstuk, dat 300 mm verwijderd is van de robot in X-richting en 150 mm in Y-richting. We moeten op de tekens letten bij het definiëren van deze waarden. Op basis hiervan heb ik ook de variabelen MANUAL_X en Y_HOME_POS gewijzigd.

Na het uploaden van de firmware met deze nieuwe waarden, heb ik de robot geplaatst zoals eerder uitgelegd en de laser naar de nulpositie gestuurd. Daarna heb ik de laser geactiveerd, zodat ik de oriëntatie van de werkprijs verder kan aanpassen.

Door G01-commando's te sturen, die rechte lijnen maken, kon ik het werkstuk controleren en aanpassen om goed te positioneren.

Wat betreft het voorbereiden van de G-code voor deze gravure heb ik een sjabloon gemaakt van met deze configuratie van het werkstuk en de robot in Inscape. Vanaf hier kan ik zien waar de robot kan komen met de laser en de tekening aanpassen.

Voor de tekening heb ik een afbeelding gedownload en geconverteerd naar een vectorafbeelding met behulp van de Trace Bitmap-tool.

Then I rescaled and position the image as I wanted, and using the Erase tool I deleted the areas where the robot is and the area which is outside the robot reach.

Then I generated the G-code let the machine do its job. It took 4 hours to laser engrave this drawing.

Once it finished, I wanted to fill the empty area where the robot was. For that purpose, I reposition the robot and the work piece, as well as changed the Marlin parameters so that the new work area of the robot is this empty space on the work piece.

Overall, this method requires some work for setting it up, but still it works great. I really like how this engraving turned out.

Wrap up

To wrap up, although there were some problems with the firmware, I managed to find workarounds to them get this SCARA robot working as laser engraver. If we take a closer look to the engraving, we can see that it’s far from perfect.

The robot is not that rigid and has some backlash, and therefore we cannot get precise and smooth movements. However, the things we learned in this tutorial can be implemented in any SCARA robot so you can definitely get better results.

I hope you enjoyed this tutorial and learned something new. Feel free to ask any question in the comments section below and check my Arduino Projects Collection.


Productieproces

  1. DIY eenvoudigste IV9 Numitron-klok met Arduino
  2. Obstakels vermijden robot met servomotor
  3. Een Roomba-robot besturen met Arduino en Android-apparaat
  4. DIY voltmeter met Arduino en een Nokia 5110-display
  5. MobBob:doe-het-zelf Arduino-robot bestuurd door Android-smartphone
  6. DIY eenvoudig meetwiel met roterende encoder
  7. DIY-luchtkwaliteitsmonitor met Sharp GP2Y1010AU0F-sensor
  8. DIY Arduino 1D Pong-spel met WS2812 LED-strip
  9. DIY Arduino-robotarm – bestuurd door handgebaren
  10. Bedien de Arduino-robotarm met Android-app
  11. Maak een eetrobot met Arduino Nano | Gouden schroef