Seite 4 von 5

Re: Der finale(?) Z-Logik-Thread. Bitte mitmachen!

Verfasst: Mo 9. Mai 2016, 19:02
von Zaldo
RF1000 hat geschrieben:Wenn Z=0 vom G-Code die Heizbettoberfläche wäre dann wäre die Oberfläche von jedem gedruckten Objekt nicht plan sondern ebenfalls parallel zur Heizbettoberfläche.
Wenn man das will, dann kann man das bereits mit der bisherigen Firmware erreichen (indem man den Wirkungsbereich der Z-Kompensation entsprechend einstellt). Und natürlich kann das auch die kommende Firmware noch, wobei man in der neuen Firmware die Z-Anzeige auch so einstellen kann, dass die Z-Position ab Heizbettoberfläche angezeigt wird.
Wenn man das aber nicht will dann wird man es vermutlich begrüßen, dass der Auslösepunkt des Z-Min Schalters eine Z-Höhe markiert, die am Ende dafür sorgt, dass der oberste Layer vom erzeugten Objekt komplett ohne Z-Bewegungen gedruckt und damit plan werden kann. Die Z-Anzeige "ab Heizbettoberfläche" könnte während dem Drucken vom obersten Layer dann übrigens sich ändernde Z-Werte anzeigen.
Was hat denn das eine mit dem anderen zu tun? Also ich dachte eigentlich, dass Du mittlerweile verstanden hättest was ich meine. Wenn der Slicer will, dass der Extruder auf einen Abstand von 0,1mm zum Bett fährt, dann hat der Extruder nach Ausführung dieses Befehls auch auf einem Abstand von 0,1mm zum Bett zu stehen. Wenn Z 0,0mm Abstand zum Bett entspricht - ausgehend von der tiefsten Stelle des Betts - dann muss das Bett hier gemau 0,1mm heruntergefahren werden. An jeder anderen Stelle ist dieser Wert um die Z-Kompensationsmatrix zu bereinigen.

Vorstehendes ändert nichts daran bzw. hat nichts damit zu tun, dass die Z-Kompensation ab einer besimmten Höhe nicht mehr arbeitet. Diese Höhe muß nicht zwangsläufig in direktem Zusammenhang mit dem Auslösepunkt des Z-Ref Schalters stehen. Wenn Z=0 auch Z=0 ist, kann man den Abschaltpunkt genausogut softwaretechnisch auf 1mm, 3mm, 10mm... wie auch immer setzen, ohne dass der Z-Ref Schalter hier nochmal zum Tragen kommen müsste. Dieser Schalter liefert einen einmaligen Referenzpunkt. Mehr nicht. Er markiert eben keine bestimmte Höhe (bzw. sollte dies keinesfalls tun) auch wenn Ihr das partout nicht wahr haben wollt.

Re: Der finale(?) Z-Logik-Thread. Bitte mitmachen!

Verfasst: Mo 9. Mai 2016, 19:24
von Zaldo
RF1000 hat geschrieben: Es macht weiterhin sehr viel Sinn, den Z-Min Schalter möglichst exakt zu justieren, weil der vom Z-Min Schalter verursachte Offset/Fehler kann sich im gedruckten Objekt niederschlagen (das dann um diesen Offset höher wird als es der G-Code will).
Eben nicht. Wenn der Drucker den Schaltpunkt des Z-Ref Schalters als Referenz benutzt, und die Kompensationsmatrix hinzuzieht, weiß er ganz genau wie weit er noch fahren kann, bis der Abstand - der reale Abstand - 0,0mm ist. Da gibt es keinen Offset, lediglich die Wiederholungsgenauigkeit des Schalters, und mit dieser haben wir momentan genauso zu kämpfen. Mehr noch, der Drucker weiß IMMER wie weit er noch fahren kann. Bei Nach_Scan_Schraube_weiter_reindrehen_Aktionen weiß er es hingegen nicht.

Ich glaube mich dunkel erinnern zu können, dass ich das irgendwo schon 541.212 mal haarklein erklärt habe.
RF1000 hat geschrieben: Ähm. Dir ist bekannt, was die Z-Kompensation bisher tut? Sie gleicht die Unebenheit vom Bett aus. D.h. sie versucht bis zur vorgegebenen Layerhöhe (per Default sind das 3 mm, siehe HEAT_BED_Z_COMPENSATION_MAX_MM) alle Layer so zu erhöhen, dass ab der vorgegebenen Layerhöhe keine Z-Kompensation mehr notwendig ist. Ab der vorgegebenen Layerhöhe entspricht der Z-Abstand zum Z-Min Schalter exakt dem vom G-Code vorgegebenen Wert. Dein 2 cm vom Heizbett auslösender Z-Min Schalter ist nicht innerhalb von 3 mm kompensierbar.
Das könnte der Drucker so oder so. Auf dem ersten Layer hat der Extruder parallel zum Bett zu fahren. Dies kann er anhand der Kompensationsmatrix, welche vom Z-Ref schalter ausgehend ist. Diese Matrix kann man von Layer zu Layer ausschleichen, bis ab einer bestimmten - frei definierbaren Höhe die Matrix nicht mehr wirkt und die Oberfläche plan ist. Dafür brauch man keinen Z-Schalter, dafür brauch man einfach nur eine Formel. Den Z-Ref schalter brauch man nur einmal, um eben diesen Referenzpunkt zu finden, auf den die Scan - Matrix aufbaut.

Ich glaube das ist es, was so ziemlich jeder Maschinenbaustudent und jeder Programmierer hier im Forum (und ich) Dir begreiflich machen wollen. Und gehe mal davon aus, dass die / wir das nicht tun um Dich zu ärgern. Da hilft es auch nichts, wenn Du
RF1000 hat geschrieben: Wenn du die Diskussion auf diese Ebene verlagern willst dann werde ich mich nicht mehr daran beteiligen. Die Firmware kann nicht blöd sein. Ihre Entwickler sind es auch nicht, nur weil du ihre Funktion noch nicht komplett durchdrungen hast.
jetzt auf Stur schaltest. Wenn Ihr euch nicht irgendwann mal mit den Problemen der Anwender auseinandersetzt wird es der RFxxxx nicht weit bringen. Und auch bei mir wird er zunehmend zum Wackelkandidat.

Immerhin hätte das aber einen Vorteil. Du wärst mich los, eine Kundenmeinung weniger, mit der man sich auseinander setzen muß.

Re: Der finale(?) Z-Logik-Thread. Bitte mitmachen!

Verfasst: Mo 9. Mai 2016, 19:59
von RF1000
Zaldo hat geschrieben: Wenn der Slicer will, dass der Extruder auf einen Abstand von 0,1mm zum Bett fährt, dann hat der Extruder nach Ausführung dieses Befehls auch auf einem Abstand von 0,1mm zum Bett zu stehen.
Und genau das macht die Firmware. Falls der G0/G1 Befehl dafür den Z-Min Schalter überfahren muss, macht das nur die kommende Firmware so (und die bisherige Firmware nicht, weswegen wir ja unter anderem diesen Thread haben).
Ob auf dem Display (und im Repetier-Host) der Z-Wert aber auch "ab Heizbettoberfläche" oder (wie jede bisherige Version der Firmware) "ab Z-Min Schalter" angezeigt wird ist davon unabhängig und kann in der kommenden Firmware separat eingestellt werden.


Ich überspringe die folgenden Kommentare weil sie uns nicht weiterbringen. Dazu nur die folgenden kurzen Anmerkungen:
  • - Der Z-Min Schalter hat mechanische Eigenschaften, die man in der realen Welt durchaus berücksichtigen sollte. Weder der Scan noch der Druck wird mit den Standardeinstellungen der Firmware funktionieren, wenn Z-Min 2 cm vor dem Kontakt Heizbett <-> Extruder auslöst. Man kann natürlich die Toleranzen der Firmware entsprechend erhöhen, nur wird man dann sehr wahrscheinlich seinen Z-Min Schalter zerbröseln, weil sich weder Schalter noch Lichtschranke um 2 cm überfahren lassen ...
    - Das du als Z=0 jetzt "Abstand zum Bett - ausgehend von der tiefsten Stelle des Betts" definierst ist das neu, im Ursprungspost wolltest du noch "Z-Min definiert den absoluten Nullpunkt, also Abstand Bett-Extruder = 0,0mm" haben, was ja a) entweder an der X-/Y-Position eine andere Position der Z-Spindeln bedeuten würde oder b) der "Abstand zum Bett - ausgehend von der höchsten Stelle des Betts" sein müsste.
    - Mechanische Veränderungen nach dem Heizbettscan werden auch von der kommenden Firmware weder erkannt noch korrigiert. Das wird in Zukunft vielleicht noch mal angefasst (z.B. mit dem vom Fräsen bekannten Suchen des Z-Origins), ist in der kommenden Firmware aber nicht drin. WENN die Firmware den Z-Origin ermitteln würde wie beim Fräsen, dann könnte der Z-Min Schalter tatsächlich komplett ignoriert werden (beim Fräsen wird der Z-Min Schalter ja z.B. nie erreicht).
    - Die Firmware hat keine Größe wie "ich drucke jetzt den 1. Layer", von daher kann sie nur die Z-Höhe hernehmen um zu bestimmen, ob der Extruder noch parallel zum Bett gefahren werden soll, ob die Layerdicke leicht erhöht werden soll um die Bettunebenheit zu kompensieren oder ob jetzt keine Kompensation mehr notwendig ist.
    - Ich schalte nicht auf stur, aber ich muss mich auch nicht beleidigen lassen. Auch diverse Übertreibungen bringen uns (wieder einmal) nicht weiter.

Wir drehen uns so ein bisschen im Kreis.
Fakt ist: Die neue Firmware kann dafür sorgen, dass der Abstand Heizbettoberfläche <-> Extruder immer dem entspricht, was der G-Code will. Zusätzlich kann die Z-Anzeige entweder den Abstand zum Z-Min Schalter (= unabhängig von der X-/Y-Position, aber evtl. beeinflusst von der Z-Kompensation) oder den Abstand Heizbettoberfläche <-> Extruder (abhängig von der X-/Y-Position und kann sich auch ändern, wenn die Z-Kompensation keine Bewegungen in Z-Richtung mehr ausführt) anzeigen. Bei G-Codes mit positiven Z-Werten ist außerdem sichergestellt, dass sich Extruder und Heizbett nicht berühren (sofern die vorgegebenen Hardwaretoleranzen eingehalten werden).
Der einzige verbliebene Punkt den ich noch sehe wäre, dass die (bisherige und die kommende) Firmware jedes gedruckte Objekt um den Z-Offset "höchste Stelle vom Heizbett - Extruderspitze) höher druckt, als es der G-Code will. Wenn jemand seinen Z-Min Schalter gut eingestellt hat dann wird dieser Z-Offset vernachlässigbar sein. Für schlecht eingestellte Z-Min Schalter könnte die Firmware noch eine Verbesserung (= weniger hohe = besser dem G-Code entsprechende Objekthöhen) bringen, das ist aber nicht Teil vom kommenden Release.


mfG
RF1000

Re: Der finale(?) Z-Logik-Thread. Bitte mitmachen!

Verfasst: Mo 9. Mai 2016, 20:03
von rf1k_mjh11
Zaldo, mhier,
EDIT: Ich sehe gerade, RF1000 scheint mir zuvor gekommen zu sein ...
Na ja, umsonst will ich das Ganze nicht getippt haben. Also ....
Zaldo hat geschrieben:...
Wenn der Slicer will, dass der Extruder auf einen Abstand von 0,1mm zum Bett fährt, dann hat der Extruder nach Ausführung dieses Befehls auch auf einem Abstand von 0,1mm zum Bett zu stehen. Wenn Z 0,0mm Abstand zum Bett entspricht - ausgehend von der tiefsten Stelle des Betts - dann muss das Bett hier gemau 0,1mm heruntergefahren werden. An jeder anderen Stelle ist dieser Wert um die Z-Kompensationsmatrix zu bereinigen.
...
Was passiert, wenn der nächste Befehl G1 Z0.2 heißt? Fährt da der Tisch um genau 0.1mm nach unten?
Jein!
Je nach Einstellung, Position und Ebenheit des Betts können hier andere Werte zum Tragen kommen, vorausgesetzt, die Z-Kompensation ist eingeschaltet. Dann könnte das Bett an dem Punkt 0.105mm nach unten fahren, oder 0.11mm. Das ist, glaube ich, was RF1000 zu sagen versucht. Wenn die Düse bei jedem Punkt genau den Abstand zum Bett hat, den der GCode vorgibt, ist die Oberseite deines Druckobjekts genau gleich uneben wie das Bett selbst.

OK, in der Firmware, bzw. mittels GCode (M3002 und M3007) kann ich die Beginn-Höhe der Z-Kompensation festlegen. Bis zu dieser angegebenen Höhe sind alle Layer gleich uneben wie das Bett (na ja, entsprechend der Matrix, zumindest). Standardmäßig liegt diese Höhe bei 0.2mm (zumindest bei v.0.91.51). Damit könnte bei einem G1 Z0.2 die Z-Kompensation schon beginnen, Unebenheiten auszugleichen.
Möchte ich das Verhalten, dass du scheinbar suchst (?) erzwingen, setzte ich einfach diese Höhe auf 200mm. Dann setzt die ausgleichende Z-Kompensation nie ein und die Düse wird immer parallel zur Bettoberfläche geführt. Dann wäre bei G1 Z1.2 die Düse wirklich 1.2mm vom Bett entfernt.

Das ist ein Verhalten, dass ich nicht haben will. Mir ist es schon lieber, wenn die Unebenheit des Betts langsam, fließend, in eine absolut plane Fläche übergeht.

Die Z-Kompensation scheint zweierlei machen zu wollen
  • Während der ersten Layer die Düse schön parallel zur Bettoberfläche zu führen, damit die allerersten Lagen schön haften können ... das finde ich gut
  • Danach die Unebenheit des Betts langsam 'verschwinden' zu lassen, damit der Rest des Drucks entlang einer absolut planen Fläche stattfindet. ... das ist mir auch lieber
Es ist dieser zweite Punkt, der dazu führt, dass ein GCode Befehl nicht zwangsläufig zu dem Ergebnis führt, den du suchst. Aber wie gesagt - mittels FW-Änderung oder GCode lässt sich das für dich einrichten.
Im Prinzip verhält sich der Drucker, bei niedrigen Z-Werten eigentlich so wie du es haben willst. Ein G1 Z0.15 hat einen Düsenabstand von 0.15mm zur Folge (nicht ganz exakt - da kommt noch die lineare Angleichung der Matrix hinzu).

Oder habe ich dich doch missverstanden?

mjh11

Re: Der finale(?) Z-Logik-Thread. Bitte mitmachen!

Verfasst: Mo 9. Mai 2016, 20:30
von Zaldo
Für heute nochmal in aller Kürze, denn hier wartet meine Umsatzsteuervoranmeldung auf mich...

RF1000 hat geschrieben: - Der Z-Min Schalter hat mechanische Eigenschaften, die man in der realen Welt durchaus berücksichtigen sollte. Weder der Scan noch der Druck wird mit den Standardeinstellungen der Firmware funktionieren, wenn Z-Min 2 cm vor dem Kontakt Heizbett <-> Extruder auslöst. Man kann natürlich die Toleranzen der Firmware entsprechend erhöhen, nur wird man dann sehr wahrscheinlich seinen Z-Min Schalter zerbröseln, weil sich weder Schalter noch Lichtschranke um 2 cm überfahren lassen ...
Natürlich nicht, es ging ja auch um die Notwendigkeit des exakten Justierens. Letztlich würde es genügen, den Schalter irgendwo um die 0,4mm +/- 0,1mm einzustellen, denn der tatsächliche Abstand (innerhalb dieser Toleranz) wäre unerheblich. Er würde letzthin ohnehin ausgemessen werden.
RF1000 hat geschrieben: - Das du als Z=0 jetzt "Abstand zum Bett - ausgehend von der tiefsten Stelle des Betts" definierst ist das neu, im Ursprungspost wolltest du noch "Z-Min definiert den absoluten Nullpunkt, also Abstand Bett-Extruder = 0,0mm" haben, was ja a) entweder an der X-/Y-Position eine andere Position der Z-Spindeln bedeuten würde oder b) der "Abstand zum Bett - ausgehend von der höchsten Stelle des Betts" sein müsste.
Nein ist es nicht, Du musst nur beide Sätze lesen.
Wenn Z 0,0mm Abstand zum Bett entspricht - ausgehend von der tiefsten Stelle des Betts - dann muss das Bett hier gemau 0,1mm heruntergefahren werden. An jeder anderen Stelle ist dieser Wert um die Z-Kompensationsmatrix zu bereinigen.
Die Hervorhebung impliziert natürlich, dass dazu auch die Z-Spindeln bewegt werden müssen. Wir sind wieder bei den Basics, dabei waren wir uns vor langer Zeit schon darüber einig, dass die Z-Stepper natürlich der Kompensationsmatrix folgen müssen, wenn der Extruder mit gleichbleibendem Abstand zum Bett gefahren werden soll.
RF1000 hat geschrieben: - Mechanische Veränderungen nach dem Heizbettscan werden auch von der kommenden Firmware weder erkannt noch korrigiert.
Korrekt, der Unterschied ist: Sie wären garnnicht mehr erforderlich.
RF1000 hat geschrieben: (z.B. mit dem vom Fräsen bekannten Suchen des Z-Origins), ist in der kommenden Firmware aber nicht drin. WENN die Firmware den Z-Origin ermitteln würde wie beim Fräsen, dann könnte der Z-Min Schalter tatsächlich komplett ignoriert werden (beim Fräsen wird der Z-Min Schalter ja z.B. nie erreicht).
Letztlich ist es aber genau das, auf das es herausläuft (und auch der Grund warum ich von einem Referenzschalter und keinem Endschalter spreche): Theoretisch wäre der Schalter (bei entsprechender Firmware) überflüssig. Man könnte das Bett ganz runter fahren, und dann langsam hoch, bis die Wiegezellen ansprechen. Der Referenzschalter dient hier nur einer Beschleunigung des Vorgangs, er liefert die Referenz "Ab hier nur noch wenig Weg bis zum Nullpunkt".
RF1000 hat geschrieben: - Die Firmware hat keine Größe wie "ich drucke jetzt den 1. Layer", von daher kann sie nur die Z-Höhe hernehmen um zu bestimmen, ob der Extruder noch parallel zum Bett gefahren werden soll, ob die Layerdicke leicht erhöht werden soll um die Bettunebenheit zu kompensieren oder ob jetzt keine Kompensation mehr notwendig ist.
Die Brauch sie doch auch nicht. Wenn Die Firmware weiß wo 0 ist, weiß sie doch durch die G1 Zxxx befehle wie weit Sie von 0 weg ist. Und wenn man Ihr sagt, ab wie weit von 0 weg sie die Kompensation einstellen soll, weiß Sie eigentlich alles was Sie wissen muß. Einen Schalter benötigt Sie dafür nicht.
RF1000 hat geschrieben: - Ich schalte nicht auf stur, aber ich muss mich auch nicht beleidigen lassen. Auch diverse Übertreibungen bringen uns (wieder einmal) nicht weiter.
Nun, ich habe mhier's Kommentar jetzt nicht als eine persönliche Beleidigung gegen Dich verstanden. Wenn Du das aber so siehst solltest Du berücksichtigen dass das vice versa ausgehen kann, wenn Du schreibst "Nur weil Du nicht verstanden hast wie die Kompensaton arbeitet".
RF1000 hat geschrieben: Der einzige verbliebene Punkt den ich noch sehe wäre, dass die (bisherige und die kommende) Firmware jedes gedruckte Objekt um den Z-Offset "höchste Stelle vom Heizbett - Extruderspitze) höher druckt, als es der G-Code will.
Und genau dies tut sie aus dem Grund, weswegen wir uns hier im Kreis drehen: Weil die Firmware den Z-Origin (Du nennst es so, ich nenne es Z=0) eben nicht ermittelt und auch weiterhin nicht ermitteln wird. Damit bleibt weiterhin der Z-Schalter das Maß der Dinge, und das ist eben der falsche Weg. Meiner Meinung nach ist es Zeitverschwendung hier in die falsche Richtung zu entwickeln, weil es die egentliche Problematik nicht mal im Ansatz löst. Abgesehen von der Anzeige ist die einzige Verbesserung, dass G0/G1 den Schalter überfahren dürfen. Dies alleine gewährt aber noch nicht dass die angeforderte Höhe auch stimmt. Letztlich wäre dies unter gewissen Punkten ja zu verschmerzen, wenn man dann wenigstens vor dem Druckbeginn per Einzelmessung den realen Abstand nochmal ermitteln bzw abgleichen würde. Aber auch dieses Feature wird es ja nicht geben. Ja, es gibt wenigstens einen verbesserten HBS der die Längenausdehnung berücksichtigt. Heißt aber, wenn ich nur mal schnell 20° runter will, muss ich nen neuen HBS machen um die geänderte Längung zu berücksichtigen. Auch dies ginge mal wieder anders viel einfacher. Aber ach...

Ich geh jetzt Steuer machen...

Re: Der finale(?) Z-Logik-Thread. Bitte mitmachen!

Verfasst: Mo 9. Mai 2016, 21:13
von rf1k_mjh11
Zaldo,
Zaldo hat geschrieben:....
RF1000" hat geschrieben:Der einzige verbliebene Punkt den ich noch sehe wäre, dass die (bisherige und die kommende) Firmware jedes gedruckte Objekt um den Z-Offset "höchste Stelle vom Heizbett - Extruderspitze) höher druckt, als es der G-Code will.
Und genau dies tut sie aus dem Grund, weswegen wir uns hier im Kreis drehen: Weil die Firmware den Z-Origin (Du nennst es so, ich nenne es Z=0) eben nicht ermittelt und auch weiterhin nicht ermitteln wird. Damit bleibt weiterhin der Z-Schalter das Maß der Dinge, und das ist eben der falsche Weg. Meiner Meinung nach ist es Zeitverschwendung hier in die falsche Richtung zu entwickeln, weil es die egentliche Problematik nicht mal im Ansatz löst. Abgesehen von der Anzeige ist die einzige Verbesserung, dass G0/G1 den Schalter überfahren dürfen. Dies alleine gewährt aber noch nicht dass die angeforderte Höhe auch stimmt. ...
Es wird nie eine Methode geben, die es schafft die Höhe exakt einzuhalten. Fährt die Düse ewig parallel zur Bettoberfläche, sieht es ungefähr so aus:
Druckobjekthöhe.jpg
Der Unterschied bei einer 'ausgleichenden' Z-Kompensation ist der dass der obere strichlierte rote Strich die Oberseite des Druckobjekts wird. Damit werden die weißen Flächen zwischen Druckobjekt und Strich langsam, über mehrere Layer, aufgefüllt.


mjh11

Ich muss auch noch die Steuer machen - zwei mal.

Re: Der finale(?) Z-Logik-Thread. Bitte mitmachen!

Verfasst: Mo 9. Mai 2016, 21:25
von Zaldo
Sie soll ja garnicht Ewig parallel zum Bett fahren. Wo habe ich denn gesagt das sie ewig parallel zum Bett fahren soll? Prinzipiell soll sie ja nichts anderes machen, als das was Sie jetzt schon tut, nur eben auf der reproduzierbar korrekten Höhe und das mit dem geringsten Aufwand für den Anwender. Und ich denke, dass es beim ersten Layer umsowichtiger ist, dass der Abstand zum Bett gleichmäßig und auf der korrekten Höhe ist, muß ich doch Dir nicht erzählen, oder?

Und der Drucker könnte das. Im Gegensatz zu den Mitbewerbern verfügt er über hardwaremäßig über alle Voraussetzungen um diese Anforderung erfüllen zu können. Nur eben Softwaremäßig, da kann er es nicht.

Re: Der finale(?) Z-Logik-Thread. Bitte mitmachen!

Verfasst: Di 10. Mai 2016, 08:36
von RF1000
Zaldo hat geschrieben: Natürlich nicht, es ging ja auch um die Notwendigkeit des exakten Justierens. Letztlich würde es genügen, den Schalter irgendwo um die 0,4mm +/- 0,1mm einzustellen, denn der tatsächliche Abstand (innerhalb dieser Toleranz) wäre unerheblich.
Der Z-Min Schalter muss nicht auf EXAKT 0,5 mm eingestellt werden. Er soll aber so eingestellt werden, dass der Abstand (im Folgenden A) Heizbett <-> Düse MAXIMAL 0,5 mm ist, wenn er auslöst. Es ist also eher vernachlässigbar, ob A 0,1 mm, 0,4 mm oder 0,5 mm ist. Der Unterschied zwischen den 0,1 und den 0,5 mm ist eventuell in der Höhe des gedruckten Objekts messbar, was aber auch von Faktoren wie z.B. der gewählten Layerhöhe abhängt. Wenn du eine Toleranz angeben willst dann kann man den Auslösepunkt vom Z-Min Schalter (= A) auf 0,3 mm +/- 0,2 mm einstellen und es wird passen.
Zaldo hat geschrieben: Korrekt, der Unterschied ist: Sie wären garnnicht mehr erforderlich.
Die Firmware kann nicht verhindern, dass jemand a) ein Tape aufklebt, b) den Auslösepunkt vom Z-Min Schalter ändert oder c) die Düse wechselt. Alle diese mechanischen Veränderungen haben reale Anwendungen.
Zaldo hat geschrieben: Theoretisch wäre der Schalter (bei entsprechender Firmware) überflüssig.
Theoretisch wäre das möglich, eine Verbesserung wäre es (unter Berücksichtigung aller davon ausgehenden Auswirkungen) wohl kaum.


mfG
RF1000

Re: Der finale(?) Z-Logik-Thread. Bitte mitmachen!

Verfasst: Di 10. Mai 2016, 09:32
von rf1k_mjh11
Zaldo,

Die Schwierigkeit liegt in der "reproduzierbar korrekten Höhe". Diese ist dem Drucker nicht immer bekannt. Der Drucker kann nicht das erste Layer 'garantiert' in der richtigen Höhe drucken, da der Drucker nicht weiß, was der erste Layer ist.
Dazu ein Beispiel:
  • Man hat im Slicer eine Layerhöhe von 0.15mm eingestellt, und eine Erst-Layer-Höhe von 120% (=0.18mm)
  • Im Start-GCode wird die 'Vorpumpe-Linie' angefahren - Höhe bei 0.35mm (was ich mich erinnere)
  • Danach geht der eigentliche Druck los.
So, meine Frage - welcher der 2 angepeilten Höhen soll der Drucker 'reproduzierbar korrekt' anpeilen, die 0.35mm oder die 0.18mm? Geht man stur nach dem Prinzip 'der erste Z-Wert ist die Layerhöhe des ersten Layers', klappt es nicht. Und wenn es immer der zweite Wert ist, haben Alle damit ein Problem, die eine 'Vorpumpe-Linie' nicht verwenden.
Hier klappt es ja
In diesem fall würde es ohnehin klappen, da die Erst-Layer-Höhe, mit 0.18mm, noch unter den 0.2mm liegen, ab dem die Z-Kompensation erst einsetzt.
Interessehalber habe ich mir die ganze Situation rechnerisch angesehen. Dazu habe ich meine eigenen Ist-Werte hergenommen.
  • 0.21mm - Unebenheit des Betts (höchster Punkt und niedrigster Punkt - schön buckelig, was?)
  • 0.2mm - wo die Z-Kompensation beginnt (aus der Configuration.h)
  • 2.0mm - wo die Z-Komp. endet (ebenso aus der Configuration.h)
  • 1.8mm - Höhendistanz über der die Z-Kompensation aktiv ist (2.0mm - 0.2mm = 1.8mm)
  • 0.5mm - maximale Layerhöhe (mit meiner 0.6mm Düse gerade noch erreichbar)
  • 0.05mm - niedrigste bisher demonstrierte Layerhöhe (eigentlich 0.045mm)
  • 3.6 (=4) oder 36 - Anzahl der Layer, über der die Z-Kompensation wirksam ist, abhängig von der Layerhöhe (=1.8mm durch die Layerhöhe)
Aus diesen Vorgaben ergibt sich, dass die maximale Korrektur (Höhenänderung) nur
0.0525mm (bei einer Layerhöhe von 0.5mm) oder gar nur
0.0058mm (bei einer Layerhöhe von 0.05mm )
in einem einzelnen Layer erreicht. Im Verhältnis zur Layerhöhe betrachtet, sind das bloß 10.5% der 0.5mm Höhe, oder 11.7% der 0.05mm Layerhöhe. Das ist schon wenig, vergleicht man dazu die vielen Parameter, die hier ebenso schwanken können - Umgebungstemperatur, Betttemperatur, Haftung des Betts, Filamentabmessungen, -temperatur, Düsendurchmesser, Schlupf im Filamentantriebssystem, und so weiter.
Angesichts dieser Zahlen muss ich fast sagen, ' von mir aus könnte die Z-Kompensation schon bei Z=0 beginnen - ' (dies aber bitte nicht umsetzten! :pinch: ).
Kämpfen wir hier nicht zum Teil gegen Schatten? Und verfolgen einer meiner Lieblingsbeschäftigungen, dem Haare-spalten?

Das Problem der Höhe des ersten Layers scheint mit den letzten Firmware-Änderungen gelöst, meine ich.

Zugegeben, es gibt noch Bereiche der Z-Logik, die noch verbesserungswürdig sind. Vor Allem für Neulinge. Kommt es hingegen zu einer Überladung durch weitere Funktionalität in diesem Bereich, könnte es gerade für diese Gruppe der Neulinge schwerer werden (Entscheidungen, Entscheidungen: Anzeige des Echt-Abstands oder der Vorgabe, ab wann mit der Kompensation beginnen, wann Schluss machen, maximale Änderung pro Layer, maximaler Überfahrweg des Schalters, ...?). (Der Anleitung müsste man 3-4 Seiten dazu spendieren...)

Deswegen soll dieser Thread noch weiter bestehen.

mjh11

Re: Der finale(?) Z-Logik-Thread. Bitte mitmachen!

Verfasst: Di 10. Mai 2016, 11:17
von mhier
Sorry ich kann hier gerade auf der Arbeit nicht alles bis ins letzte Detail lesen, deswegen will ich nur kurz mit einem Missverständnis aufräumen, dem RF1000 hier offensichtlich aufsitzt. Bitte nimm es mir nicht übel, aber langsam glaube ich, dass ich das Problem deutlich besser durchdringe als du. Ich arbeite täglich beruflich mit ähnlichen (meist deutlich komplexeren) Problemen, also nichts für ungut, aber ich verstehe sehr gut was hier richtig oder falsch ist.

Nun das Missverständnis: Es ist technisch gesehen vollkommen egal für die Qualität des Druckes, wie weit sich die Z-Referenz vom Heizbett entfernt befindet. Sie einigermaßen in die Nähe zu legen bringt lediglich einen Geschwindigkeitsvorteil. Solange der Stepper-Motor keine Schritte verliert, könnte man auch den Z-Max-Schalter als Referenz verwenden. Der Ausdruck wäre am Ende identisch. Die Z-Kompensations-"Matrix" (die übrigens keine Matrix ist, aber egal) tut nämlich aktuell bereits zwei Dinge: Sie beschreibt, wie du gesagt hast, Unebenheiten im Heizbett, und sie gibt gleichzeitig den absoluten Abstand zwischen Z-Referenz und Heizbett an. Solange da keine künstlichen Limits angewendet werden, kann natürlich jeder Punkt der "Matrix" sehr viel größere Werte als ein paar Milimeter beinhalten - warum denn auch nicht. Es spielt für den Druck absolut keine Rolle, ob der Referenzschalter irgendwo vertikal mitten im Objekt auslöst oder exakt beim ersten Layer. Durch die Z-Kompensation fährt doch der Drucker trotzdem exakt an die richtige Position, das ist doch gerade der Witz. Wenn die Firmware damit nicht richtig klar kommt, ist das ein Bug.

Es macht vielleicht Sinn, einige Beschränkungen einzuführen (bzw. die sind ja schon da), damit ein fehlerhafter HBS nicht völlig aus dem Ruder läuft. Dass die Werte maximal 3mm groß sein dürfen, klingt für mich plausibel, da wir ja nun mal den Z-Schalter ungefär auf Höhe des Druckbetts haben. Warum du jetzt aber noch zusätzlich eine Beschränkung auf 0.5mm einführen willst, die dann ja außerdem gar nicht verhindert, dass die Düse versehentlich ins Druckbett gefahren werden kann, ist mir absolut rätselhaft.
RF1000 hat geschrieben:Die Anforderung ist, dass G0/G1 den Z-Min Schalter überfahren können, damit die aktuell gedruckte Layerhöhe dem entspricht, was der G-Code vorgibt. Das ist gewährleistet. Da sinnvolle G0/G1 Befehle keine Layerhöhen < 0.1 mm anfahren ist gleichzeitig und automatisch auch gewährleistet, dass der Extruder nicht gegen das Heizbett fährt.
Btw: Ihr habt den Drucker mit einer Mindest-Layerhöhe von 0.05mm beworben. Das muss der dann wohl auch können...
mhier hat geschrieben: Wann genau soll denn diese feste Sicherheitszone greifen?
RF1000 hat geschrieben:Exakt dann wenn der Z-Min Schalter auslöst wenn G0/G1 das Heizbett nach oben fahren wollen.
Nein, ich meine was soll sie denn verhindern? Wenn ich den Z-Schalter um exakt 0.5mm überfahren kann, unabhängig vom wahren Abstand zum Heizbett, verhindert die Sicherheitszone nicht, dass die Düse ins Druckbett fährt!
mhier hat geschrieben: Ich muss also sehr genau das Heizbett justieren, nur weil die Firmware zu blöd ist, richtig zu rechnen. Das ist doch sinnlos!
RF1000 hat geschrieben:Wenn du die Diskussion auf diese Ebene verlagern willst dann werde ich mich nicht mehr daran beteiligen. Die Firmware kann nicht blöd sein. Ihre Entwickler sind es auch nicht, nur weil du ihre Funktion noch nicht komplett durchdrungen hast.
Wenn du das auf dich und/oder die Entwickler beziehen willst, bitte. Das habe ich aber weder geschrieben noch gemeint. Ich verstehe technischen Abläufe sehr gut, anscheinend besser als du, als bitte vorsicht mit Schlussfolgerungen.
mhier hat geschrieben: Ich glaube, das ist schlicht falsch. Bitte erklären.
RF1000 hat geschrieben:Siehe oben, Kurzbeschreibung davon, was die Z-Kompensation tut. Je weiter der Z-Min Auslösepunkt von der Heizbettoberfläche weg ist desto mehr muss kompensiert werden (= desto mehr werden die ersten gedruckten Layer und damit das Gesamtobjekt erhöht).
Klar muss mehr kompensiert werden. Und? Wenn du dich auf das "Ausschleichen" der Kompensation in den höheren Layern beziehst: Das sollte ja nur die Unebenheiten, nicht aber den absoluten Abstand betreffen. Also einfach für die entsprechenden Berechnungen den Mittelwert der "Matrix" berechnen. Dieser muss bis zum Ende des Drucks kompensiert werden und darf nicht "ausgeschlichen" werden. Alles andere wäre falsch. Für manche Objekte sind vielleicht ja auch schon die 0.5mm zu viel... Bitte nicht einen Bug dadurch flicken, dass eine neue Unlogik eingeführt wird!