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

Firmware Veröffentlichungen und Einstellungen können hier angekündigt und diskutiert werden.
Benutzeravatar
Zaldo
Globaler Moderator
Globaler Moderator
Beiträge: 630
Registriert: Do 24. Sep 2015, 10:38
Wohnort: Raum Frankfurt
Has thanked: 38 times
Been thanked: 50 times

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

Beitrag von Zaldo »

An dieser Stelle möchte ich einmal beschreiben, wie ich mir die Z-Logik ausgestalten würde, wenn ich entsprechende Kenntnis der Programmierung hätte, und ich würde mir wünschen, wenn Du hierauf dieses mal auch mal konkret antworten würdest, und das nicht wieder stillschweigend untergeht. Insbesondere würden mich Deiner/des CTCs Meinung nach neu hinzugekommene Gefahren interessieren oder aber Punkte, wo und warum sich eurer Meinung nach die Funktion verschlechtern würde.

Ich würde mich auch freuen, wenn Ihr anderen dazu mal etwas sagen würdet, ob Ihr eine derartige Logik für sinnvoll, schlüssig oder übertrieben und potentiell gefährlich haltet. Oder anders gefragt: Wer würde sich eine FW die so arbeiten würde installieren, wer nicht und warum nicht?

Der Drucker wird auf eine mechanische Grundeinstellung von 0,5mm gebracht (Abstand Bett-Extruder bei Auslösung des Z-Ref Schalters)

Bei aktivierter Z-Kompensation:
  • Vorausgesetzt sei ein erfolgreich durchgeführter HBS
  • Durch den HBS ist dem Drucker Z-Min bekannt (Z-Min definiert den absoluten Nullpunkt, also Abstand Bett-Extruder = 0,0mm).
  • Jeder Fahrbefehl kleiner Z-Min wird in allerletzter Konsequenz grundsätzlich verhindert.
  • Zusätzlich wird in der configuration.h eine Sicherheitszone definiert. Standard sei die minimale Z-Druckauflösung 0,05mm.
  • Der Drucker wird somit mit keinem Fahrbefehl näher als diesen definierten Abstand fahren.
  • Da der Wert vom Anwender aber geändert werden könnte gilt weiterhin: Niemals Z-Min < 0,0 anfahren dürfen.
  • Ein per M3006 übergebener Z-Offset bleibt gültig. Für Ihn gilt aber: Vorrang hat der definierte Mindestabstand (0,05mm)
  • Falls dieser vom Benutzer geändert gilt weiterhin: Niemals Z-Min < 0,0
  • Jeder Z-Fahrbefehl positioniert das Bett auf genau den angeforderten, realen Abstand. Ein G1 Z0.5 fährt also das Bett so, dass eine 0.5mm Fühlerlehre exakt zwischen Bett und Extruder passt. Analog dazu zeigt das Display auch einen Abstand von 0,5mm an.
  • Ein nachfolgender Fahrbefehl auf eine niedrigere Höhe wird ohne Einschränkung ausgeführt. Ein nachfolgendes G1 Z0.1 ändert den Abstand Bett-Extruder von zuvor 0,5mm auf jetzt 0,1mm realen Abstand.
  • Auch hier gilt: Das Bett kann nicht näher als die definierten 0.05mm heranfahren. Da dieser Wert noch immer änderbar ist, kann das Bett in keinem Fall näher als Z-Min < 0.00 fahren.
  • Die Z-Anzeige im Display zeigt immer den realen Abstand an, wie man ihn mit "Pause drücken und Fühlerlehre dazwischenschieben" ebenfalls ermitteln könnte.
  • Beim Start eines Drucks, wenn der Drucker den ersten G1 Zxxx Befehl erhält, macht er grundsätzlich eine einmalige Abstandsmessung (also einen HBS mit einem Abtastpunkt). Dazu wird 1mm über der aufgrund der HBS Matrix angenommenen Position begonnen, damit ein thermisch gelängter Extruder nicht versehentlich im Bett landet.
  • Der ermittelte Wert wird mit dem bekannten HBS Wert dieser Stelle verglichen, die gesamte HBS Matrix dann ggfs. um die Differenz verschoben.
  • Ein eventuell gesetztes M3006 wird dazugezählt, sodaß eine Beeinflussung des realen Abstands möglich ist - mit den bereits bekannten Einschränkungen.
  • Das Display zeigt weiterhin den realen Abstand an. Bei M3006 S100 und einem Fahrbehefehl G1 Z1.0 wird also Z=1.1 angezeigt, da dies ja auch der reale Abstand ist. Bei M3006 S100 und G1 Z0.0 wäre Z=0,15 (Z0.0 würde auf einen realen Abstand von 0.05 mm fahren, dazu 100µm statischer Offset = 0,15mm. Auch dies wäre in diesem Fall der reale Abstand.
  • Im Ergebnis könnte man sich 100% darauf verlassen, dass der Abstand Extruder-Bett genau der ist, den man haben möchte - unabhängig von Extrudertemperatur, Z-Ref Schalter Wiederholgenauigkeit, Haftvermittler auf dem Bett etc.
  • Gleichzeitig ist ein Crash wirksam ausgeschlossen (bei Beibehaltung der Referenzwerte 0,05mm/0,5mm, mit Hinweis das Verkleinerung der Werte auf Gefahr des Anwenders erfolgt).
Bei nicht aktivierter Z-Kompensation verhält sich der Drucker prinzipiell exakt genauso, mit dem Unterschied das Z-Min = Z-Ref definiert wird. Wie auch heute schon kann das Bett also nicht näher als bis zum Schaltpunkt des Z-Ref Schalters heranfahren. Auch dieser Grundwert kann in der configuration.h modifiziert werden (wie man auch heute schon das Bett / den Schalter mechanisch auf einen anderen Abstand einstellen kann). Da hier jedoch kein realer Abstand aufgrund einer HBS Matrix bekannt ist, werden alle Fahrbefehle < Z-Ref -0,5mm ignoriert bzw. es wird niemals näher als Z-Ref -0,5mm gefahren. Hier besteht grundsätzlich dieselbe Crashgefahr, wie wenn der Benutzer einen kleineren mechanischen Grundabstand als 0,5mm einstellt. Die Z-Anzeige im Display zeigt die angeforderte (bzw. zugelassene) Höhe an und entspricht in desem Fall wie auch heute schon dem Abstand an der Stelle, an dem die mechanische Grundeinstellung vorgenommen wurde. Das diese aufgrund der Bettunebenheit nicht überall dem realen Abstand entspricht, liegt in der Natur der Sache. Wer es präzise haben will nutzt die Z-Kompensation.

Auch hier wird beim Druckstart nochmals der reale Abstand ermittelt. Da in diesem Fall keine HBS Matrix vorliegt, wird mit 0,5mm (bzw. dem in der configuration.h definierten Wert) verglichen, und die Korrektur auf diesen Wert angewendet. Der Abstand [an der Stelle an der die mechanische Grundeinstellung vorgenommen wurde] entspricht somit, unabhängig von Z-Ref Schalter Wiederholungsgenauigkeint, Haftvermittler auf dem Bett etc. 0,5mm [bzw. dem definierten Wert]. Das dieser Abstand aufgrund der Bettunebenheit nicht überall korrekt ist, liegt wiederum in der Natur der Sache und und bei deaktivierter Z-Kompensation auch heute schon so.

Wenn der Drucker so arbeiten würde wäre er leichter einzustellen, das Verhalten wäre meiner Meinung nach logisch, schlüssig und nachvollziehbar (bzw. vorhersagbar), die Genauigkeit wäre deutlich höher und unter wechselnden Bedingungen vor allen Dingen konstant, und die Anwendung einfacher. Gleichzeitig werden potentielle Crashgefahren durch Benutzerbasteleien eliminiert, da diese garnicht mehr erforderlich wären. Einfach gesagt, es wäre ein großer Schritt in Richtung Plug&Play und insbesondere etwas, mit dem der RFx000 sich von den Mitbewerbern distanzieren könnte.

Und ja, natürlich wäre es eine nicht ganz triviale Anderung der Firmware.


Dieses ganze neue Verhalten gestaltet man so, dass man es in der configuration.h zunächst freischalten muß. Dies versieht man mit dem Hinweis, dass die Freischaltung auf eigene Gefahr erfolgt, falls man nicht das dann separat erhältliche Z-Schalter-Lichtschranken-Umbau-Kit verwendet. Damit generiert man noch zusätzlichen Umsatz an Umbaukits (welche vom RF2000 ja bereits weitgehend entwickelt sind) und hält sich gleichzeitig Haftungsansprüche wegen gefalteten Z-Schalter Platinen vom Hals.
· Besserer Z-Referenzschalter · Druckbett Feinjustage · Platinenkühlung · Weiße Bauraumbeleuchtung · Not-Aus
· Dauerdruckplatte · Temperaturgeregelte Einhausung · Repetier Server auf Raspberry · MK8 Vorschubritzel
RF1000
Developer
Developer
Beiträge: 340
Registriert: Fr 10. Okt 2014, 16:31
Has thanked: 40 times
Been thanked: 80 times

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

Beitrag von RF1000 »

Zaldo hat geschrieben: Es tut mir leid, aber das stimmt definitiv nicht. Ich hatte genau dies explizit getestet, eben diese Beobachtung gemacht, diese Beobachtung hier gepostet, und Du hast sie bestätigt!

viewtopic.php?f=7&t=750&p=9784&hilit=%C3%BCberfahren#p9784
Ich habe das Verhalten bestätigt:
Zaldo hat geschrieben: Auch das weglassen des G1 Z5 aus dem Start G-Code würde nur marginal helfen. Dann könnte er (mit dem jetzt ersten G-Code) das Layer der Raupe (0,35mm) anfahren, danach jedoch nicht mehr das erste Drucklayer (0,1mm)
Und dieses Verhalten kommt daher, weil nach dem Weglassen der erste Z-Fahrbefehl nach unten fährt (auf Z 0.35, d.h. Z-Min ist für diesen Z-Fahrbefehl irrelevant und wird auch nicht geprüft). Die Z-Kompensation kann dagegen halten, kann Z-Min überfahren und damit den korrekten Abstand einstellen. Auch in diesem Fall überfährt G0/G1 also nicht Z-Min.
Wie ich schon geschrieben habe wird die Z-Kompensation erst bei Z-Höhen > 0 aktiv. Und zwar sinnvollerweise, weil würde sie bei Z=0 die Höhe anpassen wäre das gleichbedeutend mit Abstand Düse <-> Heizbett = 0, und mit einem nachfolgenden x/y Fahrbefehl könnte die Düse über das Heizbett kratzen.
Zaldo hat geschrieben: Durch den HBS ist dem Drucker Z-Min bekannt (Z-Min definiert den absoluten Nullpunkt, also Abstand Bett-Extruder = 0,0mm).
Dieser "absolute" Nullpunkt kann an jeder x/y Position der Heizplatte eine andere Position des Z-Steppers erfordern. Dieses "absolut" ist daher sehr relativ. Aber mir ist klar, was mit diesem Abstand gemeint ist.
Wir sollten für diesen "absoluten Nullpunkt" auch nicht den Begriff "Z-Min" verwenden, weil das für jemanden der diese Diskussionen nicht im Detail verfolgt wohl kaum eindeutig wäre.
Zaldo hat geschrieben: Jeder Fahrbefehl kleiner Z-Min wird in allerletzter Konsequenz grundsätzlich verhindert.
Das geht nicht weit genug. Wenn Z-Min an der tiefsten Stelle des Heizbetts erreicht worden ist muss Z auch gefahren werden, wenn G0/G1 eigentlich nur in x/y Richtung fahren will. Bereits die aktuelle Z-Kompensation macht ja genau das (= bei Fahrbefehlen in x/y Richtung den Extruder parallel zum Bett führen).
Zaldo hat geschrieben: Jeder Z-Fahrbefehl positioniert das Bett auf genau den angeforderten, realen Abstand. Ein G1 Z0.5 fährt also das Bett so, dass eine 0.5mm Fühlerlehre exakt zwischen Bett und Extruder passt. Analog dazu zeigt das Display auch einen Abstand von 0,5mm an.
Dafür gilt:
Wir prüfen bereits ob wir den Ansatz mit dem Überfahren von Z-Min durch G0/G1 umsetzen können oder nicht, weitere Überzeugungsarbeit ist vorerst also nicht nötig. Die Abstands-Anzeige ist davon unabhängig zu betrachten, das prüfen wir aber auch.
Die F-Taste ist nicht nötig, ich bin ziemlich flink :-)
Zaldo hat geschrieben: Beim Start eines Drucks, wenn der Drucker den ersten G1 Zxxx Befehl erhält, macht er grundsätzlich eine einmalige Abstandsmessung (also einen HBS mit einem Abtastpunkt). Dazu wird 1mm über der aufgrund der HBS Matrix angenommenen Position begonnen, damit ein thermisch gelängter Extruder nicht versehentlich im Bett landet.
Die Firmware macht grundsätzlich nur das, was der G-Code von ihr will. Für diese zusätzliche Abstandsmessung müsste daher ein separater G-Code verwendet werden. Das ist machbar, und wie hier schon irgendwo angemerkt evtl. vergleichbar mit dem "Find Z Origin" vom Fräsmodus. Wir prüfen das.

Zu deinen restlichen Punkten kann ich erst dann mehr sagen, wenn wir unsere entsprechenden Analysen abgeschlossen haben.
Ich bin auch schon gespannt, wie viele Anwender sich an dieser Diskussion beteiligen werden. Vielleicht würde es Sinn machen, deinen letzten Post und die darauf folgenden Posts in ein neues Thema zu verschieben.


mfG
RF000
Wessix
Profi 3D-Drucker
Profi 3D-Drucker
Beiträge: 415
Registriert: Sa 18. Okt 2014, 22:20
Has thanked: 84 times
Been thanked: 69 times

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

Beitrag von Wessix »

Ich möchte an dieser Stelle das Engagement von Zaldo lobend erwähnen, auch wenn es in eurer Diskussion manchmal etwas emotional hergeht so finde ich es toll und bewundernswert, wie sich ein "user" so in die Materie reindenkt und versucht Verbesserungen zu finden. Mir ist es leider aus beruflichen und privatgen Gründen nicht möglich da so viel Zeit zu investieren die ich bräuchte um da irgend was konstruktives beizusteuern aber ich will zumindest meine Bewunderung kund tun. Das es mit RF 1000 jemand von den Entwicklern gibt, der hier zumindest mitliest und versucht auf Anregungen einzugehen sehe ich auch als sehr positiv an, allerdings muss ich auch betonen, dass ich bei einem so teuren Gerät auch eine ausgereifte Firmware als "must have" ansehe und von daher eine Weiterentwicklung nur logisch ist. Gut finde ich auch, das Conrad versucht die Firmware für beide Geräte aktuell zu halten, ein Neukauf eines RF 2000 nach so kurzer Zeit kommt für mich leider momentan nicht in Frage. Wenn ich merken würde dass seitens C das Interesse am RF 1000 und dessen Funktion erlischt würde ich mich definitiv auch einem anderen Model zuwenden.
In diesem Sinne wünsche ich euch, dass ihr zusammen wirklich voran kommt und wir alle hier dann davon profitieren, gerne auch in anderen Threads.

:tiptop:
E3DV6+Titan Total Conversion
Aluheizbett + MTPlus + zweite Y-Schiene mit Wagen
Z-Kette
X-kette
Platinenlüfter
X19 Schaltung LED
pi-Octopi+ Cam
Ritzel-Kühler
Firmware Mod 1.45.00
Benutzeravatar
Zaldo
Globaler Moderator
Globaler Moderator
Beiträge: 630
Registriert: Do 24. Sep 2015, 10:38
Wohnort: Raum Frankfurt
Has thanked: 38 times
Been thanked: 50 times

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

Beitrag von Zaldo »

RF1000 hat geschrieben: Und dieses Verhalten kommt daher, weil nach dem Weglassen der erste Z-Fahrbefehl nach unten fährt (auf Z 0.35, d.h. Z-Min ist für diesen Z-Fahrbefehl irrelevant und wird auch nicht geprüft). Die Z-Kompensation kann dagegen halten, kann Z-Min überfahren und damit den korrekten Abstand einstellen. Auch in diesem Fall überfährt G0/G1 also nicht Z-Min.
Wie ich schon geschrieben habe wird die Z-Kompensation erst bei Z-Höhen > 0 aktiv. Und zwar sinnvollerweise, weil würde sie bei Z=0 die Höhe anpassen wäre das gleichbedeutend mit Abstand Düse <-> Heizbett = 0, und mit einem nachfolgenden x/y Fahrbefehl könnte die Düse über das Heizbett kratzen.
Du vergisst den Sicherheitsabstand. Z-Min definiert den Abstand 0,0 - das ist nicht gleichbedeutend damit, dass dieser auch angefahren werden darf. Es geht nur darum, dass der Drucker weiß wo er ist, und das er sicher z.b. 0,1 anfahren kann (und dann auch auf 0,1 ist). Würde jemand diesen Wert auf 0 ändern und dann einen Fahrbefehl X/Y machen, DANN würde die Düse über das Bett kratzen. Darum sollte auch der Hinweis gelten: Verkleinern des Wertes auf eigene Gefahr.
RF1000 hat geschrieben: Dieser "absolute" Nullpunkt kann an jeder x/y Position der Heizplatte eine andere Position des Z-Steppers erfordern. Dieses "absolut" ist daher sehr relativ. Aber mir ist klar, was mit diesem Abstand gemeint ist.
Klar, ich meinte auch nicht absolut bezogen auf die Z-Stepper Stellung, sondern bezogen auf den Abstand Bett-Extruder. Den Anwender interessiert ein genauer (und gleichbleibender) Abstand. Was der Stepper dazu tun muß, ist dem Anwender wurscht.
RF1000 hat geschrieben: Wir sollten für diesen "absoluten Nullpunkt" auch nicht den Begriff "Z-Min" verwenden, weil das für jemanden der diese Diskussionen nicht im Detail verfolgt wohl kaum eindeutig wäre.
Die Befürchtung habe ich nicht. Z-Min definiert (wie die Terminologie bereits nahe legt) den kleinstmöglichen Z-Abstand. Bei aktivierter Z-Kompensation ist dies der kleinstmögliche physikalische Abstand, bei deaktivierter dagegen ein festgesetzter Wert, da der tatsächliche Abstand hierbei ja unbekannt ist.
RF1000 hat geschrieben:
Zaldo hat geschrieben: Jeder Fahrbefehl kleiner Z-Min wird in allerletzter Konsequenz grundsätzlich verhindert.
Das geht nicht weit genug. Wenn Z-Min an der tiefsten Stelle des Heizbetts erreicht worden ist muss Z auch gefahren werden, wenn G0/G1 eigentlich nur in x/y Richtung fahren will. Bereits die aktuelle Z-Kompensation macht ja genau das (= bei Fahrbefehlen in x/y Richtung den Extruder parallel zum Bett führen).
Natürlich, der Z-Abstand (bzw. der Z-Stepper) muss auch bei reinen X-Y movements permanent nachgeführt werden und die Kompensationsmatrix (bzw. die dazwischenliegenden interpolierten Werte) permanent berücksichtigen. In der Tat also nicht wesentlich anders als heute schon, bis darauf dass die beiden definierten Grenzwerte dabei zusätzlich berücksichtigt werden (wobei es "Z darf nie negativ werden" IIRC heute bereits im Code gibt).
RF1000 hat geschrieben:
Zaldo hat geschrieben: Beim Start eines Drucks, wenn der Drucker den ersten G1 Zxxx Befehl erhält, macht er grundsätzlich eine einmalige Abstandsmessung (also einen HBS mit einem Abtastpunkt). Dazu wird 1mm über der aufgrund der HBS Matrix angenommenen Position begonnen, damit ein thermisch gelängter Extruder nicht versehentlich im Bett landet.
Die Firmware macht grundsätzlich nur das, was der G-Code von ihr will. Für diese zusätzliche Abstandsmessung müsste daher ein separater G-Code verwendet werden. Das ist machbar, und wie hier schon irgendwo angemerkt evtl. vergleichbar mit dem "Find Z Origin" vom Fräsmodus. Wir prüfen das.
Auch das wäre eine möglichkeit die ja bereits angesprochen wurde. Dies hier wäre nur einer der möglichen Wege nach Rom :-)
RF1000 hat geschrieben: Vielleicht würde es Sinn machen, deinen letzten Post und die darauf folgenden Posts in ein neues Thema zu verschieben.
So sei es.

Gruß
Holger
· Besserer Z-Referenzschalter · Druckbett Feinjustage · Platinenkühlung · Weiße Bauraumbeleuchtung · Not-Aus
· Dauerdruckplatte · Temperaturgeregelte Einhausung · Repetier Server auf Raspberry · MK8 Vorschubritzel
Benutzeravatar
R3D3
Developer
Developer
Beiträge: 473
Registriert: Mo 26. Jan 2015, 13:41
Wohnort: München
Has thanked: 28 times
Been thanked: 54 times

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

Beitrag von R3D3 »

Vorab möchte ich mich Wessix anschließen und den Lob neben Zaldo auch auf RF1000 erweitern. Dass es ab und zu emotional zugeht scheint in den letzten Paar Tagen eher wieder von einer neuen Sachlichkeit überlagert zu werden, was man ebenfalls nur loben kann.

Zum Thema selbst werde ich mangels Zeit und Kenntnis wenige Details beitragen können, aber vom Grundsatz her scheint mir der Ansatz im Öffnungspost dieses Themas logisch, jedenfalls aus Sicht des logisch denkenden (und prinzipiell den Anzeigen vertrauenden) Users (auch des eventuell über die Finessen der Z-Kompensation nicht vollständig unterrichteten Anfängers). Ich hoffe deswegen auf eine rasche Ausfüllung der weiteren Details.

Nur zu meinem Verständnis - die Diskussion ist, nehme ich an, noch nicht soweit gereift, dass eine neue Version der FW die Resultate bereits umsetzt, richtig? Dies, um eventuelle Missverständnisse in der Usergemeinde auszuräumen, die durch diesen Thread entstehen könnten.
Schönen Gruß - R3D3 :victory:

RF1000 | 0.91.48dual | RH 1.6.2 | plus noch:
- Z-Endschalter "+", Not-Aus, Erhöhte X-Schleppkette
- Dual Extruder; angepasste Einhausung; Boardkühlung,
- Dauerdruckplatte, Extrudermotorlüfter
RF1000
Developer
Developer
Beiträge: 340
Registriert: Fr 10. Okt 2014, 16:31
Has thanked: 40 times
Been thanked: 80 times

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

Beitrag von RF1000 »

R3D3 hat geschrieben: Nur zu meinem Verständnis - die Diskussion ist, nehme ich an, noch nicht soweit gereift, dass eine neue Version der FW die Resultate bereits umsetzt, richtig? Dies, um eventuelle Missverständnisse in der Usergemeinde auszuräumen, die durch diesen Thread entstehen könnten.
Korrekt. :-)


mfG
RF1000
RF1000
Developer
Developer
Beiträge: 340
Registriert: Fr 10. Okt 2014, 16:31
Has thanked: 40 times
Been thanked: 80 times

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

Beitrag von RF1000 »

Hallo Zaldo,


die kommende Version der Firmware wird sich hinsichtlich der Z-Logik voraussichtlich folgendermaßen verhalten:
  • - Die Anzeige der Z-Position kann umgeschalten werden zwischen "Zeige den Abstand zum Z-Min Schalter" und "Zeige den Abstand zur Oberfläche vom Bett".
    • - Zweiteres kann naturgemäß nur dann den korrekten Abstand anzeigen, wenn die Z-Matrix bekannt und gültig ist.
      - Wenn die Z-Matrix nicht bekannt ist zeigen beide Modi den selben Wert an.
    - Beim Z-Homing wird weiterhin ermittelt, wo der Z-Min Schalter auslöst. Diese Position ist (wie bisher) Z=0.
    - G0 und G1 können den Z-Min Schalter überfahren, und zwar um einen in der Configuration.h einstellbaren Wert. Dieser Wert stellt die von dir beschriebene Sicherzeitszone sicher.
    • - Per Default sind das 0,5 mm, was weder für den Endschalter noch für Heizbett/Extruder kritisch sein sollte.
    - Die Sicherheitszone berücksichtigt nur die Position vom Z-Min Schalter und nicht die Z-Matrix. Das ist gegenüber deinem ursprünglichen Vorschlag eine sinnvolle Vereinfachung, weil wenn die Z-Matrix vorhanden und die Z-Kompensation ein ist, dann erlaubt bereits diese Umsetzung, dass die Z-Kompensation den Abstand zwischen Düse und Heizbett immer auf den vom G-Code eingestellten Wert einstellen kann.
    • - Wenn die Z-Kompensation aus ist müsste man einen G0/G1-Befehl mit negativem Z-Wert verwenden, um den Z-Min Schalter überfahren zu können. Das sollte kein für den Druck relevanter Anwendungsfall sein.
    - Die einmalige Abtastung vor dem Druck ist bisher noch nicht umgesetzt. Aber:
    • - Die neue Firmware kann anstelle des bisherigen Heizbettscans auch einen noch präziseren Scan durchführen. Dabei wird a) vor dem Scan einige Zeit gewartet um sicherzustellen, dass alle Komponenten durchgeheizt sind und b) am Ende vom Scan der Extruder noch einmal auf die geplante Arbeitstemperatur hochgeheizt. Nach b) wird noch einmal der Abstand ermittelt, der nun um eine eventuelle Längenausdehnung des Extruders verkürzt ist. Die ermittelte Differenz wird dann aus der Z-Matrix herausgerechnet und übrig bleibt eine Z-Matrix, die besser für die gewählte Arbeitstemperatur geeignet ist.
      - In der neuen Firmware ist es außerdem möglich mehrere Z-Matrizen abzuspeichern und bei Bedarf zu laden. Man kann also einen präzisen Scan für PLA, einen für ABS und weitere für andere Materialien/Einstellungen durchführen, wenn man oft mit wechselnden Materialien druckt.
Dieser Ansatz sollte bei einer Standardkonfiguration dazu führen, dass der 1. Layer genauso hoch ist wie es der G-Code will. Als Standardkonfiguration gilt:
  • - Heizbett ist halbwegs plan (delta Max = 0.5 mm)
    - Heizbett ist halbwegs gerade eingebaut (delta Max = 0.5 mm)
    - wenn der Z-Min Endschalter auslöst ist der Extruder/sind die Extruder an allen Stellen vom Heizbett maximal 0.5 mm vom Heizbett weg
D.h. die neue Firmware erfüllt "deine" folgenden Anforderungen (bzw. kann so eingestellt werden, dass sie sich so verhält):
  • - Bei aktiver Z-Kompensation fährt G0/G1 den Extruder immer an exakt den definierten Abstand über das Heizbett, egal ob dafür der Z-Min Schalter überfahren werden muss oder nicht.
    • - Ausnahme: Ein zusätzlicher Z-Offset kann natürlich weiterhin über M3006, das "Z Offset" Menü und über die beiden Hardware-Taster für die Z-Bewegung eingestellt werden.
      - Anmerkung: Da die Z-Kompensation versucht die Unebenheit vom Heizbett innerhalb der ersten Layer auszugleichen können die 1. Layer immer etwas höher sein als es der G-Code will. Wie stark der Ausgleich ist kann (wie bereits bisher) über M3002 und M3003 konfiguriert werden.
      - Wenn die Z-Kompensation nicht aktiv ist kann G0/G1 den Z-Min Schalter auch überfahren, da keine Kompensation stattfindet wird der Abstand Heizbett <-> Düse aber nicht exakt dem vom G-Code vorgegebenen Wert entsprechen (und sich bei Bewegungen in x/y-Richtung auch ändern). Wie weiter oben beschrieben sollte dieser Anwendungsfall aber nicht relevant sein, weil er G0/G1 mit negativen Z-Werten erfordern würde (die beim Drucken nicht auftreten).
    - Die Z-Anzeige im Display (und in einer Software wie dem Repetier-Host) kann so eingestellt werden, dass entweder der Abstand zum Z-Min Schalter oder der Abstand zur Heizbettoberfläche angezeigt wird.
    - Es gibt eine Sicherheitszone, welche verhindert, dass der Extruder das Heizbett und/oder den Z-Min Schalter zu weit überfährt.

"Deine" folgenden Anforderungen werden vorerst nicht verfügbar sein:
  • - Die Sicherheitszone ist nicht abhängig von der aktuellen Z-Matrix (weil das Abhängigkeiten erzeugen würde und für die bekannten Anwendungsfälle keinen Vorteil bringt).
    - Es gibt keine automatische Abstandmessung beim Start von jedem Druck (weil das a) nur per G-Code (und nicht automatisch) sinnvoll wäre und b) durch die Kombination der restlichen Maßnahmen nicht mehr so relevant ist).

mfG
RF1000
Benutzeravatar
RAU
Supporter
Supporter
Beiträge: 683
Registriert: Mo 28. Sep 2015, 19:16
Wohnort: NRW
Has thanked: 20 times
Been thanked: 55 times

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

Beitrag von RAU »

RF1000, sehr interessant! Und dabei hatte ich mich doch schon mit dem Gedanken angefreundet, für immer auf der 0.91.59 zu bleiben... :unsure:

Ich habe den HBS immer recht selten ausgeführt, musste dann aber die absolute Höhe nochmal nachjustieren. Jetzt klingt das so, als wäre das in Zukunft nicht mehr möglich. Oder hat das auch bisher nur an der Extruderlängung gelegen?

Wie genau ist das mit dem Ausgleich der Unebenheiten in den ersten Layern. Ich vermute das geschieht auch schon im Anfangslayer selber, oder? Könnte man den nicht ausschließen (Druckbett-Haftung)? Ab welchem Layer ist der Ausgleich denn normalerweise abgeschlossen?
RF1000
Developer
Developer
Beiträge: 340
Registriert: Fr 10. Okt 2014, 16:31
Has thanked: 40 times
Been thanked: 80 times

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

Beitrag von RF1000 »

Hallo RAU,

RAU hat geschrieben: Jetzt klingt das so, als wäre das in Zukunft nicht mehr möglich. Oder hat das auch bisher nur an der Extruderlängung gelegen?
Alles was du bisher einstellen konntest kannst du auch weiterhin einstellen. Bezüglich Kompensation ist der Hauptunterschied der, dass auch G0/G1 den Z-Min Schalter überfahren kann. In der Praxis kann das dann Auswirkungen haben, wenn der G-Code beim Drucken das Heizbett nach oben fährt (was beim reinen Drucken nicht passieren muss, was aber passieren kann wenn man z.B. die "Entlüftungsraupe" am Druckanfang höher druckt als den 1. Layer).
Der präzisere Heizbettscan soll dazu führen, dass weniger bzw. kleinere manuelle Anpassungen (z.B. über M3006 und/oder die Hardwaretaster) notwendig sind. Da aber der Heizbettscan nur einer der Parameter ist, welche den 1. Layer beeinflussen, können auch weiterhin manuelle Anpassungen notwendig sein.
RAU hat geschrieben: Wie genau ist das mit dem Ausgleich der Unebenheiten in den ersten Layern. Ich vermute das geschieht auch schon im Anfangslayer selber, oder? Könnte man den nicht ausschließen (Druckbett-Haftung)? Ab welchem Layer ist der Ausgleich denn normalerweise abgeschlossen?
Man kann über M3002 und M3003 einstellen, in welchem (Z-) Bereich die Z-Kompensation aktiv ist:
  • - Bei Layerhöhen unter dem Wert von M3002 (= g_minZCompensationSteps in der Firmware) bewegt die Z-Kompensation den Extruder parallel zum Heizbett. Das sollte daher ideal für den 1. Layer sein, der Defaultwert ist hier 0.2 mm. Wenn die Höhe vom 1. Layer exakt dem Wert vom G-Code entsprechen soll dann muss man diesen Defaultwert gegebenenfalls an die verwendete Höhe vom 1. Layer anpassen (also z.B. auf 0.4 mm ändern, wenn der 1. Layer 0.35 mm hoch sein soll).
    - Bis zur Layerhöhe vom Wert von M3003 (= g_maxZCompensationSteps in der Firmware) macht die Firmware jeden Layer etwas höher, sodass ab der Layerhöhe von M3003 keine Z-Kompensation mehr notwendig ist (und der oberste Layer am Ende wirklich möglichst plan ist).
    - Theoretisch könnte man diese Parameter über M3002 und M3003 so einstellen, dass der Extruder während dem gesamten Druckvorgang parallel zum Heizbett gehalten wird. In dem Fall wäre die Oberfläche vom obersten Layer dann ebenfalls parallel zum Heizbett (und damit evtl. nicht ganz plan).

mfG
RF1000
T1230
Developer
Developer
Beiträge: 139
Registriert: So 5. Apr 2015, 14:29
Has thanked: 11 times
Been thanked: 18 times

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

Beitrag von T1230 »

RF1000 hat geschrieben: b) am Ende vom Scan der Extruder noch einmal auf die geplante Arbeitstemperatur hochgeheizt. Nach b) wird noch einmal der Abstand ermittelt, der nun um eine eventuelle Längenausdehnung des Extruders verkürzt ist. Die ermittelte Differenz wird dann aus der Z-Matrix herausgerechnet und übrig bleibt eine Z-Matrix, die besser für die gewählte Arbeitstemperatur geeignet ist.
mfG
RF1000
Hallo RF1000,

mich hat eigentlich schon immer gewundert, wieso der HBS mit 120° gemacht wird, und nicht mit >200. Die Messzellen funktionieren im "Live"-Betrieb ja auch ?!

Kannst du vielleicht auch eine Auskunft zum Thema M3006 nach Freisetzung des Z-Min Schalters geben? Ich bin ein bisschen verwirrt, ich war ein paar Monate nicht mehr im Forum, und habe jetzt bei der Aufarbeitung der Threads diverse Kommentare gefunden, nachdem ein g-Code Offset nichtmehr greift, wenn der Z-min-Schalter mal auf Off geht (passiert bei mir von der Theorie her schon bei der Abstreifraupe).

Ich dachte eigentlich bis vor ein paar Tagen, dass ich das mit dem HBS verstanden hätte, aber irgendwie scheint das doch nicht mehr so zu sein. Wenn also folgende Frage völlig daneben ist, soll sie ein Admin halt rauslöschen (aber ich denke nicht jeder hat sich mit der Thematik so gut beschäftigt wie Zaldo):
der HBS ist doch nur zum ausgleichen von Unebenheiten des Heizbetts da. Nehmen wir (der Einfachheit halber) mal an, die Platte ist komplett eben, liegt aber nur um 0.1 schief von links nach rechts (links ist das Bett höher, also näher am Extruder).
Der Abstand zwischen den höchsten Punkt (links) und dem Extruder ist bei z-min=ON 0,3mm
D.h. rechts am Druckbett ist der Extruder 0,4mm entfernt vom Druckbett (wenn die Z-Kompensation aus wäre).
Die Z-Kompensation sorgt jetzt dafür, dass sich der Extruder auch rechts am Druckbett auf 0,3mm ans Bett annähert, oder?
d.h. wenn ich nun einen Druck starten würde mit Layerhöhe 0,1mm, wird die Raupe in die Luft gedruckt? Oder werden die 0,3mm Abstand
des HBS mit dem g-Code gemerged, und die Raupe wird bei einem Extruder-Bett-Abstand von 0,1mm rausgedrückt?

Da hier ja Input gefragt ist, wie man sich die Sache vorstellt (und es offenbar in der nächsten Firmware schon realisiert wird):
Ich als wenig-Wissender würde eigentlich immer annehmen, dass (zumindest) die Display-Anzeige mir immer den Abstand zwischen Druckbett und Extruder anzeigt (also inkl. der HBS Werte = realer Abstand).

Der Repetier-Server (oder Host) kann ja meinetwegen den G-Code-Only Abstand anzeigen.

LG Thomas
Antworten

Zurück zu „Firmware / Tweaks“