Marlin (fastvare)

**Marlin** er en fastvare med åpen kildekode for 3D-skrivere som bruker Arduino-plattformen. Den ble opprinnelig designet for RepRap-prosjektet.

Marlin støtter i utgangspunktet mange vanlige typer filamentskrivere, inkludert kartesiske skrivere, Core XY, deltarobot og scara, samt noen andre mindre konvensjonelle design. I prinsippet kan den tilpasses alle maskiner som krever kontroll og interaksjon, og har også blitt tilpasset for å drive skrivere basert på stereolitografi og selektiv lasersintring, samt CNC-freser, maskiner til lasergravering, laserskjæring, vinylkuttere, plukkeroboter, skumkuttere og eggmalingsroboter.

## Historie
I 2011 ble Marlin opprettet for RepRap og Ultimaker ved å kombinere elementer fra de to åpne prosjektene Grbl og Sprinter. Utviklingen gikk i starten sakte, men programvaren ble populær og akseptert som et overlegent alternativ til annen tilgjengelig fastvare på tiden. I 2015 begynte selskaper å introdusere kommersielle skrivere med Marlin forhåndsinstallert, og bidro med forbedringer i prosjektet. Tidlige maskiner inkluderte Ultimaker 1, TAZ-serien av Aleph Objects og Prusa i3 av Prusa Research.

I 2018 hadde produsentene begynt å gå over til hovedkort med kraftigere og mer effisiente ARM-prosessorer som ofte også hadde lavere pris enn AVR-kortene de erstattet. Etter omfattende refaktorering ble Marlin 2.0 offisielt utgitt i slutten av 2019 med full støtte for 32-biters ARM-baserte kontrollerkort gjennom et lettvektig og utvidbart tilgangslag for maskinvaren. Marlin 1.x støttet bare 8-bits AVR (f.eks. ATMega) og ATSAM3X8E (Due) -plattformer, mens HAL la til ATSAMD51 (Grand Central), Espressif ESP32, NXP LPC176x og STMicro STM32. Marlin fikk også HAL-kode for å kjøre naturlig på Linux, Mac og Windows, men bare i simulering for feilsøkingsformål.

Per oktober 2022 var Marlin fortsatt i aktiv utvikling og veldig populær, og hevdet å være verdens mest brukte fastvare for 3D-utskrift. Noen av de mest suksessrike selskapene som bruker Marlin er Ultimaker, LulzBot, Prusa Research og Creality.

Marlin er ikke den eneste fastvaren for 3D-skrivere med åpen kildekode. Andre populære fastvarer med åpen kildekode er RepRap Firmware av Duet3D, Buddy Firmware av Prusa Research og Klipper av Klipper Foundation. Disse har fordel av ekstra prosessorkraft som gir mulighet for avanserte funksjoner som innputtforming, hvilket bare nylig har blitt lagt til Marlin (i begrenset versjon siden Marlin ikke støtter maskinvareakselerometre, som er den beste måten å dra full nytte av innputtforming). 

## Teknisk
Marlin-fastvaren ligger på GitHub, og utvikles og vedlikeholdes av et fellesskap av bidragsytere og folkefinansiering.

Fastvaren kompileres fra kildekode i C++ (optimert for Arduino API), og installeres og kjøres deretter på et hovedkort med innebygde komponenter og generelle I/O-pinner for å kontrollere og kommunisere med andre komponenter.

For kontroll mottar fastvaren innputt fra en USB-port eller tilkoblet media i form av kommandoer i g-kode som instruerer maskinen hva den skal gjøre. For eksempel ber kommandoen «G1 X10» maskinen om å utføre en jevn lineær bevegelse av x-aksen til posisjon 10. 

Programmets hovedsløyfe styrer alle maskinens sanntidsaktiviteter som styring av stegmotorene gjennom stegdrivere, kontroll av varmeelement, sensorer og lys, administrasjon av skjerm og brukergrensesnitt, og så videre.

## Lisens
Marlin distribueres under GPL-lisensen som krever at organisasjoner og enkeltpersoner deler kildekoden sin hvis de distribuerer fastvaren i binær form. Det har vært noen kontroverser med at produsenter ikke har overholdt lisensen, eksempelvis med kinesiske Creality.

## Se også
* RepRap-prosjektet, initiativ for selvreplikerende 3D-skriver
* 3D-utskrift, additiv produksjonsteknikk for å lage tredimensjonale objekter
* Liste over programvare for 3D-utskrift
* Sammenligning av 3D-skrivere
* 3D-skrivehastighet, hvor mye materiale som skrives ut per tidsenhet

## Referanser