DE
  • English
  • Italiano
  • Polski
  • Français
Login
Menu
Zuletzt aktualisiert a month ago
Dieser Artikel ist auch in folgenden Sprachen verfügbar: 
ENPLITFR

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.

WICHTIG: Um das volle Potenzial des GPIO-Boards zu nutzen, benötigen Sie Firmware 6.2.0-alpha1 oder neuer. Besuchen Sie GitHub, um die neueste Firmware herunterzuladen.

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.

Ideen für Anwendungsfälle

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.

Sicherheit geht vor!

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.

Außerdem empfehlen wir, dass nur erfahrene Benutzer mit einem soliden Verständnis von Elektronik und G-Code-Manipulation dieses GPIO-Modul verwenden, da unsachgemäße Anschlüsse oder Konfigurationen zu Hardwareschäden oder Sicherheitsrisiken führen können.

Schaltpläne

Die Schaltpläne sind Open Source und auf unserer Seite Open Source bei Prusa Research verfügbar.

So installieren Sie die GPIO-Platine

  1. Stellen Sie sicher, dass der Drucker auf Raumtemperatur abgekühlt ist, und schalten Sie ihn aus.
  2. Öffnen Sie die Abdeckung des xBuddy-Gehäuses, indem Sie vier M3x6-Schrauben entfernen.
  3. Verbinden Sie das GPIO-Kabel mit dem I2C Port.
  4. Schließen Sie den Deckel der xBuddy-Box.
  5. Versichern Sie sich, dass der GPIO keine Metallteile der xBuddy Box oder deren Abdeckung berührt.
  6. Genießen Sie Ihr Projekt!

Pins

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.

Es ist möglich, externe Pull-up-Widerstände an die JP-Pins zu löten. Dadurch ändert sich das oben beschriebene Verhalten. Weitere Einzelheiten dazu finden Sie im Abschnitt Pull-up-Widerstände weiter unten.

Das Verhalten der Pins im Open-Drain-Zustand bei Verwendung als Ausgänge lässt sich wie folgt erklären:

  • Pin auf 0 (LOW): Der Pin ist ausgeschaltet und befindet sich in einem „schwebenden“ Zustand, d.h. er ist nicht mit einer bestimmten Spannung verbunden. In diesem Zustand kann die Spannung am Pin schwanken und ist nicht genau definiert, es sei denn, sie wird durch einen Pull-Up-Widerstand stabilisiert.

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.

  • Pin auf 1 (HIGH): Der Pin ist eingeschaltet und mit der Masse (0 V) verbunden, wodurch die Spannung am Pin auf 0 V abfällt. Dieser Zustand ist eindeutig und führt zu keiner Mehrdeutigkeit bei der Signalerkennung.

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.

Pull-up-Widerstände

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:

  • JP4 ist mit Pin 4 verbunden.
  • JP5 ist mit Pin 5 verbunden.
  • JP6 ist mit Pin 6 verbunden.
  • JP7 ist mit Pin 7 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.

GPIO über benutzerdefinierten G-Code einstellen

Allgemeine Informationen

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.

Pin-Steuerung über G-Code

Um die Ausgangspins auf dem GPIO-Board zu steuern, können Sie die folgenden G-Code-Befehle verwenden:

  1. Pin-Modus einstellen (Ausgang oder Eingang)
    M262 P<base 10> B<base 10>
    • P<0-7>: Wählen Sie die zu konfigurierende Pin-Nummer (von 0 bis 7).
    • B<0 oder 1>: Legen Sie den Pin-Modus fest.
      • 0 - konfiguriert den Pin als Ausgang
      • 1 - konfiguriert ihn als Eingang.
    • Beispiel: M262 P0 B0 - Konfiguriert den Pin 0 als Ausgangspin.
  2. Zustand auf einen Ausgangspin schreiben
    M264 P<base 10> B<0 oder 1>
    • P<0-7>: Wählen Sie die Pin-Nummer, auf die geschrieben werden soll (von 0 bis 7).
    • B<0 oder 1>: 0 Schreiben, um den Pin auf LOW zu setzen oder 1, um den Pin auf HIGH zu setzen.
    • Beispiel: M264 P0 B1 - Setzt den Ausgangspin 0 auf HIGH (1).
  3. Zustand des Ausgangspins umschalten
    M265 P<base 10>
    • P<0-7>: Wählen Sie die Pin-Nummer, die umgeschaltet werden soll (von 0 bis 7).
    • Dieser Befehl kehrt den aktuellen Zustand des ausgewählten Pins um.
    • Beispiel: M265 P0 - Schaltet Pin 0 um.
  4. Erweiterte Registereinstellungen (für erfahrene Benutzer)
    M267 R<1-3> B<0-255>
    • R<1-3>: Wählen Sie das zu konfigurierende Register:
      • 1: Ausgangsregister.
      • 2: Polaritätsregister.
      • 3: Konfigurationsregister.
    • B<0-255>: Legen Sie den Wert fest, der in das ausgewählte Register geschrieben werden soll.
    • Beispiel: M267 R3 B255 - Konfiguriert das Konfigurationsregister mit dem Wert 255 (alle Pins auf Eingänge gesetzt).

Um den Status von Pins zu lesen oder Konfigurationen einzurichten, verwenden Sie die folgenden G-Code-Befehle:

  1. Zustand des Pins lesen
    M263 P<base 10>
    • P<0-7>: Wählen Sie die Pin-Nummer aus, von der gelesen werden soll (von 0 bis 7).
    • Der zurückgegebene Wert zeigt an, ob der Pin HIGH (1) oder LOW (0) ist.
    • Beispiel: M263 P6 - Liest den Zustand von Pin 6 (gibt 32 für HIGH oder 0 für LOW zurück).
  2. Gesamtes Eingangsregister lesen
    M261 A<Slave-Geräteadresse Basis 10> B<Anzahl der Bytes> S<style>
    • Dieser Befehl liest das gesamte Eingaberegister und gibt eine Zahl im angegebenen „style“-Format zurück, die den Zustand aller Eingangspins (von 0 bis 7) darstellt.
    • Mögliche Zustände sind:
      • 1 - HEX DUMP
      • 2 - vorzeichenbehaftete Zwei-Byte-Ganzzahl, Basis 10 (int16)
      • 3 - Byte ohne Vorzeichen, Basis 10 (uint8)
    • Geräteadresse ist immer 32
    • Beispiel: M261 A32 B1 S3 - liest das gesamte Eingangsregister und gibt es als vorzeichenloses Byte zur Basis 10 zurück
  3. Lesen des Registers des IO-Expanders (Für erfahrene Benutzer)
    268 R<base 10>
    • Dies liest das gesamte Byte des angegebenen Registers auf einmal
    • R<0-3>:
      • 0 - Eingabe
      • 1 - Ausgang
      • 2 - Polarität
      • 3 - Konfig
    • Beispiel: M268 R3 - Liest Konfig-Register

So richten Sie den G-Code für die Eingangspins ein

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.

Zum Beispiel:

  • Wenn Sie Pin 7 verwenden, muss die entsprechende G-Code-Datei btn_7.gcode heißen und im Ordner „macros“ abgelegt werden.
  • Analog dazu sollte die Datei für Pin 4 den Namen btn_4.gcode
  • 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.

Erweiterte Eingangssteuerung und Makro-Triggerung

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.

Persistenter Speicher

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.

Randfälle

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.

Alle Pins (0-7) unterstützen gleichermaßen die Polaritätsumkehrung. Das bedeutet, dass Sie die Logik für jeden Pin, der als Eingang konfiguriert ist, invertieren können.

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.

Warnungen und Beschränkungen

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.

Benutzerdefinierter G-Code in Prusa Slicer

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.

Beispiele

Beispiel für den Anschluss des GPIO-Moduls an den Addon-Controller (Lüfterfilter und LED)

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.

Wir entwickeln derzeit eine Klinke-zu-Molex-Kabel-Lösung für die Verbindung zwischen dem GPIO-Board und dem EnclosureBasic-Board. Dies wird eine einfache und benutzerfreundliche Möglichkeit bieten, die Steuerungen des Gehäuses zu verwalten.

Image of example setup for enclosure

War dieser Artikel hilfreich?

Kommentare

Sie haben noch Fragen?

Sie haben noch Fragen?

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.

Kontakt