Willkommen! Anmelden Ein neues Profil erzeugen

Erweiterte Suche

Höhe des Druckbett justieren

geschrieben von Glatzemann 
Höhe des Druckbett justieren
16. October 2015 11:45
Hallo zusammen,

in einem anderen Thread hatte ich es ja schon geschrieben. Ich arbeite momentan an einem Patch für die Repetier-Firmware um das Druckbett vollautomatisch zu justieren. Dazu sind folgende Voraussetzungen notwendig bzw. gegeben:

  • Kapazitiver, Induktiver Sensor am Druckkopf
  • oder FSR-Sensor unter dem Druckbett
  • Z-Max Endstop
  • an drei Punkten gelagertes Druckbett
  • Z-Achsen Motoren an drei individuell zu steuernden Treibern angeschlossen

Einfach ausgedrückt also ein Aufbau in der Art des Sparkcube XXL.

Ich habe nun folgende Sequenz in die Repetier-Firmware eingebaut (momentan noch mit dem Kommando G33):

  • Z-Achse homen (gegen Z-Max Endstop)
  • Z-Achse auf 30mm Höhe fahren
  • Sensor an ABL-Position 1 fahren
  • Z-Motor 1 in 1/100mm Schritten Richtung Z-Probe Sensor fahren, bis dieser auslöst
  • Sensor an ABL-Position 2 fahren
  • Z-Motor 2 in 1/100mm Schritten Richtung Z-Probe Sensor fahren, bis dieser auslöst
  • Sensor an ABL-Position 3 fahren
  • Z-Motor 3 in 1/100mm Schritten Richtung Z-Probe Sensor fahren, bis dieser auslöst
  • Z-Achse homen (gegen Z-Max Endstop)

Dieses Verfahren ist bei weitem noch nicht optimal, aber die grundsätzliche Funktionsweise ist schon mal gegeben. Bei 10 Wiederholungen mit verstelltem Druckbett habe ich eine Genauigkeit von <= 0.4mm an den drei Ecken des Druckbetts erreicht.

Das Problem bei diesem Verfahren ist natürlich, daß sich die drei Achsen gegenseitig etwas beeinflussen. Und sicherlich würde sich die Genauigkeit auch noch erhöhen, wenn mehrere Wiederholungen durchgeführt würden (so wie beim Homen).

Meine Frage ist nun: Wie justiert ihr eur Druckbett manuell um ein möglichst exaktes Ergebnis zu erhalten?

Ich selbst habe schon einen Plan, würde aber auch gerne noch andere Meinungen hören (ohne diese von vorne herein zu beeinflussen). Sicherlich hat einer der alten Hasen eine noch bessere Lösung, als ich sie mir ausgedacht habe.

1-mal bearbeitet. Zuletzt am 16.10.15 12:03.


--
Microsoft MVP in den Kategorien DirectX/XNA * Visual C++ * Visual Studio and Development Technologies seit 2011

  • Mein Erster (RAMPS 1.4, Selbstbau WolfStrap-Derivat mit Linearführungen, Wade Extruder und E3D lite6 Hotend)
  • Cub44 (Selbstbau Dual Wire Gantry Derivat mit Zahnriemen und Linearschienen, RADDS 1.5 und DUE, Custom Hotend - E3D like, Compact Bowden Extruder)
  • HexMax (sechseckiger Delta (eigenes Design) mit Druckraum 300mm Durchmesser und >=400mm Höhe, RADDS 1.5, 24V, Custom Hotend, Compact Bowden Extruder)
  • P3Steel Toolson MK2 - Keine Zeit zum selbst planen ;-)

Andere Projekte: FSR Board (ABL-Sensor-Platine inkl. Firmware) * ThirtyTwo (32Bit RepRap-Firmware)
Re: Höhe des Druckbett justieren
16. October 2015 11:59
Ich finde deine Fragestellung etwas irreführend.
Ich gehe mal davon aus, dass du meinst: "Wie justiert ihr euer Druckbett manuell um ein möglich exaktes Ergebniss zu erhalten?"

Bei den kartesischen gehe ich in etwa so vor:
[www.youtube.com]

Soll heissen ich arbeite mit Kontakt.

Das entspricht in etwa deiner Sequenz und "manuellem FSR" winking smiley


Lars - Blog, Thingiverse, Git

After successfully ignoring Google, FAQ's, the board search and leaving a undecipherable post in the wrong sub-forum don't expect an intelligent reply.
Re: Höhe des Druckbett justieren
16. October 2015 12:04
Ich hab das mal editiert eye rolling smiley und schaue mir jetzt das Video an drinking smiley


--
Microsoft MVP in den Kategorien DirectX/XNA * Visual C++ * Visual Studio and Development Technologies seit 2011

  • Mein Erster (RAMPS 1.4, Selbstbau WolfStrap-Derivat mit Linearführungen, Wade Extruder und E3D lite6 Hotend)
  • Cub44 (Selbstbau Dual Wire Gantry Derivat mit Zahnriemen und Linearschienen, RADDS 1.5 und DUE, Custom Hotend - E3D like, Compact Bowden Extruder)
  • HexMax (sechseckiger Delta (eigenes Design) mit Druckraum 300mm Durchmesser und >=400mm Höhe, RADDS 1.5, 24V, Custom Hotend, Compact Bowden Extruder)
  • P3Steel Toolson MK2 - Keine Zeit zum selbst planen ;-)

Andere Projekte: FSR Board (ABL-Sensor-Platine inkl. Firmware) * ThirtyTwo (32Bit RepRap-Firmware)
Re: Höhe des Druckbett justieren
16. October 2015 12:07
Theoretisch würde das doch quasi in zwei Sequenzen viel genauer gehen. Also so wie du es dir denkst.

1. Bed ganz normal leveln lassen über ABL
2. Matrix dazu nutzen das Bett über die drei Motoren anzugleichen.
3. Vielleicht nochmal mit 1. anfangen um ggf. Fehler auszugleichen.
... Fertig


Triffid Hunter's Calibration Guide --> X <-- Drill for new Monitor Most important Gcode.
Re: Höhe des Druckbett justieren
16. October 2015 12:09
Ich habe auch eine Aufhängung an 3 separaten Z-Achsen und arbeite an einer Prozedur zum Leveln (hab aber auch nocht nicht das Patentrezept)


Fährst du den jeweiligen Motor an die Düse heran, bis der Sensor auslöst und lässt das Druckbett dann in dieser Position, und fährst zum nächsten Punkt?
Oder setzt du das das Bett nach jeder Messung wieder zurück?
Re: Höhe des Druckbett justieren
16. October 2015 12:10
OK, das ist ja im Grunde das, was ich jetzt auch mache und oben beschrieben habe.

Wie wichtig ist dabei die Reihenfolge?

Ich mache jetzt ein vorne links, hinten Mitte, vorne rechts.

Wenn man die Reihenfolge vom Video auf meinen über tragen würde wäre das dann bei mir: vorne links, vorne rechts und dann hinten Mitte.

Das könnte schon einen Unterschied machen, oder?


--
Microsoft MVP in den Kategorien DirectX/XNA * Visual C++ * Visual Studio and Development Technologies seit 2011

  • Mein Erster (RAMPS 1.4, Selbstbau WolfStrap-Derivat mit Linearführungen, Wade Extruder und E3D lite6 Hotend)
  • Cub44 (Selbstbau Dual Wire Gantry Derivat mit Zahnriemen und Linearschienen, RADDS 1.5 und DUE, Custom Hotend - E3D like, Compact Bowden Extruder)
  • HexMax (sechseckiger Delta (eigenes Design) mit Druckraum 300mm Durchmesser und >=400mm Höhe, RADDS 1.5, 24V, Custom Hotend, Compact Bowden Extruder)
  • P3Steel Toolson MK2 - Keine Zeit zum selbst planen ;-)

Andere Projekte: FSR Board (ABL-Sensor-Platine inkl. Firmware) * ThirtyTwo (32Bit RepRap-Firmware)
Re: Höhe des Druckbett justieren
16. October 2015 12:11
Quote
justMaD
Ich habe auch eine Aufhängung an 3 separaten Z-Achsen und arbeite an einer Prozedur zum Leveln (hab aber auch nocht nicht das Patentrezept)


Fährst du den jeweiligen Motor an die Düse heran, bis der Sensor auslöst und lässt das Druckbett dann in dieser Position, und fährst zum nächsten Punkt?
Oder setzt du das das Bett nach jeder Messung wieder zurück?

Ich setze die Höhe nicht zurück...


--
Microsoft MVP in den Kategorien DirectX/XNA * Visual C++ * Visual Studio and Development Technologies seit 2011

  • Mein Erster (RAMPS 1.4, Selbstbau WolfStrap-Derivat mit Linearführungen, Wade Extruder und E3D lite6 Hotend)
  • Cub44 (Selbstbau Dual Wire Gantry Derivat mit Zahnriemen und Linearschienen, RADDS 1.5 und DUE, Custom Hotend - E3D like, Compact Bowden Extruder)
  • HexMax (sechseckiger Delta (eigenes Design) mit Druckraum 300mm Durchmesser und >=400mm Höhe, RADDS 1.5, 24V, Custom Hotend, Compact Bowden Extruder)
  • P3Steel Toolson MK2 - Keine Zeit zum selbst planen ;-)

Andere Projekte: FSR Board (ABL-Sensor-Platine inkl. Firmware) * ThirtyTwo (32Bit RepRap-Firmware)
Re: Höhe des Druckbett justieren
16. October 2015 12:12
Quote
Wurstnase
Theoretisch würde das doch quasi in zwei Sequenzen viel genauer gehen. Also so wie du es dir denkst.

1. Bed ganz normal leveln lassen über ABL
2. Matrix dazu nutzen das Bett über die drei Motoren anzugleichen.
3. Vielleicht nochmal mit 1. anfangen um ggf. Fehler auszugleichen.
... Fertig

Interessante Idee. Sehr interessant...

Und vom Code her vermutlich sogar die einfachste Variante.


--
Microsoft MVP in den Kategorien DirectX/XNA * Visual C++ * Visual Studio and Development Technologies seit 2011

  • Mein Erster (RAMPS 1.4, Selbstbau WolfStrap-Derivat mit Linearführungen, Wade Extruder und E3D lite6 Hotend)
  • Cub44 (Selbstbau Dual Wire Gantry Derivat mit Zahnriemen und Linearschienen, RADDS 1.5 und DUE, Custom Hotend - E3D like, Compact Bowden Extruder)
  • HexMax (sechseckiger Delta (eigenes Design) mit Druckraum 300mm Durchmesser und >=400mm Höhe, RADDS 1.5, 24V, Custom Hotend, Compact Bowden Extruder)
  • P3Steel Toolson MK2 - Keine Zeit zum selbst planen ;-)

Andere Projekte: FSR Board (ABL-Sensor-Platine inkl. Firmware) * ThirtyTwo (32Bit RepRap-Firmware)
Re: Höhe des Druckbett justieren
16. October 2015 12:15
Also, je nachdem, wie dein Bett aufgehängt ist (wenn es so ähnlich ist, wie meins), würde ich auf jeden fall die Reihenfolge ändern (also erst die beiden vorne, dann den hinteren).

Und eventuell sich an jeder ABL-Position die Anzahl der Schritte merken, dann aber für die nächste Messung wieder zurück fahren, um durch die Schiefstellung nicht den Bezug der Punkte untereinander zu verändern.
Dann nach der Messung jeden Motor um seine Schrittdifferenz bewegen.

(Zumindest in meinem Kopf kommt dadurch eine genauere Positionierung zustande winking smiley )


Ich habe das übrigens so vor, dass ich das "normale" ABL abfahren möchte, und dann mit der dort errechneten Matrix die Z-Differenz an der jeweiligen "projezierten" Z-Achsen-Position berechne und die Motoren dann um diese Differenz verfahren lasse.

3-mal bearbeitet. Zuletzt am 16.10.15 12:52.
Re: Höhe des Druckbett justieren
16. October 2015 12:24
Die besten Ergebnisse im ABL hatte ich in Marlin mit der 3 Punkte Messung. Dabei bin ich vom geometrischn Mittelpunkt der Platte in dedachter Linie zu den 3 Auflagepunkten gefahren. Aber nicht genau bis zu den Punkten, sondern nur zu 3/4.

Und vergiss nicht, dass du immernoch mit den gedruckten Teilen testetst, oder?


[www.facebook.com]

Power is nothing.....without control!
Re: Höhe des Druckbett justieren
16. October 2015 13:35
@justmad: das ist ja das was Wurstnase vorgeschlagen hat.

Das teste ich morgen früh mal, das hab ich schnell eingebaut...

@Stud54: Ja. Druckteile. Aber wenn ich es per Hand justieren, dann bleibt das auf ein paar Tage auf 1/10 genau. Es sei denn, der Sensor kollidiert heftig mit nen Druckteil. So genau will ich das auch automatisch haben...


--
Microsoft MVP in den Kategorien DirectX/XNA * Visual C++ * Visual Studio and Development Technologies seit 2011

  • Mein Erster (RAMPS 1.4, Selbstbau WolfStrap-Derivat mit Linearführungen, Wade Extruder und E3D lite6 Hotend)
  • Cub44 (Selbstbau Dual Wire Gantry Derivat mit Zahnriemen und Linearschienen, RADDS 1.5 und DUE, Custom Hotend - E3D like, Compact Bowden Extruder)
  • HexMax (sechseckiger Delta (eigenes Design) mit Druckraum 300mm Durchmesser und >=400mm Höhe, RADDS 1.5, 24V, Custom Hotend, Compact Bowden Extruder)
  • P3Steel Toolson MK2 - Keine Zeit zum selbst planen ;-)

Andere Projekte: FSR Board (ABL-Sensor-Platine inkl. Firmware) * ThirtyTwo (32Bit RepRap-Firmware)
Re: Höhe des Druckbett justieren
16. October 2015 13:43
Quote
Glatzemann
@justmad: das ist ja das was Wurstnase vorgeschlagen hat.

Stimmt. Wenn man sich das nochmal durchliest, dann klingt das so smiling smiley
Re: Höhe des Druckbett justieren
16. October 2015 14:26
Ich hab die Idee von Wurstnase und justMaD jetzt mal eingebaut. War sogar noch einfacher als erwartet. Die Matrix braucht man gar nicht. Die Methode zur Durchführung des bisherigen ABL (da wo die Matrix aufgebaut wird) gibt bereits die richtigen Höhen für die Druckbett-Ecken zurück. Es ist sogar schon Code vorhanden für den Fall, daß man die Druckplatte mit Zusatzmotoren ausrichtet. Den habe ich einfach mit meinem Code kombiniert und habe nun eine schöne, saubere Level-Routine.

Ich bin echt gespannt, wie die sich morgen in der Wiederholgenauigkeit schlägt...

Vielen Dank an alle für das hervorragende Feedback.


--
Microsoft MVP in den Kategorien DirectX/XNA * Visual C++ * Visual Studio and Development Technologies seit 2011

  • Mein Erster (RAMPS 1.4, Selbstbau WolfStrap-Derivat mit Linearführungen, Wade Extruder und E3D lite6 Hotend)
  • Cub44 (Selbstbau Dual Wire Gantry Derivat mit Zahnriemen und Linearschienen, RADDS 1.5 und DUE, Custom Hotend - E3D like, Compact Bowden Extruder)
  • HexMax (sechseckiger Delta (eigenes Design) mit Druckraum 300mm Durchmesser und >=400mm Höhe, RADDS 1.5, 24V, Custom Hotend, Compact Bowden Extruder)
  • P3Steel Toolson MK2 - Keine Zeit zum selbst planen ;-)

Andere Projekte: FSR Board (ABL-Sensor-Platine inkl. Firmware) * ThirtyTwo (32Bit RepRap-Firmware)
Re: Höhe des Druckbett justieren
17. October 2015 07:08
Ich habe jetzt den Code soweit durchgetestet und nachdem ich einen Bug behoben habe, sieht das Ganze jetzt schon ganz gut aus...

Ich habe die Reihenfolge jetzt geändert: Vorne links, dann vorne rechts und dann hinten Mitte. Das ist jeweils unmittelbar vor den Spindeln und den Aufhängungen. Ich habe mit G32 S0 die Höhen gemessen:

7.39
10.30
9.07

recht krumm also, klar, ich hatte das Druckbett auch sichtbar per Hand krumm gemacht.

Dann habe ich mit G34 einen Durchgang gemacht. Danach bekomme ich bei der Kontrolle mit G32 S0 folgende Werte raus:

5.98
7.04
6.58

Komisch finde ich momentan, daß der erste Wert um 1.41 Millimeter tiefer liegt als vorher, da ich dort eigentlich nichts verändert habe. Der erste Motor dreht sich nicht. Die anderen beiden Motoren haben sich deutlich angeglichen, daß ist schon besser. Das Druckbett ist nach der Prozedur sichtbar gerader.

Ich muss nochmal überprüfen, ob da irgendwas reinspielt. Ich habe irgendwie das Gefühl, daß da noch eine "Korrektur" oder ein "Offset" aus dem EEPROM kommt...

Grundsätzlich funktioniert die Idee aber schon recht gut und ist vom Code her sehr elegant gelöst...


--
Microsoft MVP in den Kategorien DirectX/XNA * Visual C++ * Visual Studio and Development Technologies seit 2011

  • Mein Erster (RAMPS 1.4, Selbstbau WolfStrap-Derivat mit Linearführungen, Wade Extruder und E3D lite6 Hotend)
  • Cub44 (Selbstbau Dual Wire Gantry Derivat mit Zahnriemen und Linearschienen, RADDS 1.5 und DUE, Custom Hotend - E3D like, Compact Bowden Extruder)
  • HexMax (sechseckiger Delta (eigenes Design) mit Druckraum 300mm Durchmesser und >=400mm Höhe, RADDS 1.5, 24V, Custom Hotend, Compact Bowden Extruder)
  • P3Steel Toolson MK2 - Keine Zeit zum selbst planen ;-)

Andere Projekte: FSR Board (ABL-Sensor-Platine inkl. Firmware) * ThirtyTwo (32Bit RepRap-Firmware)
Re: Höhe des Druckbett justieren
17. October 2015 09:20
War tatsächlich noch ein Offset vom ABL drin... Die erste Höhe beim ersten Durchlauf ist vermutlich noch fehlerhaft und mit Vorsicht zu interpretieren. Ich habe jetzt mit vier Iterationen die folgenden Werte erhalten:

// 1. Durchlauf
6.99
8.07
7.58

// 2. Durchlauf
6.22
6.66
6.42

// 3. Durchlauf
6.25
6.43
6.33

// 4. Durchlauf
6.29
6.35
6.31

Die erste Höhe ist jetzt immer sehr nah beieinander. Eine maximale Abweichung von 0.07mm ist ja schon mal sehr gut. Manuelles nachmessen liefert ähnliche Ergebnisse, auch wenn ich nur aufs Zehntel genau messen kann.

Ich denke, daß ist ganz brauchbar, oder? Die restliche Ungenauigkeit liegt sicherlich an der Hardware. Bessere Spindeln, Muttern etc. dürften da noch etwas rausholen.


--
Microsoft MVP in den Kategorien DirectX/XNA * Visual C++ * Visual Studio and Development Technologies seit 2011

  • Mein Erster (RAMPS 1.4, Selbstbau WolfStrap-Derivat mit Linearführungen, Wade Extruder und E3D lite6 Hotend)
  • Cub44 (Selbstbau Dual Wire Gantry Derivat mit Zahnriemen und Linearschienen, RADDS 1.5 und DUE, Custom Hotend - E3D like, Compact Bowden Extruder)
  • HexMax (sechseckiger Delta (eigenes Design) mit Druckraum 300mm Durchmesser und >=400mm Höhe, RADDS 1.5, 24V, Custom Hotend, Compact Bowden Extruder)
  • P3Steel Toolson MK2 - Keine Zeit zum selbst planen ;-)

Andere Projekte: FSR Board (ABL-Sensor-Platine inkl. Firmware) * ThirtyTwo (32Bit RepRap-Firmware)
Re: Höhe des Druckbett justieren
17. October 2015 09:56
Ich verstehe nicht wirklich die Ungenauigkeit von 0,4mm. Vielleicht fehlt mir ja ne Info.

Gestern habe ich meine neuen Spindeln eingebaut. Daher musste ich das Druckbett auch neu Einleveln.
Dazu fahre ich die Z-Probe Routine aber nur bis ich die Messwerte der 3 Proben habe. Die schreib ich in meine Exeldatei. Da hab ich die Position links vorne als Referenz gesetzt und bekomme für die anderen beiden Positionen die Steps und die Drehrichtung der jeweiligen Spindeln angezeigt, die notwendig sind, um das Bett auszurichten. Ich drehe erst die Position rechts vorne und teste dann wieder. Passt links und rechts, dann korrigiere ich die Position Mitte hinten.
Für die ganze Aktion brauch ich gesamt 3 - 5 Fahrten und habe auch nach mehreren Tests danach alle 3 Achsen auf min 0,01 genau.

Das ABL hab ich Off und der erste Layer ist überall gleichmäßig stark.

Gruß
Andreas

1-mal bearbeitet. Zuletzt am 17.10.15 10:02.


Einen Sparkcube 1.1XL für größere Objekte, einen Trinus3D im Gehäuse und einen Tantillus R im Bau und einen Qidi Tech Q1 Pro im Zulauf.
Sparkcube: Komplett auf 24V - DDP 8mm + 1,5mm Carbonplatte - RADDS 1.5 + Erweiterungsplatine + RAPS128 - Nema 17/1,7A 0,9 Grad - ind. Sensor für Z-Probe (kein ABL) - FTS - Titan Booster Hotend - Sparklab Extruder - Firmware Repetier mit @ Glatzemanns G33 - Repetier Server pro - Simplify3D
Re: Höhe des Druckbett justieren
17. October 2015 12:35
Meine Z-Achse ist momentan eher provisorisch, genau wie der Halter für den kapazitiven Sensor.

Ich hatte aber auch beim Testen ein paar kleinere Kollisionen...

Aber deine Reihenfolge klingt interessant. Werde ich auch mal testen.

Hast du denn vielleicht Lust das mal auf deiner Hardware zu testen?


--
Microsoft MVP in den Kategorien DirectX/XNA * Visual C++ * Visual Studio and Development Technologies seit 2011

  • Mein Erster (RAMPS 1.4, Selbstbau WolfStrap-Derivat mit Linearführungen, Wade Extruder und E3D lite6 Hotend)
  • Cub44 (Selbstbau Dual Wire Gantry Derivat mit Zahnriemen und Linearschienen, RADDS 1.5 und DUE, Custom Hotend - E3D like, Compact Bowden Extruder)
  • HexMax (sechseckiger Delta (eigenes Design) mit Druckraum 300mm Durchmesser und >=400mm Höhe, RADDS 1.5, 24V, Custom Hotend, Compact Bowden Extruder)
  • P3Steel Toolson MK2 - Keine Zeit zum selbst planen ;-)

Andere Projekte: FSR Board (ABL-Sensor-Platine inkl. Firmware) * ThirtyTwo (32Bit RepRap-Firmware)
Re: Höhe des Druckbett justieren
17. October 2015 13:21
Ich würde das gerne tun aber ich bin aktuell noch in Reha und nur bis Sonntag Abend zu Hause.
Ist ja eigentlich schnell umgebaut aber da ich heute schon den ganzen Tag gebastelt hab, werden die Blicke meiner Frau langsam bohrend.
Kannste mir ja trotzdem mal schicken aber versprechen kann ich nix.
Ab nächste Woche Freitag bin ich aber dauerhaft wieder hier. Endlich nach 6 Wochen.

Gruß
Andreas


Einen Sparkcube 1.1XL für größere Objekte, einen Trinus3D im Gehäuse und einen Tantillus R im Bau und einen Qidi Tech Q1 Pro im Zulauf.
Sparkcube: Komplett auf 24V - DDP 8mm + 1,5mm Carbonplatte - RADDS 1.5 + Erweiterungsplatine + RAPS128 - Nema 17/1,7A 0,9 Grad - ind. Sensor für Z-Probe (kein ABL) - FTS - Titan Booster Hotend - Sparklab Extruder - Firmware Repetier mit @ Glatzemanns G33 - Repetier Server pro - Simplify3D
Re: Höhe des Druckbett justieren
18. October 2015 08:17
Ich habe jetzt mal alles in ein aktuelles Abbild vom Repetier-GIT gepackt und in meinem Fork freigegeben. Funktioniert nun ganz gut und es sind nur noch ein paar Kleinigkeiten notwendig (hauptsächlich anständige Ausgaben im Display und im Log). Hier mal meine letzten beiden Protokolle:

13:49:32.897 : Z-probe:6.33 X:0.00 Y:30.00
13:49:51.624 : Z-probe:6.42 X:220.00 Y:30.00
13:50:10.286 : Z-probe:6.34 X:110.00 Y:210.00

13:50:29.030 : Z-probe:6.31 X:0.00 Y:30.00
13:50:47.725 : Z-probe:6.35 X:220.00 Y:30.00
13:51:06.337 : Z-probe:6.31 X:110.00 Y:210.00

13:51:24.987 : Z-probe:6.30 X:0.00 Y:30.00
13:51:43.644 : Z-probe:6.32 X:220.00 Y:30.00
13:52:02.241 : Z-probe:6.30 X:110.00 Y:210.00

13:52:20.854 : Z-probe:6.30 X:0.00 Y:30.00
13:52:39.503 : Z-probe:6.30 X:220.00 Y:30.00
13:52:58.082 : Z-probe:6.30 X:110.00 Y:210.00

13:53:16.670 : Z-probe:6.29 X:0.00 Y:30.00
13:53:35.316 : Z-probe:6.30 X:220.00 Y:30.00
13:53:53.891 : Z-probe:6.29 X:110.00 Y:210.00

13:54:12.487 : Z-probe:6.30 X:0.00 Y:30.00
13:54:31.141 : Z-probe:6.29 X:220.00 Y:30.00
13:54:49.717 : Z-probe:6.29 X:110.00 Y:210.00

13:55:08.305 : Z-probe:6.29 X:0.00 Y:30.00
13:55:26.946 : Z-probe:6.30 X:220.00 Y:30.00
13:55:45.526 : Z-probe:6.29 X:110.00 Y:210.00

13:56:04.114 : Z-probe:6.29 X:0.00 Y:30.00
13:56:22.755 : Z-probe:6.29 X:220.00 Y:30.00
13:56:41.331 : Z-probe:6.29 X:110.00 Y:210.00

14:02:33.795 : Z-probe:6.68 X:0.00 Y:30.00
14:02:52.841 : Z-probe:6.68 X:220.00 Y:30.00
14:03:11.814 : Z-probe:6.71 X:110.00 Y:210.00

14:03:30.849 : Z-probe:6.70 X:0.00 Y:30.00
14:03:49.891 : Z-probe:6.68 X:220.00 Y:30.00
14:04:08.869 : Z-probe:6.70 X:110.00 Y:210.00

14:04:27.907 : Z-probe:6.71 X:0.00 Y:30.00
14:04:46.974 : Z-probe:6.72 X:220.00 Y:30.00
14:05:05.972 : Z-probe:6.71 X:110.00 Y:210.00

14:05:24.991 : Z-probe:6.70 X:0.00 Y:30.00
14:05:44.057 : Z-probe:6.71 X:220.00 Y:30.00
14:06:03.051 : Z-probe:6.70 X:110.00 Y:210.00

14:06:22.069 : Z-probe:6.70 X:0.00 Y:30.00
14:06:41.124 : Z-probe:6.71 X:220.00 Y:30.00
14:07:00.113 : Z-probe:6.70 X:110.00 Y:210.00

Wer das testen möchte (wäre echt nett, denn bei gutem Feedback würde ich eine Aufnahme in die offizielle Repetier-Firmware per Pull-Request anstreben) kann dies ganz einfach tun. In meinem GIT-Repository findet ihr die Änderung. Aktivieren könnt ihr das Leveling ganz einfach über die configuratiuon.h. FEATURE_MOTORIZED_LEVELING muss einfach auf 1 gesetzt werden. Damit das dann funktioniert müsst ihr noch Z_PROBE aktiviert haben und FEATURE_TWO_ZSTEPPER und FEATURE_THREE_ZSTEPPER. Weiterhin dürft ihr natürlich keinen Delta-Printer haben und ihr müsst eure drei Z-Achsen-Motoren an einzelne Treiber angeschlossen haben.

Wenn etwas nicht konfiguriert wurde, dann sollten anständige Fehlermeldungen beim kompilieren kommen...

Ist das alles umgestellt, kompiliert und die Firmware auf den Arduino geladen, dann könnt ihr nach dem Homen mit G33 das Bett ausrichten. Im Log findet ihr dann die gleichen Ausgaben mit den Höhen wie ich sie hier gepostet habe bzw. wie sie auch beim ABL (G32) kommen.

Bitte beobachtet den Drucker während des Vorgangs. Ich habe das ausführlich getestet, übernehme aber noch keine Garantie dafür, daß dieses Feature fehlerfrei funktioniert. Ein Reset oder Notstop könnten also notwendig sein, falls etwas schief läuft.


--
Microsoft MVP in den Kategorien DirectX/XNA * Visual C++ * Visual Studio and Development Technologies seit 2011

  • Mein Erster (RAMPS 1.4, Selbstbau WolfStrap-Derivat mit Linearführungen, Wade Extruder und E3D lite6 Hotend)
  • Cub44 (Selbstbau Dual Wire Gantry Derivat mit Zahnriemen und Linearschienen, RADDS 1.5 und DUE, Custom Hotend - E3D like, Compact Bowden Extruder)
  • HexMax (sechseckiger Delta (eigenes Design) mit Druckraum 300mm Durchmesser und >=400mm Höhe, RADDS 1.5, 24V, Custom Hotend, Compact Bowden Extruder)
  • P3Steel Toolson MK2 - Keine Zeit zum selbst planen ;-)

Andere Projekte: FSR Board (ABL-Sensor-Platine inkl. Firmware) * ThirtyTwo (32Bit RepRap-Firmware)
Re: Höhe des Druckbett justieren
18. October 2015 11:17
thumbs up Schaut toll aus. Hat sich doch gelohnt. Ich teste das, wenn ich wieder zurück bin.

Klasse Arbeit.

Gruß
Andreas


Einen Sparkcube 1.1XL für größere Objekte, einen Trinus3D im Gehäuse und einen Tantillus R im Bau und einen Qidi Tech Q1 Pro im Zulauf.
Sparkcube: Komplett auf 24V - DDP 8mm + 1,5mm Carbonplatte - RADDS 1.5 + Erweiterungsplatine + RAPS128 - Nema 17/1,7A 0,9 Grad - ind. Sensor für Z-Probe (kein ABL) - FTS - Titan Booster Hotend - Sparklab Extruder - Firmware Repetier mit @ Glatzemanns G33 - Repetier Server pro - Simplify3D
Re: Höhe des Druckbett justieren
18. October 2015 11:38
Danke. Und dir gute Besserung. Gesundheit geht vor...


--
Microsoft MVP in den Kategorien DirectX/XNA * Visual C++ * Visual Studio and Development Technologies seit 2011

  • Mein Erster (RAMPS 1.4, Selbstbau WolfStrap-Derivat mit Linearführungen, Wade Extruder und E3D lite6 Hotend)
  • Cub44 (Selbstbau Dual Wire Gantry Derivat mit Zahnriemen und Linearschienen, RADDS 1.5 und DUE, Custom Hotend - E3D like, Compact Bowden Extruder)
  • HexMax (sechseckiger Delta (eigenes Design) mit Druckraum 300mm Durchmesser und >=400mm Höhe, RADDS 1.5, 24V, Custom Hotend, Compact Bowden Extruder)
  • P3Steel Toolson MK2 - Keine Zeit zum selbst planen ;-)

Andere Projekte: FSR Board (ABL-Sensor-Platine inkl. Firmware) * ThirtyTwo (32Bit RepRap-Firmware)
Re: Höhe des Druckbett justieren
18. October 2015 15:39
Hi, klasse Arbeit.
Muss dafür eigentlich ein Z-max Endstop verbaut sein?
Wo wird eingestellt, welcher Stepper für welche Achse zuständig ist?

Grüße,
Jürgen

1-mal bearbeitet. Zuletzt am 18.10.15 15:42.
Re: Höhe des Druckbett justieren
18. October 2015 15:43
Danke und Nein. Es sind die gleichen Voraussetzung wie für das softwaremäßige ABL. Es werden sogar größtenteils die gleichen Methoden verwendet, nur das hier halt keine Korrekturmatrix erzeugt wird, sondern das Bett nivelliert wird.


--
Microsoft MVP in den Kategorien DirectX/XNA * Visual C++ * Visual Studio and Development Technologies seit 2011

  • Mein Erster (RAMPS 1.4, Selbstbau WolfStrap-Derivat mit Linearführungen, Wade Extruder und E3D lite6 Hotend)
  • Cub44 (Selbstbau Dual Wire Gantry Derivat mit Zahnriemen und Linearschienen, RADDS 1.5 und DUE, Custom Hotend - E3D like, Compact Bowden Extruder)
  • HexMax (sechseckiger Delta (eigenes Design) mit Druckraum 300mm Durchmesser und >=400mm Höhe, RADDS 1.5, 24V, Custom Hotend, Compact Bowden Extruder)
  • P3Steel Toolson MK2 - Keine Zeit zum selbst planen ;-)

Andere Projekte: FSR Board (ABL-Sensor-Platine inkl. Firmware) * ThirtyTwo (32Bit RepRap-Firmware)
Re: Höhe des Druckbett justieren
18. October 2015 16:12
Quote
immergut
Wo wird eingestellt, welcher Stepper für welche Achse zuständig ist?

Zunächst muss du die drei Z-Achsen-Stepper jeweils an einen eigenen Treiber anschliessen. Es werden also keine mehr parallel geschaltet. Diese werden dann mit den folgenden Einstellungen in der configuration.h vom normalen Z-Stepper gespiegelt:

define FEATURE_TWO_ZSTEPPER 1
#define Z2_STEP_PIN   E1_STEP_PIN
#define Z2_DIR_PIN    E1_DIR_PIN
#define Z2_ENABLE_PIN E1_ENABLE_PIN

#define FEATURE_THREE_ZSTEPPER 1
#define Z3_STEP_PIN   E2_STEP_PIN
#define Z3_DIR_PIN    E2_DIR_PIN
#define Z3_ENABLE_PIN E2_ENABLE_PIN

Der zweite Stepper hängt in diesem Fall am Anschluss E1 und der dritte Stepper am Anschluss E2.

Dann kommt der neue Teil der Konfiguration, der für die Nivellierung zuständig ist. Hier mal der Ausschnitt aus der neuen configuration.h:

/* Experimental motorized bed leveling (G33 command) for printers with three individual motors for the z axis (print bed).
   You do need a working Z probe (FEATURE_Z_PROBE) and three individual steppers (FEATURE_TWO_ZSTEPPER and FEATURE_THREE_ZSTEPPER)
   for this feature to work.

   This feature does NOT work and is not necessary for delta printers as there is no motorized bed.
*/
#define FEATURE_MOTORIZED_LEVELING 1
#define MOTORIZED_LEVELING_REPETITIONS 5 // Repetitions of leveling for increased precision
/* Z1 motor driver is the reference point for motorized bed leveling. Z2_DRIVER and Z3_DRIVER are the other stepper drivers.
   The order of the steppers is important as it does have a effect on the levling precision. As the steppers are aligned as a
   triangle you should level them in the following order:

      3
     / \
    1---2
    
*/
#define Z2_DRIVER(var) StepperDriver var(ZAXIS_STEPS_PER_MM,MAX_FEEDRATE_Z/4)
#define Z3_DRIVER(var) StepperDriver var(ZAXIS_STEPS_PER_MM,MAX_FEEDRATE_Z/4)

Erster Define schaltet das Feature an. Zweiter Define legt fest, wie häufig wiederholt werden soll. Je nach Zuverlässigkeit der Hardware sollte hier ein Wert zwischen 1 und 5 eingetragen werden.

Die letzten beiden Zeilen legen dann fest, welche beiden Motoren zum justieren verwendet werden sollen. Referenz ist immer der erste Z-Achsen-Motor (der am Z-Treiber hängt). Der zweite Motor (siehe ASCII-Bild) hängt bei mir an Z3 bzw. E2 und der dritte Motor an Z2 bzw. E1.

Es wird dann - wenn man G33 ausführt - zunächst die Höhe gemessen (mittels des Z-Probe Sensors). Dann wird der zweite Motor auf die Höhe des ersten Motors gefahren und dann der dritte Motor auf die Höhe des ersten. Danach wird der Vorgang so häufig wiederholt, wie es in der Konfiguration angegeben wurde.


--
Microsoft MVP in den Kategorien DirectX/XNA * Visual C++ * Visual Studio and Development Technologies seit 2011

  • Mein Erster (RAMPS 1.4, Selbstbau WolfStrap-Derivat mit Linearführungen, Wade Extruder und E3D lite6 Hotend)
  • Cub44 (Selbstbau Dual Wire Gantry Derivat mit Zahnriemen und Linearschienen, RADDS 1.5 und DUE, Custom Hotend - E3D like, Compact Bowden Extruder)
  • HexMax (sechseckiger Delta (eigenes Design) mit Druckraum 300mm Durchmesser und >=400mm Höhe, RADDS 1.5, 24V, Custom Hotend, Compact Bowden Extruder)
  • P3Steel Toolson MK2 - Keine Zeit zum selbst planen ;-)

Andere Projekte: FSR Board (ABL-Sensor-Platine inkl. Firmware) * ThirtyTwo (32Bit RepRap-Firmware)
Re: Höhe des Druckbett justieren
18. October 2015 19:31
Hallo Glatzemann,
irgendwie raff ich das jetzt gerade nichtconfused smiley
Wo finde ich denn nun die neuen Dateien, wo ich auch das #define FEATURE_MOTORIZED_LEVELING 1 einstellen kann?
Weder in der Firmware über das Repetier_Tool, noch bei dir auf Github.
Oder es ist einfach schon zu spät und ich sehe nicht mehr richtig??
Würde es gerne mal testen.

Grüße,
Jürgen

EDIT: Habs gerade gefunden und werde es mal testen!!

1-mal bearbeitet. Zuletzt am 18.10.15 20:29.
Re: Höhe des Druckbett justieren
19. October 2015 07:48
Habe es jetzt mal getestet. Finde, es passt ganz gut
13:27:52.290 : Z-probe:6.76 X:10.00 Y:10.00
13:28:05.305 : Z-probe:6.76 X:340.00 Y:10.00
13:28:18.274 : Z-probe:6.79 X:205.00 Y:300.00
13:28:21.723 : X:205.00 Y:300.00 Z:0.000 E:0.0000
13:28:31.480 : Z-probe:6.76 X:10.00 Y:10.00
13:28:44.487 : Z-probe:6.75 X:340.00 Y:10.00
13:28:57.439 : Z-probe:6.77 X:205.00 Y:300.00
13:29:00.855 : X:205.00 Y:300.00 Z:0.000 E:0.0000
13:29:10.600 : Z-probe:6.77 X:10.00 Y:10.00
13:29:18.603 : Communication timeout - reset send buffer block
13:29:23.626 : Z-probe:6.76 X:340.00 Y:10.00
13:29:36.582 : Z-probe:6.77 X:205.00 Y:300.00
13:29:39.978 : X:205.00 Y:300.00 Z:0.000 E:0.0000
13:29:49.745 : Z-probe:6.77 X:10.00 Y:10.00
13:30:02.771 : Z-probe:6.77 X:340.00 Y:10.00
13:30:15.722 : Z-probe:6.77 X:205.00 Y:300.00
13:30:19.126 : X:205.00 Y:300.00 Z:0.000 E:0.0000
13:30:28.891 : Z-probe:6.77 X:10.00 Y:10.00
13:30:41.909 : Z-probe:6.78 X:340.00 Y:10.00
13:30:50.386 : Communication timeout - reset send buffer block
13:30:54.881 : Z-probe:6.77 X:205.00 Y:300.00
13:30:58.282 : X:205.00 Y:300.00 Z:0.000 E:0.0000
13:30:58.532 : Resend:763

Bekomme aber zwischendrin immer ein Connection timeout. Weiß nicht, ob das schlecht ist und wie das behoben werden kann.
Denke es sollte noch erwähnt werden, dass wenn es jemand ausprobieren möchte, auch noch die Dateien Repetier.h und Repetier.ino angepasst werden müssen.

Grüße,
Jürgen
Re: Höhe des Druckbett justieren
19. October 2015 08:04
Sehr schön und vielen Dank für's Testen... Hast du vielleicht auch mal versucht das Druckbett vorher absichtlich ein wenig schief zu machen? Vermutlich war das ja schon ganz gut ausgerichtet, dann hat die Automatik ja nicht viel zu tun...

Die Communication timeouts kommen nicht von meiner Änderung. Die hängen damit zusammen, daß es Übertragungsfehler auf der seriellen Schnittstelle gibt. Das kann z.B. an einem zu langen USB-Kabel oder einer ungünstigen Kabelführung liegen. Es kann aber auch einfach sein, daß du eine ungünstige Geschwindigkeit gewählt hast. Lt. Repetier-Dokumentation sollen 250000 Baud stabiler funktionieren als die Standardmäßigen 115000. Irgendwie seltsam... Es ist jedenfalls kein Problem, wenn das nur hin und wieder auftritt. Die fehlenden Daten werden nachgereicht.

Was musstest du denn in Repetier.h und Repetier.ino noch anpassen? Da sollte eigentlich alles stimmen und es sollten darin keine Änderungen notwendig sein.


--
Microsoft MVP in den Kategorien DirectX/XNA * Visual C++ * Visual Studio and Development Technologies seit 2011

  • Mein Erster (RAMPS 1.4, Selbstbau WolfStrap-Derivat mit Linearführungen, Wade Extruder und E3D lite6 Hotend)
  • Cub44 (Selbstbau Dual Wire Gantry Derivat mit Zahnriemen und Linearschienen, RADDS 1.5 und DUE, Custom Hotend - E3D like, Compact Bowden Extruder)
  • HexMax (sechseckiger Delta (eigenes Design) mit Druckraum 300mm Durchmesser und >=400mm Höhe, RADDS 1.5, 24V, Custom Hotend, Compact Bowden Extruder)
  • P3Steel Toolson MK2 - Keine Zeit zum selbst planen ;-)

Andere Projekte: FSR Board (ABL-Sensor-Platine inkl. Firmware) * ThirtyTwo (32Bit RepRap-Firmware)
Re: Höhe des Druckbett justieren
19. October 2015 09:02
Hallo Glatzemann,
hatte bei der ersten Messung das Bett sehr schief gestellt und festgestellt, dass das Bett nicht so gut ausgerichtet wurde. Habe aber die Messreihe nicht mehr hier. Müsste ich nochmal neu testen.
In der Repetier.ino und Repetier.h musste ich noch die Änderungen machen, die hier in deinem Github auch schon drin hast. Die waren bei mir über die Konfig mit dem Repetier-Tool noch nicht drin.

Zu den Timeout: Möchte meinen Dualwire Gantry über USB steuern. Dazu habe ich mir eine Neutrik USB-Einbaubuchse gekauft, die ich dann natürlich von beiden Seiten mit einem USB-Kabel anschließen muss. Beide Kabel haben einen Ferrit-Kern. Trotzdem kommt es immer mal wieder zu Abbrüchen. Weiß mir da leider keinen Rat mehr.

Grüße,
Jürgen
Re: Höhe des Druckbett justieren
19. October 2015 09:19
Quote
immergut
Hallo Glatzemann,
hatte bei der ersten Messung das Bett sehr schief gestellt und festgestellt, dass das Bett nicht so gut ausgerichtet wurde. Habe aber die Messreihe nicht mehr hier. Müsste ich nochmal neu testen.

Ok, ich werde das auch noch mal durchtesten. Ich habe eine Vermutung, woran das liegen könnte. Du musstest aber nicht per Hand nachstellen, oder?

Quote
immergut
In der Repetier.ino und Repetier.h musste ich noch die Änderungen machen, die hier in deinem Github auch schon drin hast. Die waren bei mir über die Konfig mit dem Repetier-Tool noch nicht drin.

Ah, ok. Das Konfig-Tool habe ich nicht verändert, kann ich auch gar nicht, denn der Code dazu ist soweit ich weis nicht öffentlich. Da muss dann Repetier selbst ran...

[/Quote]
Zu den Timeout: Möchte meinen Dualwire Gantry über USB steuern. Dazu habe ich mir eine Neutrik USB-Einbaubuchse gekauft, die ich dann natürlich von beiden Seiten mit einem USB-Kabel anschließen muss. Beide Kabel haben einen Ferrit-Kern. Trotzdem kommt es immer mal wieder zu Abbrüchen. Weiß mir da leider keinen Rat mehr.
[/quote]

Spiel mal mit der Baudrate rum. Eine andere Einflussmöglichkeit hat man ja leider nicht. Evtl. könntest du nochmal testen, was passiert, wenn du anstelle des Programming-Port den Native-Port verwendest.


--
Microsoft MVP in den Kategorien DirectX/XNA * Visual C++ * Visual Studio and Development Technologies seit 2011

  • Mein Erster (RAMPS 1.4, Selbstbau WolfStrap-Derivat mit Linearführungen, Wade Extruder und E3D lite6 Hotend)
  • Cub44 (Selbstbau Dual Wire Gantry Derivat mit Zahnriemen und Linearschienen, RADDS 1.5 und DUE, Custom Hotend - E3D like, Compact Bowden Extruder)
  • HexMax (sechseckiger Delta (eigenes Design) mit Druckraum 300mm Durchmesser und >=400mm Höhe, RADDS 1.5, 24V, Custom Hotend, Compact Bowden Extruder)
  • P3Steel Toolson MK2 - Keine Zeit zum selbst planen ;-)

Andere Projekte: FSR Board (ABL-Sensor-Platine inkl. Firmware) * ThirtyTwo (32Bit RepRap-Firmware)
Re: Höhe des Druckbett justieren
19. October 2015 09:43
Hmm, ich sollte meine Codebase wohl auch mal bald auf 0.92 umstellen... ich gurke noch mit 0.91 rum, und da ist doch einiges etwas umständlicher. eye rolling smiley
(Aber leider habe ich an sehr vielen Stellen sehr viele kleine Änderungen drin, wodurch das viel Arbeit wäre...).

Gerade die Ansteuerung der einzelnen Z-Motoren geht bei mir komplizierter und mit etwas Trickserei, da ich kein Drivers-Interface hab...


Scheinbar hab ich meine Routine (Mit Matrix-Berechnung und daraus optimale Step-Berechnung mit extrapolierten Spindelpositionen) wohl zu kompliziert gedacht, wenn man mit den reinen h-Werten schon so gute Werte erhält.
Konnte meine Routine aber aufgrund anderer Schwierigkeiten leider auch noch nicht testen.


Mein Code an der Stelle sieht jedenfalls so aus:
		GCode::executeFString(Com::tZProbeStartScript);
			//bool iterate = com->hasP() && com->P>0;
			Printer::coordinateOffset[X_AXIS] = Printer::coordinateOffset[Y_AXIS] = Printer::coordinateOffset[Z_AXIS] = 0;
			//Printer::setAutolevelActive(false); // iterate
			float h1,h2,h3,hc,oldFeedrate = Printer::feedrate;
			Printer::moveTo(EEPROM::zProbeX1(),EEPROM::zProbeY1(),IGNORE_COORDINATE,IGNORE_COORDINATE,EEPROM::zProbeXYSpeed());			//Move to first point
			h1 = Printer::runZProbe(true,false,Z_PROBE_REPETITIONS,false);																	//Test distance and save it as h1
			if(h1 < 0) break;																													
			Printer::moveTo(EEPROM::zProbeX2(),EEPROM::zProbeY2(),IGNORE_COORDINATE,IGNORE_COORDINATE,EEPROM::zProbeXYSpeed());			//Move to second point
			h2 = Printer::runZProbe(false,false);																							//Test distance and save it as h2
			if(h2 < 0) break;
			Printer::moveTo(EEPROM::zProbeX3(),EEPROM::zProbeY3(),IGNORE_COORDINATE,IGNORE_COORDINATE,EEPROM::zProbeXYSpeed());			//Move to third point
			h3 = Printer::runZProbe(false,true);																							//Test distance and save it as h3
			if(h3 < 0) break;
			Printer::buildTransformationMatrix(h1,h2,h3);																				//Calculate a Transformation Matrix based on those 3 values
			Printer::zMin = 0;
			
			//////////////////////////////////////////////////////////////////////////
			
			//create temporary variables
			float zDelta0,zDelta1,zDelta2,xTemp,yTemp;									
			long zSteps0,zSteps1,zSteps2;
			
			//calculate z distance deviation at the extrapolated stepper motor positions
			Printer::transformToPrinter(Z0_X,Z0_Y,0,xTemp,yTemp,zDelta0);				//Zn_X and Zn_Y describe the position of the stepper motor axis/spindle in cartesian coordinates
			Printer::transformToPrinter(Z1_X,Z1_Y,0,xTemp,yTemp,zDelta1);
			Printer::transformToPrinter(Z2_X,Z2_Y,0,xTemp,yTemp,zDelta2);
			
			//calculate how many steps the deviation is for each stepper. Rounding down with factor depending on whether it's a positive or negative move
			zSteps0 = static_cast(floor(zDelta0 * Printer::axisStepsPerMM[Z_AXIS] + (0.5 * zDelta0>0?1:-1)  ));					
			zSteps1 = static_cast(floor(zDelta1 * Printer::axisStepsPerMM[Z_AXIS] + (0.5 * zDelta1>0?1:-1)  ));
			zSteps2 = static_cast(floor(zDelta2 * Printer::axisStepsPerMM[Z_AXIS] + (0.5 * zDelta2>0?1:-1)  ));
			
			//calculate the distance in mm
			float z0_mm	= zSteps0 / Printer::axisStepsPerMM[Z_AXIS];
			float z1_mm	= zSteps1 / Printer::axisStepsPerMM[Z_AXIS];
			float z2_mm	= zSteps2 / Printer::axisStepsPerMM[Z_AXIS];
			
			//small safety control (probably not safe enough yet)
			#define MAX_Z_DEVIATION 4			
			if (abs(z0_mm) > MAX_Z_DEVIATION || abs(z1_mm) > MAX_Z_DEVIATION || abs(z2_mm) > MAX_Z_DEVIATION || (abs(z0_mm) + abs(z1_mm) + abs(z2_mm)) > MAX_Z_DEVIATION*2 )
			{
				Serial.println(PSTR("Printbed is too uneven!"));
				UI_STATUS_UPD_RAM(PSTR("Printbed is too uneven!"));
				break;
			}
			
			//GCode to actually move the steppers
			// Angepasst auf deinen Code mit den Driver-Interfaces, wäre das dann ungefähr so:

			#ifdef ZPROBE_1_BENDING_CORRECTION
					  z0_mm += ZPROBE_1_BENDING_CORRECTION;
			#endif
			#ifdef ZPROBE_2_BENDING_CORRECTION
					  z1_mm += ZPROBE_2_BENDING_CORRECTION;
			#endif
			#ifdef ZPROBE_3_BENDING_CORRECTION
					  z2_mm += ZPROBE_3_BENDING_CORRECTION;
			#endif
  
			Z2_DRIVER(z2Motor);
			Z3_DRIVER(z3Motor);
  
			z2Motor.initialize();
			z3Motor.initialize();
  
			// h1 is reference heights, h2 => motor 0, h3 => motor 1
			z1_mm -= z0_mm;
			z2Motor.setCurrentAs(0);
			z2Motor.gotoPosition(-z1_mm);

			z2_mm -= z0_mm;
			z3Motor.setCurrentAs(0);
			z3Motor.gotoPosition(-z2_mm);			

			/////////////// Levelling should now be complete
			
			//////////////////////////////////////////////////////////////////////////

			Printer::updateDerivedParameter();
			Printer::updateCurrentPosition(true);
			printCurrentPosition();

			Printer::feedrate = oldFeedrate;
In diesem Forum dürfen leider nur registrierte Teilnehmer schreiben.

Klicke hier, um Dich einzuloggen