Selbstbau-CNC

PaulVeröffentlicht von

Motivation

Hier dokumentiere ich den Bau meiner CNC-Plattform, mit der sich unter anderem Platinen und Gehäusefronten fräsen lassen. Auch Holz lässt sich damit wunderbar gravieren.

Hier fräse und bohre ich eine Europlatine; Details in der Videobeschreibung und im Abschnitt G-Code-Export aus EAGLE.
Hier fräse ich ein Kunststoffbauteil; Details in der Videobeschreibung.

Teileliste

Um zu schnell zu einem Ergebnis zu kommen, entschied ich mich, auf die zahlreichen im Netz verfügbaren Sets zum Thema CNC und 3D-Druck zurückzugreifen. Dabei legte ich jedoch Wert darauf, keinen kompletten CNC-Bausatz zu kaufen, sondern die Dimensionierung und den generellen Aufbau der Maschine selbst zu bestimmen.

Hinweis Bei allen nachfolgenden Produktlinks handelt es sich ausdrücklich nicht um Affilitate-Links.

Elektronik

Die verwendeten Motoren haben ein Haltemoment von ca. 0,8 Nm.

Auf dem Arduino läuft der G-Code-Interpreter GRBL (Pinout, Hex-File, Flashen mit XLoader), welcher vom Universal G-Code Sender bespaßt wird.

3x Bipolarer Schrittmotor „Nanotec 4T5618S2404-A“ (Pollin, 30 €)
3x Schrittmotor-Montagehalterung Typ „Nema 23“ (Amazon, 13 €)
3x Schrittmotorsteuerung „TB6600“ (Ebay, 21 €)
1x Arduino UNO (Keyestudio Upgrade) (Amazon, 10 €)
6x Endschalter „XSS-5GL13“ (Amazon, 11 €)
1x Schaltnetzteil 36V/10A (Ebay, 24 €)

Insgesamt habe ich für die Elektronik also 109 € ausgegeben.


Die Schrittmotorsteuerung hat drei opto-isolierte Eingänge, deren Massen ich direkt auf der Platine durchverbunden habe.

Achsen und Mechanik

Die Mechanik wurde in allen drei Achsen mit Gewindespindeln realisiert. Die X-Achsen-Linearführung wurde aufgrund ungenügender Stabilität im Nachhinein noch einmal überarbeitet. Auch wurden die Gewindespindel-Montageblöcke nachträglich noch einmal gegen Exemplare mit besserem Gewinde ausgetauscht. Zusätzlich wurden die bei den Sets beiliegenden Spindelmuttern nachträglich gegen solche mit einer Federverspannung ausgetauscht — hierdurch konnten lästige Vibrationsgeräusche beim Verfahren fast vollständig eliminiert werden.

1x Set Linearführung 500mm (Ebay, 28 €) Y-Achse (1)
1x Set Gewindespindel 500mm mit Lagern und Kupplung (Ebay, 13 €) Y-Achse (2)
1x Set Gewindespindel 400mm mit Lagern, Kupplung und Linearführung (Ebay, 29 €) X-Achse alt
1x Set Linearführung 400mm (Ebay, 27,80 €) X-Achse neu
1x Set Gewindespindel 200mm mit Lagern, Kupplung und Linearführung (Ebay, 24 €) Z-Achse
3x Montageblock für T8-Mutter (Ebay, 25 €) Schlechtes Gewinde
3x Montageblock für T8-Mutter (Amazon, 16 €) Bessere Qualität
4x T8-Spindelmutter mit Federverspannung (Ebay, 16 €)

Insgesamt habe ich für die Achsen und Mechanik also ca. 178 € ausgegeben. (Die alte und daher nun ungenutzte X-Achsen-Linearführung sowie die schrottigen Montageblöcke und die überflüssigen, nicht verspannten Spindelmuttern mit inbegriffen.)


Abgesehen von der guten Verpackung fällt auf, dass die 500er-Schienen vorher bereits einmal montiert waren. Die Auflageschiene ist jedoch unversehrt. Die Gleitlager wirken billig (was sie auch sind), sind jedoch spielfrei und lassen sich mit annehmbarer Reibung bewegen.


An der Verpackung des 400er-Gewindespindel-/-Linearführungs-Sets sowie des 500er-Gewindespindel-Sets ist soweit nichts auszusetzen.


Alle Sets zusammen. Auch die Reibung der restlichen Lager ist annehmbar. Lediglich die Gewindemuttern weisen ein geringfügiges Spiel auf, was praktisch jedoch nicht ins Gewicht fallen sollte.


Ob es nun an den Gewindemuttern oder den Montageblöcken liegt, habe ich nicht gemessen; jedenfalls sind die Toleranzen untereinander derart katastrophal, dass ein wenig Überzeugungsarbeit notwendig wurde, um beide zu vereinen.


Die Federverspannten T8-Spindelmuttern zur Vermeidung von Vibrationsgeräuschen.


Die Kugellager sind ausnahmslos leicht schräg in die Stehlagergehäuse gepresst, sodass ich diese mit einer Schlitzschraubendreherspitze erst vorsichtig in Position hämmern musste.


Die Wellenkupplungen hat mir ein netter Kollege in die Drehbank eingespannt und auf 6 mm aufgebohrt, sodass sie auf die Motorwelle passen. Außerdem konnte ich ein paar Schalter für Not-Aus und Start/Stop aus der Schrottkiste ziehen.

Holz- und Alu-Konstruktion

Bei den Platten handelt es sich um Siebdrucksperrholz mit 15mm bzw. 21mm Stärke. Um die Achsen in etwa auf Höhe der Motorwelle anzuheben, verwende ich die zusätzlichen, dickeren Platten; die Feinjustierung erfolgt über Unterlegscheiben.

1x Platte 60cm x 50cm, Stärke 15mm (Baumarkt, 10,87 €) Grundplatte (Y-Achse)
1x Platte 50cm x 30cm, Stärke 21mm (Baumarkt, 7,42 €) Grundplatte (Y-Achse) Anhebung
1x Platte 50cm x 14cm, Stärke 15mm (Baumarkt, 2,54 €) Portal (X-Platte)
1x Platte 40cm x 14cm, Stärke 21mm (Baumarkt, 2,77 €) Portal (X-Platte) Anhebung
1x Platte 30cm x 11cm, Stärke 15mm (Baumarkt, 1,20 €) Portal (Z-Platte)
1x Platte 20cm x 11cm, Stärke 21mm (Baumarkt, 1,09 €) Portal (Z-Platte) Anhebung
1x Platte 20cm x 11cm, Stärke 15mm (Baumarkt, 0,80 €) Portal (Werkzeugplatte)
1x Platte 30cm x 24cm, Stärke 15mm (Baumarkt, 2,61 €) Werkstückplatte (unten)
2x Nutplatten 15mm x 120mm x 300mm Nut 8 (Aluprofile24, 9 €) Werkstückplatte (oben)
2x Strebenprofil 40mm x 80mm x 400mm Nut 10 (Aluprofile24, 13 €) Portal (Säulen)
4x Montagewinkel 40mm x 40mm Nut 10 mit Nutführung (Aluprofile24, 4 €) Portal (Säulen)
2x Set Gehäusefüße (Ebay, 7 €)

Ohne Berücksichtigung von Zusatz-/Versandkosten und Kleinteilen wie Winkel, Schrauben, Kabel oder sonstigem Montagematerial beläuft sich der Gesamtpreis der Holz-/Alu-Konstruktion somit auf rund 62 €. (Für einen Vorrat an verschiedenen Schrauben habe ich noch einmal rund 30 € ausgegeben.)


Lieferung der Nutplatten und Strebenprofile. Die Nutführungen (Alu-Druckguss-Nippel) der Montagewinkel habe ich einseitig mit einer Rohrzange angeknipst, damit die Winkel auf der Grundplatte stehen können.

Frässpindel, Fräser und Bohrer

Meine ersten Versuche mit einem günstigen „Dremel“-Fake waren recht ernüchternd; der Rundlauf ist katastrophal, die Lautstärke fatal (Bürstenmotor). Daher habe ich erneut Geld in die Hand genommen und eine Brushless-Spindel mitsamt Netzteil und Controller aus chinesischer Produktion besorgt; die Lautstärke ist nun durchaus annehmbar und der Rundlauf ist verglichen mit dem „Dremel“ optimal. Für Interessierte gibt es auch ein ausführlicheres Review im mosfetkiller-Forum.

1x FERM-Kombiwerkzeug 160W, max. 35000 U/min (Amazon, 27 €) alt
1x China-Frässpindelset 400W, max. 12000 U/min (Ebay, 105 €) neu
1x 10er-Pack Gravierstichel 0,1mm / 60° (Ebay, 3,75 €)
1x 10er-Pack Gravierstichel 0,1mm / 30° (Ebay, 5,58 €)

Insgesamt hat mich das nun verwendete, neue China-Frässpindelset inklusive meines Vorversuchs mit dem FERM-„Dremel“ und zuzüglich der Gravierstichel also ca. 140 € gekostet.

Zum Fräsen von Holz, Kunststoff, Alu und Leiterplatten habe ich mir die folgenden Fräser gekauft und dafür rund 22 € ausgegeben.

1x VHM-Fräser Zweischneider (Flach) Ø2,0mm (Sorotec, 4,10 €) Holz Kunststoff AluFräst glatte Taschen
1x VHM-Fräser Zweischneider Ø2,0mm 12mm (Sorotec, 7,30 €) Holz Kunststoff AluTaucht dank „Fischschwanzanschliff“ besonders gut ins Material ein
1x VHM-Fräser Einschneider Ø2,0mm SL:12mm (Sorotec, 8,30 €) Kunststoff
1x VHM Fräser Spiralverzahnt Ø2,0mm verbesserte Geometrie (Sorotec, 2,55 €) Holz, Platinenkontur

Letztlich habe ich mir zum Bohren von Leiterplatten außerdem die folgenden Vollhartmetall-Bohrer zugelegt und dafür rund 21 € ausgegeben. Siehe auch: Platinen Bohren (Mikrocontroller.net).

5x HM-Bohrer Ø0,90mm (Sorotec, 1,65 €)
3x HM-Bohrer Ø1,30mm (Sorotec, 1,65 €)
2x HM-Bohrer Ø3,15mm (Sorotec, 1,65 €)

Bilder vom Bau

Y-Achse

Beim Aufbau der CNC-Fräse habe ich mit der Grundplatte und der sich direkt darauf befindlichen Y-Achse begonnen. Die Y-Achse ist als Schlitten konzipiert, welcher sich unter dem Portal vor- und zurück bewegt. Der Schlitten besteht aus einer Holzplatte, auf welcher wiederum die Nutplatten montiert sind. Zur Überbrückung des Abstands zwischen Gewindespindel-Montageblock und Schlitten wurden diverse Kunststoffdichtungen übereinandergeklebt.

X-Achse

Die X-Achse wird auf dem feststehenden Portal montiert. Die hier gezeigte alte X-Achse wurde noch mit freistehenden Linearführungen aufgebaut — diese Konstruktion war allerdings eher freischwingend und alles andere als starr. Daher wurde die X-Achse noch einmal mit starren Schienen neu aufgebaut. Die Fotos dazu folgen in Verlauf dieses Artikels.

Z-Achse

Der Aufbau der Z-Achse gestaltete sich etwas fummelig; als Abstandshalter mussten Muttern aufgeklebt werden, um die Höhe der Linarführungswellenhalter zu überbrücken. Für die ersten Tests wurde behelfsmäßig ein günstiger „Dremel“ auf der Z-Achse montiert.

Für die nachträgliche Montage der China-Frässpindel musste ich die Z-Platte noch um ein paar cm kürzen, um den gewünschten Verfahrweg zu erreichen.

Plattform

Der mechanische Aufbau der Plattform (mit der alten X-Achse), hier noch ohne Elektronik und Verkabelung.

Elektronik und Verkabelung

Die Elektronik besteht im Wesentlichen aus dem Schaltnetzteil, den Schrittmotor-Treibern, dem Arduino (erstes Gehäuse) und einer Schalt-/Verteilerkiste für Netzspannung (zweites Gehäuse). Die Netzspannungskiste enthält (in der ersten Version) nebst einem Solid-State-Relais zum Schalten der Frässpindel ein kleines Hi-Link-Netzteil, welches den Arduino mit 5V versorgt; somit sind die Schaltausgänge des Arduino auch ohne angestecktem USB-Kabel stets in einem wohldefinierten Zustand.

Hinweis Die externe Dauerversorgung des Arduino Uno R3 habe ich wie folgt gelöst:

  • Die Sicherung („Polyfuse“) zwischen USB-Power und der 5V-Schiene wird entfernt. Somit ist der USB-Port überhaupt nicht mehr in der Lage, das Board zu versorgen.
  • Eine Diode wird zwischen 5V (Anode) und Vin (Kathode) gesteckt, damit der 5V-Regler auf dem Board nicht rückwärts versorgt werden kann.

Die Arduino-Kiste beherbergt außerdem eine Hohlsteckerbuchse zum Anschluss der Probe-Klemmen, Stichwort Z-Leveling zum automatisierten Abtasten einer Leiterplatte zwecks Erstellung eines Höhenprofils für akkurate Leiterbahntiefen. Auch Taster für Pause/Continue und Not-Aus sowie eine Power-LED sind vorhanden.

Die Schrittmotor-Treiber und der Arduino sind über ein altes VGA-Kabel (mit schön vielen, bunten Adern) verbunden; ein Stück Lochblech dient als Abdeckung, damit diese Verkabelung nicht versehentlich beschädigt werden kann.

Mit dem nachträglichen Einbau des China-Frässpindelsets ist noch ein Schaltnetzteil sowie der Spindel-Controller (mitsamt Drehzahlpoti und -anzeige) hinzugekommen. Das Solid-State-Relais ist wieder aus dem Netzspannungsgehäuse rausgeflogen, da nun nicht mehr direkt die Netzspannung der Spindel geschaltet werden muss. Stattdessen geht das Spindel-Enable-Signal — über einen Transistor invertiert — an den Spindel-Controller.

Die Schrittmotoren der X- und Y-Achse werden mit 4 Mikroschritten betrieben, die Z-Achse mit 8 Mikroschritten. Hiermit habe ich in meinen ersten schnellen Tests gute Resultate erzielt; es ist möglich, dass ich hier noch weiter optimiere, um den bestmöglichen Trade-Off zwischen Drehmoment und Präzision zu erreichen.

Fertiggestelltes Gerät


Version 2, mit stabiler X-Achse, aber immer noch ungeeigneter Frässpindel. In der Draufsicht zeigen sich die Endschalter der X-Achse, welche von einem an die Z-Platte montierten Metallwinkel betätigt werden.


Version 2, mit verbesserter X-Achse und neuer Frässpindel.

Verkabelung und Ansteuerung

Anbindung Arduino/Schrittmotortreiber

Das folgende Schema zeigt die Anbindung eines Schrittmotor-Controllers an den Arduino.

Anbindung Arduino-TB6600

Universal G-Code Sender

Vom Universal G-Code Sender gibt es zwei verschiedene Versionen, ich verwende die neuere Platform-Version. Die CNC-Fräse wird via USB mit einem Rechner verbunden, auf dem UGS Platform gestartet wurde. Dann wird die richtige serielle Schnittstelle selektiert und auf Connect geklickt.

UGS bzw. GRBL kennen zwei Arten von Koordinaten:

  • Die absolute Machine Position, relativ zu den Home-Schaltern und im Controller State in kleinen Digits angezeigt.
  • Die Work Position, relativ zum frei wählbaren Arbeitsnullpunkt, im Controller State in großen Digits angezeigt.

Bevor ein G-Code-File geladen und gestartet werden kann, sollten die folgenden Aktionen verstanden werden:

Home MachineEndschalter suchen, absolute (Maschinen-)Nullposition suchen.
Reset ZeroArbeitsnullpunkt setzen, also Work-Position auf Null setzen.
Return to ZeroMaschine zum Arbeitsnullpunkt fahren.
UnlockBei gewissen Interventionen (z.B. Not-Aus) sichert sich GRBL aus Sicherheitsgründen gegen weitere Kommandos ab und muss wieder entsperrt werden.
Soft ResetWenn GRBL aufgrund eines Fehlers oder einer Intervention beleidigt ist, hilft ein Soft Reset.

Die folgenden Bewegungsparameter legen die Schrittweite und -geschwindigkeit für den manuellen Betrieb (Jog-Controller) fest:

  • Step Size XY: Hier können beliebige Werte eingetragen werden; wenn die Bewegung um die eingestellte Schrittweite den Arbeitsbereich überschreitet, verhindert GRBL diese Aktion mit einer Fehlermeldung.
  • Step Size Z: Hier sollten kleinere Werte eingetragen werden, um bei unbedachtem Verfahren der Z-Achse den Fräser nicht ins Werkstück zu rammen.
  • Feed Rate: Die Verfahrgeschwindigkeit für alle Achsen. Ist dieser Wert größer als das in den Firmware-Einstellungen konfigurierte Maximum für die jeweilige Achse, so wird die Geschwindigkeit auf eben diesen Wert gedrosselt.

GRBL

Die Firmware-Einstellungen von GRBL können vom Universal G-Code Sender (Menü Machine / Firmware Settings) aus komfortabel editiert werden. Hier können Achsenbeschleunigungen, Maximalgeschwindigkeiten und vorallem die Mikroschritt-Konfigurationen dauerhaft eingetragen werden.

Meine Firmware-Einstellungen finden sich der Vollständigkeit halber und zwecks Orientierung für andere Interessierte hier zum Download:

Download “Selbstbau-CNC-Firmware-Settings” firmware_2019-05-27.zip – 63-mal heruntergeladen – 2 KB

Wichtige G-Codes

Auch wenn der Universal-G-Code Sender die komplette Ansteuerung der Schrittmotoren übernimmt, kann die Kenntnis einiger wichtiger G-Codes nicht schaden. Kommentare innerhalb eines G-Code-Files sind übrigens erlaubt, solange sie in runden Klammern stehen.

(Maximale Verfahrgeschwindigkeit)
G94 F500
(Homing)
$H G10 P0 L20 X0 Y0 Z0
(Maximale Spindelgeschwindigkeit, kann nach jedem Reset automatisch vom "Start-up Block" mit dem folgenden Befehl gesetzt werden: $S0=S1000)
S1000
(Frässpindel einschalten)
M3
(Frässpindel ausschalten)
M5

G-Code-Export aus Inkscape

Allgemein

Für meine ersten Tests habe ich in Inkscape eine Vektorgrafik erstellt und mithilfe von gcodetools als G-Code exportiert. Die Installation von gcodetools besteht darin, einfach alle Dateien aus dem GitHub-Repository nach share\extensions relativ zum Inkscape-Installationsverzeichnis zu kopieren.

Achtung! gcodetools 1.7 (aktuelle Version, länger nicht mehr gepflegt) funktioniert (zumindest bei mir) nur mit Inkscape 0.92.3!

Eine gute Beschreibung zum Vorgehen beim Exportvorgang und der Parametrisierung findet sich hier: Fräsdaten mit Inkscape.

Achtung! Aufgrund eines Bugs in den gcodetools muss vor dem abschließenden Klick auf „Anwenden“ wieder auf den Tab „Pfad zu GCode“ gewechselt werden, sonst passiert nichts. Nicht vergessen, sämtliche Objekte vor dem Export in Pfade umzuwandeln. Außerdem sollten die rosa Linien, die gcodetools als Fräsbahnen über der Grafik erstellt, wieder gelöscht werden, bevor die Grafik erneut exportiert werden soll.

Insgesamt ist dieser Workflow nicht sonderlich komfortabel, funktioniert nach ein wenig Experimentieren aber recht gut.

Flächen (Taschen)

Wenn mit Inkscape eine abgesenkte Fläche bzw. Tasche erstellt werden soll, so funktioniert dies über das Flächen– bzw. Area-Tool von gcodetools. Zum Einspannen von Europlatinen habe ich mir z.B. die folgende Vorrichtung gebaut, welche eine 1,6 mm tiefe Tasche im Format 160 mm x 100 mm enthält. (Da ich eine Platine an der linken Platinenkante etwas weiter außen fräsen musste, wird die Platine dort nur durch zwei Unterlegscheiben fixiert.)

Hinweis Diese Einspannvorrichtung eignet sich natürlich nur für Layouts, die ringsum einen Rand von ca. 5…10 mm freihalten, damit das Werkzeug nicht mit den Randhaltern kollidiert.

Zuerst wird ein Reckteck im gewünschten Format gezeichnet. Dabei muss allerdings der Werkzeugdurchmesser berücksichtigt werden!

Achtung! In meinem Fall habe ich das gewünschte Ergebnis mit einem Rechteck der Größe 159 mm x 99 mm erhalten, welches mit einem 2 mm-Bohrer gefräst wurde. Ich hätte jedoch erwartet, dass das Format 158 mm x 98 mm sein muss, wenn der Fräser außen noch einmal 1 mm auf jeder Seite abträgt. Was macht gcodetools hier?

Das erzeugte Rechteck wird nun in einen Pfad umgewandelt. Mit dem Flächen-Tool von gcode-tools werden dann Fräsbahnen innerhalb dieser Fläche generiert. Hierbei habe ich die Werkzeugüberlappung auf 0,5 konfiguriert, also bezogen auf den Werkzeugdurchmesser 50% „seitliche Zustellung“. Die maximale Anzahl an Flächenschnittkurven sowie die Breite der Fläche werden ausreichend groß angesetzt, sodass die gesamte Fläche von Fräsbahnen überdeckt wird. Hierfür bietet es sich an, die Live-Vorschau zu aktivieren. Im Reiter Bereich füllen kann zwischen Zickzack– und Spiral-Form der Fräsbahn gewählt werden (ich habe Zickzack verwendet). Dann wird auf Anwenden geklickt und der Flächen-Dialog geschlossen.

Nun wird das ursprüngliche Rechteck gelöscht, sodass nur das Objekt mit den generierten Fräsbahnen übrig bleibt. Über die Objekteigenschaften wird die Konturfarbe sicherheitshalber auf schwarz gesetzt. Dann wird mit Pfad zu G-Code der G-Code erzeugt. Als Schnittreihenfolge sollte hierbei Durchlauf für Durchlauf gewählt werden und auch Sortierte Pfade, um schnelle Entfernung zu reduzieren sollte angewählt werden.

Es wird davon ausgegangen, dass die Orientierungspunkte (insbesondere die korrekte Z-Tiefe) sowie eine Werkzeugdefinition (insbesondere Depth Step) zuvor bereits angelegt wurden. Die oben gezeigte MDF-Platte konnte ich mit einem zweischneidigen Spiralfräser bei 1500 mm/min XY-Vorschub und 800 mm/min Z-Vorschub problemlos in einem Zeitraum von etwa 2 Stunden bearbeiten (zwei Durchgänge, also 0,8 mm Depth Step).

G-Code-Export aus EAGLE

Allgemein

Einen ersten Test zum Platinenfräsen habe ich mit Version 1 der CNC-Fräse durchgeführt, doch die Resultate waren aufgrund der schwingenden X-Achse sowie der inakkuraten Frässpindel inakzeptabel. Die nächsten Tests mit der verbesserten X-Achse und der China-Spindel verliefen sehr viel besser und lassen sich im Video am Anfang dieses Artikels bewundern. Die Teile zum Fixieren der Leiterplatte heißen übrigens Spanneisen bzw. Spannpratzen und sind unter diesem Namen auf Ebay zu finden.

Das Exportieren von Leiterplattendaten (Leiterbahnen, Bohrungen) geschieht über das ULP pcb-gcode-4.6.2.4. Für das Fräsen von Platinenkonturen (EAGLE-Layer 46: Milling) in mehreren Durchgängen empfehle ich den folgenden Patch: Fixing an Eagle Plugin: pcb-gcode. Die gepatchten Dateien müssen in das pcb-gcode-Verzeichnis kopiert werden. Der entsprechende Pfad muss in EAGLE eingetragen werden, damit das ULP funktioniert. Für das Generieren des G-Codes stehen verschiedene Styles zur Verfügung, ich verwende das Profil Tries to be very compatible (generic), mit dem GRBL keine Probleme zu haben scheint.

Hier gibt’s das englischsprachige Handbuch zu pcb-gcode.

Achtung! Es muss die Option Use simple drill codes angewählt werden, damit die Option Spot drill holes zum Erzeugen von Bohrzentrierungspunkten korrekt funktioniert, sofern dies gewünscht ist!

Für den Fall, dass ein Backup erstellt werden soll, finden sich die im pcb-gcode Setup vorgenommenen Einstellungen übrigens im settings-Verzeichnis. Meine Settings lassen sich hier herunterladen:

Download “Selbstbau-CNC-pcb-gcode-Settings” Selbstbau-CNC-settings-pcb-gcode-3.6.2.4-patch.zip – 16-mal heruntergeladen – 7 KB

In den DRC-Regeln von EAGLE habe ich im Grunde alles auf 16 mil (0,4064 mm) Minimalgröße gesetzt. Die Einstellungen lassen sie hier herunterladen:

Download “Selbstbau-CNC-EAGLE-DRU” Selbstbau-CNC-EAGLE-DRU.zip – 17-mal heruntergeladen – 1.017 B

Achtung! Der G-Code für die Platinenkontur (mill) berücksichtigt offenbar nicht den Versatz zur restlichen Platine (etch). Der Werkstück-Nullpunkt muss vor dem Fräsen der Platinenkontur also manuell um den entsprechenden Abstand verschoben werden!

Achtung! Im EAGLE-Board sollte Isolate der Groundplane auf 0 gesetzt werden, wenn in pcb-gcode Isolation: Single pass gewählt wird! Ansonsten bleiben unter Umständen vermehrt feinste Kupferstege zwischen benachbarten Leiterbahnen übrig.

Ich war übrigens überrascht, dass ich mit einer Vorschubgeschwindigkeit von 1000 mm/min — für Prototypen-Qualität — noch relativ akzeptable Ergebnisse erzielt habe! Die Frästiefe habe ich auf 0,1 mm gesetzt und einen 30° / 0,1 mm-Gravierstichel verwendet. Immer darauf achten, einen „frischen“, spitzen Gravierstichel zu verwenden! Hier ist eine gute Lupe zur optischen Inspektion des Werkzeugs sehr hilfreich.

Allgemein werde ich noch etwas mit den Mikroschritt-Einstellungen spielen müssen. Außerdem muss ich noch herausfinden, inwiefern ich das bestehende Gewindespiel noch etwas weiter minimieren kann.

Z-Probing (AutoLeveler)

Vor dem eigentlichen Isolationsfräsen muss das Höhenprofil der Platine abgetastet werden, um überall eine gleichmäßige Frästiefe zu erreichen. Obwohl die Z-Probing-Funktion (AutoLeveler-Plugin) von UGS Platform angeblich verbuggt ist, hat sie in meinem Fall gut funktioniert.

Zuerst wird der Nullpunkt des Werkstücks gesetzt, indem die untere linke Ecke für den Top-Layer bzw. die untere rechte Ecke für den Bottom-Layer der Platine angefahren wird. Zum Ermitteln der Z0-Höhe fahre ich immer solange in 0,1 mm-Schritten nach unten, bis sich ein Stück Papier zwischen Werkzeug und Werkstück einklemmen lässt — danach fahre ich dann wieder um einen einzelnen 0,1 mm-Schritt nach oben.

Dann wird der Abtastbereich manuell zugewiesen oder bereits der gewünschte G-Code geladen und Use Loaded File angewählt, um die Dimensionen des geladenen Layouts zu übernehmen.

Achtung! Top- und Bottom-Layer sind in X-Richtung gespiegelt! Für eine Europlatine sollte der Abtastbereich also für den Top-Layer auf X = 5…155 mm bzw. für den Bottom-Layer auf X = -5…-155 mm gesetzt werden, außerdem Y = 5…95 mm.

Dann wird das Z-Maximum etwas reduziert (auf z.B. 1…2 mm), dann wird Scan Surface angewählt und abschließend wird Apply to Gcode angeklickt. Je nach Größe des Boards kann die Resolution noch verändert werden, z.B. auf ein 15 mm-Raster für die Testpunkte.

Für meinen dritten Test zum Platinenfräsen habe ich meine Einspannvorrichtung nicht verwendet, sondern eine Europlatine (Fotoplatine, da ich nichts anderes im Haus hatte) direkt mit doppelseitigem Klebeband an 6 Punkten auf der Opferplatte fixiert, da ich ganz bis an den Rand fräsen musste:

Achtung! Wenn doppelseitiges Klebeband verwendet wird, muss die Platine bereits beim ersten Versuch absolut akkurat ausgerichtet werden, da Nachkorrigieren schwierig ist! Ich überlege mir, die Tasche in der oben genannten Einspannvorrichtung noch tiefer abzusenken und mit seitlichen „Fingernuten“ auszustatten, welche das Einspannen und vorallem die Entnahme vereinfachen sollten. So könnte die Platine recht präzise exakt vertikal in die Tasche eingelassen werden.

Den Probe-Kontakt zum Z-Leveln habe ich über eine Metallklammer herstellt. An der entsprechenden Stelle habe ich den Fotolack abgekratzt. Nicht vergessen, vor Start des AutoLevelers den elektrischen Durchgang zu prüfen! Die Spitze des Gravierstichels sticht Fotolack einfach durch, sodass man Fotoplatinen ohne vorherige Behandlung Leveln und Fräsen kann — erst ganz zum Schluss erfolgt dann eine Reinigung der Platine mit Spiritus oder Aceton.

Bohrdaten

Achtung! Beim Bohren gibt es noch eine winzig kleine Schwierigkeit: In einem Layout sind meist verschiedene Bohrerdurchmesser vorhanden. pcb-gcode packt alle Bohrlöcher zusammen in eine drill-Datei und gruppiert diese nach den jeweiligen Durchmessern. Zwischen den Gruppen generiert es sogenannte Tool Change-Kommandos, speziell das Kommando M06. Es dient dazu, die CNC-Steuerung solange zu stoppen, bis der Bediener das Werkzeug gewechselt hat und die Maschine danach durch einen Tastendruck wieder freigibt. GRBL versteht dieses Tool Change-Kommando allerdings nicht!

Daher habe ich für meinen dritten Test zum Platinenfräsen und -bohren die entsprechenden Tool Change-Kommandos manuell aus der Datei entfernt und einfach alle Löcher mit einem Bohrer (0,9 mm Durchmesser) gebohrt, auch wenn im EAGLE-Board ein anderer Durchmesser vorgesehen war. Die wenigen größeren Löcher habe ich dann nachträglich per Hand aufgebohrt.

Hierfür werden Blöcke der folgenden Art einfach gelöscht (von mir zur Erklärung nachträglich kommentiert):

M05                  <- Spindel abschalten
G00 Z25.4000         <- Zur Tool Change-Position fahren (erst Z)
G00 X0.0000 Y0.0000  <- Zur Tool Change-Position fahren (dann XY)
M06 T03  ; 3.2000    <- Das Tool Change-Kommando, welches GRBL nicht kennt
G00 Z1.0000          <- Wieder bis kurz über das Werkstück fahren
M03                  <- Spindel einschalten
G04 P4.000000        <- Spindel anlaufen lassen
Hinweis In der Drill Rack File (im settings-Ordner) von pcb-gcode lassen sich verschiedene Bohrer sowie deren Einsatzbereich innerhalb eines Minimal- und Maximaldurchmesserbereichs zu definieren. Hier könnte man ansetzen, um zumindest nur einen Bohrer für alle Löcher zu erzwingen. Dann müsste man nur noch ein (das initiale) Tool Change-Kommando herauslöschen.

Übrigens habe ich pcb-gcode auf eine Bohrtiefe von 2,2 mm konfiguriert, sodass ich auch ohne erneutes Z-Leveling nach dem Isolationsfräsen sicher immer durch die Platine komme; wenn die Kupferfläche nicht mehr durchgängig ist, kann der Bohrer an einer ungünstigen Abtastposition, an der kein Kontakt herrscht, „ins Leere“ fahren, abbrechen und die Platine ruinieren.

Simulation des G-Codes

Unter Umständen lohnt es sich, den generierten G-Code zu simulieren, bevor dieser auf der realen Maschine ausgeführt wird. Für diesen Zweck eignet sich z.B. die Open Source-Software CAMotics, welche die erzeugten Fräserbewegungen in Echtzeit darstellt und so eine visuelle Überprüfung des Fräsprogramms erlaubt. Ich empfehle, eine ältere Version (z.B. 1.0.0) zu installieren, falls Probleme mit OpenGL auftreten oder der anscheinend erst kürzlich implementierte Abfragedialog beim Schließen des Programms zu sehr nervt.

Ergebnisse und Fazit

Die überwiegend chinesischen Mechanik-Produkte locken mit günstigen Anschaffungspreisen; da hierbei jedoch keine besondere Qualitätskontrolle zu erwarten ist, sollte man sich der teilweise erforderlichen Nachbearbeitung bewusst sein.

Auch das Anzeichnen, Bohren und Nachkorrigieren der Löcher zur Montage von Gleitlagern und Siebdruckplatten eine mühselige Arbeit. Aber da das Henne-Ei Problem mit der Fertigstellung dieser CNC-Fräse nun endlich gelöst ist, können alle weiteren Projekte dieser Art wenigstens computergesteuert realisiert werden! 🙂

Insgesamt habe ich ca. ein halbes Jahr (mit viel Unterbrechung und an nur wenigen Abenden in der Woche) an der CNC gebastelt und habe dafür knapp 550 € gelöhnt, inklusive einer Erstausstattung mit Fräsern und Bohrern. Mit einer Grundfläche von 50 cm x 60 cm (Tiefe meines Basteltisches) und einem Arbeitsbereich von ca. einer DIN-A4-Seite bietet die Fräse für meine Zwecke einen guten Kompromiss aus Stellplatz und maximaler Größe des zu bearbeitenden Werkstückes (Holz, Alu, Platinen).

Die Steifigkeit des Aufbaus ist meines Erachtens sehr gut — das schlägt sich natürlich auch im Gewicht der Maschine wieder. Das hohe Gewicht hat aber auch den Vorteil einer besseren Vibrationsdämpfung. Die Lautstärke der Maschine hält sich tatsächlich in Grenzen, zumindest seitdem ich die China-Frässpindel und die federverspannten Spindelmuttern montiert habe.

Alles in allem bin ich mit dem Projekt äußerst zufrieden und freue mich auf die nachfolgenden Basteleien, welche mithilfe dieser CNC realisiert werden. Updates poste ich natürlich hier!

Ein Kommentar

  1. Ich schaue mich derzeit nach CNC Fräsen um. Derzeit bestelle ich noch meine Bauteile über eine CNC Lohnfertigung. Mir fehlt bislang die Expertise in diesem Bereich zu arbeiten. Vielen Dank für das Vorstellen der Modelle und für die aufschlussreichen Fotos und Videos.

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.