rf1k_mjh11 hat geschrieben:Wurde zuvor irgendwo ein
G92 Znnn
gesendet bzw. verwendet, ändert sich das 'Z=0' aus GCode Sicht
Ja logisch, G92 Offsets und ähnliche Eingriffe habe ich jetzt mal unterschlagen. De facto braucht man G92 für Z aber gar nicht mehr, wenn man eine zuverlässige, absolute Offset-Messung hat. Das gilt i.d.R. auch beim Fräsen. Zumindest würde ich empfehlen, wo immer möglich Z=0 als Oberfläche des Rohteils zu definieren und dieses Abzutasten.
Ich heize immer lange vor dem Homen das Bett auf, etwas weniger lang wird das Hot End vorgewärmt (so auf ca. 160-180°).
Das hab ich mir weitgehend abgewöhnt, weil ich es einfach nicht mehr brauche. Aber jeder hat seine eigenen Erfahrungen und Workflows.
Dafür habe ich keine Einhausung.
Dann werden sich deine Z-Spineln auch erst recht eher nicht signifikant aufheizen.
Der ist gut! Ich darf das Zitat in meinem nächsten Beitrag doch verwenden, oder?
Meinst du das jetzt ironisch? Dieser Grundsatz ist nicht von mir. Alle Naturwissenschaften funktionieren nach dem Prinzip. In den allgemeinen Medien wird das zwar gerne anders dargestellt, aber darauf darf man nicht hören.
AtlonXP hat geschrieben:
Du gibst dir richtig Mühe um das Druckbett genauestens zu vermessen.
Dann Nullst du deinen Drucker am anderen Ende der Spindel ab.
Danach addierst du den Offset deiner Spindellänge z.B.: +200 mm.
Das ist dann dein Nullpunkt für den Drucker.
Nicht ganz. Erst Nulle ich am unteren Ende der Spindel ab, dann vermesse ich relativ dazu das Druckbett und speichere das Ergebnis. Anschließend Nulle ich erneut wieder am unteren Ende ab und verlasse mich darauf, dass der Abstand zum Bett noch passt. Ob die Distanz 200mm oder irgendwas anderes ist, fällt dabei quasi raus bzw. ist ja genau das, was ich ausmesse. Strenggenommen gilt das übrigens für die Distanz in Schritten, denn der Kalibrationsfaktor kürzt sich raus.
Ehrlich gesagt ist es mir Wurst um wie viel das ist, aber ich will so was nicht akzeptieren.
Am Ende geht es aber schon darum, ob der Fehler 1/10mm oder vielleicht doch nur wenige Mikrometer ist. Strenggenommen hast du bei deinem Drucker genau das gleiche Problem, denn deine Lichtschranke löst ja auch über dem Bett aus. Die Distanz ist eben nur kürzer.
Die ganze Zeit hatte ich mich geärgert, dass unser Drucker in den Minusbereich fährt.
Es entspricht einfach nicht der CNC Norm einer Fräsmaschine…
Heute nach reiflicher Überlegung, halte ich dieses umgehen der Bemaßung unsere RFX000 Klasse,
als das einzig richtige Vorgehen!
Ich glaube, du hast dich einfach nur daran gewöhnt. Es ist doch nur eine Definitionsfrage. Du kannst die Maschinenkoordinaten auch so definieren, das Zmax = 0mm ist, oder du misst alles von deinem Fußboden aus. Solange du das konsequent machst, kürzt sich das hinterher wieder raus.
Unsere Drucker haben kein absolutes Wege- Messsystem!
Der Drucker weiß erst nach dem Homing, wo er absolut steht.
Im Grunde ist das ein Widerspruch. Der Endschalter ist ein absolutes Messsystem. Kalibrieren muss man am Ende jede Messung. Wir haben sogar ein zweites absolutes Messsystem, nämlich unsere Wägezellen. Damit können wir absolut die Position der Bettoberfläche bestimmen. Es gibt Drucker, die verzichten auf einen separaten Z-Endschalter und benutzen zum Homen von Z immer ein BL-Touch o.ä.. Das könnten wir mit den Wägezellen auch machen, wäre nur nervtötend langsam (-> also kein fundamentales Problem).
Das gilt natürlich nur, wenn der homing Punkt an der richtigen Stelle ist.
Jein. Die Position des Referenzschalters muss an einer
bekannten Stelle sein. Welche das ist, ist aber erstmal egal. Wie gerade erwähnt geht es sogar ohne separaten Referenzschalter, der dient eigentlich nur zur Zeitersparnis. Ich habe früher auch mal nach dem Z-Homing immer einen Z-Offset-Scan durchgeführt, um Ungenauigkeiten im Homing zu eliminieren - das war übrigens der Grundstein für unsere Community-Firmware. Dann muss man nicht mal exakt die Position des Referenzschalters kennen! (Später hat sich dann herausgestellt, dass nicht das Homing ungenau war, sondern die Längenausdehnung vom v2 Hotend das Problem
Jedenfalls ist das mein heutiges Verständnis...)
Du möchtest den Programmcode auch für andere (Marlin) Drucker zugänglich machen.
Nein, Marlin ist eine andere Firmware, dafür werde ich nichts machen. Ich möchte, dass der Code auch von anderen Druckern mit der Klipper-Firmware genutzt werden kann, sofern diese entweder von Haus aus mit Wägezellen ausgestattet sind oder entsprechend umgebaut werden. Ob die Original-Firmware Marlin war oder Repetier oder was ganz anderes oder der Drucker gleich ein kompletter Eigenbau ist, ist egal
Bitte schau dir nochmal meine A; B; C Begründung an.
Ich hab deine Begründung schon soweit verstanden, du machst da aber einen Zirkelschluss.
Es gilt definitiv Folgendes:
- Das Bezugssystem der Achse kann frei gewählt werden, es muss nur konsequent immer das geleiche verwendet werden oder korrekt umgerechnet werden.
- Die Position des Referenzschalters kann unabhängig vom Bezugssystem gewählt werden. Es ist lediglich wichtig, dass die Koordinate des Schalters bekannt ist (es gibt noch technische Einschränkungen, weshalb man einen Referenzschalter nicht ohne weiteres in der Mitte der Achse plazieren kann, das ist aber alles kein fundamentales Problem und soll hier mal ausgeklammert werden).
- Der Z-Referenzschalter ist im Grunde nur dafür da, die Messung der Bett-Oberfläche nach dem Abschalten des Motorstroms nicht wieder neu durchführen zu müssen.
Repetier und Klipper verfolgen hier leicht unterschiedliche Ansätze. Zu dem Zeitpunkt, wo Conrad die Repetier-Firmware geforkt hat, gab es meinem Verständnis nach noch keine Möglichkeit, die Bettoberfläche in irgend einer Weise zu vermessen. Repetier setzte damals auf den klassischen Ansatz:
- Ein möglichst ebenes Bett mit Schrauben mechansich ausrichten
- Z-Schalter mechanisch so justieren, dass dieser unterhalbe der 1. Layerhöhe über dem Bett auslöst
- Der Einfachheit halber werden alle Endschalter als Nullpunkte interpretiert
- Der Verbleibende Abstand zwischen Düse und Bett nach dem Homen wird z.B. über G92 oder im Slicer als statischen Offset abgezogen, meist durch Ausprobieren, wann der 1. Layer korrekt gedruckt wird.
Conrad hat dann auf dieses System aufgebaut. Deshalb ist dort weiterhin der Z-Endschalter bei Z=0 im Maschinenkoordinatensystem. Der HBS führt eine zusätzliche Transformation ein, die den verbleibenden Offset abzieht, so dass G92 nicht menr benutzt werden muss. Aus rechentechnischen Gründen kann die Matrix keine beliebig großen Zahlen annehmen (+-32768 Microschritte glaube ich), deshalb ergibt sich die Bedingung, dass der Z=0-Referenz-Schalter weiterhin in der Nähe des Betts sein muss.
Nichts davon ist aber fundamental. Das sind lediglich bequeme Annahmen um gewisse Dinge zu vereinfachen und technische/nummerische Probleme zu lösen.
Bei Klipper funktionieren die Berechnungen mit Floating-Point in doppelter Genauigkeit (Standard bei Python). Damit kannst du deinen Nullpunkt in den Erdmittelpunkt legen und immer noch die Atomabstände deines Druckers auflösen. Deshalb fallen gewisse Beschränkungen einfach weg. Außerdem macht Klipper nicht die feste Annahme, dass beim Endschalter Z=0 ist. Stattdessen kann man z.B. per G-Code-Befehl die aktuelle Position der Achse auf einen bestimmten Z-Wert festlegen (ähnlich G92) und die Endschalterposition entsprechend umdefinieren. Das wird dann gespeichert und künftig bei jedem Homing verwendet. Mein Z-Schalter ist also nicht bei Z=0 oder Z=200 oder irgendwas glattes, sondern z.B. aktuell bei Z=162.029mm (meine Z-Achse ist wegen diverser Umbauten etwas kürzer). Das ist eine gemessene Zahl, es steckt hier keine Annahme drin, dass irgend ein Bauteil eine bestimmte nominelle Länge hat oder so. Z=0 ist bei mir dann genau die Oberfläche des Heizbetts bei X=Y=100mm. Diese Zahl (also Z-Position des Endschalters) ändert sich übrigens, wenn ich z.B. mein Hotend aus- und wieder einbaue oder die Düse wechsele. (Auch macht die Hotend-Temperatur einen Unterschied, aber das ist wieder mal ein anderes Thema, was hier im Forum ja schon zur Genüge diskutiert wurde...)
Wichtig ist, dass alle systematischen Abweichungen sich komplett herauskürzen. Es ergibt sich keinerlei Ungenauigkeit, wenn die Steigung der Spindel nicht 5mm sondern 4.99mm ist - auch keine kleine (also ja mein Druckergebnis wird etwas zu klein, aber das ist ja immer so). Mit der Wärmeausdehnung hast du tatsächlich den einzigen relevanten Effekt schon genannt, der überhaupt eine Rolle spielen könnte - der ist meiner Beobachtung zufolge nur eben nicht so groß, dass er problematisch wäre.
Ein anderes mögliches Problem wären Schrittverluste - aber die dürfen eben ohnehin einfach nicht vorkommen. Es ist schlicht unrealistisch, dass der Drucker in einer kontinuierlichen Bewegung (Hochfahren des Betts nach dem Homing) einzelne Schritte verliert. Sobald der Motor mal Schritte verloren hat, würde er einfach stehen bleiben bis zum Ende der aktuellen Fahrt (und erst beim nächsten Beschleunigungsvorgang wieder losfahren). Theoretisch könnte ich mir eher schon Schrittverluste am Anfang der Beschleunigung vorstellen oder "negative" Schrittverluste beim Bremsen - die sind dann aber Unabhängig von der gefahrenen Distanz und würde dir genauso dein Ergebnis vermasseln, wenn du deine 10mm fährst. Generell wären Schrittverluste aber ein Zeichen für entweder falsche Konfiguration oder ein erhebliches Hardware-Problem.