Das GPIO-Modul (General Purpose Input Output) ist eine zusätzliche, optionale Platine, die an den Original Prusa MK4/S, MK3.9/S, oder MK3.5/S angeschlossen werden kann.
Das Modul bietet eine erweiterte Funktionalität, indem es die Steuerung externer Geräte über Verbindungen zu den GPIO-Board-Pins ermöglicht, die entweder im INPUT- oder OUTPUT-Modus arbeiten können. Diese Vielseitigkeit eröffnet ein breites Spektrum an möglichen Anwendungsfällen.
Teilen Sie Ihre Projekte mit den anderen Mitgliedern der Prusa Community in unserem offiziellen Forum und diskutieren Sie darüber. Wir haben einen eigenen GPIO-Bereich eingerichtet.
Das Modul kann einen Kameraverschluss zu einem bestimmten Zeitpunkt steuern und ist damit ideal für die Erstellung visuell perfekter Zeitraffer, bei denen jedes Bild zum exakt gleichen Zeitpunkt aufgenommen wird.
Neben der Steuerung eines Kameraverschlusses kann das Modul auch für verschiedene andere Anwendungen eingesetzt werden. So kann es beispielsweise eine externe Beleuchtung auslösen, um den Druckbereich in bestimmten Phasen des Druckvorgangs zu beleuchten und so optimale Lichtbedingungen für Qualitätskontrollen oder Fotos zu gewährleisten. Darüber hinaus kann es so konfiguriert werden, dass es während des Druckens auf der Grundlage eines benutzerdefinierten G-Codes Lüfter oder andere Peripheriegeräte wie Absauganlagen oder Alarme aktiviert, was zur Aufrechterhaltung optimaler Betriebsbedingungen beiträgt und die Sicherheit und Effizienz der 3D-Druckumgebung verbessert.
Ein weiterer leistungsstarker Anwendungsfall ist die Integration einer Makrotastatur, bei der jeder Tastendruck die Ausführung bestimmter G-Code-Befehle auslösen kann. Diese Einrichtung ermöglicht eine schnelle manuelle Steuerung der Druckerfunktionen, wie z.B. das Starten oder Anhalten eines Drucks, das Anpassen von Temperaturen oder das Bewegen des Druckkopfs an eine exakte Position. Die Möglichkeit, benutzerdefinierte Aktionen mit einem einfachen Tastendruck auszulösen, kann Arbeitsabläufe erheblich rationalisieren und macht das GPIO-Erweiterungsmodul zu einem vielseitigen und unverzichtbaren Werkzeug für diejenigen, die ihre 3D-Druckeinrichtung vollständig anpassen und optimieren möchten.
Die Möglichkeit, G-Code über GPIO-Eingänge auszulösen, bietet zwar große Flexibilität, birgt aber auch Einschränkungen und potenzielle Risiken. Eine unsachgemäße Verwendung oder schlecht terminierte G-Code-Befehle können den Druckprozess stören und zu Druckfehlern oder sogar zu Schäden am Drucker führen. Es ist wichtig, dass Sie alle benutzerdefinierten G-Code-Setups in einer kontrollierten Umgebung gründlich testen, bevor Sie sie in tatsächlichen Druckaufträgen einsetzen, um unbeabsichtigte Folgen zu vermeiden.
Die Schaltpläne sind Open Source und auf unserer Seite Open Source bei Prusa Research verfügbar.
Das Board verfügt über 8 Pins, nummeriert von 0-7. Pins 0-3 können als Ausgang und Pins 4-7 können entweder als Eingang oder als Ausgang fungieren. Jeder Pin ist vom Typ Open-Drain, wenn er als Ausgang verwendet wird, d.h. er wird von einem Transistor gesteuert, der den Pin mit der Masse (0 V) verbindet, wenn er aktiv ist. Wenn der Pin inaktiv ist, bleibt er „schwebend“, d.h. er ist nicht mit einer bestimmten Spannung verbunden, aber aufgrund interner Pull-up-Widerstände kann die Spannung am Pin um die 3,3 V schwanken.
Das Verhalten der Pins im Open-Drain-Zustand bei Verwendung als Ausgänge lässt sich wie folgt erklären:
Dieser „schwebende“ Zustand kann dazu führen, dass der Pin zufälliges elektrisches Rauschen oder Interferenzen aufnimmt, was zu unbeabsichtigtem Verhalten führt, wenn er nicht richtig verwaltet wird.
Wenn die Pins als Eingänge verwendet werden, können sie den an sie angelegten Spannungspegel erkennen. Der Eingangszustand wird durch das Vorhandensein von Pull-up-Widerständen beeinflusst, die dazu beitragen können, eine gleichbleibend hohe Spannung (3,3 V) zu gewährleisten, wenn keine andere Spannungsquelle angelegt wird.
Das Board ermöglicht den Anschluss externer Pull-up-Widerstände über Lötbrücken mit der Bezeichnung JP4 bis JP7. Diese Lötbrücken befinden sich in der Mitte der Platine und sind mit den entsprechenden Pins verbunden:
Mit den Jumpern JP4 bis JP7 können Sie integrierte Pull-up-Widerstände anschließen, die dafür sorgen, dass die Pins auf einer hohen Spannung (3,3 V) bleiben, wenn sie nicht aktiv von einer externen Quelle oder durch den Ausgangszustand des Pins nach unten gezogen werden. Diese Pull-Up-Widerstände haben einen Wert von 10K Ohm, was ein Standardwert ist, um eine stabile Spannung ohne übermäßige Stromaufnahme zu gewährleisten. Wenn kein Widerstand an die Lötbrücke angeschlossen ist, kann der Pin in einem schwebenden Zustand bleiben, was zu instabilem Verhalten führen kann. JP steht für „Jumper“, und wenn kein Widerstand angeschlossen ist, erzeugt er keinen Widerstand.
Für weniger erfahrene Benutzer ist es wichtig zu verstehen, dass Open-Drain-Ausgänge nicht von Natur aus eine hohe Spannung (3,3 V) erzeugen, sondern eine Verbindung zur Masse (0 V) ermöglichen. Pull-up-Widerstände sind notwendig, um sicherzustellen, dass der Pin auf einer hohen Spannung bleibt, wenn er ausgeschaltet ist oder als Eingang verwendet wird. Wenn die Spannung nicht richtig gehandhabt wird, kann eine „schwebende“ Spannung dazu führen, dass der Pin elektrisches Rauschen aufnimmt, was zu unerwünschten Schaltvorgängen oder Systeminstabilität führt.
Nachfolgend finden Sie eine Reihe von angepassten G-Code-Befehlen, die zur Steuerung der GPIO-Karte verwendet werden. Damit können Sie Ausgangszustände konfigurieren, Eingangszustände auslesen und andere erweiterte Einstellungen auf der Karte über G-Code-Befehle verwalten, die sich nahtlos in den Arbeitsablauf Ihres 3D-Druckers integrieren lassen.
Um die Ausgangspins auf dem GPIO-Board zu steuern, können Sie die folgenden G-Code-Befehle verwenden:
M262 P<base 10> B<base 10>
M264 P<base 10> B<0 oder 1>
M265 P<base 10>
M267 R<1-3> B<0-255>
Um den Status von Pins zu lesen oder Konfigurationen einzurichten, verwenden Sie die folgenden G-Code-Befehle:
M263 P<base 10>
M261 A<Slave-Geräteadresse Basis 10> B<Anzahl der Bytes> S<style>
268 R<base 10>
Um die Eingangspins für Ihr Setup zu konfigurieren, wird jeder Eingangspin automatisch einer bestimmten G-Code-Datei zugeordnet, die sich auf dem USB-Stick befindet. Diese Dateien müssen in einem Ordner mit dem Namen „macros“ gespeichert werden und einer strengen Namenskonvention folgen: der Dateiname muss das Format
haben
btn_{pin_number}.gcode
wobei {pin_number} dem spezifischen GPIO-Pin entspricht, den Sie verwenden. Alle Buchstaben in den Dateinamen müssen klein geschrieben werden.
tragen.
Das System unterstützt 8 Eingangspins auf dem GPIO-Board, und jeder Pin kann auf diese Weise einer eigenen G-Code-Datei zugeordnet werden.
Wenn eine G-Code-Datei über ihren entsprechenden Eingangspin ausgelöst wird, wird der in dieser Datei gespeicherte G-Code sofort in den laufenden Prozess injiziert. Bitte beachten Sie, dass es eine Größenbeschränkung für jede G-Code-Datei gibt, die nicht größer als 1024 Bytes sein darf.
Wenn ein Eingangs-Pin mit M262 konfiguriert und auf 1 (Eingangsmodus) gesetzt wird, wird der Zustand des Pins periodisch alle 0,5 Sekunden überprüft.
Wenn eine an den Pin angeschlossene Taste gedrückt wird (Status des Pins geht auf LOW), wird eine Makrotaste ausgelöst. Eine Taste an Pin 7 kann zum Beispiel automatisch ein Makro ausführen, das in der Datei macros/btn_7.gcode auf einem USB-Stick gespeichert ist. Das Makro wird in die Drucksequenz eingefügt, mit einer Größenbeschränkung von 1024 Bytes.
Die Konfiguration der Pins und ihre Zustände werden im EEPROM gespeichert, so dass die Pin-Einstellungen (Ausgangs-/Eingangsmodi, Polarität und Zustände) auch nach einem Stromausfall erhalten bleiben.
Änderungen, die über M262, M264, M267 oder einen anderen relevanten G-Code vorgenommen werden, aktualisieren das EEPROM, so dass die Einstellungen dauerhaft erhalten bleiben.
Bei den Pins 0-3, die keine internen Pull-Up-Widerstände haben, kann die Konfiguration als Eingang ohne zusätzliche externe Schaltung zu einem invertierten logischen Zustand führen. Dies kann versehentlich die Ausführung von Makros auslösen, da ihr Standard-Ruhezustand LOW (0) ist.
Sie können die Logik der Eingangspins mit Hilfe des Polaritätsregisters (M267 R2 B<Wert>) invertieren. Diese Funktion ist besonders nützlich für Pins ohne Pull-Up-Widerstände (Pins 0-3), die standardmäßig einen Leerlaufzustand von 0 (LOW) haben und unerwünschte Aktionen auslösen können, wenn sie nicht konfiguriert sind.
Der Hauptunterschied im Verhalten der Pins ergibt sich aus der Tatsache, dass die Pins 4-7 interne Pull-Up-Widerstände nutzen können, die sie auf HIGH (3,3 V) halten, wenn sie nicht aktiv auf LOW gesteuert werden. Diese Pull-up-Widerstände sind jedoch nur aktiv, wenn die entsprechenden Lötbrücken (JP4 bis JP7) angeschlossen sind. Wenn diese Jumper nicht angelötet sind, verhalten sich die Pins 4-7 ähnlich wie die Pins 0-3 und befinden sich standardmäßig in einem schwebenden Zustand.
Bei der Verwendung von Eingangs-Pins zum Auslösen von Makros ist das System so konzipiert, dass es einen LOW-Zustand als Hinweis auf eine gedrückte Taste erkennt. Bei Pins ohne aktive Pull-Up-Widerstände kann dieser Standard-LOW-Zustand versehentlich Makros auslösen, es sei denn, die Polarität wird invertiert.
Beim Konfigurieren oder Beschreiben von Pins gibt das System über die serielle Schnittstelle eine Warnung aus, wenn die beabsichtigte Operation nicht übereinstimmt (z.B. beim Versuch, auf einen Input-Pin zu schreiben). Es ist wichtig, die Pins mit M262 korrekt zu konfigurieren, um solche Konflikte zu vermeiden.
Fügen Sie den Code genau an den Stellen ein, an denen er benötigt wird, nach/vor einem anderen bestimmten G-Code Befehl. Im Beispiel-Screenshot ist der angepasster G-Code, der das GPIO-Board steuert über den PrusaSlicer eingestellt und nach jedem Schichtwechsel positioniert. Er kann jedoch an jedem beliebigen Punkt positioniert werden.
In dem unten angehängten Bild sehen Sie die Verbindung zwischen dem GPIO-Modul und dem Addon-Controller, der für die Steuerung des Lüfterfilters und der LED des Original Prusa Enclosure verantwortlich ist.
Wenn Sie eine Frage zu etwas haben, das hier nicht behandelt wird, sehen Sie sich unsere zusätzlichen Ressourcen an.
Und wenn das nicht ausreicht, können Sie über die Schaltfläche unten oder an die [email protected] eine Anfrage senden.