Seite 1 von 4

Kanten Antasten

Verfasst: Mi 8. Jul 2020, 14:31
von mhier
Ich habe schon länger die Idee, dass man doch die Dehnungsmessstreifen auch dafür benutzen könnte, die X- und Y-Achsen vernünftig relativ zum Werkstück zu nullen. Für die Z-Achse gibt es den Fnd Z Origin Scan, der allerdings auch leidlich ungenau ist und mit den Erfahrungen, die wir mit dem Z-Offset-Scan vom Druckmodus gesamment haben, auch verbessert werden kann.

Die grundsätzliche Idee ist, einen Schaft mit exakt bekanntem Durchmesser (ich benutze einen umgedrehten abgebrochenen Fräser) einzuspannen und in einer Achse langsam an das Werkstück zu fahren, bis der Schaft das Werkstück berührt. Auf den Punkt muss noch der halbe Schaft-Durckmesser aufgerechnet werden, dann hat man die exakte Position der Werkstück-Kante. Wiederholt man das für die andere Achse, könnte man also z.B. den Nullpunkt des Koordinaten-Systems auf eine Ecke des Werkstücks legen.

Zusätzlich könnte man noch den Scan für die gleiche Achse an einer anderen Stelle (möglichst weit entfernt) wiederholen, um die Ausrichtung des Werkstücks zu messen. Idealerweise würde die Firmware dann das GCode-Koordinatensystem um den gemessenen Winkel rotieren. Damit erspart man sich dann das mühsame und immer mit Fehlern verbundene Ausrichten des Werkstücks parallel zur Achse - besonders wenn man von zwei (oder gar mehr) Seiten fräst, schlägt hier jeder Fehler auf die Genauigkeit des fertigen Teils durch.

Ich habe mal angefangen, einen entsprechenden neuen M-Code zu implementieren. Das Ganze funktioniert noch nicht richtig und liegt deshalb in einem Branch ("feature-auto-touch") in unserer Community-Version. Was schon geht, ist in einer Richtung (bisher nur X in positiver Richtung getestet) den Kontaktpunkt zu suchen. Ein paar Erkenntnisse habe ich dabei schon gewonnen:

Die physikalische Kraft ist bei gleicher Digit-Differenz erheblich höher als in Z-Richtung. Das ist logisch, weil die Dehnungsmesstreifen ja eigentlich falsch ausgerichtet sind für die Messung in X/Y. Ich vermute auch mal stark, dass es da signifikante Unterschiede zwischen X und Y gibt. Aber das wichtigste ist: es geht. Eine Differenz von 100 Digits erreiche ich schon, ohne eine allzu große Kraft ausüben zu müssen.

Die Differenz von 100 Digits lässt sich leider nur zuverlässig messen, wenn man mittelt. Die Routine, die wir für den Z-Offset-Scan beim Drucken verwenden, eignet sich wunderbar. Dadurch wir der Scan natürlich langsam - also wie bisher beim Z-Origin-Scan im Fräsmodus die ganze Achse vom Endanschlag durchfahren ist wohl eher nicht drin. Man wird wohl manuell den Schaft kurz vor die zu messende Kante stellen müssen und dann den Scan starten. Das ist für mich aber völlig akzeptabel und mache ich auch beim Z-Origin-Scan schon immer so.

Die Kraft bei 100 Digits oder auch bei 50 (geht auch noch) ist aber eben nicht vernachlässigbar. Würde man den so gefundenen Punkt einfach als Nullpunkt verwenden, hätte man schnell einen Fehler von mehreren 1/10 Millimetern. Meine Idee dafür ist: Wir messen zwei Punkte mit unterschiedlicher Kraft, z.B. bei 50 und 100 Digits. Theoretisch sollte die Kraft halbwegs linear mit der Strecke sein (-> Federkonstante). Mit einer einfachen linearen Extrapolation lässt sich dann also der wahre Kontaktpunkt ausrechnen.

Das klappt schon soweit, allerdings kann ich bislang noch nicht sagen, wie genau das ist. Ich werde als nächstes mal die Wiederholgenauigkeit bestimmen, aber das sagt natürlich noch nichts über einen konstanten Fehler. Den kann ich vermutlich am Besten bestimmen, wenn ich mit einem metallischen Werkstück und einem Durchgangsprüfer den Punkt bestimme, an dem gerade eine leitende Verbindung besteht. Die Methode verwende ich seit längerem beim Platinenfräsen, um den Z-Nullpunkt zu bestimmen (der spitze Frässtichel taucht beim Find Z Origin viel tiefer ein, als ich überhaupt fräsen möchte), das scheint sehr genau zu gehen.

Natürlich krankt das Ganze am Ende an der schlechten Genauigkeit unserer Zahnriemen. Dadurch wird die Extrapolation ungenau, denn die gefahrene Strecke ist leicht anders als gedacht. Da helfen dann wohl nur die Kugelumlaufspindeln ;-)

Re: Kanten Antasten

Verfasst: Mi 8. Jul 2020, 22:07
von mhier
So, ich habe die Genauigkeit nun ungefär gemessen. Ich habe den Algorithmus den Kontaktpunkt suchen lassen und habe dann von dort manuell in 0.01mm-Schritten die Achse verfahren, bis der Durchgangsprüfer nicht mehr (bzw. wieder) piepst. Ich musste dabei nie mehr als 0.1mm fahren. Der Kontaktpunkt mit dem Durchgangsprüfer ist auch nicht ganz exakt bestimmt. Es gibt da eine geringe Hysterese, d.h. die o.g. Methode dürfte den Fehler eher noch (leicht) übertreiben. Genauer als 1/10mm ist der Zahnriemenantrieb ohnehin nicht, von daher ist das m.E. ein ziemlich gutes Ergebnis.

Wie erwartet gibt es ziemlich große Unterschiede in X und Y. In Y ist die Genauigkeit noch mal um ca. einen Faktor 2 besser (also genauer als 1/20mm). In X wirkt die Kraft besonders ungünstig auf die Dehnungsmessstreifen. Deshalb fährt der Scan viele Schritte über den Kontaktpunkt hinaus. Nur durch die lineare Extrapolation lässt sich diese Genauigkeit dann erreichen. In Y wirkt die Kraft ziemlich direkt. Entsprechend sind die nun eingestellten 80 Digits Differenz nach wenigen (< 10) Microsteps erreicht.

Re: Kanten Antasten

Verfasst: Do 9. Jul 2020, 04:45
von nikibalboa
Hallo mhier,

Hört sich gut an, das würde das fräsen von double Layer Platinen auch erleichtern. Ich bin eigentlich mit der Genauigkeit zufrieden, trotz Zahnriemen.

Ich muss noch etwas drucken, aber würde mich dann gerne zum mit Testen anbieten.

Lg nikibalboa

Re: Kanten Antasten

Verfasst: Do 9. Jul 2020, 13:43
von mhier
Genau, für beidseitige Platinen werde ich das auch benutzen. Da habe ich mich bisher immer mit zwei Löchern beholfen, aber das ist eben ein Gefrickel und geht sicher auch nicht besonders genau. Dann muss man die Pads immer relativ groß machen, damit die Löcher ruhig ~0.2mm daneben sein können. Dann bleibt aber meist kaum Platz, um zwischen den Pins noch Leiterbahnen durchzuführen. Es geht irgendwie, aber es könnte besser und zuverlässiger klappen.

Gerade bei Platinen sehe ich da leider erhebliche Genauigkeitsprobleme. Vielleicht gibt es eine Serienstreuung in den Zahnriemen oder Zahnriemenrädern, und das betrifft mich zufällig gerade besonders stark. Ich kann Leiterbahnen von 0.2mm Breite (Standard bei KiCad) nicht zuverlässig verwenden, weil die in Wirklichkeit irgendwas zwischen 0 und 0.4mm breit wird. Bei 0 ist's dann hald blöd... ;-) Aber selbst wenn 0 eher selten vorkommt, möchte ich die Breite doch kontrollieren können und nicht so dem Zufall überlassen. Wenn die Leiterbahn nur noch halb so breit wird, ist der Widerstand auch doppelt so groß, das ist je nach Schaltung dann schon ein Problem...

Wäre supe, einen Tester zu haben! Noch wird es aber ein bisschen dauern, bis ich was Testbares habe. Ich schätze, nächste Woche kann ich dir mal ne Firmware-Version zum testen geben. Ich muss es ja vorher noch selbst testen, sonst bringt das ja nix ;-)

Re: Kanten Antasten

Verfasst: Mi 15. Jul 2020, 09:42
von mhier
So, ein bisschen funktioniert schon was, aber er verrechnet sich noch. Die Geometrie-Berechnungen sind nicht so ganz einfach. Der Koordinaten-Ursprung muss ja noch abhängig von der Drehung korrigiert werden, weil man die Kanten ja nicht am Ursprung (das wäre die Ecke) sondern ein bisschen davon entfernt antanstet. Um die beiden Kontaktpunkte muss ich das System dann drehen. Im Ergebnis steht er leider aktuell noch einige Millimeter daneben. Vermutlich irgendwo ein Vorzeichen-Fehler... :-D

Re: Kanten Antasten

Verfasst: Mi 15. Jul 2020, 17:57
von nikibalboa
Geometrische Berechnungen sind mir zu hoch :blink: hätte ich auch noch nicht wirklich gebraucht.
Na ich bin schon gespannt, leider hatte ich einen Düsen kriebirer vermutlich durch das LumberJake was meine drucke etwas verzögert.
Hoffe das droht meiner Beschichteten nicht auch :huh:

Lg nikibalboa

Re: Kanten Antasten

Verfasst: Do 16. Jul 2020, 22:57
von mhier
So jetzt gibt es eine erste Version zum Testen. Sie liegt im Branch feature-auto-touch auf unserem Github-Repo:

https://github.com/RF1000community/Repe ... auto-touch

Benutzt wird das folgendermaßen:

Es gibt einen neuen Befehl M3131. Der nimmt drei Paramter:

* X oder Y gibt an, in welcher Richtung gescannt werden soll. X1 scannt in positiver X-Richtung, X-1 in negativer X-Richtung. Y entsprechend.
* R gibt den Radius des Tastwerkzeuges an. Bei meinem abgebrochenen 3.125mm-Fräser also R1.56
* S gibt den Scan-Modus an. "S1" macht den Origin-Scan, "S2" den Winkel-Scan. "S2" darf nur verwendet werden, wenn per "S1" schon für beide Achsen der Origin gescannt wurde.

Man spannt also ein Rohteil auf, welches rechtwinklige, gerade Kanten hat. Die Ecke dieser beiden Kanten soll unser Origin werden. Wo die Ecke liegt (links vorne, rechts hinten etc.) ist egal. Nehmen wir mal z.B. an, die Ecke ist rechts vorne. Dann spannen wir einen glatten Schaft von bekanntem Durchmesser (eben zB. ein abgebrochener Fräser umgedreht) in den Dremel. Dann:

* An eine beliebige Position knapp vor die Kante fahren, die unsere X-Achse werden soll. Idealerweise möglichst nah am zukünftigen Origin. Abstand zur Kante besser nicht mehr als 1mm, auf keinen Fall darf der Schaft aber schon berühren.
* GCode: M3131 Y1 R1.56 S1
* Begründung: Y1: Wir fahren in positive Y-Richtung, denn der zukünftige Origin ist ja vorne und wir wollen den Y-Origin festlegen.
* Der Scan dauert eine Weile und hört einfach irgendwann damit auf, dass er wieder auf die Position zurückspringt, von der wir gestartet sind.
* Der Y-Origin ist damit grob gesetzt (ohne Berücksichtigung der Rotation des Rohteils).

* Jetzt in änlicher Weise mit der Y-Achse verfahren, also knapp rechts von unserem Rohteil positionieren.
* GCode: M3131 X-1 R1.56 S1
* Begründung: X-1: Wie fahren in negative X-Richtung, denn der zukünftige Origin ist ja rechts.
* Der X-Origin ist damit grob gesetzt.

* Zu guter Letzt fahren wir an einen Punkt an der neuen Y-Achse, der möglichst weit von der ersten Scan-Position entfernt ist. Wieder knapp rechts vom Rohteil natürlich.
* GCode: M3131 X-1 R1.56 S2
* S2: Wir messen nun den Winkel.
* Nach dem Scan wird der X- und Y-Origin neu berechnet unter Berücksichtigung der Drehung, und die Dreh-Transformation des G-Code-Systems eingeschaltet.

Jetzt können wir per G-Code z.B. nach X0 Y0 fahren, der Schaft sollte mittig über der vorderen rechten Ecke des Rohteils stehen. Fahren wir nun entlang einer der Achsen, sollte der Schaft immer exakt über der Kante bleiben, selbst wenn das Rohteil stark verdreht ist.

Achja: Der Z-Origin-Scan (M3130 bzw. auch im Menü) ist jetzt auch verbessert und sollte genauere Ergebnisse liefern!

Bekannte Einschränkungen und Verbesserungspotential:
* Alle Bewegungen müssen im G-Code-Koordinaten-System geschehen. Am Besten macht man das tatsächlich mit G-Code. Wenn man das unbedingt über das Menü machen will, muss man darauf achten, dass man nicht den Modus "Move (Offset)" verwendet, sondern z.B. "1 mm (GCode)" etc. Andernfalls macht man sich seinen gerade gemessenen Origin gleich wieder kaputt... Das ist aber genauso, wenn man den Origin anderweitig setzt (G92 oder Menü).
* Der Messpunkt für die Winkelmessung (mit S2) muss immer als letztes erfolgen. Ich glaube, es gibt eine Fehlermeldung, wenn man das falsch macht, aber das habe ich noch nicht getestet.
* Der Messpunkt für die Winkelmessung muss immer bei einem positiveren Wert der jeweiligen Achse erfolgen, also weiter hinten oder weiter rechts. Andernfalls wird das ganze System um 180 Grad gedreht. Das ist ein Bug und wird noch beseitigt.
* Man bekommt das Ende des Scans schlecht mit. Ich werde da mal ein Piepen einbauen.
* Während des Scans werden teils recht lange Mittelwertmessungen durchgeführt, während denen der Repetier-Server sich bei mir schon über Kommunikations-Timeouts beschwert. Das ist ebenfalls ein Bug und wird noch beseitigt.
* Der R-Parameter (Radius des Tools) muss aktuell bei allen drei Scans gleich sein. Das behebe ich evtl. aber noch, denn dann ließe sich darüber auch ein zusätzlicher Offset des Origins zur Kante des Rohteils definieren.
* Den einmal gemessenen Drehwinkel wird man aktuell nur durch eine erneute Messung oder einen Neustart los. Da fehlt noch ein entsprechender Befehl...
* Apropros Neustart: Der Origin wird (wie bisher auch) im EEPROM gespeichert und überlebt somit einen Neustart. Der Winkel allerdings geht dabei verloren. Ich halte eigentlich eher wenig davon, den Origin überhaupt im EEPROM zu speichern und würde das einfach rauswerfen. Im Grunde ist meine intuitive Erwartung, das ein Homing Origin und Drehung zurücksetzen sollte. Habt ihr da Meinungen zu? Homed ihr zwischendurch und braucht es, dass der Origin dann erhalten bleibt?
* Schön wäre auch noch ein schneller, grober Scan vor dem eigentlichen exakten Scan, so dass man aus größeren Abständen scannen kann. Das finde ich aber nicht so wahnsinnig wichtig.
* Auch schön wäre es, den Scan vom Menü aus zu starten, aber vielleicht ist das eher uneralistisch wegen der vielen Parameter. Hat für mich auch keine hohe Priorität.
* ... Sagt ihr es mir! :-)

Natürlich wie gewohnt bitte gut aufpassen, wenn ihr die Firmware ausprobiert. Es können Bugs an den unerwartesten Stellen lauern. ich habe z.B. den Druck-Modus noch gar nicht getestet. Bitte also unbedingt genau beobachten, was der Drucker so macht, immer mit dem Finger am Not-Aus bzw. Ausschalter, falls was kaputt gehen kann!

Viel Spaß beim Testen! :-)

Re: Kanten Antasten

Verfasst: So 19. Jul 2020, 06:21
von nikibalboa
Die Werte sollten das homen Überleben, dann muss man nach einen gebrochenen Fräser(PCB) nur noch Z vermessen.
Natürlich kann die Genauigkeit darunter leiden.

Ich werde demnächst den Dremel montieren um mit testen zu können.

Lg nikibalboa

Re: Kanten Antasten

Verfasst: Mo 20. Jul 2020, 20:09
von mhier
Irgendwie funktioniert das bei mir doch sehr unzuverlässig in X-Richtung. Das merkwürdige ist, dass es locker mal 10 oder 20 Mal hintereinander gut geht. Dann verändert sich irgendwas, und es geht gar nicht mehr. Dann kann man machen was man will, der Scan tut nur noch Unsinn, weil die Digits einfach mehr Zufallszahlen sind als dass sie Sinn ergeben. Dann plötzlich ändert sich dieses etwas wieder zurück und es scheint wieder stabil zu gehen.

So langsam verzweifele ich daran. Ich kann das so nicht debuggen, weil jeder vermeintliche Verbesserung einfach nur Zufall sein kann (und bisher immer war), umgekehrt genauso. Ich fürchte, ohne konstruktive Veränderung geht es nicht.

Kanten Antasten - X-Achse probematisch

Verfasst: Mo 20. Jul 2020, 21:11
von rf1k_mjh11
Hallo mhier,

Vielleicht liegt das Problem mit der X-Achse daran, dass beim Abtasten immer ein DMS nach oben, das andere nach unten gedrückt wird. Dabei heben sich die erhaltenen Signale teilweise auf (falls die Signale 'gemeinsam' verarbeitet werden). In der Y-Achse werden hingegen immer beide DMS in die gleiche Richtung gedrückt, was keinen negativen Einfluss auf das Signal hätte.

mjh11