ich hab ein paar Fragen zum Gcode für 3ddrucker(ich hab schon in der reprap wiki nachgeschaut, sind aber immer noch nen paar Fragen): -G90 was bedeutet setzt alle Koordinaten relative zum origin der Maschine? -G92 was bedeutet das? versteh ich überhaupt net -M82? -G1 E-Parameter(z.B.: 20): heist das soviel wie der Druckkopf legt zwar.B.: 50mm Wegstrecke zurück, aber nur die ersten 20mm werden bedruckt?
G90: Ab diesem Befehl werden alle Koordinaten absolut angegeben. Das heisst z.B. G1 X50 G1 X52 fährt die X-Achse zuerst zur absoluten Position 50, also 50(mm) vom Nullpunkt entfernt, und dann noch zwei Millimeter weiter. Der zweite Befehl im relativen Mode müsste dann G1 X2 heissen, damit er dasselbe tut. G92 verschiebt den Nullpunkt einer oder mehrerer Achsen. Der hat ab dann die Koordinate(n) 0. Je nach G90 halt relativ zu dem Punkt, wo Du Dich befindest, oder relativ zum bisherigen Nullpunkt. G92 ohne Parameter setzt einfach den Punkt, wo sich der Kopf gerade befindet auf Koordinaten 0,0,0,0 M82: Dasselbe wie G90, aber auf den Extruder bezogen. G1 E Parameter: Das ist der Weg, den der Extruder zurücklegen muss, während sich der Druckkopf bewegt. Also letztendlich, wie viel Plastik extrudiert wird. Ein 3D Drucker ist ja nichts anderes als eine 4-achsige CNC-Maschine. Und Du programmierst synchrone Bewegungen, die einzelne dieser vier, oder auch alle vier Achsen einbeziehen. Also z.B. (mal relativ-Mode angenommen): G1 X10 Y15 E1.3 bedeutet: Fahre 10(mm) nach X, 15(mm) nach Y (0(mm) nach Z) und extrudiere dabei 1.3(mm) Plastik. Und ganz wichtig: Die Bewegung muss so erfolgen, dass alle drei Achsen gleichzeitig fertig sind, die müssen also synchron laufen. Das heisst, dass die Bewegungsrichtung klar definiert ist, sowie, wieviel plastik pro mm Verfahrweg abgelegt wird, also, wie dick die Platikwurst wird. (mm) habe ich übrigens immer in Klammer geschrieben, weil das nicht zwingend mm sind. Zum besseren Verständnis, was das mit dem "Origin" auf sich hat, solltest Du Dir folgendes überlegen: Eine CNC-Maschine, ganz gleich welcher Art, "denkt" in der Regel relativ. Ein Schrittmotor macht eine bestimmte Anzahl Schritte, damit weiss die Maschine, wie viel sie sich (relativ zur Position vorher) bewegt hat. Wo sie sich absolut befindet weiss sie erstens oft nicht a priori, und zweitens ist das oft weniger wichtig, als man glauben würde. Stell Dir eine riesen Maschine vor. Du spannst da ein kleines Werkstück ein. Und genau 3.45mm rechts und 4.132mm oberhalb der linken unteren Ecke soll die ein Loch bohren. Dann programmierst Du die Maschine so, dass sie sich einen Taster packt, damit die linke und die untere Kante des Werkstücks ertastet, und dann diese ertasteten Koordinaten als 0 annimmt. Und relativ dazu muss sie dann genau arbeiten. Wo das ganze absolut ist, ist nur insofern wichtig, als dass sichergestellt werden muss, dass die Maschine nicht in irgendeinen Anschlag läuft. Bei einem 3D-Drucker ist es üblicherweise so, dass der für jede Achse einen Taster hat, der betätigt wird, wenn sich der Kopf in der linken unteren vorderen Ecke befindet oder so. Du programmierst das Ding also z.B. so, dass diese Position ertastet wird, und dann die Koordinaten an diesem Punkt auf 0 gesetzt werden. Was aber, wenn der Arbeitsbereich gar nicht da ist? Vielleicht fängt der erst jeweils 5cm rechts und hinter dem ertasteten Punkt an? Dann kannst Du eben so eine Nullpunktverschiebung machen und daraufhin wieder mit dem gleichen gcode File arbeiten. Dann ist einfach alles entsprechend verschoben. Gruäss Simon
:
Bearbeitet durch User
Thanks!! sehr gut erklärt, hab fast alles verstanden. Eine Frage hab ich aber noch: bezieht sich die E Länge jetzt auf die Länge des Fillaments das geschmolzen wird oder auf den tatsächlich vom Druckkopf zurückgelegten Weg? Weil dann wären ja, bei deinem Beispiel(0x>10X, 0Y>15Y, E1.3) Der Weg den der Druckkopf zurücklegt: 18.028mm bei Möglichkeit a) nur in den ersten 1.3mm wird gedruckt, der erst wird ohne drucken abgefahren oder b) auf dem ganzen, 18.028mm langen, Weg genau 9,189quadratmm aufgetragen werden? Wenn ja, wofür ist dann die Feedrate F?
E bezieht sich auf die Länge des Filaments vor dem Schmelzen. Wenn Du also den Durchmesser (1.75mm, 3mm) kennst, dann kannst Du anhand des E-Parameters berechnen, wieviel Kubikmillimeter auf dem gesamten Weg, den der Druckkopf zurücklegt, durch das Hotend drückt. Die "Feedrate" ist etwas, das man gerne mal falsch versteht. Der Begriff hat seinen Ursprung nämlich in den "üblichen" CNC-Maschinen. --> Vorschub. Also, wie schnell das Werkzeug verfahren muss. Mit dem Kunststoffvorschub hat das nichts zu tun. Also was sagt F denn nun? Damit sagst Du dem Drucker, wie schnell er den Kopf im dreidimensionalen Raum bewegen soll. G1 X100 F100 bewegt den Kopf also innerhalb einer Sekunde um 100mm nach X. G1 X100 Y100 F100 bewegt den Kopf innerhalb Wurzel-zwei Sekunden diagonal 100 nach X und 100 nach Y. Halt so, dass die Geschwindigkeit 100mm/s beträgt. Und was hat das nun mit dem Plastik-Vorschub zu tun? G1 X100 Y100 E5 F100 macht dasselbe wie oben, aber gleichzeitig schiebt er während dieser Wurzel-zwei Sekunden das Filament um 5mm vor. Wie man auf diese 5 mm kommt (man=der Slicer) kann man so ungefähr so beschreiben: Er will eine ...mm breite Wurst. Er weiss, dass er ...mm über dem unteren Layer ist. Damit weiss er, wie viel Quadratmillimeter die Wurst haben muss. Er weiss, wie lang der Verfahrweg ist. Damit weiss er, wie viel Kubikmillimeter er extrudieren muss. Er Weiss, wie dick das Filament ist (1.75mm z.B.). Damit weiss er, wie viel Filament er verfahren muss. Nebenbei bemerkt: Die Dicke der Düse spielt dabei nur eine sehr untergeordnete Rolle. Resp. gar keine. Einige Slicer wollen sie dennoch wissen, allerdings nur für Plausibilitätsüberprüfungen. Wenn Du mit einer 0.35mm Düse eine 1mm dicke Wurst machen willst, geht das kaum. Gruäss Simon
:
Bearbeitet durch User
Ach ja, zum letzten Absatz muss ich vielleicht noch was ergänzen, das noch wichtig ist: Der Drucker unterscheidet nicht bloss zwischen "drucken" und "nicht drucken". Wieviel Kubikmillimeter pro Sekunde (oder eben pro mm Verfahrweg) er ablegt, ist wesentlich! Und damit "spielt" der Slicer auch! Dazu muss man wissen, dass der flüssige Kunststoff eine gewisse Elastizität hat. Stell Dir vor, der Druckkopf fährt konstant mit 10mm/s. Die Düse ist 0.35mm dick. Jetzt könnte man meinen, dass der Extruder-Vorschub genau so schnell sein muss, dass eine 0.35mm-Wurst sauber abgelegt wird. In Luft würde diese 0.35mm Wurst exakt mit 10mm/s aus der Düse kommen. Tatsächlich aber kann der Drucker mehr durch die Düse drücken, was darin resultiert, dass die Wurst "aufquillt". Das wird er auch machen! Denn so drückt er sie auch richtig fest auf den unteren Layer, sodass die Verschweissung besser wird. Umgekehrt kann er auch weniger Kunststoff extrudieren, als er "müsste". Das heisst, dass die Wurst "langgezogen" wird. Das macht er z.B. gerne, wenn er sog. "Bridges" ziehen muss. Also Kunststoffbrücken über freie Luft. Durch das "Langziehen" verhindert er, dass die Kunstoffwurst "durchhängt". Der E-Parameter ist, wie Du siehst, eine extrem wichtige Komponente, deren Berechnung einen Grossteil der Qualität eines Slicer ausmacht. Ach ja, und was Du auch noch wissen solltest: Der Slicer ist klug. Der Drucker ist dumm. Das einzige, was der Drucker weiss, ist, wieviele Pulse er auf die Motoren geben muss, damit die entsprechenden Achsen sich um einen Millimeter bewegen. ... Wobei... soooo dumm darf er dann eben doch nicht sein. Denn erstens muss er Grenzwerte einhalten. Wenn er also in einer Achse schneller fahren soll, als er kann, muss er diese und natürlich auch alle anderen Achsen entsprechend drosseln. Dann fährt er noch definierte Beschleunigungsphasen, die er natürlich auch synchronisieren muss. Und schliesslich hat er noch eine gewisse Intelligenz insofern, dass er vorausrechnet, ob er zwischen der aktuellen Verfahung und der nächst folgenden abbremsen und neu beschleunigen muss, oder ob er die Bewegung "durchziehen" kann. Aber in erster Näherung kann man, um das Prinzip gCode zu verstehen, annehmen: Drucker = Dumm wie Stroh. Der steuert nur Achsen und hat keine Ahnung, warum. Das ist übrigens bei allen CNC Maschinen so. Der Slicer entspricht dem CAM. Und das berechnet alles, was es braucht, um aus einem CAD-Modell ein Teil zu fräsen, ohne dass einem das ganze Fräsersortiment um die Ohren fliegt. Die CNC Maschine macht's dann einfach.
:
Bearbeitet durch User
Nochmal zur Feedrate: wie berechne ich denn das Tempo der einzelnen Achse wenn z.B.: X33mm zurücklegen muss und y45,2? Gibt es da eine Formel?
Glenn Rathke schrieb: > Nochmal zur Feedrate: > > wie berechne ich denn das Tempo der einzelnen Achse wenn z.B.: X33mm > zurücklegen muss und y45,2? Gibt es da eine Formel? Aus wessen Sicht? Muss das der Programmteil bestimmen, der letztenendes den gcode erzeugt, oder redest du vom Drucker selber, der eine entsprechende Bewegung in die Ansteuerung von zb Schrittmotoren umsetzen muss? Wenn letzteres. Taucht da das Problem überhaupt auf? Denn eine beliebige 2D-Bewegung wird von den Mechaniken nicht so umgesetzt, dass sie den Motortreibern (Schrittmotoren) eine x und eine y Geschwindigkeit vorgeben, sondern die 2d-Bewegung wird mittels eines Bresenham Verfahrens in einzelne synchronisierte Schritte der Motoren umgesetzt. Aber abgesehen davon. Du hast ein rechtwinkeliges Dreieck ...
1 | * |
2 | cb |
3 | cc b |
4 | cc b |
5 | cc b 45.2 |
6 | cc b |
7 | cc b |
8 | *aaaaaaaaaaa+ |
9 | 33mm |
... und kannst damit alle Dinge aus der Trigonometrie anwenden, die du in der SChule gelernt hast. Zb. den berühmten Phythagoras, oder die Definitionen von Sinus und Cosinus, ähnliche Dreiecke, Strahlensatz etc. etc. Alleine dadurch, dass du ein rechtwinkeliges Dreieck hast, weil ja die X-Achse und die y-Achse einen rechten Winkel bilden, sind die meisten Berechnungen recht einfach. Im koknkretem Fall: du weißt, wie weit in x-Richtung verfahren wird (a in der Zeichnung), du weißt wie weit in y-Richtung verfahren wird (b in der Zeichnung), der Phythagoras
1 | a_quadrat + b_quadrat = c_quadrat |
sagt dir daher, wie lang die Resultierende c ist (die also der Kopf tatsächlich zurück legt) und daraus und mit gegebenen Zeiten kannst du dir dann auch Geschwindigkeiten berechnen. Bzw. in der Umkehrung aus einer gegebenen Geschwindigkeit und der Länge c durch Anwenden der Definitionen von Sinus und Cosinus die entsprechenden Längen für a und b bzw. die Aufteilung der Geschwindigkeit entlang von c in die notwendigen Komponenten für a und b durch den Strahlensatz, der in diesem Fall einfach zum Dreisatz mutiert. Oder hab ich dich jetzt komplett missverstanden?
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.