Fräsmaschinensteuerung (Rubrik "Lebensberatung")
Verfasst: Mo 12. Aug 2019, 18:35
Hallo miteinander,
ich hab bisher in diesem Forum bisher nur mitgelesen... bis jetzt.
Nun hat es mich (sonst so dokumentations und schreibfaul) doch gepackt hier mal nen Thread zu eröffnen.
Das Unterforum hab ich bewusst gewählt da es mich doch schon beschäftigt wie es mit meinem Projekt weitergehen soll.
Vor so 14 Jahren hab ich von einem Freund eine kleine Fräsmaschine aus dem 3D Drucker geschenkt bekommen. Die ist/war komplett mit Endstufe und Taster zum Referenzieren aufgebaut. Er hat das Ding jedoch nie richtig zum laufen gebracht und es sollte mal als Platinenfräse herhalten. Naja zu dem Zeitpunkt entwickelte ich an ner Android Rom (für damals ein Samsung Galaxy S Plus..noch Dual Core) und hatte weder Lust noch Zeit mich damit zu beschäftigen. Also verschwand das Ding für Jahre in der Abstellkammer. Vor gut 4 Jahren grub ich beim Aufräumen der Kammer die Fräse wieder aus und es packte mich... Kurze Zeit davor machte ich gute Bekanntschaft mit Python indem ich für nen Kollege ein Tool modifizierte das ziemlich hart mit Bitshifting und so Gedöns arbeitete ( Ging ums modifizieren der Bootlogos auf nem Android mit MIUI). War n harter Einstieg aber man wächst ja bekanntlich mit seinen Aufgaben.
Da die Treiberplatine welche unter der Fräse montiert ist nach dem Takt/Richtungsprinzip arbeitet hab ich nen Arduino Micro zur Hand genommen und diesen so programmiert das er über die Serielle Schnittstelle Fahrbefehle empfängt, diese umsetzt und sich dann wieder beim PC meldet um die nächsten Koordinaten zu empfangen. Das ganze ist soweit optimiert das es z.B. grbl was ja weit verbreitet ist in Sachen Geschwindigkeit in nichts nachsteht (Zu dem Zeitpunkt als ichs geschrieben hab wusste ich nicht das es grbl überhaupt gibt).
Die Software welche auf dem PC läuft hab ich "K-CNC" getauft. Im Grunde ist es eine große Ansammlung von Python Scripten welche alle irgendwie in einander greifen. Ein " cat *.py | wc -l " sagt 14239 Zeilen Code im Augenblick....nuja ehrlichgesagt hab ich mit dem Projekt erst so richtig Python gelernt. Also man kann an Hand des Code Aufbaus erahnen wie alt er ist. So richtig "phytonic" ist er auch nicht - aber er läuft und tut was er soll. Auch ist das keine 5Achs simultane Steuerung sondern 2,5D. Also man hat ne Kontur(X/Y) und gibt die Tiefe(Z) an.
Angefangen hat es mit ner einfachen Bahnprogrammierung. Also gerade und diagonale Strecken sowie Radien. Dazu kam dann noch eine Werkzeugverwaltung und eine Nullpunktverwaltung. Das ganze unter der Prämisse das der Benutzer keine Steuerungssprache wie z.b. Siemens Sinumerik, Heidenhain oder Fanuc können muss um ein Programm zu erzeugen. Dann gibts da noch Schrupp und Schlicht Zyklen für Kreis und Rechtecktaschen welche ich aber noch nicht wirklich zuende geschrieben hab (Da fehlen noch so Dinge wie die aufpoppenden Beispiele bei der Rechtecktasche - die Logik dahinter funktioniert soweit).
Das Prinzip ist aber immer: Man beschreibt/erstellt zum einen seine Kontur,Kreis oder Rechtecktasche. Dann definiert man nen Nullpunkt oder andersrum und klickt sich alles nur noch in eine Liste zusammen. Z.B.: Fahre zu NPV X/Y/Z, schalte Spindel an, fahre Kontur, fahre weg und schalte die Spindel aus
Lustiger wurde es seitdem ich "OpenCV" durch Zufall gefunden hatte. Dann kam mir die Idee direkt aus Bildern den Konturcode abzuleiten und noch ein paar andere Dinge. Zum Beispiel kann man sich das Werkzeug durch eine Kamera vermessen lassen. Ich hab so ne USB Lupenkamera vom großen Fluss für meine 0.9er Fräser verwendet - sollte aber mit jeder gehn da die Software sich selbst eicht.
Bei dem Bild zu Code hab ich bisher 3 Versionen. Die erste welche ich schrieb wandelt stur das gesamte Bild in einen Arbeitsgang um. Da das aber recht unpraktisch ist da die erkannten Konturen in einem Rutsch durchgearbeitet werden entstand die zweite Version. Dort kann man jede erkannte Kontur einzeln auswählen und zu einer Arbeitsabfolge hinzufügen. Die Idee dahinter waren Fensterbilder - also zuerst alles innendrin rausfräsen und erst danach die Aussenkontur. Das ist auch so in der Software abgebildet - man kann also mit theoretisch 4x klicken ein Programm erzeugen welches zuerst die Innenkonturen und danach den Rand aussen abarbeitet. Oder halt jedes erkannte Element einzeln auswählen und mit bis jetzt 29 verschiedenen Nullpunktverschiebungen versehen abarbeiten lassen.
Die dritte Version erkennt auch Farbbilder indem es die vorkommenden Farbabstufungen analysiert und daraus einen table errechnet welcher die am x* häufigsten Farbabstufungen beinhaltet(* x ist abhängig von den erkannten Farben). Daraus werden wieder Vorschläge zu Konturen angezeigt welche man auswählen kann wie die s/w Bilder. Das einzige was man beachten muss ist das 1 Pixel des Bildes 0,01mm entspricht.
Auch hab ich Postprozessoren für Heidenhain mit iTNC 530(läuft) und gbrl(ungetestet) geschrieben.
Dann gibts noch ein Handrad was auch auf Arduino Basis basiert und so nen Drehencoder ausliest wie man ihn kennt (Drehrad mit Knuppel dran).
Also am Handrad Achse auswählen, Schrittweite und Vorschub - dann am Rädchen drehen wie bei den großen.
Ne Vorschau hat K-CNC auch. Dabei wird alles in "Maschinencode" umgewandelt und wieder zurück zu nem Bild gerechnet. Auch werden die Daten aus der Werkzeugverwaltung beachtet wie das die Fräserbreite der angezeigten Linienbreite entspricht.
Bestimmt hab ich jetzt noch das ein oder andere vergessen. Mein eigentliches Problem ist jetzt- was mach ich mit dem Code?
Hier nur für mich auf der Festplatte...dafür wärs doch zu schade. Naja ich hab schon in anderen (Fach)Foren (vor nem halben Jahr) versucht Threads aufzumachen was aber irgendwie total schief lief... Im ersten Forum kam als erste Antwort: Was kann das besser als grbl? Als wenn ich mich damit messen wollen würde.... Dann noch so triviale Dinge wie man stellt 2 Bilder der GUI online und fragt was denn besser aussehe und intuitiver ist...200 Seitenaufrufe und genau keine Antwort- da brauch ich auch kein Forumsbeitrag schreiben. Ich könnte die Aufzählung jetzt noch weiterführen aber ich will ja nicht unnötig hetzen. Kurzum - war nix.
Jetzt könnte ich mir ja die Frage stellen ob das wirklich nicht so ne dolle Sache ist? Anderseits hab ich für meine Arbeitsstelle
Da ich noch ne halb fertige mini-Fräse hier rumliegen hab spiel ich schon seit nem halben Jahr mit dem Gedanken die fertig aufzubauen und ein Tool zu schreiben mit welchem man die Maschine einfahren/einmessen kann. Bis jetzt scheu ich den Aufwand noch da es doch zu viel ist wenn ichs nur für eine Fräse benutz... so oft macht man das ja nicht und ich für mich selber kanns auch hardcoden.
Also alles in allem bin ich ein wenig ratlos wie es mit dem Projekt weitergehen soll.
Gruß Cynob
ich hab bisher in diesem Forum bisher nur mitgelesen... bis jetzt.
Nun hat es mich (sonst so dokumentations und schreibfaul) doch gepackt hier mal nen Thread zu eröffnen.
Das Unterforum hab ich bewusst gewählt da es mich doch schon beschäftigt wie es mit meinem Projekt weitergehen soll.
Vor so 14 Jahren hab ich von einem Freund eine kleine Fräsmaschine aus dem 3D Drucker geschenkt bekommen. Die ist/war komplett mit Endstufe und Taster zum Referenzieren aufgebaut. Er hat das Ding jedoch nie richtig zum laufen gebracht und es sollte mal als Platinenfräse herhalten. Naja zu dem Zeitpunkt entwickelte ich an ner Android Rom (für damals ein Samsung Galaxy S Plus..noch Dual Core) und hatte weder Lust noch Zeit mich damit zu beschäftigen. Also verschwand das Ding für Jahre in der Abstellkammer. Vor gut 4 Jahren grub ich beim Aufräumen der Kammer die Fräse wieder aus und es packte mich... Kurze Zeit davor machte ich gute Bekanntschaft mit Python indem ich für nen Kollege ein Tool modifizierte das ziemlich hart mit Bitshifting und so Gedöns arbeitete ( Ging ums modifizieren der Bootlogos auf nem Android mit MIUI). War n harter Einstieg aber man wächst ja bekanntlich mit seinen Aufgaben.
Da die Treiberplatine welche unter der Fräse montiert ist nach dem Takt/Richtungsprinzip arbeitet hab ich nen Arduino Micro zur Hand genommen und diesen so programmiert das er über die Serielle Schnittstelle Fahrbefehle empfängt, diese umsetzt und sich dann wieder beim PC meldet um die nächsten Koordinaten zu empfangen. Das ganze ist soweit optimiert das es z.B. grbl was ja weit verbreitet ist in Sachen Geschwindigkeit in nichts nachsteht (Zu dem Zeitpunkt als ichs geschrieben hab wusste ich nicht das es grbl überhaupt gibt).
Die Software welche auf dem PC läuft hab ich "K-CNC" getauft. Im Grunde ist es eine große Ansammlung von Python Scripten welche alle irgendwie in einander greifen. Ein " cat *.py | wc -l " sagt 14239 Zeilen Code im Augenblick....nuja ehrlichgesagt hab ich mit dem Projekt erst so richtig Python gelernt. Also man kann an Hand des Code Aufbaus erahnen wie alt er ist. So richtig "phytonic" ist er auch nicht - aber er läuft und tut was er soll. Auch ist das keine 5Achs simultane Steuerung sondern 2,5D. Also man hat ne Kontur(X/Y) und gibt die Tiefe(Z) an.
Angefangen hat es mit ner einfachen Bahnprogrammierung. Also gerade und diagonale Strecken sowie Radien. Dazu kam dann noch eine Werkzeugverwaltung und eine Nullpunktverwaltung. Das ganze unter der Prämisse das der Benutzer keine Steuerungssprache wie z.b. Siemens Sinumerik, Heidenhain oder Fanuc können muss um ein Programm zu erzeugen. Dann gibts da noch Schrupp und Schlicht Zyklen für Kreis und Rechtecktaschen welche ich aber noch nicht wirklich zuende geschrieben hab (Da fehlen noch so Dinge wie die aufpoppenden Beispiele bei der Rechtecktasche - die Logik dahinter funktioniert soweit).
Das Prinzip ist aber immer: Man beschreibt/erstellt zum einen seine Kontur,Kreis oder Rechtecktasche. Dann definiert man nen Nullpunkt oder andersrum und klickt sich alles nur noch in eine Liste zusammen. Z.B.: Fahre zu NPV X/Y/Z, schalte Spindel an, fahre Kontur, fahre weg und schalte die Spindel aus
Lustiger wurde es seitdem ich "OpenCV" durch Zufall gefunden hatte. Dann kam mir die Idee direkt aus Bildern den Konturcode abzuleiten und noch ein paar andere Dinge. Zum Beispiel kann man sich das Werkzeug durch eine Kamera vermessen lassen. Ich hab so ne USB Lupenkamera vom großen Fluss für meine 0.9er Fräser verwendet - sollte aber mit jeder gehn da die Software sich selbst eicht.
Bei dem Bild zu Code hab ich bisher 3 Versionen. Die erste welche ich schrieb wandelt stur das gesamte Bild in einen Arbeitsgang um. Da das aber recht unpraktisch ist da die erkannten Konturen in einem Rutsch durchgearbeitet werden entstand die zweite Version. Dort kann man jede erkannte Kontur einzeln auswählen und zu einer Arbeitsabfolge hinzufügen. Die Idee dahinter waren Fensterbilder - also zuerst alles innendrin rausfräsen und erst danach die Aussenkontur. Das ist auch so in der Software abgebildet - man kann also mit theoretisch 4x klicken ein Programm erzeugen welches zuerst die Innenkonturen und danach den Rand aussen abarbeitet. Oder halt jedes erkannte Element einzeln auswählen und mit bis jetzt 29 verschiedenen Nullpunktverschiebungen versehen abarbeiten lassen.
Die dritte Version erkennt auch Farbbilder indem es die vorkommenden Farbabstufungen analysiert und daraus einen table errechnet welcher die am x* häufigsten Farbabstufungen beinhaltet(* x ist abhängig von den erkannten Farben). Daraus werden wieder Vorschläge zu Konturen angezeigt welche man auswählen kann wie die s/w Bilder. Das einzige was man beachten muss ist das 1 Pixel des Bildes 0,01mm entspricht.
Auch hab ich Postprozessoren für Heidenhain mit iTNC 530(läuft) und gbrl(ungetestet) geschrieben.
Dann gibts noch ein Handrad was auch auf Arduino Basis basiert und so nen Drehencoder ausliest wie man ihn kennt (Drehrad mit Knuppel dran).
Also am Handrad Achse auswählen, Schrittweite und Vorschub - dann am Rädchen drehen wie bei den großen.
Ne Vorschau hat K-CNC auch. Dabei wird alles in "Maschinencode" umgewandelt und wieder zurück zu nem Bild gerechnet. Auch werden die Daten aus der Werkzeugverwaltung beachtet wie das die Fräserbreite der angezeigten Linienbreite entspricht.
Bestimmt hab ich jetzt noch das ein oder andere vergessen. Mein eigentliches Problem ist jetzt- was mach ich mit dem Code?
Hier nur für mich auf der Festplatte...dafür wärs doch zu schade. Naja ich hab schon in anderen (Fach)Foren (vor nem halben Jahr) versucht Threads aufzumachen was aber irgendwie total schief lief... Im ersten Forum kam als erste Antwort: Was kann das besser als grbl? Als wenn ich mich damit messen wollen würde.... Dann noch so triviale Dinge wie man stellt 2 Bilder der GUI online und fragt was denn besser aussehe und intuitiver ist...200 Seitenaufrufe und genau keine Antwort- da brauch ich auch kein Forumsbeitrag schreiben. Ich könnte die Aufzählung jetzt noch weiterführen aber ich will ja nicht unnötig hetzen. Kurzum - war nix.
Jetzt könnte ich mir ja die Frage stellen ob das wirklich nicht so ne dolle Sache ist? Anderseits hab ich für meine Arbeitsstelle
Da ich noch ne halb fertige mini-Fräse hier rumliegen hab spiel ich schon seit nem halben Jahr mit dem Gedanken die fertig aufzubauen und ein Tool zu schreiben mit welchem man die Maschine einfahren/einmessen kann. Bis jetzt scheu ich den Aufwand noch da es doch zu viel ist wenn ichs nur für eine Fräse benutz... so oft macht man das ja nicht und ich für mich selber kanns auch hardcoden.
Also alles in allem bin ich ein wenig ratlos wie es mit dem Projekt weitergehen soll.
Gruß Cynob