# Marlin (Software)

Marlin ist eine Open Source Firmware für Werkzeugmaschinen, die nach dem RepRap-Designprinzip aufgebaut sind. Ursprünglich für 3D-Drucker entwickelt, unterstützt Marlin auch CNC-Maschinen, Laser-Cutter und Geräte für die Laser-Gravur.
Marlin ist mit über 80 Hardware Systemen (Boards) für RepRap Geräte kompatibel. Durch seine Quelloffenheit ist es leicht anpassbar und daher in der Maker-Szene sehr beliebt für den Eigenbau und das Open Source Design von Maschinen mit drei Achsen.
Darüber hinaus nutzen viele Hersteller von 3D-Druckern Weiterentwicklungen von Marlin – so z. B. beim weit verbreiteten Prusa i3 oder beim Ultimaker 2.

## Funktionalität

Die Kernaufgabe von Marlin besteht in der Steuerung der Maschine anhand sogenannter G-Codes. Dabei bedient Marlin alle Aktoren (z. B. Schrittmotoren oder Heizelemente) und Sensoren (z. B. Anschläge oder Temperaturfühler) in Echtzeit.
Die wichtigsten Funktionen sind:
* Empfang von auszuführenden Befehlen (G-Codes) von einem angeschlossenen Rechner oder über eine integrierte SD-Karte
* Vorausschauende Planung und Steuerung der Abläufe an allen Achsen
* Überwachung des Arbeitsvorgangs (z. B. Endanschläge der Achsen)
* Temperatur-Kontrolle und Nivellierung des Druckbetts bei 3D-Druckern nach dem Verfahren der Schmelzschichtung (FDM)
* Steuerung des Lasers bei Laser-Cuttern und Laser-Gravur
* Steuerung des Fräskopfs bei CNC-Fräsen
* Unterstützung von Bedien- und Anzeige-Elementen an der Maschine

## Unterstützte Hardware

Mit einem Fokus auf besonders kostengünstige Systeme nach der RepRap Idee unterstützte Marlin anfangs Boards mit 8-Bit-Prozessoren vom Typ Atmel AVR auf Basis der Arduino-Plattform. Seit der Version 2.0 (Dezember 2019) werden auch 32-Bit-Systeme unterstützt, z. B. auf Basis von NXP 176x- und ESP32-Prozessoren.
Fast alle kostengünstigen ($34 bis $200) RepRap-Boards, die heute im (Online-)Handel für Hobby oder den semi-professionellen Bereich verfügbar sind, werden von Marlin unterstützt. RepRap-Boards haben bereits spezialisierte Anschlüsse und Steuerelektronik für die von der Maschine benötigten Aktoren und Sensoren integriert – in der Kombination mit Marlin kann damit ein System wesentlich schneller aufgebaut werden, als es mit einem generischen Einplatinencomputer möglich wäre.
Ein besonderer Vorteil von Marlin besteht in der weitreichenden Unterstützung von Schrittmotoren des Herstellers Trinamic. Trinamic Treiber-Module (Typen TMC21XX, 22XX, 26XX) können direkt auf den Boards integriert oder als Module aufgesteckt werden und erlauben in der Kombination mit Marlin eine besonders präzise und leise Ansteuerung der Motoren.

## Architektur

Der Quelltext von Marlin ist in der Programmiersprache C geschrieben. Die Kompilierung und das Aufspielen auf das Ziel-Board kann wahlweise über die Arduino Entwicklungsumgebung oder über PlatformIO erfolgen.
Die Definition der unterstützen Boards ist bei Marlin über eine Hardwareabstraktionsschicht vom Rest der Architektur getrennt, so dass es leicht möglich ist, neue Boards zu ergänzen.
Der überwiegende Teil der Konfiguration (z. B. die Anpassung auf das jeweilige Board, Festlegung der Maschinen-Parameter, Motor-Treiber und Algorithmen für die Steuerung) wird beim Kompilieren über Header-Dateien festgelegt. Darüber hinaus können einzelne Optionen auch im Betrieb gesetzt werden (z. B. Einstellung der Motoren oder Geschwindigkeiten).

## Entwicklung und Lizenzierung

Marlin begann als Weiterentwicklung der Projekte Sprinter und grbl und wird seit August 2011 als eigenständiges Projekt auf GitHub geführt. Initiator des Projekts und bis heute Maintainer des Marlin Repositorys ist Scott Lahteine.
Als Open-Source-Software kann Marlin nach den Regeln der GNU-GPL-Lizenz kostenlos genutzt, verändert und weiterentwickelt werden.