Ich möchte mit einer kleinen CNC-Maschine (CNC-1610)
Platinen bohren. Für meine Anwendungen schreibe ich
ein kleines Programm, welches eine einfache Bedienung
ermöglichen soll.
So möchte ich, daß das Programm die Lage der Platine
auf dem Bohrtisch erfasst und eine "Schieflage"
(also einen Winkelfehler) automatisch korrigiert.
Das Programm habe ich soweit fertig und ich teste mit
auf Pappe geklebten Layout-Ausdrucken.
Aber, unabhängig davon, ob ich das Layout ausgerichtet
oder gezielt schief auf den Bohrtisch lege, es gehen
immer Bohrungen daneben. Die Ergebnisse sehen absolut
gleich aus, nur leider fehlerhaft...
Was mache ich falsch, wo ist mein Denkfehler?
Hier meine Arbeitsweise:
Test-Layout gedruckt, Excellon-Bohrdatei erzeugt
(Sprint-Layout),
Nullpunkt unten links bei Sicht auf die Lötseite.
Platine auf den CNC-Tisch fixieren.
Das Programm fordert auf, den Nullpunkt anzusteuern (Jogging).
Wenn NullPunkt manuell einjustiert, bestätigen.
Das Programm setzt jetzt seine internen Koordinaten
auf X=0,Y=0.
Das Programm fährt danach automatisch einen
Referenzpunkt an. Dazu sucht es die Bohrung, die am
weitesten vom Nullpunkt entfernt ist (diagonal zum
Nullpunkt).
Aufgrund des Einrichtungsfehlers (Schieflage)
ist eine Korrektur der Bohrposition erforderlich,
wieder manuelles Jogging.
Nach dieser Korrektur kennt das Programm auch
die wirklichen Koordinaten des Referenzpunktes.
Aus der Abweichung dieser Koordinaten zu denen der aus
der Bohrdatei soll für alle Bohrungen die tatsächliche
Position errechnet werden.
Winkelfehler berechnen:
Der Referenzpunkt liegt auf einer Kreisbahn um den Nullpunkt.
Radius zum Referenzpunkt Rref (Koordinaten Bohrdatei)
Radius zum Referenzpunkt Rcnc (wahre Position, CNC-Maschine)
Wenn kein Maßstabsfehler vorliegt sollte Rcnc=Rref sein.
Rref=sqrt(Xref*Xref+Yref*Yref)
Rcnc=sqrt(Xcnc*Xcnc+Ycnc*Ycnc)
ALPHAref=arcsin(Yref/Rref)
ALPHAcnc=arcsin(Ycnc/Rcnc)
ALPHAerr=ALPHAcnc-ALPHAref (der Winkelfehler durch Schieflage)
Maßstabsfehler berechnen:
(könnte entfallen, da vernachlässigbar...)
Der Maßstabsfehler ist unabhängig vom Winkelfehler.
Der Referenzpunkt Xcnc,Ycnc liegt idealerweise auf der
gleichen Kreisbahn wie Xref,Yref (wenn Rcnc=Rref).
D.h., unter dem gegebenen Winkelfehler und ohne Maßstabsfehler
müsste dieser Punkt auf
x=cos(ALPHAcnc)*Rref
y=sin(ALPHAcnc)*Rref
liegen. Die Abweichung zu den tatsächlichen Koordinaten,
gemessen mit der CNC-Maschine (Xcnc, Ycnc), ergeben die
Verzerrungen für
Xscale=Xcnc/x
Yscale=Ycnc/y
Damit sollten die Korrekturwerte für alle Bohrungen
bekannt sein (Xdat,Ydat aus der Bohrdatei):
Xbohr = (Xdat*cos(ALPHAerr) - Ydat*sin(ALPHAerr)) * Xscale
Ybohr = (Xdat*sin(ALPHAerr) + Ydat*cos(ALPHAerr)) * Yscale
Ein Hinweis zum Foto (gebohrte Pappe):
Der REF-Punkt oben rechts ist präzise getroffen, der
weiße Punkt links im Pad ist ein Papierfussel.
Ebenso ist der Null-Pad genau gebohrt. Es sieht so aus,
als würde ein Winkelfehler rechts-drehend die Bohrungen
verschieben.
Danke für's mitdenken!
Boor
Ich schätze die maschine ist schlichtweg nicht rechtwinklig. darauf
beruht aber die positionierung und das kalibrierst du nicht raus.
versuch mal mit 3 punkten zu referenzieren. Dann ist nicht nur position
und drehwinkel, sondern auch paralellogrammförmiger versatz
rausrechenbar.
pegel schrieb:> Dir ist aber schon klar das ein Laserdrucker das Papier ganz schön> stresst und möglicherweise auch verzerrt?
Nein, das ist ihm nicht klar und mir auch nicht. Ich habe hier einen
"Brother HL2030", der stresst und verzerrt NIEMANDEN -weder mich noch
das Papier.
Ich habe das jetzt nicht im Einzelnen nachvollzogen, möchte aber eine
Beobachtung, eine Vermutung und einen Ratschlag zum Besten geben.
Die Bohrungen scheinen entlang der Linie zwischen Nullpunkt unten links
und Referenzpunkt oben rechts recht genau das im Layout ausgelassene
Loch zu treffen. D.h. die Winkelkorrektur ist für Punkte auf oder nahe
dieser Linie recht gut. Das aber legt die Vermutung nahe, dass bei dem
Berechnungsschema etwas schiefgelaufen ist.
Die nächst genauere Vermutung wäre, dass in dem Schema irgendwo ein
unzulässiger Übergang zwischen absoluten (Maschinenkoordinaten) und
Layoutkoordinaten vorkommt bzw. der Offset dazwischen unberücksichtigt
blieb. (Wenn ich es nicht übersehen habe, dann fehlt die
Berücksichtigung des Offsets eigentlich).
Denn eine einfache Drehung kann den Fehler nicht korrigieren. Falls man
das Layout um irgendeinen Punkt dreht, mögen die Löcher in einiger
Entfernung von der oben erwähnten Linie zwar richtig getroffen werden,
aber die Punkte in der Nähe der Linie nicht mehr. Was wiederum darauf
hindeutet, dass der Mittelpunkt der Drehung irgendwann gewechselt wurde.
Ich rate Dir das Verfahren einmal graphisch zu skizzieren, damit man das
nachvollziehen kann. Das könntest Du, falls Du dabei nicht selbst auf
den Unterschied kommst, auch hier posten.
PegelMesser schrieb:> "Brother HL2030", der stresst und verzerrt NIEMANDEN
Na dann ist es ja gut.
Um das zu prüfen kannst du das Layout auch mehrmals auf eine Seite
drucken, ausschneiden und übereinander legen.
Bei meinem alten Laserdrucker war ich teilweise echt erstaunt.
@ pegel
richtig, bei meinem altem Laserdrucker muß ich den
Faktor 1.01 für die X-Richtung einstellen.
Diese Vorlage ist jedoch mit einem HP-Tintendrucker
erstellt worden, und da habe ich keine Verzerrungen
ausmessen können.
Ich glaube eher an ein programmiertechnisches
Matheproblem bei mir...
@ nachtmix
Das war auch bereits mein Gedanke. Die Koordinaten
speichere ich als integer mit 1um Auflösung.
Einen Integer-Überlauf gibt es nicht.
Die Trigonometrie mache ich mit real, hatte aber
auch schon extended probiert (Lazarus).
Immer das selbe Ergebnis...
@ frickelfreak
Danke für diese Info! Darüber habe ich noch garnicht
nachgedacht. Möglich ist es schon, war ja ein Bausatz.
Aber müsste die Achse nicht klemmen, wenn sie schief
läuft? Es passt aber zur bleibenden Winkelabweichung,
wie auf dem Foto sichtbar.
@ Theor
Der Offset wird berücksichtigt. Bei der Nullung werden
die Programm-Koordinaten auf 0 gesetzt und die CNC mit
GCode G92. Das klappt auch.
Gruß
Boor
Wenn Du Trapez-Verzerrungen mit berücksichtigen willst, geht das extrem
einfach mit Lagrange-Polynomen erster Ordnung. Als Parameter entstehen
dann einfach die vier Eckpunkte des Trapezes.
Berücksichtigt werden dann: Skalierung, Drehung, Trapezverzerrung in
beide Richtungen.
Dafür mußt Du vier Punkte, deren Lage bekannt ist, abtasten. Tastest Du
mehr als vier Punkte ab, kannst Du das z.B. mit der gaußschen
Fehlerquadratmethode berücksichtigen, um die Genauigkeit zu steigern.
Die Programmierung ist recht geradeheraus, wenn man mit float arbeiten
kann. Ich hatte das damals mal als Matlab-Skript gemacht. Gescheitert
ist es bei mir dann daran, dass angetasteten Punkte von Hand von der
CNC-Steuerung ins Matlab-Programm übernommen werden mußten, während die
Leiterplattenhersteller plötzlich immer billiger wurden, daß die Lust am
Weiterentwickeln vergangen ist.
Bei begrenzter Genauigkeit wäre dann eine Affine Abbildung im 4D Mittel
der Wahl (bei Wikipedia unter "Householder Transformation" zu finden).
Die Implemtierung ist auch einfach, aber der theoretische Unterbau
gewöhnungsbedürftig.
Du kannst neben den Null- und Refpunkt Koordinaten die größten Ausreißer
mal in der Originalen und Berechneten Form in ein CAD eintragen und
drehen.
Z.B.: LibreCAD
Dann sieht man, ob es Hard oder Soft Probleme gibt.
Sri-Denkfehler: Bei 2D bleibt von der Householder-Transformation nur
eine affine Abbildung im 3D-Raum übrig. Macht sie aber nicht weniger
gewöhnungsbedürftig. :-)
Boor schrieb:
[...]
> @ Theor> Der Offset wird berücksichtigt. Bei der Nullung werden> die Programm-Koordinaten auf 0 gesetzt und die CNC mit> GCode G92. Das klappt auch.>> Gruß> Boor
Und was ist mit dem Offset des Nullpunktes auf der Platine? Der wird ja
nicht in Platinenkoordinaten genau bei Null, Null liegen, oder? In
irgendeiner Weise müsste die Differenz in Platinenkoordinaten zwischen
der Lage des Nullpunktes und den jeweiligen anderen Bohrungen in der
Berechnung vorkommen, meine ich.
Es bleibt insgesamt die Frage ob das Verfahren korrekt ist. Um diese
Frage beantworten zu können, wäre eine genaue Beschreibung mit Skizze
nützlich. Es fehlen Informationen und die verbale Darstellung muss
(zumindest, damit ich selbst sie leichter nachvollziehen kann) erst in
eine visuelle Vorstellung umgewandelt werden.
Vielen Dank für die große Unterstützung!
Da ich bei meiner Programmierung keinen Fehler entdeckt habe,
halte ich die Mechanik als Ursache für möglich.
Nun habe ich bei dem Layout (s. oben) zuerst für eine
rechtwinklige Ausrichtung gesorgt, indem ich vom Nullpunkt
aus die auf gleicher Höhe liegende rechte Bohrung anfahre
und beide Punkte auf eine X-Linie bringe.
Dann vom Nullpunkt in Y-Richtung nach oben zur Eck-Bohrung,
der Bohrer steht mittig! So ein deutlicher Versatz wie auf
dem Foto ist nicht vorhanden.
Ich glaube, die Tendenz des Fehlers ist deutlich sichtbar.
Im oberen linken Viertel sind große Verschiebungen nach rechts,
im unteren rechten Viertel sind es große Verschiebungen nach
links. Bei der Leiste rechts kann man das Wegwandern erkennen.
@ Theor
Doch, die Bohrung unten links ist der Platinen-Nullpunkt.
D.h., die Koordinaten aller Bohrungen in der Excellon-Datei
beziehen sich darauf. Der Nullpunkt ist frei wählbar im
Layoutprogramm und ich habe ihn auf diese Bohrung gesetzt
um die CNC besser justieren zu können - hätte aber auch
eine andere Referenzmarke wählen können.
Gruß
Boor
Schon mal getestet, wie genau deine (Arcus-)Winkelfunktionen sind? Der
von dir genutzte arcsin sollte bei Ref unten rechts die höchste und oben
links die schlechteste Genauigkeit haben.
Du versuchst, mit Hilfe von zwei Eingabewerten (Xcnc und Ycnc) drei
Abbildungsparameter (ALPHAerr, Xscale und Yscale) zu bestimmen, d.h. das
Ergebnis ist unbestimmt. Wenn deine Rechnung dennoch ein eindeutiges
Ergebnis liefert, kann das nur bedeuten, dass sie fehlerhaft ist.
Du braucht also einen weiteren Referenzpunkt, um die gesuchten Parameter
zu bestimmen. Da du dann vier Eingabewerte hast, kannst du auch gleich
noch den Scherungsparameter (Parallelogrammverszerrung) bestimmen.
Alle vier Parameter zusammen beschreiben eine affine Abbildung, die sich
auch ohne trigonemtrische Funktionen als Multiplikation mit einer
2×2-Matrix darstellen lässt:
(xd,yd) ist dabei ein Punkt im Koordinatensystem deiner Bohrdatei,
(xb,yb) der enstrpechende Punkt im Koordinatensystem deiner CNC-
Bohrmaschine und t11, t12, t21 und t22 die Parameter der affinen
Abbildung.
Du legst also wie gehabt den Nullpunkt fest und vermisst zusätzlich zwei
Referenzpunkte (x1d,y1d) und (x2d,y2d). Die gemessenen Bohrkoordinaten
seien (x1b,y1b) und (x2b,y2b).
Mit den folgenden Gleichungen berechnest du die Abbildungsparameter:
1
det = y1d·x2d - x1d·y2d
2
t11 = (y1d·x2b - x1b·y2d) / det
3
t12 = (x1b·x2d - x1d·x2b) / det
4
t21 = (y1d·y2b - y1b·y2d) / det
5
t22 = (y1b·x2d - x1d·y2b) / det
Nun kannst du alle weiteren Punkte (xd,yd) folgendermaßen in das
Bohrkoordinatensystem transformieren:
1
xb = t11·xd + t12·yd
2
yb = t21·xd + t22·yd
Das ist alles. Und man braucht nicht einmal Trigonometrie dafür :)
Edit:
Ich sehe gerade, dass bei deiner Rechnung immer Xscale=Yscale ist und
damit aus den drei Parametern zwei werden, so dass das Ergebnis
eindeutig bestimmt ist. Ansonsten scheint deine Rechnung zu stimmen.
Vielleicht hat dein Laserdrucker ja tatsächlich ein leicht von 1
abweichendes x/y-Verhältnis. Dieses wird durch deine Rechnung durch eine
Rotation kompensiert, weswegen die vier äußeren Bohrlöcher in deinem
Foto ein Rechteck bilden, das zwar das gewünschte Seitenverhältnis hat,
aber leicht verdreht ist.
schau dir mal opencv an...
mit der library kannst du eigentlich recht einfach Features auf einem
Bild erkennen (z.B. den Platinenrand) und eine transformationsmatrix zu
einer referenz erstellen.
Wenn du nur Rechtecke erkennen willst geht das recht einfach wenn du
bilder mit gutem kontrast hast- prinzipiell könntest du aber sogar die
PADs erkennen lassen.
Sprich, du gibst die Bohrdaten rein und bekommst eine
transformationsmatrix auf die erkannten pads am Bild vom PCB.
Die nicht-Rechtwinkeligkeit der Maschine müsste sich mit etwas
Hirnschmalz auch rausrechnen lassen... (also Soll-Ist
transformationsmatrix errechnen).
Hab sowas (also definierte features erkennen, perspektive rausrechen und
entzerren) schon mal gemacht... ist nicht an einem wochenende erledigt,
aber durchaus machbar.
73
Yalu X. schrieb:> die sich> auch ohne trigonemtrische Funktionen als Multiplikation mit einer> 2×2-Matrix darstellen lässt:
Stimmt nicht ganz. Auf diese Weise kannst Du die Nullpunktverschiebung
nicht darstellen. Mit Nullpunktverschiebung sieht es so aus:
Danke Yalu
für die ausführliche Beschreibung!
Ich muß mir das ganze jetzt erst durch den Kopf gehen lassen...
Die Korrektur des Maßstabfehlers hatte ich mir wohl zu
einfach vorgestellt. Wenn der Radius Rcnc vom Nullpunkt zum
CNC-Referenzpunkt 10mm länger ist als der anhand der
Bohrkoordinaten erwartete Radius Rref und der Winkel 45°
beträgt, hatte ich für X und Y jeweils einen Fehler von 7,07mm
erwartet. Da das ganze doch etwas komplizierter wird und der
Skalierungsfehler keine große Rolle spielt, kann ich auch
darauf verzichten. Bei zu großen Fehlern würde eine VG96-Leiste
auch nicht mehr passen, also die Vorlage muß schon stimmen.
Aber selbst wenn ich die Skalierungsfaktoren fest auf 1 setze
habe ich immer noch dieses herauswandern der Bohrungen.
@ Hans
Ja, das wäre das Optimale! Aber für diese kleine CNC wohl etwas
zu aufwändig? Ich werde mir das mal anschauen!
Hätte mir bisher nur eine Kamera als "Sehhilfe" zum Positionieren
vorgestellt.
Danke für die Information!
Boor
PegelMesser schrieb:> Nein, das ist ihm nicht klar und mir auch nicht.
Schon das Bild der Belichtungsvorlage zeigt massive Verzerrungen.
Soll er halt mal ein Millimeterpapier drüberlegen und vergleichen.
Oder einmal landscape und ein mal portrait ausdrucken und
übereinanderlegen
Walter T. schrieb:> Yalu X. schrieb:>> die sich>> auch ohne trigonemtrische Funktionen als Multiplikation mit einer>> 2×2-Matrix darstellen lässt:>> Stimmt nicht ganz. Auf diese Weise kannst Du die Nullpunktverschiebung> nicht darstellen. Mit Nullpunktverschiebung sieht es so aus:
Ich habe den TE so verstanden, dass der Punkt, der im Bild mit "NULL"
bezeichnet ist, in der Datei bereits die Koordinaten (0,0) hat bzw. der
Offset bereits vor Beginn der von ihm beschriebenen Berechnung von allen
Punkten subtrahiert wird. Auf der Maschine wird der entsprechende
Nullpunkt durch das erste manuelle Verfahren gesetzt, so dass auch hier
nichts korrigiert werden muss. Man sieht in seinem Bild ja auch keinen
Offsetfehler, sondern nur eine Kombination aus Rotation und Skalierung.
Solle ich falsch liegen, kann man den Offset aber leicht in der von dir
beschriebenen Weise berücksichtigen. Man muss dann nur von allen Punkten
erst einmal die Koordinaten des gewählten Nullpunkts subtrahieren.
Danach geht es weiter wie in meinem obigen Beitrag.
Hallo MaWin,
die Verzerrungen stammen von meiner Kamera!
Ich belichte meine Platinen mit Laserdruck
auf transparentem Zeichenpapier, bohre (bisher)
von Hand und bin glücklich damit...
Nein, die Vorlage ist OK und mit der
Qualität meiner Platinen bin ich auch sehr
zufrieden. Ist aber nur für Hobby-Bastelei.
Gruß
Boor
@ Yalu
Einen Skalierungsfehler sehe ich nicht.
Der Null-Punkt und der diagonale Referenzpunkt
werden gut getroffen. Es läuft an einer schrägen
Linie entlang heraus, Trapezfehler passt hier
ganz gut zur Beschreibung.
Also doch etwas an der Mechanik, wie frickelfreak
schon schrieb.
Oder liege ich falsch?
Gruß
Boor
Boor schrieb:> Einen Skalierungsfehler sehe ich nicht.
Für mich sieht das ein wenig so aus wie im angehängten Bild:
Die beiden Vierecke sind perfekt rechtwinklig und haben exakt die
gleiche Diagonale, sie unterscheiden sich aber etwas in ihrem Längen-/
Breitenverhältnis. Da die beiden Rechtecke einen gemeinsamen linken
unteren (Nullpunk) und rechten oberen Eckpunkt (Referenzpunkt) haben
müssen, bleibt dem roten Rechteck nichts anderes übrig, als sich ein
wenig zu drehen.
Wenn du das Layout einmal auf dem Laserdrucker ausdruckst und einmal
ohne jegliche Umrechnungen auf der CNC-Maschine in ein Stück Pappe
bohrst, solltest du theoretisch beides manuell zur Deckung bringen
können. D.h. du kannst die Pappe so auf den Ausdruck legen, dass du
durch die Bohrlöcher der Pappe die Bohrmarkierungen auf dem Ausdruck
sehen kannst.
Wenn dies der Fall ist, dann wissen wir, das eine Anpassung der
Bohrkoordinaten allein durch eine Verschiebung und eine Rotation
möglich ist. Dann solltest du mit deiner Berechnung ohne den
Skalierungsfaktor zum Ziel kommen.
Wenn nicht, musst du nachschauen, worin sich die beiden durch die vier
äußeren Bohrlöcher gebildeten Rechtecke unterscheiden. Haben sie
tatsächlich die gleiche Länge und Breite und sind sie wirklich exakt
rechtwinklig?
Boor schrieb:> Damit sollten die Korrekturwerte für alle Bohrungen> bekannt sein (Xdat,Ydat aus der Bohrdatei):>> Xbohr = (Xdat*cos(ALPHAerr) - Ydat*sin(ALPHAerr)) * Xscale> Ybohr = (Xdat*sin(ALPHAerr) + Ydat*cos(ALPHAerr)) * Yscale
kommt mir komisch vor. hast du da mal eine Skizze dazu gemacht?
Ich würde die Daten in Polarkoordinaten umwandeln, drehen und skalieren
und wieder zurück wandeln.
Ist einfacher zu durchschauen und weniger fehleranfällig
eine unterschiedliche Skalierung in x und y Richtung geht allerdings
nicht.
Roland L. schrieb:>> Xbohr = (Xdat*cos(ALPHAerr) - Ydat*sin(ALPHAerr)) * Xscale>> Ybohr = (Xdat*sin(ALPHAerr) + Ydat*cos(ALPHAerr)) * Yscale>> kommt mir komisch vor. hast du da mal eine Skizze dazu gemacht?
Das ist eine ganz gewöhnliche Multiplikation mit einer Rotationsmatrix.
https://de.wikipedia.org/wiki/Drehmatrix#Drehmatrix_der_Ebene_%7F'%22%60UNIQ--postMath-00000003-QINU%60%22'%7F
Sehr viel direkter kann man eine Rotation in kartesischen Koordinaten
nicht formulieren.
Roland L. schrieb:> Ich würde die Daten in Polarkoordinaten umwandeln, drehen und skalieren> und wieder zurück wandeln.> Ist einfacher zu durchschauen und weniger fehleranfällig
Für die Umwandlung in Polarkoordinaten und zurück brauchst vier statt
zwei Formeln, was doppelt so fehleranfällig ist. Die eigentliche
Rotation (also die fünfte Formel) ist dann zugegebenermaßen sehr
einfach :)
Roland L. schrieb:>> Xbohr = (Xdat*cos(ALPHAerr) - Ydat*sin(ALPHAerr)) * Xscale>> Ybohr = (Xdat*sin(ALPHAerr) + Ydat*cos(ALPHAerr)) * Yscale
Hier wird übrigens erst gedreht, dann in X- und Y-Richtung skaliert. Das
erzeugt zwangsweise eine Winkeländerung, wenn Xscale und Yscale
unterschiedlich sind.
Xdat *= Xscale
Ydat *= Yscale
Xbohr = (Xdat*cos(ALPHAerr) - Ydat*sin(ALPHAerr))
Ybohr = (Xdat*sin(ALPHAerr) + Ydat*cos(ALPHAerr))
So herum wird erst skaliert, dann gedreht. Die Abbildung bleibt
winkeltreu.
Hallo zusammen,
das hat mir jetzt keine Ruhe gelassen, dass das so umständlich mit
Rotationsmatrizen und Nullpunktverschiebung gemacht wird. Also habe ich
-sozusagen als Fingerübung vor dem Einschlafen- mal direkt die
Transformationsparameter angenähert, also die Fehlerquadratmethode auf
die Transformierte von (x/y) angewendet und nach den
Transformationsparametern aufgelöst.
In Matlab implementiert sieht das dann wie auf dem Bild aus.
Das hat den netten Vorteil, dass man
1. durch mehrere Stützpunkte die Genauigkeit steigern kann und
2. man nicht lange suchen muss, in welcher Reihenfolge man die
Operationen durchführt.
3. ist die Implementierung auch geradeheraus.
Ganz ohne Nachteile ist es nicht: Wenn die gemessenen Punkte zu dicht
beieinander liegen, kommt man um doppelte Genauigkeit nicht mehr herum,
ansonsten ist die Jacobimatrix singulär. Aber das sollte ja selbst auf
einem kleinen Mikrocontroller kein Problem sein, eine niedliche
3x3-Matrix in doppelter Genauigkeit (zweimal) zu lösen.
Viele Grüße
W.T.
Hallo und vielen Dank nochmal für die tolle Mitarbeit!
Um zwischen Software- und Hardware-(Mechanik)-Problemen
unterscheiden zu können, habe ich, wie vorgeschlagen,
die Bohrungen auf Millimeterpapier durchgeführt.
Das Papier zuvor an der X-Achse ausgerichtet und mehrfach
vom NullPunkt zu X+100mm verfahren. Dabei zeigte sich, daß
statt 100mm nur 99mm erreicht wurden. Es gibt aber keine
Fehler die sich aufsummieren.
Die Y-Achse habe ich vom Nullpunkt nach Y+80mm verfahren,
die X-Position blieb dabei erhalten (kein Winkelfehler)
und die Abweichung war etwa -1/4mm.
Beim anschliessenden Bohren mit den Kordinaten aus der
Bohrdatei habe ich jegliche "Korrektur" ausgeschaltet,
die GCode-Befehle werden zudem in einem Textfenster mit-
geloggt. Wie man auf den Bild erkennen kann, sind die
Bohrungen soweit OK. Die Drehung, wie Yalu sie entdeckt
und grafisch dargestellt hat, ist nicht vorhanden.
Damit ist es klar ein Softwarefehler in meiner Koordinaten-
umrechnung.
Dennoch sind mir einige kleine Fehler der CNC aufgefallen,
dazu habe ich einige Bohrungen im Bild nummeriert.
Die Nummerierung ist die Reihenfolge der Bohrungen.
1: X=55.88 Y= 0.00 Die erste Bohrung.
6: X=40.64 Y= 5.08 Passt zur Reihe darüber.
76: X=40.64 Y= 2.54 Weicht von 6 ab, obwohl gleiches X !
59: X=55.88 Y=43.18
114: X= 0.00 Y=43.18
119: X= 0.00 Y= 0.00 Der Nullpunkt des Koordinatensystems.
Die Bohrungen 6 und 76 liegen nicht auf einer Linie, die
Reihe ging von 6 aufwärts und der darunterliegende Punkt 76
wurde erst später angefahren. Dieses ist auch an weiteren
Stellen erkennbar. Es kann doch nur ein Spiel der Achse
sein, obwohl ich es nicht spüren kann. Die Achsen haben
eine Spindelmutter mit Anti-Backlash Feder. Ich werde die
Mechanik nochmal neu zusammensetzen. Dieses Problem gehört
auch in eine andere Rubrik des Forums...
Bleibt die Programmierung der Winkelkorrektur, über die
ich noch einmal intensiv nachdenken muß.
Danke an hardyf für den Link. Das Programm sieht wirklich
gut aus! Leider ist der Quellcode nicht dabei.
Alles Gute!
Boor
@ Boor
Es wäre, meiner Ansicht nach, sinnvoll, dass von Yalu vorgeschlagene
Verfahren,
> ...ohne jegliche Umrechnungen auf der CNC-Maschine in ein Stück Pappe
bohrst ...
nicht mit einem realen Layout durchzuführen, sondern mit einem Raster
von Punkten das sich über die gesamte von der CNC ansteuerbaren Fläche
erstreckt.
Zum einen könnte man, beim Vergleich, auf dem Layout Länge und Richtung
der Abweichung markieren und hätte einen systematischen Überblick.
Zum anderen sind Punkte in Randlage, wegen der numerisch grossen
Koordinaten-Werte resp. ihrer Differenzen, gut für eine nachfolgenden
Einsatz in einer Fehlerkorrektur. (Man könnte den Bereich sogar noch mit
einem Pantographen erweitern).
Das ist nichts Neues, aber ich wollte es mal erwähnen. Ich hoffe es ist
hilfreich.
Danke Theor,
ich habe zuerst einmal die Mechanik neu zusammengebaut.
Das Spiel der Achsen ist jetzt raus. Testpunkte auf
Millimeterpapier im Abstand von X=100mm und Y=80mm
wurden exakt angefahren, reproduzierbar.
Durch das Spiel wurden auch die Referenzpunkte falsch
ermittelt, was sich auf die weiteren Berechnungen
ausgewirkt hat. Ich muß jetzt noch testen, wie sich
die Softwarekorrektur bei schiefliegenden Vorlagen
auswirkt. Dazu werde ich die von Dir vorgeschlagene
Methode anwenden.
Mit freundlichem Gruß
Boor