Projekt Prusa MK3S: Die elektronische Infrastruktur und das Klipper-Host-System (Teil 2)


Willkommen zurück zum zweiten Teil dieser Artikelserie. ab jetzt wird es ernst mit dem Prusa MK3S Klipper und Elektronik Umbau. Ich widme mich dem Herz-Kreislauf-System und dem Gehirn der Maschine: Der elektronischen Infrastruktur und der Stromversorgung.

Ein 3D-Drucker, der mit Geschwindigkeiten und Beschleunigungen weit jenseits der Werksspezifikationen operiert, stellt völlig neue Anforderungen an die Spannungsstabilität, die Signalintegrität und das thermische Management. Die naive Herangehensweise, einfach einen Raspberry Pi mit ein paar bunten Kabeln an das vorhandene Mainboard zu klemmen und auf das Beste zu hoffen, führt in der Praxis zu massiven Stabilitätsproblemen. In diesem Artikel zeige ich Dir detailliert, wie ich eine elektrotechnisch saubere, ausfallsichere Architektur aufbaue, lebensgefährliche Fehler vermeide, Ausgleichsströme blockiere und das System thermisch auf die neuen Belastungen vorbereite.

Warum das Einsy-Board nicht ausreicht

Mein erster Gedanke bei der Integration des Raspberry Pi in den Prusa MK3S war, die Stromversorgung direkt vom Einsy-Rambo-Mainboard abzugreifen. Das Board verfügt über einen ausgewiesenen Header-Steckplatz, der exakt für einen Raspberry Pi Zero W (der in früheren Prusa-Tagen von der Firmware unterstützt wurde) gedacht ist. Warum also nicht einfach und bequem diesen Anschluss für meinen Raspberry Pi 3 B+ nutzen?

Die Antwort liegt in der Physik und den Spezifikationen der verbauten elektronischen Bauteile. Das Einsy-Board wird primär vom großen 24V-Netzteil des Druckers versorgt. Um die Logikbausteine und Sensoren zu betreiben, wandelt ein kleiner Onboard-Spannungsregler (ein sogenannter Step-Down-Converter) diese 24V in 5V um. Dieser Chip ist auf den Strombedarf des Einsy-Boards, des Displays und der Sensoren (wie der Pinda) zugeschnitten. Er bietet minimale Leistungsreserven.

Ein Raspberry Pi 3 B+ benötigt unter Last – insbesondere wenn Klipper komplexe Kinematik-Berechnungen durchführt, Input Shaping berechnet und gleichzeitig das Mainsail-Webinterface bedient wird – problemlos Spitzenströme von bis zu 2,5 Ampere. Wird diese Last dauerhaft an das Einsy-Board gehängt, wird der kleine Spannungsregler überlastet. Die Spannung bricht ein (Voltage Drop). Die direkte Folge sind „Under-Voltage“-Warnungen im Klipper-Log, unerklärliche Verbindungsabbrüche mitten im Druck oder im schlimmsten Fall die thermische Zerstörung des Spannungsreglers, was einen kompletten Austausch des Einsy-Boards nach sich zieht.

Die einzige, elektrotechnisch saubere und langfristig stabile Lösung ist die vollständige physische Trennung der Stromversorgung. Ich integriere ein separates 5V-Netzteil (beispielsweise ein MeanWell RS-15-5 oder ein vergleichbares, hochwertiges Industrie-Schaltnetzteil) für den Raspberry Pi. Dies garantiert, dass der Klipper-Host jederzeit mit einer sauberen, stabilen Spannung versorgt wird, völlig unabhängig davon, ob das Heizbett des Druckers gerade mit PWM-Signalen gepulst wird und das 24V-Netzteil an seine Grenzen bringt.

Mein Tipp: Unterschätze niemals den Spannungsabfall auf dem Weg vom 5V-Netzteil zum Raspberry Pi. Viele nutzen hierfür Standard-Dupont-Jumperkabel. Diese haben einen winzigen Leitungsquerschnitt (oft nur AWG 28). Bei 2,5 Ampere fällt die Spannung auf diesen dünnen Drähten so stark ab, dass am Pi nur noch 4,6V ankommen – er stürzt ab. Nutze für die Stromversorgung des Pi (über die 5V und GND GPIO-Pins) zwingend dicke Silikonkabel mit mindestens AWG 20 oder AWG 18.

Sicherheit und Verkabelung: Der Eingriff in das 230V-Netz

Warnung: In diesem Schritt wird an Bauteilen gearbeitet, die Netzspannung (230V) führen. Ein Stromschlag kann tödlich sein. Ziehe unbedingt den Netzstecker, bevor Du beginnst. Wenn Du Dir diese Arbeiten nicht zutraust, beauftrage eine Elektrofachkraft.

Das zweite Netzteil, das ich an den Drucker schraube, benötigt ebenfalls Netzstrom. Das originale Kaltgerätekabel versorgt den Power-Panic-Schalter und geht von dort auf die Eingangsklemmen (L für Phase, N für Neutralleiter, PE für Schutzleiter/Erde) des 24V-Netzteils.

Um das neue 5V-Netzteil zu versorgen, muss ich diese Leitungen aufsplitten. Die unprofessionelle und gefährliche Methode wäre es, zwei Kabelenden zusammenzuzwirbeln und unter eine Klemme zu quetschen. Die richtige Methode ist der Einsatz von WAGO-Verbindungsklemmen (Serie 221).

Ich führe die stromführende Phase (L) vom Kaltgerätestecker in eine 3-fach WAGO-Klemme. Von dort führe ich ein Kabel zum L-Anschluss des 24V-Netzteils und ein weiteres Kabel zum L-Anschluss des 5V-Netzteils. Dasselbe wiederhole ich für den Neutralleiter (N) und den Schutzleiter (PE). So sind beide Netzteile sicher und parallel an das Stromnetz angebunden.

Die handwerkliche Grundregel: Wann immer man ein feindrähtiges Litzenkabel in eine Schraubklemme eines Netzteils steckt, muss  man vorher eine Aderendhülse auf das abisolierte Ende pressen. Verschraubt man offene Litzen, brechen einzelne Drähte ab. Der Querschnitt verringert sich, der Übergangswiderstand steigt, das Terminal wird heiß und es besteht akute Brandgefahr. Eine Crimpzange und ein Set Aderendhülsen sind für dieses Projekt absolute Pflichtwerkzeuge.

Ground-Loops und Ausgleichsströme

Nachdem beide Netzteile am 230V-Netz hängen, betreten ich einen Bereich der Elektrotechnik, der gerne vernachlässigt wird, aber für die Lebensdauer der Hardware kritisch ist. Wenn man ein zweites Netzteil in das System integriert, schafft man eine potenzielle Fehlerquelle, die man abfangen muss.

Beide Netzteile sind Schaltnetzteile (Switching Mode Power Supplies). Sie wandeln die Wechselspannung aus der Steckdose in Gleichspannung um. Auch wenn beide Netzteile an derselben Phase hängen, bedeutet das physikalisch nicht automatisch, dass ihre Gleichstrom-Ausgänge auf exakt demselben elektrischen Level liegen. Der Minuspol (GND / Masse) des 24V-Netzteils kann ein minimal anderes Potenzial aufweisen als der Minuspol des 5V-Netzteils.

Wenn man nun den Raspberry Pi (betrieben über das 5V-Netzteil) per USB-Kabel mit dem Einsy-Board (betrieben über das 24V-Netzteil) verbindet, passiert folgendes: Die dünne Masseleitung im Inneren des USB-Kabels wird zur einzigen Brücke zwischen diesen beiden unterschiedlichen Potentialen. Der Strom sucht sich physikalisch bedingt den Weg des geringsten Widerstands, um diesen Unterschied auszugleichen. Es fließt ein Ausgleichsstrom direkt durch das USB-Kabel und über die empfindlichen Leiterbahnen der beiden Platinen. Dies bezeichnet man als Ground-Loop (Erdschleife). Das Resultat sind gestörte UART-Datenverbindungen (Klipper bricht Drucke mit der Fehlermeldung „MCU lost connection“ ab) oder dauerhaft durchgebrannte USB-Controller.

Die zweistufige Lösung für Signalintegrität

Um dieses Problem an der Wurzel zu packen und die Hardware zu schützen, setze ich zwei elektrotechnische Maßnahmen um:

  1. Der physische Potenzialausgleich: Ich muss die Massen beider Netzteile fest miteinander verbinden. Dazu verbinde ich den Minus-Ausgang (V-) des 24V-Netzteils mit dem Minus-Ausgang (V-) des 5V-Netzteils mit einem ausreichend dicken Kupferkabel (mindestens 1,5 mm² Querschnitt). Dadurch bringe ich beide Netzteile auf das gleiche Bezugspotenzial. Mögliche Ausgleichsströme fließen nun sicher über dieses Kabel und nicht mehr über die empfindlichen Platinen.
  2. Die Kapselung der 5V-USB-Leitung: Ein Standard-USB-Kabel überträgt nicht nur Daten (D+ und D-), sondern auch 5V Strom. Wenn man ein normales Kabel verwendet, speist das Einsy-Board seine 5V rückwärts in den Raspberry Pi oder umgekehrt. Das führt zu ungewollten Situationen: Man schaltet den 24V-Strom des Druckers aus, aber das LCD-Display leuchtet weiter, weil der Pi Strom über das USB-Kabel liefert. Um das zu verhindern, muss man die 5V-Ader kappen.
Mein Tipp: Zerschneide keine USB-Kabel und kratze nicht mit einem Skalpell an den feinen Leiterbahnen des Einsy-Boards herum, um die 5V-Leitung zu trennen. Das ist destruktiv, handwerklich unsauber und extrem fehleranfällig. Nutze einen sogenannten USB Power Blocker (auch Data-Only-Adapter genannt). Das ist ein winziger Zwischenstecker, der die Datenleitungen und die Masse 1:1 durchschleift, aber den 5V-Pin physisch weglässt. Stecke ihn dauerhaft in den USB-Port des Pi, schließe dort ein Standard-USB-Kabel an und das System ist sicher. Solltest Du das Kabel in fünf Jahren austauschen, bleibt der Schutz am Pi erhalten.

Mechanische Integration: Der Dual-Netzteilhalter und das BigEinsyCase

Da das kleine 5V-Netzteil aus Sicherheitsgründen nicht einfach lose neben dem Drucker liegen soll, habe ich eine neue, kombinierte Halterung im CAD entworfen (die Dateien und Links findest Du im GitHub-Repository, das am Ende verlinkt ist). Diese Halterung nimmt das originale, schwarze Prusa-Netzteil und das zusätzliche MeanWell-Netzteil nebeneinander auf und wird am Aluminium-Profil der Z-Achse verschraubt. Ich drucke solche strukturellen Teile, die so nahe an Netzspannungs-Komponenten liegen, aus Sicherheitsgründen ausschließlich aus flammhemmendem PETG oder temperaturbeständigem ASA, niemals aus PLA, da dieses bei Wärmeentwicklung zu schnell weich wird (Kaltfluss).

Das nächste Nadelöhr ist das GFehäuse für das Mainboard. Das originale Einsy-Gehäuse von Prusa ist ein Meisterwerk der Platzersparnis, aber aus meiner Sicht ziemlich ungeeignet. Es bietet schlichtweg wenig Raum für die zusätzlichen Kabel, die der Umbau mit sich bringt. Ein mit Gewalt hineingestopfter Kabel-Knoten ist nicht nur optisch ein Albtraum, sondern blockiert auch die Luftzirkulation im Gehäuse. Das der Deckel in Richtung der Druckbetts aufgeht ist ein zusätzliches Manko.

Die Lösung ist der Austausch gegen ein großräumiges Gehäuses, in der Community als „BigEinsyCase“ bezeichnet. Dieses Gehäuse wird an denselben originalen Befestigungspunkten am Rahmen montiert, baut jedoch deutlich tiefer und breiter. Es bietet großzügige Kabelkanäle und ausreichend Volumen, damit die Kabel im Inneren sauber mit Gewebeschläuchen und Kabelbindern geordnet werden können. Wartungsfreundlichkeit ist hier das oberste Gebot: Wenn man später für eine Diagnose an einen Anschluss muss, muss man nicht erst zehn andere Kabel zur Seite biegen.

Deutlich mehr Platz für das Kabelmanagement als das Originalgehäuse
Der modifizierte Deckel nimmt einen Ventilator auf.

Thermisches Management: Die Kühlung der TMC2130 Stepper-Treiber

An dieser Stelle habe ich noch eine Änderung geplant, um der Wärmeentwicklung im neuen Gehäuse zu begegnen. Der Prusa MK3S kommt im Werkszustand völlig ohne aktive Kühlung für das Mainboard aus. Warum will ich nun plötzlich Lüfter verbauen?

Das Einsy Rambo nutzt die Trinamic TMC2130 Schrittmotortreiber. Diese sind fest auf die Platine gelötet und leiten ihre Abwärme über winzige Vias (Durchkontaktierungen) in die großflächigen Kupferlagen des Mainboards ab, die als Kühlkörper fungieren. Unter der werksseitigen Marlin-Firmware und den standardmäßigen, moderaten Druckgeschwindigkeiten reicht diese passive Flächenkühlung völlig aus.

Mit Klipper und den reibungsarmen MGN12 Linearschienen werde ich die Beschleunigung jedoch massiv anheben. Das bedeutet, dass die Treiber die Motoren viel aggressiver und mit deutlich höherer Frequenz ansteuern müssen. Die elektrische Belastung steigt, und damit zwangsläufig die Verlustleistung in Form von Wärme. Wenn die TMC2130 einen bestimmten thermischen Schwellenwert (meist um die 100°C) überschreiten, greift ihr interner Selbstschutz. Sie schalten ab, um abzukühlen. In diesem Moment vergisst der Schrittmotor seine Position, und der Druck erleidet einen sogenannten „Layer Shift“ – ein massiv versetztes Schichtbild, das das Bauteil ruiniert.

Daher plane ich eine aktive, permanente Kühlung ein. Für das BigEinsyCase gibt es einen Remix vom Deckel mit einer Aussparung für einen 40mm-Lüfter. Der Lüfter saugt Raumluft an und bläst sie direkt auf die Treiber des Einsy-Boards. Die erwärmte Luft wiederum kann durch Entlüftungsschlitze entweichen.

Bei der Wahl des Lüfters muss man auf die Spezifikationen achten: Das Einsy-Board bietet Pins für externe Lüfter an (die 5V ausgeben). Schließt man hier einen 24V-Lüfter an, wird er sich kaum drehen. Schließt man einen 5V-Lüfter direkt an die 24V-Klemmen des Netzteils an, haucht er im Bruchteil einer Sekunde mit einer kleinen Rauchwolke sein Leben aus. Ich achte deshalb darauf, dass die Nennspannung des gewählten Lüfters (ich empfehle Noctua für Laufruhe oder Sunon für hohen statischen Druck) mit der Stromquelle übereinstimmt. Der Raspberry Pi hat genug Ressourcen frei, um diesen Lüfter gezielt steuern zu können – wenn man ihn nicht ständig laufen lassen will, so lange der Drucker angeschaltet ist.

Die Integration des Raspberry Pi 3 B+ und der Klipper-Stack

Nachdem Gehäuse und Stromversorgung bereitstehen, widme ich mich dem ‚Verstand‘ der Maschine. Ich habe mich für dieses Projekt ganz bewusst für den Raspberry Pi 3 Model B+ entschieden, obwohl ich auch Pi 4 und Pi 5 in der Bastelkiste hätte. Der neuere Pi 4 bietet zwar theoretisch mehr Rechenleistung, diese wird für Klipper jedoch absolut nicht benötigt. Der Pi 4 hat zudem einen massiven Nachteil: Er wird aufgrund seiner Architektur enorm heiß. Ihn in ein Druckergehäuse zu verbauen, würde zusätzliche Kühlkonzepte mit Kühlkörpern und weiteren Lüftern erfordern. Der 3 B+ bietet die exakt richtige Balance aus völlig ausreichender Leistung und einer sehr moderaten, leicht handhabbaren Wärmeentwicklung.

Netzwerkstabilität: Die Basis für Klipper

Bevor man Software installiert, muss man die Infrastruktur klären. Klipper lagert die Steuerung komplett auf den Host (den Raspberry Pi) aus. Bricht die Netzwerkverbindung zwischen dem Slicer-PC und dem Pi dauerhaft ab, kann man den Drucker kaum noch verwalten. Noch schlimmer: Vergibt der Router dem Drucker durch DHCP alle paar Tage eine neue IP-Adresse, müsste man ständig die Slicer-Einstellungen anpassen.

Daher empfehle ich: Gehe in die Weboberfläche Deines Routers (z. B. FritzBox) und weise der MAC-Adresse des Raspberry Pi eine statische IP-Adresse zu. Wer auf Nummer sicher gehen will und ohnehin ein LAN-Kabel liegen hat, schließt den Pi per Ethernet-Kabel an. Das integrierte WLAN des Pi 3 B+ ist für das Übertragen von G-Codes absolut ausreichend, Ethernet ist jedoch gegen Störsignale immun.

Schritt-für-Schritt: Die Software-Installation via KIAUH

Die Installation des Klipper-Ökosystems erfordert heute keine tiefgehenden Linux-Kenntnisse mehr, solange man sich strikt an eine strukturierte Reihenfolge hält. Da der Pi später im Gehäuse verbaut ist, bereite ich die MicroSD-Karte bequem am Schreibtisch vor.

1. Das Basis-Betriebssystem flashen:
Ich nutze den offiziellen Raspberry Pi Imager am PC. Da der Pi als reiner Server für den Drucker agiert, benötigt man keine ressourcenfressende Desktop-Oberfläche. Wähle daher als Betriebssystem Raspberry Pi OS Lite (32-bit) aus. In den erweiterten Optionen des Imagers (Zahnrad-Symbol) legt man die WLAN-Zugangsdaten fest, aktiviert den SSH-Zugang und definiert einen Benutzernamen (ich nutze nicht den Standard pi) und ein sicheres Passwort. Nach dem Flashen steckt man die Karte in den Pi und versorgt ihn mit Strom.

2. Der Zugriff über SSH:
Sobald der Pi im Netzwerk angemeldet ist, öffnet man am Computer ein Terminal (oder ein Programm wie PuTTY unter Windows) und verbindet sich über den Befehl:
ssh pi@ip-adresse-des-pi

3. Die automatisierte Installation via KIAUH:
Die manuelle Kommandozeilen-Installation von Klipper ist langwierig und fehleranfällig. Die Community hat hierfür den „Klipper Installation And Update Helper“ (KIAUH) entwickelt. Ein geniales Bash-Skript, das alle Software-Abhängigkeiten vollautomatisch löst. Führe im SSH-Terminal nacheinander folgende Befehle aus, um das Skript zu laden und zu starten:

sudo apt-get update && sudo apt-get upgrade -y
sudo apt-get install git -y
git clone https://github.com/dw-0/kiauh.git
./kiauh/kiauh.sh

Im sich nun öffnenden, textbasierten Menü navigiert man zum Punkt [Install]. Hier installiert man das System in dieser Reihenfolge:

  1. Klipper: Die eigentliche Kern-Firmware, die später die Kinematik-Berechnungen durchführt.
  2. Moonraker: Die essenzielle API, die als Dolmetscher zwischen Klipper und dem Webinterface fungiert. Moonraker ermöglicht es später, G-Codes direkt aus dem PrusaSlicer per WLAN an den Drucker zu schicken und Updates über das Webinterface zu steuern.
  3. Mainsail: Das ressourcenschonende, blitzschnelle Webinterface, über das man den Drucker später im Browser bedient. (Fluidd wäre eine Alternative, Mainsail hat sich in meiner Farm aufgrund seiner Strukturierung jedoch als etwas übersichtlicher erwiesen).

Nachdem diese drei Kernkomponenten fehlerfrei installiert sind, läuft die Software-Architektur auf dem Raspberry Pi. Ich kann den Pi nun sauber herunterfahren (sudo shutdown -h now), vom temporären Netzteil trennen und ihn physisch an seinen finalen Platz in das Gehäuse am Drucker einbauen.

Der nächste Meilenstein: Das Flashen des Einsy-Boards

Wenn die Kabel sauber verlegt, alle Aderendhülsen verpresst, die Netzteile verschraubt und die Massen verbunden sind, steht die elektronische Basis des Umbaus. Klipper läuft auf dem Pi und wartet auf seinen Einsatz, aber das Einsy-Board weiß davon noch nichts. Es wartet noch immer stur auf Marlin-Befehle.

Im nächsten Schritt muss ich die Klipper-MCU-Firmware kompilieren und per USB auf den ATmega2560-Chip des Einsy-Boards flashen. Diesen Vorgang kann ich jedoch erst abschließen, wenn auch die mechanische Seite fertig ist und die `printer.cfg` mit den neuen Achsen-Limits konfiguriert wurde.

Daher lege ich den Lötkolben und die Crimp-Zange erstmal zur Seite. Im dritten Teil dieser Artikelserie widme ich mich der mechanischen Modifikation: Ich baue die alte Y-Achse komplett heraus, verabschiede mich von den verschleißanfälligen LM8UU-Lagern und bereite das Druckbett für den spielfreien Lauf auf den neuen MGN12 Linearschienen vor. Außerdem zeige ich Dir, wie ich das Heizbett mit Silikon-Anstandshalten modifiziere, um die mechanische Planheit zu verbessern, die der Super-Pinda dann die Arbeit massiv erleichtert.

Wenn Du den CAD-Code für die Netzteil-Halterungen oder meine Basis-Klipper-Konfiguration (die initiale printer.cfg) bereits vorab studieren möchtest, findest Du das komplette, quelloffene Projekt-Repository auf meiner GitHub-Seite unter:
GitHub: Prusa_mk3s_upgrade_linear-rails

Solltest Du beim Crimpen der neuen Kabelbäume oder bei der SSH-Verbindung auf spezifische Hürden stoßen, zögere nicht, die detaillierte Linux-Dokumentation zu Rate zu ziehen oder die Schaltpläne des Einsy-Boards in der offiziellen Prusa Knowledge Base abzugleichen. Absolute Präzision ist bei der Stromversorgung der Schlüssel zu einem 3D-Drucker, der über Jahre hinweg unbeaufsichtigt und stabil durcharbeitet.