Bau eines 3D-FFF-Druckers mit Hilfe des Delta-Roboters Omron/Adept Quattro: Das 3D-Druck-System inkl. Druckbett-Temperierung: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
 
(Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt)
Zeile 59: Zeile 59:


Systemtest unterteilen lässt.
Systemtest unterteilen lässt.
Da die Zeit im Praktikum nicht ausgereicht hat um alle der Punkte abzuarbeiten, wurden nur die auch bearbeiteten Punkte detailliert beschrieben.


== Anforderungsdefinition ==
== Anforderungsdefinition ==
Zeile 248: Zeile 250:


[[Datei:Tutorial 3D Druck.pdf|mini|links]]<br/>
[[Datei:Tutorial 3D Druck.pdf|mini|links]]<br/>


= Stückliste der Bauteile =
= Stückliste der Bauteile =

Aktuelle Version vom 5. Februar 2023, 19:33 Uhr

Autoren: David Schütte, Tristan Thörner

Abb. 1: Druckvorrichtung

← Hauptseite für Robotik
← Hauptseite des Praktikums Produktionstechnik
← zum Hauptartikel: Bau eines 3D-FFF-Druckers mit Hilfe des Delta-Roboters Omron/Adept Quattro


Einleitung und Ausgangssituation

Im Rahmen des Praktikum Produktionstechnik im 7. Semester des Bachelorstudiengangs Mechatronik soll das 3D-Druck-System, welches an einem Picker-Roboter montiert ist, in Betrieb genommen werden. Dieses besteht aus zwei Extrudern und einem großen Heizbett. Der Picker-Roboter, an dessen Armen die Druckvorrichtung angebracht ist, befindet sich in einer großen Zelle aus Aluprofilen. Unter dem Roboter befindet sich auch das Druckbett, welches durch vier einzelne Heizmatten von unten beheizt wird. Ziel in diesem Projekt ist es, die Druckvorrichtung über eine Matlab-GUI (Individuell programmierte Benutzeroberfläche in Matlab) anzusteuern und eine Druckbett-Temperierung zu entwickeln, sodass das große Druckbett auf der gesamten Fläche die gleiche Temperatur hat. Aktuell wird nur die Temperatur von einer der vier Heizmatten abgefragt und geregelt.

Aufbau

Im Folgenden wird einmal der Aufbau des Projektes dargestellt. Dieser ist einmal unterteilt in die mechanischen Komponenten und in die elektrischen Komponenten.

Mechanisch

In Abbildung 2 sieht man den Gesamtaufbau der Roboterzelle. Der Picker-Roboter ist innerhalb eines Aufbaus aus Aluprofilen an eine Holzvorrichtung montiert, welche im obersten Teil an die Profile angeschraubt ist. Oben an der Vorderseite sind außerdem die beiden Halter für die Filamentrollen zu sehen. Dort wird eine Rolle eingehängt und während des Druckvorgangs durch die Schrittmotoren abgerollt. Im unteren Drittel des Rahmens ist das Druckbett zu sehen, welches aus einer großen Aluminiumplatte (mit 9 Schrauben festgeschraubt) besteht. Darunter sind auch die vier Heizmatten angeklebt. Auch am Rahmen montiert ist der Schaltschrank. Darin befinden sich unter anderem die Robotersteuerung, die RAMPS-Platine und alle weiteren wichtigen Bauteile des 3D-Drucksystems.

Abb. 2: Gesamtaufbau des Druckers


An den vier Gelenkarmen des Roboters befindet sich die Druckvorrichtung. Diese setzt sich jeweils aus den Komponenten Extruder (Schrittmotor zur Filamentförderung), Heizblock, Düse (Nozzle), Temperatursensor und Lüfter zusammen. Diese kann man in Abbildung 3 erkennen. Hier ist die beschriebene Stelle des Roboters mit der Druckvorrichtung näher dargestellt.

Abb. 3: Druckvorrichtung

Elektrisch

Abbildung 4 zeigt den elektrischen Aufbau des 3D-Druck-Systems. Dessen wichtigster Bestandteil ist die sogenannte RAMPS 1.4 Platine. Dies ist eine Platine, die extra für 3D-Drucksysteme hergestellt wurde. Sie ist kompatibel mit sehr vielen Druckern und wird auf einen Arduino Mega 2560 aufgesteckt. Der Aufbau in der Abbildung und des vorhandenen Systems sind fast identisch, bis auf dass wir keine Motoren für die X, Y und Z-Achsen haben (Bewegung erfolgt durch den Picker-Roboter) und dass wir vier einzelne Heizmatten haben, dessen Versorgungsspannung einfach auf einer Klemme aufgeteilt wird.

Abb. 4: Verdrahtung der RAMPS

Abbildung 8 zeigt nochmal eine etwas detailiertere Ansicht der RAMPS-Platine zu sehen und wie diese mit dem Arduino Mega 2560 verbunden ist.

Abb. 8: Verbindung von RAMPS und Arduino MEGA

Aufgabe

Im Ausgangszustand wird das Druckbett mit vier einzelnen Heizmatten beheizt. Die Spannungsversorgung für den Heizvorgang wird einfach an einer Klemme von dem Heizanschluss der RAMPS-Platine auf die vier seperaten Heizmatten abgezweigt. In der Theorie müssten somit alle vier Heizmatten gleichmäßig heizen, in der Praxis ist es jedoch so, dass durch die große Fläche des Druckbettes Temperaturunterschiede auftreten. Um dem entgegenzuwirken, sollen die vier Heizmatten einzeln angesteuert und auch die Temperatur (Erfassung durch Thermistor) für jede Heizmatte abgefragt werden. Hierfür soll der Regelkreis der momentan die vier Heizmatten steuert vervierfacht werden. Damit ist im Endeffekt ein Regelkreis für eine Heizmatte zuständig und es kann gewährleistet werden, dass alle Heizmatten gleich warm sind. Dies schließt beispielsweise ein Verziehen des Druckbettes durch unterschiedliche Temperaturen aus.

Außerdem müssen weitere Kinderkrankheiten des Systems behoben werden. Dazu zählt beispielsweise, die Ansteuerung der Extruder zu überarbeiten, die Kabellegungen zu verbessern und die Filamentschläuche anders zu verlegen, damit sie sich nicht im Roboter verhaken. Zudem müssen einige lose Klemmen und Kontakte sowie durchgeriebene Kabel ersetzt werden.

Vorgehen nach V-Modell

Bei der Projektbearbeitung wurde nach dem V-Modell vorgegangen, welches sich in die Punkte

Anforderungsdefinition,

Funktionaler Systementwurf,

Technischer Systementwurf,

Komponentenspezifikation,

Entwicklung,

Komponententest,

Integrationstest und

Systemtest unterteilen lässt.

Da die Zeit im Praktikum nicht ausgereicht hat um alle der Punkte abzuarbeiten, wurden nur die auch bearbeiteten Punkte detailliert beschrieben.

Anforderungsdefinition

Abb. 5: Anforderungsdefinition

{

Funktionaler Systementwurf

Abb. 6: Funktionaler Systementwurf des 3D-Druckers

Quelle: Eigene Darstellung

Technischer Systementwurf

Abb. 7: Technischer Systementwurf des 3D-Druckers

Quelle: eigene Darstellung

Komponentenspezifikation

Abb. 9: Komponentenspezifikation des 3D-Druckers

Entwicklung

Komponententest

Integrationstest

Systemtest

Abnahmetest

Einleitung

Dieser Absatz beschreibt den Abnahmetest der 3D-Drucksysteme und den Status der einzelnen Schritte und Komponenten.

Verwendete Daten

SVN-Projektarchiv: https://svn.hshl.de/svn/MTR_GPE_Praktikum/trunk/Fachthemen/Delta_Roboter_Adept_als_3DDrucker in Version 4322 Benötigte Software: ACE 3.7 ; Matlab R2022b

Der Testfall im Detail

Die Tabelle zu den Testfällen lässt sich über den Knopf "Ausklappen" anzeigen.

Bezeichnung: Abnahmetest
Erstellt von: Schütte , Thörner
Erstellt am: 04.01.2023
Testinstanz: PC / ACE 3.7 (hier Emulator) / Matlab R2022b

Schritt Nr. Beschreibung Ausgangszustand Aktion(en) Erwartetes Ergebnis Ergebnis Bewertung Bemerkung
Precondition 1 PC und Daten vorbereiten PC ist aus, Kabel nicht eingesteckt, lokale Daten veraltet Start des PCs, Update SVN Arbeitskopie (Pfad: https://svn.hshl.de/svn/MTR_GPE_Praktikum/trunk/Fachthemen/Delta_Roboter_Adept_als_3DDrucker) Revision 4322 Der PC ist hochgefahren, die Anlage betriebsbereit und alle benötigten Dateien aus dem SVN Repository sind lokal gespeichert PC ist an, SVN-Ordner (siehe vorherige) ausgecheckt i.O.
Precondition 2 Kommunikationsleitungen anschließen Verbindungsleitungen sind nicht verbunden Gelbe Ethernetleitung der Steuerung und schwarze Leitung der RAMPS-Platine mit dem PC verbinden Leitungen sind erfolgreich verbunden und Lampe der RAMPS leuchtet grün Verbunden und Lampe leuchtet grün i.O.
Precondition 3 Anlage hochfahren Anlage ist aus, Leitungsschutzschalter der Heizmatten ist aus Hauptschalter am Schaltkasten umlegen und Sicherungen der Heizmatten einschalten Anlage ist betriebsbereit, SmartController wird mit Spannung versorgt und Heizmatten sind erhitzt Hand vorsichtig über Heizmatte halten i.O.
Precondition 4 Matlab GUI und ACE 3D Druck Skript öffnen (nicht im Emulationsmodus) starten Kein Programm geöffnet Matlab GUI "START_GUI.mlapp" und ACE Skript "3D-Druck.BA.awp" öffnen. (siehe Bemerkung) Matlab GUI ist geöffnet und das ACE Skript wird im normalen (nicht Emulationsmodus [Checkbox beim öffnen der Datei im Dialogfenster]) ausgeführt. Matlab GUI ist geöffnet und das ACE Skript wird im normalen (nicht Emulationsmodus [Checkbox beim öffnen der Datei im Dialogfenster]) ausgeführt. i.O Matlab GUI: "Delta_Roboter_Adept_als_3DDrucker\03_Vorgehen nach V-Modell\05_Entwicklung\Programmierung\3D_Drucker\GUI\START_GUI.mlapp"

ACE: "Delta_Roboter_Adept_als_3DDrucker\03_Vorgehen nach V-Modell\05_Entwicklung\Programmierung\ACEVplusProgamm\3D-Druck.BA.awp"

Precondition 5 Verbindung zwischen Matlab und ACE (SmartController) herstellen Matlab und Ace geöffnet aber nicht verbunden ACE: links im Worksapce Explorer "matlab.verb" aufklappen und auf "matlab.verb()" rechtsklick ->"Auf Task ausführen"-> "Task 0"

Matlab: Schalter in der GUI auf "ACE + RAMPS" stellen und Schaltfläche "Verbinden" betätigen.

GUI gibt Rückmeldung "ReadyACE+RAMPS" GUI gibt Rückmeldung "ReadyACE+RAMPS" i.O
Testschritt 1 Zu druckende Datei importieren Anlage ist betriebsbereit und Verbindung zu Matlab hergestellt. Gcode als Textdatei eintragen und auf "Import" drücken. Hier testweise eintragen_ "texthallo_kurz.txt" GUI gibt Rückmeldung "Importende" GUI gibt Rückmeldung "Importende" i.O.
Testschritt 2 Druck ausführen Datei ist importiert und Anlage betriebsbereit Schaltfläche "Drucken" betätigen. Der Roboter startet den Druckvorgang, Filament wird gefördert und das zu druckende Teil wird erstellt Der Roboter führt die Bewegungen aus, aber die druckerrelevanten G-Code-Befehle werden nicht erfolgreich an die RAMPS-Platine gesendet n.i.O.
Postcondition 1 Anlage herunterfahren Anlage läuft Verbindung in der GUI trennen, Hauptschalter umlegen SmartController aus. <in Simualtion nicht prüfbar> -
Postcondition 2 PC herunterfahren PC läuft Software Matlab und ACE schließen, PC abmelden PC abgemeldet PC abgemeldet i.O.

G-Code:

Ein G-Code ist des Steuerungsprogramm eines 3D-Druckers und damit etwas wie ein Maschinencode für 3D-Drucker. In diesem Code wird gesteuert in welche Richtung der Roboter fährt, wie heiß der Extruder sowie das Heizbett oder auch Druckbett genannt geheizt werden soll, ob und wie stark die Lüfter und auch die Schrittmotoren angesteuert werden sollen. Hierfür werden sowohl G wie auch M befehle verwendet. Die G-Befehle sind für die Robotersteuerung verantwortlich und werden an ACE verschickt. Die M-Befehle sind hingegen für die Drucksteuerung wichtig. Diese steuern beispielsweise die Extruder und die Schrittmotoren und die Lüfter. Eine Liste an beispielhaften G-Codes ist an Ende dieses Abschnittes zu sehen.

Testdurchläufe

Die Verbindung zwischen dem Computer und der Ramps Platine beziehungsweise dem Arduino wurde mittels USB-Kabel hergestellt. Um die Verbindung zu testen, konnte die vom Vorgänger geschriebene MatLab-App verwendet werden. Diese ist eigentlich für den Betrieb des Roboters sowie das Auslesen von G-Codes gedacht, allerdings zeigt sie auch die korrekte Verbindung an. Um sich mittels App mit der Ramps Platine verbinden zu können, muss allerdings auch eine Verbindung mit dem Roboter über ACE hergestellt werden. Die MatLab-App kann sich nur mit beiden Systemen gleichzeitig oder nur mit ACE verbinden. Eine Verbindung ausschließlich mit der Ramps-Platine ist nicht möglich. Hat man nun sowohl den Roboter mit ACE wie auch den Arduino mittels USB-Kabel an den Computer angeschlossen und Verbunden so kann in der App der Taster "Verbinden" betätigt werden. Sollte nun alles richtig verbunden sein, springt der Regler auf grün und zeigt verbunden an.

Cura:

Um einzelne Bauteile des Druckers zu Testen wurde die Software Cura 3.3.1 verwendet. Mithilfe dieser Software die für den 3D-Druck eingesetzt wird, können beispielsweise gezielt nur ein Extruder oder ein Lüfter angesteuert werden um die Verkabelung und die Funktion der einzelnen Bauteile zu überprüfen. Sollte in Cura alles funktionieren, kann sichergestellt werden, dass die Bauteile einwandfrei funktionieren und mögliche folgende Probleme durch die Programmierung in Matlab oder durch den G-Code verursacht werden.

Marlin:

Die Firmware MArlin wird verwendet um 3D-Drucker mithilfe eines Arduinos anzusteuern. Marlin ist eine Open Source Software, kann also von jedem Nutzer verwendet und frei weiterentwickelt werden.


Probleme und Schwierigkeiten

1. Das Thema 3D-Druck war noch sehr neu für uns, man musste sich also erst über alles informieren und verstehen, wie ein 3D-Druck funktioniert. Dies hat etwas Zeit in Anspruch genommen, allerdings konnten wir nach der Recherche unser System sehr gut verstehen.

2. Die RAMPS-Platine ist auf einen Arduino Mega aufgesteckt und hat nur begrenzte Anschlüsse für weitere Bauteile. Somit ist nur ein Anschluss für das Beheizen des Druckbetts und auch nur ein Anschluss zum Auslesen des Thermistors vorhanden. Um die Heizplattensteuerung zu realisieren, muss man die Anschlüsse also erweitern. Dafür müssen außerdem zusätzliche Schaltungen (mit einfachen elektrischen Bauteilen) angefertigt und angeschlossen werden.

3. Um die Kompatibilität der RAMPS-Platine mit dem Drucksystem zu gewährleisten, muss auf die Platine die sogenannte "Marlin Firmware" aufgespielt werden. In dieser lassen sich kleine Konfigurationen vornehmen (z.B. Anzahl der Extruder, Drucken ohne Heizmatte etc.), allerdings gibt es keine Konfiguration zur Erweiterung der Heizmattensteuerung. Somit müsste die Firmware erst angepasst werden, was aufgrund ihrer Komplexität recht aufwendig ist.

4. Beim Testen der einzelnen Komponenten ist uns aufgefallen, dass es viele lockere Klemmstellen gibt und Leitungen teilweise nicht richtig angeschlossen waren. Somit mussten wir alle Leitungen einmal nachmessen und lockere Klemmstellen beheben, was sehr zeitaufwendig war.

Ergebnis

Die Kabellegungen wurden grundsätzlich überarbeitet, dabei wurden die Kabelkanäle optimiert, sodass es beim Verfahren des Roboters keine Komplikationen mit den Kabeln geben kann. Außerdem wurden die Kabelbeschriftungen angepasst. Hierfür wurden sämtliche Kabel kenntlich gemacht, sodass eine genaue Zuordnung innerhalb des Schaltschrankes möglich war. Zudem wurden defekte Kabel erneuert, die Kontakte und Klemmen erneuert oder ausgebessert um die Ansteuerungsprobleme des Roboters zu lösen. In der Programmierung wurde die Matlab-App zum Verbinden des Roboters mit der Ramps Platine und ACE überarbeitet und einige Fehler behoben, sodass nun eine unkomplizierte Verbindung möglich ist. Zudem wurden die Kabelkanäle der Filamentleitungen so verlegt, dass diese sich beim Verfahren des Roboters nicht mehr verhaken und somit zu einem Stopp führen.

Abgesehen von den Problemen des Roboters, mussten weitere Probleme behoben werden wie eine defekte Grafikkarte im Computer einen defekte am Picker Roboter welcher für einen kompletten Stillstand sorgte.

Ausblick

1. Anschließen der Heizmattensteuerung

2. Einarbeitung der Heizmattensteuerung in die Programmierung

3. Erster Probedruck

Lessons learned

1) Organisiertes Projektmanagement: Mit Hilfe des V-Modells hat man einen sehr guten Grundbaustein für ein strukturiertes Vorgehen. Die Reihenfolge und Zeitabstände der einzelnen Schritte sind festgelegt, sodass man sich daran sehr gut orientieren kann.

2) Ingenieursdenken: Aufgrund der fehlenden Anschlüsse auf der RAMPS-Platine musste man sich eine Lösung erarbeiten. Mit den bisher vermittelten Inhalten des Studiums war dies möglich. Dabei war zusätzlich Kreativität gefragt.

3) Additive Fertigung am Beispiel des 3D-Drucks: Mit dem 3D-Druck hat man viel über die additive Fertigung gelernt. Komplexe Modelle können kostengünstig hergestellt werden.

4) Arbeiten mit mehreren Programmen: Beim Projekt wurde mit ACE, Matlab und der Marlin Firmware (Arduino IDE) gearbeitet. Dabei war die Kommunikation zwischen den drei Programmen erforderlich und jedes Programm hat eine eigene Aufgabe.

Tutorial: Vom CAD-Modell zum fertigen G-Code



Stückliste der Bauteile

Bestellte Artikel für die Druckbett-Temperierung
ID Beschreibung Anzahl Teilenummer Bestellnummer Reichelt Digikey Teilenummer Bestelllink
Q3 N-Kanal_MOSFET 3 STP55NF06L (RDS-On = 18 mΩ) STP 55NF06L STM STP55NF06L (MOSFET N-CH 60V 55A 18mΩ TO-220 @11A=+135*C ) https://www.digikey.com/en/products/detail/stmicroelectronics/STP55NF06L/1039551?lang=en&s=N4IgTCBcDaICwE4DsBaAbEuYUFYUDkAREAXQF8g&site=CA

Literaturverzeichnis/Dokumentenverzeichnis

Abbildungen der RAMPS: https://reprap.org/wiki/RAMPS_1.4