You are here

Projekt 20 - CNC Fräse

Für einfache Prototypen von elektronischen Schaltungen verwendet man oft Lochraster-Platinen. Um mit diesen Platinen einen sauberen Aufbau zu erreichen, muss man während dem Löten immer genau überlegen, wie man die Bauteile platziert und die Leitungen am besten führt. Boards mit professionell gefertigten Leiterplatten sehen meistens besser aus. Bei professionell gefertigten Leiterplatten verlängert sich die Designphase, da die Leitungsführung bereits während dem Routing festgelegt wird. Damit reduziert sich die Lötarbeit zu einfachem Einlöten von Bauteilen.

Da professionell gefertigte Leiterplatten für einfache Hobby-Projekte zu teuer wären und ich keine Chemikalien verwenden möchte, bleibt nur eine weitere Möglichkeit - eine CNC Fräse.

 

Überblick

Eine Computer-gestützte Fräse benötigt folgende Komponenten:

  • einen Frästisch, damit das zu bearbeitende Stück in X, Y und Z-Richtung verschoben werden kann
  • eine Spindel, die die Fräsarbeiten übernimmt
  • eine Steuerbox und Schrittmotoren
  • und einen Computer mit geeigneter CNC Software

Als Basisgerät verwende ich eine Proxxon MF70. Dieses Gerät ist eine fertig montierte einfache Fräse mit Handkurbeln. Damit habe ich einen Frästisch mit einer Arbeitsfläche von 134mm x 48mm und einer vertikalen Verstellmöglichkeit von 83mm. Pro Umdrehung einer Handkurbel verändert sich die Tisch-Position um 1mm. Des Weiteren ist auch eine Spindel mit variabler Drehzahl fix montiert.

Damit der Tisch gesteuert werden kann, werden die Handkurbel durch Schrittmotoren ersetzt. Da die verwendeten Schrittmotoren 100 Schritte pro Umdrehung benötigen, fährt man pro Schritt 1/100mm. Die Ansteuerung der Motoren übernehmen L297/298 ICs, welche mit dem Parallel-Anschluss des Computers verbunden sind. Auf dem Computer läuft LinuxCNC.

 

Komponenten

Stück Beschreibung Typ
1 Frästisch mit Spindel Proxxon MF70
3 Schrittmotoren QSH-4218-41-10-035
1 Montagematerial für Schrittmotoren Aluwinkel + Kleinteile
1 Netzteil für Steuer-Elektronik und Motoren EI60 25VA 230V 24V, 7824A, TMA 2405S
1 Steuer-Elektronik L297, L298
6 End-Taster  
1 Not-Aus-Taster  
2 Relais für Spindelversorgung ALE14B24
1 Computer mit LPT Schnittstelle  

 

Netzteil

Für die Versorgung der Elektronik und der Motoren verwende ich einen eigenen Aufbau. Die 230V-AC Netzspannung wird mit einem Transformator EI60 25VA 230V 24V auf 24V-AC und über einen Vollweg-Gleichrichter und Kondensatoren auf ca. 34V-DC transformiert. Diese Spannung wird direkt für die Schrittmotoren verwendet. Für die 24V Relais verwende ich einen 7824A Regler. Die 5V IC-Versorgung wird mit TMA 2405S Reglern erzeugt. Da die 5V Regler den Ausgang vom Eingang isolieren, muss man sämtliche DC-Grounds miteinander verbinden.

 

 

Ein 5V Strang wird von den Schrittmotor-Treiber-ICs (max. 80mA für L297 und max. 36mA für L298) und ein paar Pull-Ups (30mA für 6 Stück 1k) belastet. Der maximale Strombedarf von 146mA ist somit unterhalb dem maximal erlaubten Ausgangsstrom (200mA) des 5V Reglers TMA 2405S. Ebenso ist die kapazitive Belastung mit ca. 33uF im erlaubten Bereich (max. 220uF).

Der 24V Strang wird durch die 5V Regler (max. 55mA pro Regler) und durch die beiden Relais (je 17mA bei einer Spule mit 1440R) belastet. Der maximale Strombedarf von 254mA liegt unterhalb 1A des 24V Reglers 7824A. Da sich der Regler bei dieser Belastung bereits stark erwärmt wird ein Kühlkörper benötigt (65°C/W).

Die 34V Versorgung wird durch den 24V Regler (254mA) und den Strömen der Schrittmotoren belastet. Somit sollten die Schrittmotoren maximal 786mA an Strom ziehen um den Transformator nicht zu überlasten (max. 1040mA).

 

Steuer-Elektronik

Die Ansteuerung der bipolaren Schrittmotoren übernehmen die ICs L297 und L298. Der L298 enthält eine H-Brücke um die Phasen in beiden Richtungen mit Strom zu versorgen. Die Freilauf-Dioden sind nicht integriert und müssen noch extern platziert werden. Der L297 übernimmt das Erzeugen der korrekten Signale für den L298. Als Eingangsparameter erhält er Steuersignale (Richtung und Schritt) und das Stromsensor-Signal. Die Arbeitsweise kann durch zusätzliche Steuerleitungen verändert werden. Bei meinem Aufbau verwende ich Halb-Schritte und "Phase-chopping". Der Halb-Schritt-Modus fügt zwischen zwei Vollschritten noch einen weiteren Schritt ein. Der "Phase-chopping"-Modus gibt an, wie die Stromregelung vorgenommen wird. In diesem Modus wird nur der untere Transistor ausgeschaltet, sobald der Soll-Strom erreicht ist. Somit sinkt der Strom in den Phasen des Motors nur langsam. Im "Inhibit-chopping"-Modus werden beide Transistoren ausgeschaltet und der Strom sink schneller.

Damit die Spindel über den Computer ein- und ausgeschaltet werden kann, werden zwei Relais (L, N) mit einem FET geschaltet. Beide FETs werden mit dem selben Signal angesteuert.

Da die parallele Schnittstelle nur eine begrenzte Anzahl an Eingängen besitzt, werden die Endschalter einer Achse kombiniert. Somit ergeben sich vier Eingangs-Signale: X-Ende, Y-Ende, Z-Ende und Not-Aus-Betätigt. Die Endschalter werden so verwendet, dass sie im Normal-Zustand geschlossen sind. Somit wird im Falle eines Drahtbruches auch gestoppt.

 

 

Für die Schrittmotor-Treiber werden Bauteile laut der der Tabelle unterhalb benötigt. Damit ich keine eigene Print anfertigen musste, bestellte ich mir bereits fertige von http://www.robotikhardware.de.

Anzahl Referenz Wert Beschreibung
1 C1 3n3 10V Keramik Kondensator
1 C2 100n 10V Keramik Kondensator
1 C3 33u 10V Elko
1 C4 100n 60V Kermik Kondensator
1 C5 2m2 60V Elko
6 R1-R6 1k Widerstand
1 R7 6k2 Widerstand
1 R8 22k Widerstand
2 R9, R10 R56 Leistungswiderstand
1 RV1 10k Poti
8 D1-D8 BYV27 Diode
1 IC1 L297 Schrittmotor-Controller
1 IC2 L298 Vollbrücken-Treiber

 

Software

Die Steuerung auf der Computer-Seite übernimmt ein Linux Program LinuxCNC (http://www.linuxcnc.org/). Die Software generiert die notwendigen Steuersignale, welche über die parallele Schnittstelle ausgegeben werden. Des Weiteren verarbeitet sie G-Code und stellt die Fräsdaten grafisch dar.

Die Grafik unterhalb stellt die Pinbelegung dar. Prinzipiell können die Pins in der Software frei konfiguriert werden.

Die nächsten Printscreens stellen die gewählten EMC-Parameter dar. Die parallele Schnittstelle liegt auf der Adresse 0x378. Die Schrittpulsdauer und die Zwischenzeiten wurden auf 10us gesetzt. Die Voreinstellungen für L297 konnten nicht verwendet werden, da vor dem Motorcontroller noch etwas langsamere Transistoren platziert wurden.

Die Schritt-Signale mussten nicht invertiert werden. Die Richtungs-Signale wurden nach einigen Tests so konfiguriert, damit der Tisch in die richtige Richtung fährt (bei diesem Aufbau: Y, Z Richtung negiert). Der Not-Aus Eingang musste auch noch invertiert werden.

Die Motoren haben eine Schrittweite von 1.8°. Somit benötigt man für eine volle Umdrehung 200 Schritte. Betrieben werden sie im Halbschrittmodus. Eine komplette Umdrehung der Spindel bewegt den Tisch um 1mm.

Konfiguration Konfiguration 

Da Layout Programme meistens keinen G-Code direkt erzeugen können, benötigt man noch ein Konvertierungs-Tool. Verwendet man KiCad, so kann man pcb2gcode verwenden. Verwendet man Eagle, so gibt es ein "user language program" (ULP), das die Brd-Dateien nach G-Code konvertiert (PCB-GCODE).

 

G-Code Überblick

Um die erzeugten G-Code Dateien etwas lesen zu können, hier ein kleiner Überblick verschiedener G-Code Befehle. Ausführlichere Liste vorhandener Befehle finden man im englischen Wikipedia.

G-Code Beschreibung
A absolute oder relative Positionsangabe A-Achse (Rotationsachse um X)
B abs. oder rel. Positionsangabe B-Achse (Rotationsachse um Y)
C abs. oder rel. Positionsangabe C-Achse (Rotationsachse um Z)
F Angabe Vorschub (mm/min)
I Angabe Kreismittelpunkt - X Position für Rotationsbewegungen
J Angabe Kreismittelpunkt - Y Position für Rotationsbewegungen
R Angabe Kreisradius für Rotationsbewegungen
S Angabe Spindel Geschwindigkeit (rpm)
T Auswahl Werkzeug
X absolute oder relative Positionsangabe X-Achse
Y abs. oder rel. Positionsangabe Y-Achse
Z abs. oder rel. Positionsangabe Z-Achse
   
G00 schnelle Positionierung (ohne Bearbeitung, nicht immer auf direktem Weg)
G01 lineare Positionierung (mit Bearbeitung)
G02 Rotationsbewegung im Uhrzeigersinn
G03 Rotationsbewegung gegen Uhrzeigersinn
G20 Angaben in Zoll
G21 Angaben in mm
G28 Rückkehr zur Nullposition
G90 Angaben in Absolutpositionen
G91 Angaben in Relativpositionen
G92 Setzen der Nullposition
   
M02 Programmende
M03 Spindel ein (im Uhrzeigersinn)
M04 Spindel ein (gegen Uhrzeigersinn)
M05 Spindel aus

 

Beispiele

G00 X10.0 Y20.0 Z30.0

lineare Positionierung mit X, Y und Z Angaben

G00 X10.5

lineare Positionierung mit X Angabe (Y, Z Position bleibt gleich)

G02 I10 J10 X.. Y..

zirkuläre Positionierung im Uhrzeigersinn mit Angabe des Kreismittelpunktes und des Endpunktes (Punkt am nächsten zu X, Y Position)

G02 Befehl

G03 I10 J10 X.. Y..

zirkuläre Positionierung gegen Uhrzeigersinn mit Angabe des Kreismittelpunktes und des Endpunktes (Punkt am nähesten zu X, Y Position)

G03 Befehl

G02 R10 X.. Y..

zirkuläre Positionierung im Uhrzeigersinn mit Angabe des Radius und des Endpunktes (positiver Radius verwendet kürzere Kreisbahn, Mittelpunkt wird automatisch bestimmt)

G02 Befehl

G02 R-10 X.. Y..

zirkuläre Positionierung im Uhrzeigersinn mit Angabe des Radius und des Endpunktes (negativer Radius verwendet längere Kreisbahn, Mittelpunkt wird automatisch bestimmt)

G02 Befehl