PC-Mill


PC Mill ist eine Neuentwicklung meiner älteren CNC-Maschine. Während die alte Maschine per umfunktioniertem PC-Druckerport gesteuert wurde und dabei Windows98 benötigte, habe ich die neue Version mit einem Arduino ausgerüstet, um so einfach per USB-Schnittstelle mit jedem PC arbeiten zu können. Auf der PC-Seite verwende ich processing (http://processing.org) um einfach zu einer grafischen Darstellung der Fräskontur zu kommen.

Bild "Elektronik:PCMill_Ueberblick.jpg"  

Bei dieser Gelegenheit habe ich die Mechanik so verstärkt, dass ein (recht schwerer) Kress-Fräsmotor eingesetzt werden kann. Die Y-Achse verfährt den Motor. Hierzu habe ich Linearkugellager auf 16mm Wellen verwendet.

Bild "Elektronik:PCMill_Fraeser.jpg"

Die Hardware


Heute ist es kein Problem, eine Steuerung für drei Schrittmotor-Achsen für weniger als 100 Euro zu erstehen. Da mein Projekt aber über ein paar Feiertage lief, beschloss ich, die Teile zu verwenden, die meine Bastelkiste her gab. 12 BUZ11 MOS-FET Transistoren reichten gerade aus, um die 3x4 Wicklungen der drei unipolaren Schrittmotoren anzusteuern.

Bild "Elektronik:PCMill_Steuerung.jpg"

Das Gehäuse besteht in der Unterkonstruktion aus Holz, der Blechdeckel entstammt einem Videorekorder.
Ein Lochblech aus Aluminium bildet die Rückwand und sorgt dafür, dass die Elektronik gelüftet wird.

Bild "Elektronik:PCMill_SteuerungHinten.jpg"

Ein Schaltnetzteil versorgt die Motorwicklungen mit 5V und das Relais mit 12V. Der Kühlkörper entstammt einer Endstufe für Autoradios.

Bild "Elektronik:PCMill_SteuerungOffen.jpg"

Der Arduino wird über die USB-Schnittstelle vom PC versorgt und ist nur auf der Ground-Seite mit der Leistungselektronik verbunden.
Es werden alle IO Pins des Arduino-Uno verwendet:
12 für die Schrittmotoren
1 für das Relais, mit dem der Fräsmotor ein- bzw. ausgeschaltet wird.
5 für Endschalter (derzeit werden aber nur zwei davon verwendet)

Bild "Elektronik:PCMill_Stepperdriver.png"

Da die PC Software weiß, wie groß der Fräsbereich ist, habe ich zunächst mal auf Endschalter an der maximalen X- bzw. Y-Position verzichtet. Sie werden nur gebraucht, um automatisch zurück zum Nullpunkt zu fahren. Der Nullpunkt der Z-Achse wird manuell angefahren, da hierzu der Fräser auf die Werkstückoberfläche gefahren werden muss. Diese Position hängt davon ab, welcher Fräser verwendet wird und wie er eingespannt ist.
Das Relais schaltet die Steckdose an der Frontseite der Steuerung und schaltet so vor und nach dem Fräsen den Fräsmotor.

Bild "Elektronik:PCMill_Relais.png"

Als Endschalter habe ich Mikroschalter mit Wippe verwendet, die auch aus dem alten Videorekorder stammen.

Bild "Elektronik:PCMill_X-Endschalter.jpg"  Bild "Elektronik:PCMill_Y-Endschalter.jpg"

Die Software

Die Software lehnt sich sehr an der Styroporschneidemaschine an (PC Hotwire). Hier ist es allerdings deutlich einfacher, weil nur aus einer Datei gelesen werden muss und nur zwei statt vier Schrittmotoren gleichzeitig laufen.

Download Version 0.9

PCMill1.0-Download.zip

Download Version 0.9

PCMill0.9-Download.zip
Grundfunktionalität ist implementiert und getestet.



Umbau auf GRBL

Nachdem ich in C-Hack mit einer Stepcraft 840 CNC-Fräse in Berührung kam, gefiel mir meine 2D Fräse gar nicht mehr. Auch die Motoransteuerung mit Festspannung und nicht-differentiell ist nun wirklich nicht Stand der Technik. So war ich auch auf 5V pro Phase limitiert, was zu einem ziemlich bescheidenen Drehmoment führte.

Besser: Pololu Treiber + GRBL

Diese Treiber messen den Wicklungsstrom und schalten ab, wenn er einen Schwellwert erreicht hat. So werden die Motoren im Stillstand permanent getaktet. Auch bei einer Betriebsspannung von 20V bleiben so die Motoren kühl.
Ich habe mich für die Black edition entschieden, da diese durch mehr Kupfer in der Platine besser gekühlt werden: https://www.pololu.com/product/2128

Um es ganz einfach zu machen, habe ich ein Arduino-CNC-Shield verwendet:

Bild "Elektronik:PCMill-GRBL-CNCShield.jpg"

Darauf finden drei der Pololu A4988 Platz und alles ist vorbereitet für die Ansteuerung mit GRBL.
Dadurch brauche ich jetzt die riesige Elektronikkiste nicht mehr und auch die langen Kabel verschwinden. Aus einem Rest Blech habe ich ein Metallgehäuse abgekantet. Wichtig ist auch der Lüfter (siehe unten...)

Bild "Elektronik:PCMill-Blechgehaeuse.jpg"

Zur Spannungsversorgung reicht jetzt ein normales Laptop Netzteil mit 5A. Gut, dass irgendwo immer noch so was herumfliegt. Was mache ich nur, wenn die Netzteile der modernen Laptops zum Alteisen gehören - die haben bei weitem nicht mehr soviel Leistung...

Wenn man es kompakt haben will...

Ja, es sollte sehr schick und kompakt werden. Dieses Designkriterium hat mich allerdings eine Woche Arbeit gekostet.
Denn als alles fertig war, entstanden diese seltsamen Effekte:

Bild "Elektronik:PCMill-GRBL-versetzt.jpg"

Eigentlich soll das eine Halbkugel werden. Im ersten Schritt sind dabei konzentrische, flache Zylinder zu fräsen. Wie man im Bild sieht, sind diese aber versetzt. Ich hatte verschiedene Verdachtsmomente:

Am Ende war's Überhitzung. Wenn die Pololu-Treiber zu warm werden, dann verlieren sie Schritte. Warum sie das machen, wenn die Z-Achse zur nächsten Ebene bewegt wird, ist mir allerdings immer noch unklar. Ein Freund, der das bei seinem selbstgebauten 3D-Drucker genauso beobachtet hatte, half mir hier auf die Sprünge.
Das Foto oben zeigt schon den neuen Aufbau mit Luftlöchern und Mini-Lüfter. Nun funktioniert alles zuverlässig.

Bild "Elektronik:PCMill-GRBL-Halbkugel-gut.jpg"

Was man noch falsch machen kann...

  
Am Anfang hatte ich die Kabel etwas unordentlich verlegt. Dabei wurde einer der Kühlkörper der Treiber auf die Platine gedrückt. Hierbei ist interessanterweise nichts kaputt gegangen, aber die entsprechende Achse lief immer in die gleiche Richtung, egal ob sie positiv oder negativ programmiert wurde. Also aufpassen, das die Kühlkörper isoliert sind und mit nichts in Berührung kommen.

GRBL

Anstelle meiner 2D Software habe ich jetzt den GCODE-Interpreter GRBL eingesetzt. Diesen lädt man in den Arduino und erhält dann eine GCODE-Schnittstelle über USB. Alle maschinenspezifischen Einstellungen lassen sich auch über diese Schnittstelle machen. Den Code muss man nicht verändern. Der Arduino "merkt" sich alles im internen Flash-Memory.

Hier kann man den jeweils aktuellen GRBL Code herunterladen: https://github.com/grbl/grbl

Die PC Software

Den GCODE erzeugt man mit einer CAM Software. Meine bevorzugte Variante ist hier beschrieben: McGyver-Box
Dieser muss dann zum Arduino via USB geschickt werden. Das könnte man sogar mit einem simplen Terminalprogramm machen. Besser ist aber ein GCODE-Sender. wie zum Beispiel dieser hier: https://winder.github.io/ugs_website/  

Bild "PC-Mill-UGS.png"

Natürlich lassen sich auch weiterhin 2.5D Dinge fräsen, wie dieser Motorspant aus FR4.
Bild "Elektronik:PCMill-GRBL-FR4.jpg"