Inhaltsverzeichnis:

Der robotische Filamentspender für Arduino - Gunook
Der robotische Filamentspender für Arduino - Gunook

Video: Der robotische Filamentspender für Arduino - Gunook

Video: Der robotische Filamentspender für Arduino - Gunook
Video: Süßigkeitenspender mit 3D-Druck und Arduino 2024, Juli
Anonim
Image
Image

Warum ein motorisiertes Werkzeug

3D-Drucker-Filament - normalerweise fast robust - wird vom Extruder gezogen, während die Rolle in der Nähe des Druckers frei drehbar ist. Ich habe deutliche Unterschiede im Materialverhalten je nach Nutzungsgrad, bezogen auf 1Kg Filamentrollen, beobachtet. Eine neue (volle) Filamentspule fließt fast gut, aber die vom Extruder aufgebrachte Kraft sollte relativ relevant sein: Das Gewicht beträgt mindestens 1,5 kg.

Der Extrudermotor (in den meisten Fällen ein Nema17-Stepper) hat genügend Leistung, um die Arbeit zu erledigen, aber die beiden Zahnräder des Extruders, die das Filament während des Betriebs zur Hot-End-Seite drücken, sammeln aufgrund der aufgebrachten Kräfte Partikel des Filaments; Dies erfordert eine häufige Extruderwartung, um ein Verstopfen der Düse zu vermeiden. Diese Partikel neigen dazu, sich beim Zuführen des sauberen Filaments abzulösen und sich mit diesem zu vermischen, was zu Düsenproblemen und einem häufigeren Düsenverschleiß führt; dies tritt häufiger bei Düsen mit einem Durchmesser von 0,3 mm auf.

Wenn die Filamentrolle halb oder mehr verbraucht ist, werden ihre Spiralen kleiner und unter bestimmten Umgebungsbedingungen neigt das Filament dazu, zu häufig zu brechen. Lange Druckaufträge werden weniger zuverlässig und stressig; Ich kann den Drucker nicht eine ganze Nacht alleine arbeiten lassen, ohne ihn zu kontrollieren. Somit löst die Steuerung des Filamentvorschubs durch Motorfiguren eine Reihe von Problemen.

Das Kit ist auf Tindie.com erhältlich

Schritt 1: Der Kit-Inhalt

Der Kit-Inhalt
Der Kit-Inhalt
Der Kit-Inhalt
Der Kit-Inhalt

Das Kit enthält alle 3D-gedruckten Teile und die Mechanik zum Zusammenbau des motorisierten Filamentspenders. Stattdessen gibt es zwei optionale Teile: den Motor und die Motorsteuerplatine.

In meinem Setup habe ich einen 12-V-McLennan-Getriebebürstenmotor verwendet, aber jeder Getriebemotor mit 37 mm Durchmesser kann richtig in die Motorhalterung passen.

Die besten Leistungen werden mit einem TLE94112LE Arduino Shield von Infineon erreicht (vollständiger Test hier); Diese DC-Motor-Controller-Platine kann bis zu 6 verschiedene Roboter-Dispenser-Kits gleichzeitig unterstützen.

Ich habe das gesamte System sowohl auf einem Arduino UNO R3 als auch auf dem Arduino-kompatiblen Board XMC1100 Boot Kit von Infineon getestet und das System reagierte mit beiden Mikrocontroller-Boards sehr gut.

Die Verwendung des TLE94112LE-Shields wird empfohlen, ist aber nicht zwingend erforderlich. Jeder DC-Motorcontroller für Arduino - auch Ihr eigenes Projekt! - kann gut mit diesem Tool arbeiten

Der Bausatz ist in zwei Teilesätze unterteilt, da zwei Teile so gebaut sind, dass sie zusammenarbeiten. Die Basisplattform, trägt die Filamentrolle, die sich auf den vier Freilauflagern dreht. Die Basis ist am Gewichtssensor befestigt, um den Drehmechanismus zu steuern, der seine Aktivierung auslöst, sowie um die Filamentbedingungen zu überwachen: Gewicht, Meter und Prozent. Viele Informationen sowie ein kompletter Befehlssatz sind vom Arduino über ein serielles Terminal zugänglich.

Werkzeuge, die Sie brauchen

Um die Montage abzuschließen, benötigen Sie für einige Teile etwas robusten Kunststoffkleber, einen Schraubendreher und einen Satz Inbusschrauben.

Schritt 2: Das Projekt und das Design

Das Projekt und Design
Das Projekt und Design
Das Projekt und Design
Das Projekt und Design
Das Projekt und Design
Das Projekt und Design

Dieses Projekt ist die dritte Weiterentwicklung der 3D-Drucker-Filamentspender-Serie Vor einiger Zeit habe ich die rotierende Basis geschaffen, um den Fluss des Filaments beim Ziehen durch den 3D-Drucker-Extruder zu optimieren.

Das zweite Modell enthielt einen Gewichtssensor zur Echtzeitüberwachung der Filamentnutzung mit einem Arduino-Board. Dieses letzte Projekt beinhaltet die automatisierte Freigabe des Filaments je nach den Anforderungen des 3D-Druckauftrags. Es basiert auf der virtuellen Gewichtsänderung, wenn der Extruder beginnt, das Filament zu ziehen. Dieses Ereignis löst den Mikrocontroller durch den Gewichtssensor aus und die motorisierte Filamentrolle beginnt, einige Zoll Material freizugeben, dann abzubremsen und zu stoppen.

Die Bauteile wurden im STL-Format exportiert und 3D-gedruckt, anschließend veredelt und zusammengebaut. Ich habe eine benutzerdefinierte Unterstützung erstellt, um das Bewegungsteil an der Basis auszurichten. Die längere Aluminiumschiene wurde auch verwendet, um das Arduino und das Motorschild zu unterstützen, um das gesamte Werkzeug kompakt und leicht zu bewegen.

Bei der Erstellung des Designs bin ich einer Reihe von Annahmen gefolgt:

  • Die automatisierte Engine fast einfach und leicht reproduzierbar machen
  • Reduzieren Sie die Anzahl der nicht 3D-druckbaren Komponenten so weit wie möglich, um es herzustellen
  • Reduzieren Sie die Belastung des Extruders beim Drucken so weit wie möglich
  • Verwenden Sie eine kostengünstige und einfach zu programmierende Mikrocontrollerplatine
  • Verwenden Sie den Gewichtsbelastungssensor, um den Filamentverbrauch und die Filamentzufuhr unter Kontrolle zu halten. Verwalten Sie die Umgebungsgeräusche, die die Filamentgewichtsmessungen stören

Dies ist das Ergebnis, das ich erreicht habe.

Schritt 3: Zusammenbau der Basis

Zusammenbau der Basis
Zusammenbau der Basis
Zusammenbau der Basis
Zusammenbau der Basis
Zusammenbau der Basis
Zusammenbau der Basis

Der erste Schritt ist die Montage der Basis mit dem Gewichtssensor.

  1. Stecken Sie das kleine Lagerachsenrohr in das Lagerloch
  2. Legen Sie die beiden Trennscheiben an die Seiten des Lagers
  3. Führen Sie die Komponenten in die "U"-große Lagerhalterung ein und richten Sie die Löcher aus
  4. Setzen Sie die Inbusschraube auf einer Seite und die Unterlegscheibe und die Mutter auf die andere Seite ein und schließen Sie die Mutter ohne großen Kraftaufwand

Sie sollten den Vorgang an allen vier Lagerböcken wiederholen. Testen Sie dann die Montage: Die Lager sollten sich frei drehen.

Befestigen Sie nun mit den Inbusschrauben die vier Lagerstützen auf der oberen Basis mit den vier Regulierungslöchern. Richten Sie die Lagerstützen aus, um sie parallel zu halten. Regulieren Sie den Abstand je nach Breite Ihrer Filamentrollen.

Der nächste Schritt besteht darin, die Gewichtssensorleiste zusammenzubauen, die die untere und die obere Basis zusammenhält. Der Gewichtssensor hat auf beiden Seiten zwei verschiedene Inbusschrauben und Sie sollten ihn so ausrichten, dass das Maximalgewichtsetikett lesbar ist, wenn die Basis richtig positioniert ist. Die untere Basis hat zwei zusätzliche seitliche Löcher, um den A/D-Verstärker des Gewichtssensors zu befestigen. Der auf dem HX711 IC basierende Verstärker wird mit Strom versorgt und über die vier Drähte mit dem Arduino-Board verbunden, wie im beigefügten Sensordatenblatt gezeigt.

Der letzte Schritt ist die Montage des kompletten Oberbodens über den bereits am Unterteil befestigten Gewichtssensor.

Die erste Komponente ist eingerichtet!

Schritt 4: Zusammenbau der Spool Motion-Motorteile

Zusammenbau der Spool Motion-Motorteile
Zusammenbau der Spool Motion-Motorteile
Zusammenbau der Spool Motion-Motorteile
Zusammenbau der Spool Motion-Motorteile
Zusammenbau der Spool Motion-Motorteile
Zusammenbau der Spool Motion-Motorteile

Das einfachere Verfahren zum Zusammenbauen des Spool-Motion-Motors besteht darin, die vier wichtigsten Komponenten separat zusammenzubauen und dann das endgültige Gebäude fertigzustellen:

Der DC-Getriebemotor im Motorgetriebekasten

Der Gleichstrommotor sollte im mittleren Teil des Strukturträgers montiert werden; Bevor Sie den Motor anschrauben, sollten Sie entscheiden, welche Seite Ihre bevorzugte Seite ist, wo Sie die Getriebeseite platzieren, um die beiden Arme, die den Motor und das angetriebene große Zahnrad halten, richtig auszurichten.

Das angetriebene große Zahnrad

Das große Zahnrad sollte mit den vier Inbusschrauben mit dem Kegelstumpfblock verschraubt werden. Dieses Zahnrad wird auf der Drehachse durch Muttern blockiert; Der konische Teil hält die Filamentspule, die auf der anderen Seite durch eine ähnliche Kontermutter in einem anderen abgestumpften konischen Block gesichert ist. Diese Lösung hält nicht nur den Bewegungsmechanismus an Ort und Stelle, sondern leitet das gesamte Gewicht auf die Basis und es ist das Eigengewicht des Systems.

Der Spulenschlosshalter

Dies ist der kegelstumpfförmige Block, der zusammen mit der ähnlichen Verriegelungsseite des angetriebenen Zahnrads den Bewegungsmechanismus an der Filamentspule hält. Aus Taktgründen ist es die Filamentrolle, die das Gebäude vervollständigt, während sich die Bewegung mit zwei Armen auf der anderen Seite frei bewegen kann.

Wie auf den Bildern zu sehen ist der Spulenschlosshalter zweiteilig aufgebaut. Setzen Sie zuerst die M4-Mutter in den größeren Teil des Blocks ein und kleben Sie dann den zweiten Teil (die Abdeckung) zusammen, um die Blöcke zusammenzuhalten. Die Mutter bleibt im Schlosshalter gefangen, der mit der Gewindeachse verschraubt wird.

Die Lagerbox

Das Lagergehäuse hat zwei Funktionen: eine gute Unterstützung der Getrieberäder und eine sanfte und geräuschlose Bewegung zu gewährleisten. Um die Lagerbox zu montieren, folgen Sie diesen einfachen Schritten:

  1. Schrauben Sie die erste M4-Mutter an eines der beiden Enden der Gewindespulenhalter-Antriebsachse
  2. Setzen Sie das erste Lager ein
  3. Trennzeichen einfügen
  4. Setzen Sie das zweite Lager ein
  5. Schrauben Sie die zweite Mutter auf und kontern Sie sie mäßig. Der interne Kunststoff-Separator widersetzt sich ausreichender Kraft, um die Dinge auch bei längerem Gebrauch an Ort und Stelle zu halten.
  6. Setzen Sie die montierten Lager in den Lagerkasten ein. Es sollte erzwungen werden, um die besseren Ergebnisse zu erzielen, also dehnen Sie das Innere der Box beim Veredeln der Kunststoffteile nicht zu stark aus.

Wir sind bereit für die Endmontage der Komponenten!

Schritt 5: Abschluss der Montage der Motion Engine

Abschließen der Montage der Motion Engine
Abschließen der Montage der Motion Engine
Abschließen der Montage der Motion Engine
Abschließen der Montage der Motion Engine
Abschließen der Montage der Motion Engine
Abschließen der Montage der Motion Engine

Wir sind dabei, die Strukturmontage abzuschließen, dann können wir die Bewegung testen. Jetzt brauchst du wieder etwas Kleber. Der im vorigen Schritt zusammengebaute Lagerkasten sollte in das Kastenhalterloch des zweiarmigen Motorträgers eingesetzt und ggf. verklebt werden, bevor der Kastendeckel verschraubt wird.

Achtung: Boxdeckel nicht kleben, sondern nur verschrauben. Die Abdeckung ist wichtig für den Staubschutz und sollte für zukünftige Wartungsarbeiten abnehmbar sein.

Wenn diese Einrichtung abgeschlossen ist, bevor Sie das angetriebene Zahnrad (das größere) hinzufügen, fügen Sie den kleinen Trennring hinzu: Er hält das große Zahnrad mit dem Motorzahnrad ausgerichtet und dient als Unterlegscheibe, um die angetriebene bewegliche Baugruppe zu fixieren.

Setzen Sie dann das Antriebszahnrad (das kleine) in die Motorwelle ein. Beachten Sie, dass sich sowohl im Motor als auch im Mittelloch des Getriebes eine flache Seite befindet, um das vom Gleichstrommotor angetriebene Getriebe in Rotation zu halten.

Setzen Sie im letzten Schritt das große Abtriebsrad wie in den Bildern gezeigt ein und befestigen Sie es mit zwei M4-Muttern an der Gewindeachse.

Der Mechanikerbau ist fertig!

Schritt 6: Bonus: Wie ich den Support zur Verwaltung des Kits angepasst habe

Bonus: Wie ich den Support für die Verwaltung des Kits angepasst habe
Bonus: Wie ich den Support für die Verwaltung des Kits angepasst habe
Bonus: Wie ich den Support für die Verwaltung des Kits angepasst habe
Bonus: Wie ich den Support für die Verwaltung des Kits angepasst habe
Bonus: Wie ich den Support für die Verwaltung des Kits angepasst habe
Bonus: Wie ich den Support für die Verwaltung des Kits angepasst habe

Um das Kit an Ort und Stelle zu halten, habe ich eine sehr einfache Struktur basierend auf zwei Aluminium-Vierkantrohren erstellt, um sowohl die Basis als auch die Bewegungsstruktur zu unterstützen. Die Basis wurde mit vier Schrauben an den beiden Schienen befestigt (ca. 25 cm Länge) und mit ein paar kleinen 3D-gedruckten Stützen habe ich die Motion Engine frei bewegt, um das Einsetzen und Entfernen der Filamentrolle zu erleichtern.

Jeder kann seine eigene Lösung wählen, je nachdem, wie seine Werkbank organisiert ist.

Schritt 7: Verkabelung und Anschluss an Arduino

Image
Image
Verkabelung und Anschluss an Arduino
Verkabelung und Anschluss an Arduino

Wie im Schritt Kit-Inhalt erläutert, habe ich ein Infineon TLE94112LE DC-Motorschild für Arduino verwendet und die Engine sowohl auf Arduino UNO R3 als auch auf Infineon XMC110 Boot Kit getestet.

Wenn Sie den Motor (PWM-Funktionen benötigen) mit einem DC-Controller-Board Ihrer Wahl ansteuern möchten, passen Sie die Anleitung einfach an die technischen Spezifikationen Ihres Shields an.

Ein Hinweis zum TLE04112LE Arduino Shield

Eine der Grenzen, die ich bei anderen Motorsteuerungsschilden für Arduino erlebt habe, ist, dass sie die Funktionen desselben Mikrocontrollers verwenden (dh PWM- und GPIO-Pins); Das bedeutet, dass sich Ihr Board diesen Aufgaben widmet, während nur wenige andere Ressourcen (MPU und GPIO) für andere Zwecke zur Verfügung stehen.

Die Möglichkeit, das Arduino-Shield TLE94122LE für Straßentests in die Hände zu nehmen, ist der offensichtlichste Vorteil des ICs, auf dem das Board basiert, nur seine Vollständigkeit. Das Arduino-Board kommuniziert über das SPI-Protokoll mit nur zwei Pins mit dem Shield. Jeder Befehl, den Sie an das Schild senden, wird vom TLE94112LE-IC autonom verarbeitet, ohne MPU-Ressourcen zu verbrauchen. Ein weiteres bemerkenswertes Merkmal des Infineon-Boards ist die Möglichkeit, bis zu sechs Bürstenmotoren mit drei programmierbaren PWM-Kanälen anzusteuern. Das bedeutet, dass Arduino einen oder mehrere Motoren einrichten, starten und an anderen Aufgaben weiterarbeiten kann. Dieses Shield erwies sich als perfekt, um bis zu sechs verschiedene Filamentrollen gleichzeitig zu unterstützen. Die Bewegung ist nur eine der Aufgaben der MPU. In Anbetracht der Möglichkeit, sechs verschiedene Filamentspulen mit einem einzigen Arduino + Shield zu verwalten, wirken sich die Mikrocontrollerkosten aus auf jeden einzelnen Filament Controller für unter 5 Euro.

Der Gewichtssensor

Nach einigen Experimenten sah ich, dass es möglich war, das gesamte System - Überwachung und automatische Fütterung - mit einem einzigen Sensor zu steuern; Eine Wägezelle (Gewichtssensor) ist in der Lage, die Gewichtsschwankungen der Filamentspule dynamisch zu messen und liefert alle Informationen, die wir benötigen.

Ich habe eine preiswerte Wägezelle im Bereich von 0-5 kg zusammen mit einer kleinen Platine verwendet, die auf dem HX711 AD-Verstärker basiert, einem IC, der speziell für die Verwaltung der Wägezellensensoren ausgelegt ist. Es gab keine Schnittstellenprobleme, da eine gut funktionierende Arduino-Bibliothek verfügbar ist.

Drei Schritte zum Einstellen der Hardware

  1. Setzen Sie die Abschirmung oben auf das Arduino-Board oder das Infineon XMC110 Boot Kit ein
  2. Verbinden Sie die Motoradern mit den Schraubanschlüssen Out1 und Out2 des Schirms
  3. Verbinden Sie die Stromversorgung und die Signale des Gewichtssensorverstärkers HX711 AD mit den Arduino-Pins. In diesem Fall habe ich die Pins 2 und 3 verwendet, aber alle freien Pins sind in Ordnung.

Achtung: Pins 8 und 10 sind vom TLE94113LE-Shield für die SPI-Verbindung reserviert

Das ist alles! Sind Sie bereit, die Software einzurichten? Fortfahren.

Schritt 8: Der Software- und Steuerbefehlssatz

Der Software- und Steuerbefehlssatz
Der Software- und Steuerbefehlssatz
Der Software- und Steuerbefehlssatz
Der Software- und Steuerbefehlssatz
Der Software- und Steuerbefehlssatz
Der Software- und Steuerbefehlssatz
Der Software- und Steuerbefehlssatz
Der Software- und Steuerbefehlssatz

Die vollständig dokumentierte Software kann vom GitHub-Repository 3DPrinterFilamentDispenserAndMonitor heruntergeladen werden

hier betrachten wir nur die sinnvollsten Teile und die Steuerbefehle.

Es gibt einen Grund, der durch die Anzahl der verfügbaren Pins auf dem Arduino UNO auferlegt wird. Ich habe mich entschieden, das System über den seriellen USB-Anschluss zu steuern. Da jede motorisierte Einheit auf einem Gewichtssensor basiert, erfordert die Steuerung von sechs verschiedenen Filamentspendern das Auslesen von Daten von sechs Gewichtssensoren. Jede Wägezelle "verbraucht" zwei Pins, Pin 0 und 1 sind reserviert (Tx/Rx) für die serielle und Pins 8 und 10 sind für den SPI-Kanal reserviert, der die TLE94112LE-Abschirmung verbindet.

Systemstatus

Die Steuerungssoftware durchläuft vier verschiedene Zustände, die in filament.h definiert sind:

#define SYS_READY "Bereit" // System bereit

#define SYS_RUN "Läuft" // Filament wird verwendet #define SYS_LOAD "Load" // Rolle geladen #define SYS_STARTED "Gestartet" // Anwendung gestartet // Statuscodes #define STAT_NONE 0 #define STAT_READY 1 #define STAT_LOAD 2 #define STAT_RUN 3

Status: Gestartet

Dieser Status tritt nach einem Hardware-Reset oder beim Einschalten des Systems auf. Das Einschalten (und setup() Aufruf beim Starten der Skizze) initialisiert die internen Standardwerte und sollte ohne zusätzliches Gewicht auf der Plattform gestartet werden als Teil der Initialisierungssequenz ist die Erfassung des absoluten Tara um das physikalische Nullgewicht zu erreichen.

Status: Bereit

Der Bereitschaftszustand tritt nach einem Soft-Reset (vom seriellen Terminal gesendet) auf. Es ist ähnlich wie bei der physischen Resektion, aber es wird kein Tara berechnet; Der Reset-Befehl kann auch bei laufendem System ausgeführt werden.

Status: Laden

Der Ladestatus tritt ein, wenn der Ladebefehl vom Terminal gesendet wird. Dies bedeutet, dass die Filamentrolle geladen und das dynamische Tara berechnet wurde. Das genaue Filamentgewicht ergibt sich aus der Art der Rollenaufstellung abzüglich des Gewichts der Motoreinheit und der leeren Rolle.

Status: Läuft

Dieser Status aktiviert die automatische Gewichtsberechnung und den automatischen Filamentspender.

Terminalmeldungen

Die aktuelle Version der Software gibt abhängig von den Befehlen menschenlesbare Nachrichten an das Terminal zurück. Die String-Nachrichten sind in zwei Header-Dateien definiert: commands.h (befehlsbezogene Nachrichten und Antworten) und filament.h (Strings, die vom Parser verwendet werden, um zusammengesetzte Nachrichten zu erstellen).

Befehle

An der Befehlsverwaltung sind zwei verschiedene Dateien beteiligt: commands.h mit allen Befehlen und zugehörigen Parametern und filament.h mit allen Konstanten und Definitionen, die vom Gewichtungssystem und vom Parser verwendet werden.

Während die internen Berechnungen automatisch von der Software durchgeführt werden, habe ich eine Reihe von Befehlen implementiert, um das Verhalten des Systems einzustellen und einige Parameter manuell zu steuern.

Bei Befehlsschlüsselwörtern muss die Groß-/Kleinschreibung beachtet werden und sie sollten nur vom Terminal gesendet werden. Wenn ein Befehl nicht für den aktuellen Status geeignet ist, wird er nicht erkannt, wird eine falsche Befehlsnachricht zurückgegeben, sonst wird der Befehl ausgeführt.

Statusbefehle

Ändern Sie den aktuellen Status des Systems und das Verhalten wird ebenfalls angepasst

Filamentbefehle

Mit separaten Befehlen ist es möglich, die Filament- und Rolleneigenschaften basierend auf den gängigsten Gewichten und Größen einzustellen, die heute auf dem Markt erhältlich sind

Einheitenbefehle

Dies sind einige Befehle, um die Anzeige der Maßeinheiten in Gramm oder Zentimeter einzustellen. Tatsächlich ist es möglich, diese Befehle zu eliminieren und Daten immer in beiden Einheiten darzustellen.

Informationsbefehle

Informationsgruppen je nach Systemstatus anzeigen

Motorbefehle

Steuern Sie den Motor für die Filamentzufuhr oder den Fadenzug.

Alle Motorbefehle folgen einem Beschleunigungs-/Verzögerungspfad. Die beiden Befehle feed und pull führen eine kurze Sequenz aus, die in motor.h durch die Konstante FEED_EXTRUDER_DELAY definiert ist, während die Befehle feedc und pullc unbegrenzt laufen, bis kein Stoppbefehl empfangen wird.

Befehle für den Laufmodus

Der laufende Status akzeptiert zwei Modi; mode man liest nur periodisch das Gewicht und der Motor bewegt sich, bis kein Motorsteuerbefehl gesendet wird. Modus Auto führt stattdessen zwei Zufuhrbefehle aus, wenn der Extruder mehr Filament benötigt.

Das Prinzip basiert auf den Gewichtswerten, die auf diese spezielle Umgebung kontextualisiert sind. Wir erwarten, dass der Filamentverbrauch relativ langsam ist, 3D-Drucker fast langsam sind und die normalen Gewichtsschwankungen von den Umgebungsvibrationen abhängig sind (besser, wenn Sie nicht das gesamte Zeug auf den 3D-Drucker legen)

Wenn der Extruder stattdessen das Filament zieht, erhöht sich der Gewichtsunterschied dramatisch (50 g oder mehr) in sehr kurzer Zeit, typischerweise zwischen zwei oder drei Ablesungen. Diese Informationen werden von der Software gefiltert, die "abzieht", dass neues Filament benötigt wird. Um falsche Messwerte zu vermeiden, werden Gewichtsschwankungen bei laufendem Motor ignoriert.

Anwendungslogik

Die Anwendungslogik ist im.ino main (der Arduino-Skizze) auf drei Funktionen verteilt: setup(), loop() und parseCommand(commandString)

Die Skizze verwendet zwei separate Klassen: die FilamentWeight-Klasse, um alle Filamentberechnungen und Sensorauslesungen über den HX711 IC und die MotorControl-Klasse zu verwalten, die die Low-Level-Methoden des Arduino-Shields TLE94112LE verbinden.

erstellen()

Einmal beim Einschalten oder nach einem Hardware-Reset gestartet Initialisieren Sie die Instanzen der Klassen, richten Sie die Hardware und die Terminalkommunikation ein.

Schleife()

Die Hauptschleifenfunktion verwaltet drei verschiedene Bedingungen.

Während es zwei Klassen für Gewichtssensor und Motoren relativ komplex gibt, besteht der Vorteil, dass die resultierende Skizze wirklich einfach zu verstehen und zu verwalten ist.

  1. Überprüfen Sie (im Modus Auto), ob der Extruder mehr Filament benötigt
  2. Wenn der Motor läuft, auf Hardwarefehler prüfen (wird vom TLE94112LE zurückgegeben)
  3. Wenn serielle Daten verfügbar sind, parsen Sie den Befehl

parseCommand(commandString)

Die Parsing-Funktion prüft auf die Strings, die aus der Serie stammen und wenn ein Befehl erkannt wird, wird dieser sofort verarbeitet.

Jeder Befehl fungiert als Zustandsmaschine, die sich auf einen Parameter des Systems auswirkt; Nach dieser Logik werden alle Befehle auf drei sequentielle Aktionen reduziert:

  1. Senden Sie einen Befehl an die FilamentWeight-Klasse (Gewichtsbefehle) oder an die MotorControl-Klasse (Motorbefehle)
  2. Führt eine Berechnung aus, um Gewichtswerte zu aktualisieren oder einen der internen Parameter zu aktualisieren
  3. Auf dem Terminal anzeigen und Informationsausgabe, wenn die Ausführung abgeschlossen ist

Installieren Sie die HX711 Arduino-Bibliothek, laden Sie die Software von GitHub herunter und laden Sie sie auf Ihr Arduino-Board hoch, dann genießen Sie es!

Empfohlen: