Seite 1 von 3

Firmwareänderung Stop ZMinEndschalter

Verfasst: Do 10. Dez 2015, 20:30
von X4r3
Ich würde gerne in der Firmware die Abfrage ändern dass bei betätigen des Z-Min-Endschalters die Z-Bewegung gestoppt wird. Nach einigen Stunden einlesen in die komplexe Firmware bin ich jetzt an einem Punkt gekommen bei dem ich ohne Hilfe nicht mehr weiterkomme. Mir fehlen die benötigten Variablen.

Auf den richtigen Absatz bin ich gekommen: V 0.91.59 motion.h Zeile 320:

Code: Alles auswählen

            if(isZNegativeMove() && Printer::isZMinEndstopHit())
			{
				Com::printFLN( PSTR( "isZNegativeMove() && Printer::isZMinEndstopHit() 3333" ) ); // bei homing, bei Z0.05, nicht bei 1. Layer mit Z0.1!
                setZMoveFinished();
			}
Wie ich es mir vorgestellt habe:

Code: Alles auswählen

if ( ( isZNegativeMove() && Printer::isZMinEndstopHit() && Z-Kompensation aktiv && aktuelle Z Position <= Wert HeatBedMatrix bei momentanen X,Y + selbst fesgelegten offset ) || ( isZNegativeMove() && Printer::isZMinEndstopHit() && Z-Kompensation nicht aktiv ) || ( isZNegativeMove() && Printer::isZMinEndstopHit() && aktuell ein home ausgeführt wird ) )...
d.h. die Z Bewegung nach oben wird gestoppt
wenn eine negative Z Bewegung (heizbett nach oben) und der Z-Min-Endschalter betätigt wird und die Z-Kompensation aktiv ist und die aktuelle Z-Position kleiner als der Wert der HeatBedMatrix bei momentanen X,Y Wert + selbst festgelegten offset z.b. 0,05mm
oder
eine negative Z Bewegung (heizbett nach oben) und der Z-Min-Endschalter betätigt wird und die Z-Kompensation nicht aktiv ist
oder
eine negative Z Bewegung (heizbett nach oben) und der Z-Min-Endschalter betätigt wird und ein home ausgeführt wird


Dann würde auch der Z-Wert im Display auch die tatsächliche reale Position entsprechen, solange der offset nicht unterfahren wird. Der offset ist nötig um zu verhindern dass die Düse übers Heizbett kratzt.

Re: Firmwareänderung Stop ZMinEndschalter

Verfasst: Fr 11. Dez 2015, 19:51
von RF1000
Hallo,


ich kann niemandem empfehlen an dieser Stelle Dinge zu ändern ohne sich sehr sicher zu sein, welche exakten Auswirkungen das hat. Die Bewegung der Z-Achse wird bestimmt durch
- den G-Code
- über die manuellen Taster
- durch die Einstellung von M3006 (wenn die Z-Kompensation aktiviert worden ist)
- durch die Z-Kompensation (wenn die Z-Kompensation aktiviert worden ist)
Alle diese Stellschrauben müssen in jeder beliebigen Kombination korrekt behandelt werden wenn man damit anfängt zu erlauben, dass jeder G-Code den Z-Min Endschalter überfahren kann.
Wenn derartige Modifikationen getestet werden sollte auch immer zumindest eine Hand am Ausschalter sein.

Ich kann hier im Moment keine Andeutungen zu möglichen Lösungswegen machen, ich möchte ungern etwas vorschlagen was dann nicht oder nicht korrekt umgesetzt werden kann.

Und für mein Verständnis: Wenn dieser Ansatz einen selbst festgelegten Offset erfordert, welchen Vorteil hat er gegenüber der bereits vorhandenen M3006-Möglichkeit? In der (sehr bald kommenden) nächsten Version der Firmware kann man den über M3006 einstellbaren Offset auch über das Menü einstellen. Dieser wird dann im EEPROM gespeichert, d.h. im Grunde muss M3006 dann nicht mehr im G-Code stehen, wenn jemand diesen selbst festgelegten Offset nicht ständig verändern muss.


mfG
RF1000

Re: Firmwareänderung Stop ZMinEndschalter

Verfasst: Fr 11. Dez 2015, 20:13
von Zaldo
Man bräuchte diesen Offset eigentlich nur als "Parkposition". Im normalen Druckbetrieb wird der "Offset" ja durch die Layerhöhe vorgegeben. Zudem hatte auch ich schonmal angemerkt, dass imho eine Z-Min Begrenzung in der Größenordnung der Z-Auflösung des Druckers (also 0,05mm) ausreichend ist (man könnte - wenn man es denn schafft - auch den Z-Schalter auf 0,05mm einstellen).

Und noch einen Vorteil hätte dies: Die Z-Uhr würde endlich korrekte Werte anzeigen, und nicht den Abstand zum Z-Referenzschalter, den kein Mensch interessiert.

Re: Firmwareänderung Stop ZMinEndschalter

Verfasst: Fr 11. Dez 2015, 20:38
von X4r3
Der Absatz in der motion.h Zeile 320 betrifft nur den GCode. Nur an dieser Stelle sollte die Änderung erstmal erfolgen.

Für die Bewegung mittels Taster und Menü wird an anderer Stelle abgefangen, z.b. RF1000.cpp Ab Zeile 6556. Sollte zuminderst, denn ich habe heute ausprobiert wie weit man das Heizbett mittels Z-nach oben-Taster bei Druckpause hochfahren kann. Bei F-Wert Änderung von 1000 auf -5000 habe ich aufgehört, der Extruder wird nach oben gedrückt. Sollte das nicht verhindern werden?


Zwecks M3006, das macht unter dieser Konstellation mit dem Endschalter keinen Sinn, meiner Meinung nach. Die Z-Bwegung nach oben stoppt immer beim Endschalter, da kann man noch so viel Offset mit M3006 einstellen, es ändert nichts. Der Abstand wird immer die 5-Blatt Papier bzw. den Wert der Z-Kompensation entsprechen.
Ich lasse diesen Befehl aktuell aus dem Startcode aussen vor. Denn wenn ich im Startcode mit Z-Kompensation, Z0.25 beginne und 1. Layer 0.25 drucke bedarf es keine Korrektur der Höhe mehr. Der Z-Wert im Display ist korrekt und der 1. Layer des Druckobjekts sollte auch passen. (Firmware V 0.91.59)

Der Z-Endschalter sollte als Referenz-Schalter fungieren. Der Arbeitsbereich bei Drucker liegt eben in diesem Bereich, anders Bei Fräsen, da macht es Sinn am Ende des Verfahrensweg Endschalter einzusetzen.
Für Endabschaltungen in Z sollten andere Verfahren eingesetzt werden.

z.b. ich überlege mir eine Aluminium Heizplatte zuzulegen. Die Heizplatte ist vom Rest des Druckers elektrisch entkoppelt, mit dem Extruder fungiert das als Schalter. Berührt der Extruder die leitfähige Platte wird der Stromkreis geschlossen und die Bewegung gestoppt. (Wird zum Teil bei Fräsen gemacht um den obersten Punkt des Werkstückes zu erkennen.) Nebenbei wird durch Aluminium die Wärmeverteilung verbessert.
Ungeklärt ist allerdings ob das Plastic auf der Aluminium Platte haftet.
oder
Softwarelösung
oder es fallen noch andere Ideen ein.


So wie das aktuell in der Firmware ist kann man das nicht lassen.

Re: Firmwareänderung Stop ZMinEndschalter

Verfasst: So 13. Dez 2015, 09:36
von shaddi
RF1000 hat geschrieben:In der (sehr bald kommenden) nächsten Version der Firmware kann man den über M3006 einstellbaren Offset auch über das Menü einstellen. Dieser wird dann im EEPROM gespeichert, d.h. im Grunde muss M3006 dann nicht mehr im G-Code stehen, wenn jemand diesen selbst festgelegten Offset nicht ständig verändern muss.
Ich verstehe den Sinn von M3006 nicht. Für was soll das eigentlich gut sein? Der Drucker weiss doch ganz genau wieviel Steps (oder mm) er nach dem triggern des Z-Schalters noch fahren kann, bis die Düse das Druckbett berührt. Wenn man dickere 1st-Layer will, sollte man das ausschließlich über den Slicer einstellen.

Oder verstehe ich da was falsch?

Re: Firmwareänderung Stop ZMinEndschalter

Verfasst: So 13. Dez 2015, 14:49
von X4r3
Habe gestern den ganzen Tag an einer Lösung in der Firmware gearbeitet. Musste feststellen dass die Abfrage über die aktuelle Position nicht möglich ist. Sobald man per G1 Zx Befehl sendet werden sämtliche Variablen die als "Aktuelle postion" deklariert sind auf den x Wert gesetzt obwohl der Drucker in Bewegung ist und diese Postion noch gar nicht erreicht hat.
Ich finde in der Firmware auch keine "globale" Variable die eine aktuelle befindliche Postion beinhaltet.


Heute eine andere Lösung probiert:

Ich habe einen neuen Gcode Befehl generiert (M3301), damit lässt sich der Z-Endschalter einmal beim nächsten G1 Zx Befehl überfahren.

Beispiel:
Am Ende des Startcodes einfügen: M3301
Der nächste G1 Zx befehl kommt vom Slicer-Gcode (1.Layer), es wird erlaubt den Abstand zu verringern.
Für alle weitern G1 Zx Befehle die den Abstand verringern ( durch fehler, etc), stoppt der Drucker beim Endschalter wie gewöhnlich.


Falls interesse besteht kann ich meine Änderungen Öffentlich machten.

Re: Firmwareänderung Stop ZMinEndschalter

Verfasst: So 13. Dez 2015, 17:52
von X4r3
hahaha zu früh gefreut , diese software macht nur scheise :mann:

Was mit einzelnen Befehlen mit Repetiert-Host funktioniert, läuft bei der Abfolge per SD-Card oder Repetier-Host nicht mehr.

"mampf mampf mampf schluck schluck schluck mampf kotz"

Re: Firmwareänderung Stop ZMinEndschalter

Verfasst: So 13. Dez 2015, 20:47
von Stefan baut Zeug
shaddi hat geschrieben: Ich verstehe den Sinn von M3006 nicht. Für was soll das eigentlich gut sein? Der Drucker weiss doch ganz genau wieviel Steps (oder mm) er nach dem triggern des Z-Schalters noch fahren kann, bis die Düse das Druckbett berührt. Wenn man dickere 1st-Layer will, sollte man das ausschließlich über den Slicer einstellen.
Das Problem ist halt dass es ein paar mechanische Probleme gibt wodurch der erste Layer eben doch nicht die richtige Höhe hat und ein kleiner Offset "notwendig" wird.

Bekannte Probleme:
1) Ausdehnung Bett/Extruder wenn der Scann bei anderen Temperaturen gemacht wurde wie dann beim Druck.
2) die zwei Lastmessdosen die sich beim Drucken nach unten biegen und dadurch den ersten Layer dünner machen (abhänig von den benötigten digits)

Welche noch? Keine Ahnung.. Den Offset kann man bequem im slirc3r eingeben.

Ad Firmware basteln:
Ich persönlich will eigentlich die Sicherheit des Endschalters belassen und sehe keinen Änderungsbedarf das ist derzeit IMHO richig Implementiert.. Ansonsten verkommt der "Endschalter" zu einem Referenzschalter..

Man kann den Z-Endschalter mit einem Blatt (0,1mm) Grundabstand machen und dann scannen. Dann muss man auch nicht in der Firmware basteln weil eigentlich dann jede sinnvolle Höhe anfahrbar ist ohne Einbußen bei der Sicherheit.


mfg,
Stefan

Re: Firmwareänderung Stop ZMinEndschalter

Verfasst: So 13. Dez 2015, 22:18
von Zaldo
Stefan, diese von Dir beschriebenen Probleme sind aber dimensionierbar. Genauso wie man die von M3006 abziehen und eintippen kann, könnte der Drucker das auch alleine, und das sogar besser, genauer und sogar in Echtzeit. Ich denke was Shaddi (berechtigterweise) fragt, ist wo der Unterschied ist, einen Korrekturwert an und mit einer Maschine zu bestimmen, um ihn dann von Hand als Korrekturwert mitzuschicken, wenn die Maschine den Korrekturwert doch gerade eben selber ermittelt hat.

Und Nein, Der Z-Schalter IST ein Referenzschalter und kein Endschalter. Genau da kommen diese irrsinnigen Forulierungen her "Endschalter überfahren". Einen Endschalter kann man nicht überfahren, denn da wo der ist ist - wie das Wort schon sagt - Ende. Es gibt kein "Bisschen mehr Ende". Da es aber in der Natür dieser Maschine liegt, den Schalter überfahren zu *müssen* (was man ja schon an der grandiosen originalen Aufhängung des Z-Schalters sieht) kann es folglich auch nur ein Referenzschalter und kein Endschalter sein.

Bestenfalls ist es ein Änd-Schalter, weil der die Position vom Ende ver_Ä_ndern kann ;)

Re: Firmwareänderung Stop ZMinEndschalter

Verfasst: Mo 14. Dez 2015, 08:37
von shaddi
Hatte gerade noch eine Idee. Warum nicht den Endschalter von oben nach unten umbauen? Bei dem CNC-Umbau wird ja unten auch ein Schalter montiert (Bestellnummer 1297994). Dann ist unten der Schalter für die Homing-Fahrt bei der dann Z=245 definiert wird. (Wert Einstellbar und kann per HBS feinjustiert werden).
Somit muss man auch keine Referenz-Schalter als Endschalter definieren :)

...man bräuchte nen zweiten RF1000 um mal ein paar Ideen durchzutesten ohne dass man das produktive Ding demontieren muss :P