K (→G-Code) |
|||
Zeile 133: | Zeile 133: | ||
* <code>O103 ENDREPEAT</code>: Ende einer Schleife | * <code>O103 ENDREPEAT</code>: Ende einer Schleife | ||
==== Beispielprogramme ===== | ===== Beispielprogramme ===== | ||
"Einfache" gcode Programme lassen sich auf der Seite http://www.intuwiz.com/contours.html zusammen klicken. | "Einfache" gcode Programme lassen sich auf der Seite http://www.intuwiz.com/contours.html zusammen klicken. | ||
Version vom 27. März 2017, 19:14 Uhr
Wir haben freundlicherweise eine Mutronic Diadrive 2000/280 (mirror: Datei:Prospekt diadrive 2000.pdf)CNC-Fräse geliehen bekommen. Dabei war ein älterer Rechner mit Frässoftware aus der Steinzeit (Editasc). Inzwischen verwenden wir LinuxCNC auf einem etwas weniger alten Rechner.
Der Ausschalter ist von vorne her gesehen links auf der Rückseite der Fräse.
Reverse-Engineering
Pinbelegung
Es werden 5V-Pegel verwendet. 5V-fähige uCs wie Atmegas sind hier klar im Vorteil.
Die Belegung des Parallelports ist wie folgt: (Zählweise: erst entlang der ersten (längeren) Reihe, dann in der gleichen Richtung entlang der zweiten Reihe, d.h. *nicht* zickzack) Im Zweifelsfall auf den Stecker schauen, meistens steht die Pinnummer dabei.
1 PC high, Fräse low 14 Clock 2 X-Step 15 PC high 3 X-Direction (high = +x) 16 Data 4 Y-Step 17 Select (active low) 5 Y-Direction 18 GND 6 Z-Step 19 GND 7 Z-Direction 20 GND 8 Spindel-Relais (siehe Kommentar) 21 GND 9 Sprühnebel (active high) 22 GND 10 Limit X (active high) 23 GND 11 Limit Z (active high) 24 GND 12 Limit Y (active high) 25 GND 13 PC high, Fräse high 26 GND
Hinweise:
- Pin 8 schaltet nur das Spindel-Relais ein. Die Geschwindigkeit muss noch gesetzt werden. Vorsicht: die Fräse hat keine Pulldowns! Pin unbedingt selbst auf GND ziehen, sonst geht die Spindel an!
- Die "erst Step, dann Direction"-Reihenfolge nennt sich auch Xylotex-like.
- Die Kanäle 1, 13 und 15 scheinen ohne Funktion zu sein. (Evtl. liegen auf Pin 13 und 15 Eingänge. Dadurch könnte z.B. signalisiert werden, dass die Schrittmotoren Schritte verloren haben und die Maschine daher neu kalibriert werden muss. Scheint aber nicht der Fall zu sein: wir haben das ausprobiert, indem wir auf die Pins geguckt haben und an die Wand gefahren sind. Evtl. waren wir aber zu vorsichtig. Alternative Idee: laut Handbuch ist die Fräse "ausbaubar auf weitere Achsen". Vielleicht sind zumindest zwei der Kanäle für eine zusätzliche Achse.)
Spindelgeschwindigkeit
Über SPI auf den Pins 14,16 und 17 wird die Drehzahl eingestellt. Die Datenrate ist 30 kHz; die Daten werden in 16bit-Worten (Big Endian) übertragen. Bei einem ATMega328p mit 128 kHz Clock haben die folgenden SPI-Settings funktioniert:
SPCR = _BV(SPE) | _BV(MSTR) | _BV(SPR0) ; SPSR = 1 << SPI2X;
Die gesendeten Werte sind linear Interpoliert zwischen:
14000 RPM in Editasc -> 2866 20000 RPM in Editasc -> 4094 (0x0FFE -- erster Nibbel soll stets 0 sein!)
Niedrigere Werte führen auch zu (entsprechend langsameren) Drehen der Fräse.
Zu häufige Geschwindigkeitsupdates führen dazu, dass der (vmtl. PID-)Regler sich komisch verhält. Das sollte im Normalbetrieb aber kein Problem sein. Eine Drehzahländerung über den vollen Bereich braucht ca. 1 Sekunde (dabei überschwingt der Regler).
Getestet: man kann die Spindelgeschwindigkeit auch mit 64kHz (= 8MHz F_CPU / Divider 128) senden. Damit kann man GRBL auf wie vorgesehen auf einem Atmega328p verwenden verwenden (der keinen größeren Divider als 128 hat) und SPI in Hardware machen. Natürlich ist unklar, ob das lesen tatsächlich immer perfekt funktioniert, an sich siehts aber gut aus.
Messung der tatsächlichen Geschwindigkeit
Achtung, Schutzbrille tragen! Auch das beste Gaffa löst sich durch die Fliehkraft irgendwann.
Zur Messung ein Stück Gaffatape auf das Bohrfutter kleben (ca. 50% Abdeckung), und mit einem Fototransistor die Helligkeit messen. Beschaltung des Transistors: Mit einem 47kΩ-Widerstand in Reihe schalten und "falschherum" (also mit Emitter an Plus) 5V anlegen. Mit dem Oszi Spannung über dem Transistor messen. Je dunkler, desto mehr Spannung fällt ab. Die Wellenform ist höchst dreckig; die Frequenz muss per Hand abgeschätzt werden, am besten über mehrere Umdrehungen.
Ergebnisse der Messung am 03.12.2014:
Drehzahleinstellung G-Code | Umdrehungen | Zeit [ms], ±2ms | min. errechnete Drehzahl [1/min] | max. errechnete Drehzahl [1/min] |
---|---|---|---|---|
S5000 | 5 | 60 | 4839 | 5172 |
S10000 | 5 | 60 | 4839 | 5172 |
S15000 | 5 | 48,8 | 5906 | 6410 |
S15000 | 10 | 94 | 6250 | 6522 |
S15000 | 10 | 92.8 | 6329 | 6608 |
S16000 | 10 | 72.8 | 8021 | 8475 |
S17000 | 5 | 30 | 9375 | 10714 |
S18000 | 10 | 49,8 | 11583 | 12552 |
S19000 | 10 | 42.8 | 13393 | 14706 |
S20000 | 10 | 37.4 | 15228 | 16949 |
S21000 | 10 | 35.4 | 16042 | 17964 |
S22000 | 5 | 17.8 | 15152 | 18987 |
An dieser Stelle löste sich das Gaffa und nahm den LED-Kranz rund um den Fräskopf etwas in Mitleidenschaft (nur verbogen, leuchtet noch). Beim ersten Versuch flog es schon bei S20000 komplett weg. Tat weh, also Schutzbrille.
Fräse fahren
Die Schrittmotoren werden über Pulsdichtemodulation angesteuert. Zuerst die Richtung festlegen, dann Pulse senden. Die Pulsbreite ist konstant 65µs, bei der Maximalgeschwindigkeit 0.2ms Pause zwischen den Pulsen. 5 Pulse entsprechen einer Strecke von 0.02mm. Bei schnellerer Fahrt müssen die Motoren langsam (Editasc: über ca. 10ms) abgebremst werden (Vermutung: Damit die (ziemlich schwere) Fräseinheit nicht per Trägheit auf die Gewindestange knallt). Im Handbetrieb fährt Editasc danach noch über die Bremsstrecke zurück. Im Fräsbetrieb muss man dann wahrscheinlich vor engen Kurven abbremsen.
Dongle
Editasc ist per Dongle geschützt. Es spricht beim Starten mit dem Dongle. Das geht auch wenn die Fräse aus ist. Danach passiert da nichts mehr.
Dateiformate
HPGL
- wird von Editasc direkt unterstützt
- eigentlich nur für Schneidplotter (=> 2D, d.h. binär "Stift oben / Stift unten")
G-Code
- "das was man möchte"
- sehr umfangreich
- Herstellerspezifische Kommandos für Editasc unklar
- sehr gute Schnellreferenz auf: http://www.linuxcnc.org/docs/html/gcode.html
Einige wichtige G-Codes (bitte unbedingt vor Benutzung der Fräse die Schnellreferenz komplett lesen):
S20000
: Spindelgeschwindigkeit setzenM3
: Spindel anM5
: Spindel ausg92 x0 y0 z0
: Koordinatenursprung setzeng0 x0 y0 z0
: Fahre zu KoordinatenursprungM7
: Gebläse anM9
: Alle Kühlmechanismen (bei uns nur das Gebläse) ausO103 REPEAT[5] ( 5 Wiederhohlungen )
: Anfang einer SchleifeO103 ENDREPEAT
: Ende einer Schleife
Beispielprogramme
"Einfache" gcode Programme lassen sich auf der Seite http://www.intuwiz.com/contours.html zusammen klicken.
Controller
Editasc
Dieser Abschnitt ist nur noch aus historischen Gründen relevant. Wir verwenden LinuxCNC.
Ein Image der IDE-Festplatte des originalen Fräsrechners liegt auf voellerei:/srv/storage/backup/cnc-fraese/windows.img
.
Software: Generell: Vorsichtig behandeln, nicht herausfordern!
- "Handverfahren": Manuell die Fräse bewegen. In der Nähe des Werkstückes die Spindel einschalten, sonst Werkzeug kaputt. Achtung: Die Fräse beschleunigt und bleibt erst mit Verzögerung stehen, nachdem die Taste losgelassen wurde.
- "Achsen Referenzieren": Kalibrieren der Maschinenkoordinaten. Nötig nach jedem Drehen von Hand und wenn die Fräse gegen die Limits gefahren ist (was eigentlich nicht vorkommen sollte). Manchmal erkennt die Fräse die Limitschalter nicht. Dann möglichst schnell ausschalten, von Hand zurückdrehen und nochmal versuchen.
- "Ist-Koordinaten setzen": Objektkoordinaten der aktuellen Position festlegen. Übliches Verfahren: Gewünschten Nullpunkt anfahren, dann Objektkoordinaten dort auf (0,0,0) setzen. Kann aber auch für spätere Korrekturen benutzt werden (z.B. wenn das Design nochmal auf der Leiterplatte verschoben werden soll).
- Stifte: In HPGL werden die Werkzeugparameter durch "Stifte" repräsentiert. In den "Werkzeugeinstellungen" kann man für jeden Stift die Frästiefe und für alle gemeinsam die "Freifahrhöhe" (d.h. Höhe, auf der zum nächsten zu fräsenden Pfad gefahren wird) setzen. Unter "Einstellungen->Farben" sieht man, welche Farbe in der Vorschau für welchen Stift steht.
Während des Fräsens:
- F7: Geschwindigkeit global verringern (am besten erstmal bei 50% anfangen)
- F8: Geschwindigkeit global erhöhen
- F9: Stop (dann weitere Auswahl)
LinuxCNC
LinuxCNC basiert auf Ubuntu 10.04 (+ Echtzeitpatches). Es braucht natürlich einen kompletten Rechner mit Parallelport.
Notizen:
- Der Config-Generator ist verbuggt; das Configfile daher von Hand editieren.
- SPI Geschwindigkeit: 500Hz ist zu langsam, 2kHz funktioniert. spigen muss deswegen im base thread laufen.
Unsere Konfiguration findet sich auf github.com/entropia/cnc.
GRBL
GRBL läuft auf einem ganz normalen Arduino Uni. Es ist das derzeit populärste Controller-Projekt. Es nimmt G-Code per UART und kümmert sich um die Ausführung. Es hat für die Ausführung selbst relativ viel Intelligenz (Stichwort "Planner"). Leider ist es ständig am Limit des Atmega 328P.
Wir haben GRBL für unsere Fräse angepasst. Müsste funktionieren, wurde aber nie getestet, da LinuxCNC zuerst fertig wurde.
Smoothieboard
Das Smoothieboard ist der de-facto Nachfolger von GRBL. Es hat alles drin, incl. z.B. Stepper Driver, Ethernet und SD-Card-Reader. Dafür kostet es vorbestückt ca. 120€. (Es könnte auch für ca. 70€ selbstbestückt werden. Der Aufwand wäre aber immens.)
7I92 Ethernet Anything I/O card
Eine IO Card mit Ethernet MESA 7I92 (Handbuch). Preislich auch bei ca. 120€. Wurde als Alternative zum Smoothieboard, vorgeschlagen von MarkusBec im #cccmz.
Sonstiges
Koordinatensysteme:
- (0,0): beim Oberseite fräsen vorne links, Werkstücknullpunkt ist beim rückseite fräsen vorne rechts (an der Fräse)
- x: nach rechts, y: nach hinten, z: nach oben (weg von fräse/werkstück)
- nicht bei unserer Fräse, aber fyi: a/b/c sind die rotationsachsen um x/y/z-Achse herum
- Zwei Bezugspunkte (normalerweise nicht skaliert und nicht gedreht): Maschinenkoordinaten (Nullpunkt unten links auf der Arbeitsfläche) und Objektkoordinaten (Nullpunkt irgendwo im Objekt)
- Empfohlener Nullpunkt zum Fräsen: Auf Höhe der Oberkante der Leiterplatte (dann zum Fräsen ca. 0.5mm in die Platte hineinfahren (genaue Einstellung mit Mikrometerschraube, siehe unten), zum Fahren 3mm darüber).
- Bei 3D-Bearbeitung sollte Z=0.00 an der Oberkante des Objekts liegen. So ist klar, dass Z>0+ε immer frei zum Umherfahren ist.
Leiterplatten fräsen
siehe CNC-Fräse/Leiterplatten fräsen
Wir haben das ursprünglich mit HPGL-Files und Editasc gemacht; derzeit verwenden wir Eagle und PCB-GCode. Die Herstellung passiert in mehreren Schritten: (die Reihenfolge ist nicht ganz klar, aber Bohren kommt zu erst)
Designen
- für größere Cutouts stollten ausreichend Stege eingeplant werden, sonst fliegt das lose werdende ausgeschnittene Stück rum und führt zu Problemen
- die Linien im Dimension Layer sollten genügend Abstand zur Schaltung haben, so dass die Groundplane die Schaltung einmal komplett umgibt (und zusätzlich noch etwas Platz bleibt). So kann der Rand der Groundplane später als Platinenbegrenzung (wofür normalerweise ja die Linien im Dimension Layer vorgesehen sind) verwendet werden (beim Ausfräsen der Platine dann entsprechend dieses Groundplane-Rand fräsen).
G-Code generieren
- Eagle-Layouts am besten mit PCB-GCode konvertieren. Installation:
- Irgendwohin entpacken.
- Pfad in Eagle Control Panel -> Options -> Directories -> User Language Programs anhängen (z.B. "
:$EAGLEDIR/ulp/pcb2gcode
" hinten anhängen)
- Konfiguration von PCB-G-Code: Im Board: Menu -> Run ULP -> pcb-gcode-setup.ulp
- Isolation: Single Pass. Mit mehreren Passes konnten wir noch keine guten Ergebnisse erzielen. Da müsste man mal noch mit den Parametern experimentieren.
- Z High: 10-15mm reicht. Falls in der Nähe der Platinen-Befestigungsbolzen gefräst wird dann ist unter Umständen ein höherer Wert sinnvoll, damit der Schlitten den Bolzen nicht trifft.
- Z Up: 3mm reicht.
- Z Down: 0mm (!). Aufgrund unserer speziellen federnden Bodenplatte wird die Frästiefe bei uns nicht über Z Down geregelt sondern über
g92 z0
und die Mikrometerschraube eingestellt. Z Down würde ein stärkeres anpressen des Schlittens an die Bodenplatte bewirken als beim Einstellen vor dem Fräsen, nicht aber eine größere Frästiefe. Daher kann der Wert einfach auf 0mm gesetzt werden. Dann muss beim Einstellenz = 0
so gelegt werden, dass die gewünschte Frästiefe erreicht wird (vorher Spindel starten nicht vergessen, sonst Fräser kaputt!). - Drill Depth: marginal mehr als die Platinendicke. Bei 1.5mm Platinendicke sollte Drill Depth -1.65 (Vorzeichen beachten!) passen. Unbedingt eine dünne Holzplatte unter das Werkstück legen, so dass die Bodenplatte nicht beschädigt wird!
- Drill Dwell: 0.3 sec ist völlig reichlich.
- Spin Up Time: reichlich wählen, z.B. 3 Sekunden. Der PID-Regler der Spindel braucht auch etwas, bis er stabil läuft.
- Tool Dia.(meter): 0.25mm hat fürs Mutronic Multitool ganz gut funktioniert.
- Epsilon: 0.00254mm
- G-Code Style: EMC (der alte Name von LinuxCNC)
Fräsen
Ablauf:
- Löcher für die Werkstückeinspannung manuell bohren; Abstand (relativ) egal, sollten aber ausreichend nah am Rand der Leiterplatte legen, damit man noch an die Stellschraube des verschiebbaren Befestigungsstiftes drankommt.
- Werkstück einspannen, Befestigungsbolzen sollten Spannung auf Werkstückplatte ausüben
- Werkstücknullpunkt festlegen. Beachten dass alles draufpasst und der Schlitten in allen Lagen komplett auf die Platine passt. Dabei muss etwas Platinenrand verschwendet werden.
- Spindel auf höchste Drehzahl (bei uns: 20000 U/min) einstellen.
- Löcher Bohren
- Isolationsfräsen: Top
- Platine umdrehen, neuer Ursprung ist vorne-rechts
- Isolationsfräsen: Bottom
- Trennen
Mit dem magischen Multiwerkzeug von Mutronic geht das alles auch mit dem gleichen Werkzeug -> Kein Wechseln. Zum Trennen ist das allerdings nicht so gut und geht schnell kaputt; da sollte dann eher ein Fräser verwendet werden.
Zum Isolationsfräsen benutzt man den Schlitten um die Leiterplatte gegen den Federboden anzudrücken, damit auch alles eben ist. Gerade Holzplatten sind enorm uneben, Leiterplatten sind wohl auch nicht perfekt. Durch den Federboden wird das halbwegs ausgeglichen.
Zwischen Werkstück und Bodenplatte ist eine dünne Holzplatte zu spannen, damit die Federplatte nicht beschädigt wird. Das Werkstück sollte zwischen den zwei Metallbolzen der Federplatte fest eingespannt und an den gegenüberliegenden Ecken z.B. mit Gaffertape auf der Bodenplatte fixiert werden.
Fräsköpfe:
- Für Leiterplatten: Dünne (0,8 mm) Kombiköpfe für Fräsen und Bohren, vorne kegelförmig.
- Für Trennen von Platten: dickere Fräskopfe mit Spiralschnitt, vorne flach
- Für Holz: vorne konkave Fräsköpfe (damit zentrieren sie sich beim Hineinbohren besser)
- Für Gravur: "Stichel" mit halbem Kegel als Spitze
Materialien:
- Holz: Kein Problem
- Leiterplatten (Epoxy): kein Problem
- dünnes Aluminium: auf die genaue Legierung achten. Die üblichen sind nicht für spanabhebende Bearbeitung geeignet.
- Plastik: Nichts, das schmilzt. Muss auch für spanabhebende Bearbeitung geeignet sein
- Plexiglas: Gravur ist OK, Trennen nicht klar.
- GFK/CFK: Vorsicht, gesundheitsschädlicher Staub. Ernst gemeint! Nur im Wasserbad fräsen! CFK/GFK sind sehr teure Werkstoffe, die außerdem noch schnell die Fräser verschleißen. Dafür führen sie aber hinterher auch zu sehr stabilen Werkstücken.
Schlitten:
- Runterklappen: mit dem gefederten Dingsda links den Schlitten einklemmen und mit der Mikrometerschraube die Frästiefe einstellen. Anschaulich: die Zahlen auf der Mikrometerschraube geben die Eindringtiefe an. Größere Zahlen = gegen den Uhrzeigersinn drehen = mehr wegfräsen.
- Hochklappen: Darauf achten, dass der Schlitten eingerastet ist (geht ziemlich schwer, soll es auch)
Vorgehen:
- Auf der Arbeitsfläche etwas Puffermaterial (z.B. Holzpappe/Holzplatte/...) aufkleben.
- Leiterplatte festmachen (mit den Stiften. Trick: Direkt mit etwas Zug einspannen, dadurch wackelt es weniger). Bei Bedarf auch die Leiterplatte ankleben.
- Das Offset des Schlittens mit der Mikrometerschraube so einstellen, dass die gewünschte Frästiefe erreicht wird (mit Fooleiterplatte ausprobieren: Leiterplatte von Hand unter den Schlitten drücken und schauen ob gewünschte Frästiefe und -breite erreicht wird: So dünn wie möglich, aber so breit, dass das Kupfer definitiv getrennt ist)
- Objektkoordinaten an den gewünschten Nullpunkt fahren. Wichtig: In alle Richtungen so viel Platz lassen, dass der Schlitten immer auf der LP aufliegt und nicht gegen die Befestigungsstifte stösst. Das unbedingt auch mit eingeschalteter Spindel tun, sonst geht der Fräskopf kaputt, wenn man versehentlich anstößt.
- Stifteinstellungen überprüfen. Da wir so justiert haben, dass Z=0.00 schon "Fräsen" bedeutet sollte der Stift in der "Down"-Position keinen Offset haben.
- Starten. Die Spindel läuft vmtl (FIXME: überprüfen!) von alleine an. Den Kompressor muss man wohl von Hand starten. Empfehlung: Vorher die Fräse ganz hochfahren, dann hat man Zeit, noch anzuhalten, oder die Spindel oder den Kompressor zu starten.
Sonstige Frästipps
- nicht *zu* langsam fräsen, da schlecht für Fräskopf
- nicht zu schnell fräsen, da schlecht für Fräskopf (er verbiegt sich)
- beim Einspannen des Fräskopfes: unbedingt bis zum Anschlag in das Futter hineindrücken, aber nicht zu fest einspannen, Spindel weniger stabil als übliche Bohrmaschinenspindel
- Wenn viele größere Löcher aus einer Platte zu Fräsen sind, Stege stehen lassen, damit die Platte sich nicht so leicht verbiegen kann, und die ausgefrästen Teile nicht durch die Gegend fliegen.
Sonstiges:
- Stromaufnahme der Fräse: 250W. Die größte Sicherung ist 6.3A/träge, und die hat sich als für die Spindel herausgestellt.
- bei LinuxCNCs AXIS: nachdem das Koordinatensystem verschoben wurde (z.B.
g92 x0 y0 z0
) einmal auf "Datei neu laden" klicken, damit alles wieder an der richtigen Stelle liegt.
Aluminium fräsen
Stempel fräsen
siehe CNC-Fräse/Stempel fräsen
Vermessung mit Messuhr
siehe CNC-Fräse/Vermessung
Zu Erledigen
- Großer roter Knopf. Der Fräsenausschalter ist hinten links, auf der Rückseite der Fräse, und eher schwer zu erreichen.
- Feinstaubfilter vor/für Staubsauger.
- evtl. Plexiglasplatten für den Deckel. Der Deckel ist allerdings innen zwecks Schallschutz mit Schaumstoff ausgeklebt...
- bessere Deckelkonstruktion (momentan zwei-drei Leute zum Abheben und Aufsetzen nötig; alleine abnehmen völlig unmöglich): schwer realisierbar. Wir lassen den Deckel derzeit einfach ab.
- Gewindestangen komplett neu verfetten, Achsen reinigen
- Unterbau mit Folie Staubdicht machen (Kühlung für Rechner bedenken), Löcher zwischen Fräsbereich und Schrankbereich verschließen
- Nebelsprüher gegen Staub
- Webcam
Weblinks
- https://berlin.ccc.de/wiki/Platinenfr%C3%A4se
- https://wiki.attraktor.org/Platinenfr%C3%A4se (G-code optimizer & Fräserinfos)
- unsere fräse: Diadrive 2000/280 (nicht /500) http://www.mutronic.de/pdf/brochure%20diadrive%202000%20-e-.pdf
- 3D-Modell Staubsaugeradapter Datei:Staubsauger v2 parameterized.tar.gz