Joystick-Steuerung

Im letzten Sommer hat mich der CNC-Fräsen-Virus erwischt und ich habe mir eine LCF-1 ersteigert. Die Mechanik kommt komplett vorgefertigt mit der Post, die Eigenleistung besteht in der Ausrüstung der Fräse mit Motoren, Fräs-Spindel, der zugehörigen Elektrik und deren Steuerung.

Ebay ist hierbei dein Freund, ich habe zusätzlich zur LCF-1 ein Dreierset Stepper-Motoren, ein passendes 36 V Netzteil, ein Set Treiber-Endstufen mit Controller-Platine (im Weiteren “Interface”) sowie ein Spindel-Set mit Inverter und 800 W Spindel erstanden. Die größere Halterung für die 60 mm durchmessende Spindel hat der Hersteller der LCF-1 ebenfalls verkauft und auf Wunsch gleich gegen die original verbaute 43 mm Eurohals-Halterung getauscht. Leider ist dieses Zusatzteil nicht maßhaltig, die Spindel hängt leicht nach vorne.

    Nachtrag:
    Die im November 2015 gekaufte Spindelhalterung hat sich als nicht geeignet für feinere Arbeiten mit der Fräse herausgestellt, wie ich jetzt leider, nach über einem Jahr, feststellen musste. Ich habe damals diesen Mangel versucht mittels eines zwischen Z-Schlitten und Spindelhalter eingelegten Blechstreifens zu beheben, das ist mir aber nur unvollständig gelungen.
    Ich habe also Reinhold Müller, den Hersteller der LCF-1 und des Spindelhalters kontaktiert, der mir freundlicher Weise eine kostenlose Überprüfung und Überarbeitung des nicht maßhaltig gefertigten Spindelhalters anbot. Es folgten weitere Maßnahmen um die Spindel senkrecht zur Bearbeitungsfläche einzustellen.

Wen das Entré mit Aufbau der Fräse und der Steuerung nicht interessiert kommt hier direkt zur Joystick-Steuerung.

Als neues Zuhause für die komplette Elektrik und Elektronik sowie für den Steuerrechner habe ich ein Computergehäuse plus Netzteil besorgt. Damit alle Teile der Fräsen-Ansteuerung Platz im Gehäuse finden, muss das Motherboard vom Typ Mini ITX sein.

Zuerst werden alle Teile für die Ansteuerung der Fräse eingebaut, da dieses Unterfangen mit Bohren und Feilen einher geht. Da würde ein bereits eingebautes Motherboard Gefahr laufen mit Eisenspänen beworfen zu werden.

Hier das Stepper-Netzteil, die drei Endstufen sowie die Interface-Platine. Der rote Netzschalter schaltet alle Teile der Fräsensteuerung zweipolig ab, der Rechner läuft dabei weiter.

Stepper-Treiber + Netzteil

Ebenfalls vorhanden ist ein Notaus-Schalter oben auf dem Deckel des Rechnergehäuses. Dieser Notaus-Schalter sitzt in Serie mit dem Netzschalter und trennt ebenfalls zweipolig. Später habe ich noch drei weitere Kippschalter in den Strompfad gesetzt um die Stepper-Motoren, die Kühlwasserpumpe und die Spindelsteuerung getrennt voneinander einschalten zu können. Die Notwendigkeit hierzu ergab sich im Laufe der Tests für die Joystick-Steuerung. Der Lüfter des Inverters und die Wasserpumpe sind sehr laut und wenn man diese beiden Funktionsgruppen nicht benötigt ist es sehr angenehm, wenn man sie abschalten kann.

Notaus und Einzelschalter

Die Steuerung für die Spindel (Inverter) passt wunderbar in den ausgeräumten Laufwerkskäfig des Rechners. Zur Befestigung habe ich einen Alu-Winkel am hinteren Ende des Käfigs angeschraubt.

Inverter für die Spindel

Die Frässpindel ist eine wassergekühlte Version, weshalb ein 60 Liter Plastikfass mit Aquariumpumpe unter dem Tisch aufgebaut wird. Hier ist die Fräse schon fast fertig aufgebaut und steht an ihrem vorgesehenen Platz:
Wasserbehälte rfür Spindelkühlung

Die Leitungen zwischen Steuerrechner und Motoren sind Ölflex 4x0,75 Kabel von Lapp die an der Fräse in Energieketten geführt werden. Der Übergang von Ölflex auf die Anschlusskabel der Stepper-Motoren findet in kleinen Plastik-Kästchen statt, die mit 4 Schrauben an den Alu-Teilen der Stepper-Halterungen angeschraubt werden. Die 4 Schrauben dienen gleichzeitig der Befestigung der Zugentlastungen und erden den Schirm der Leitungen.
Anschlusskasten für Stepper

Um die Energieketten seitlich an der Fräse führen zu können, wurden Stege aus Alu am Grundkörper angeschraubt:
Energieketten-Führung
Befestigung am Grundkörper der Fräse

Da die Leitungen nach hinten zur Wand von der Fräse weg geführt werden, sich die Energiekette der X-Achse aber ebenfalls nach hinten abrollen soll um den Arbeitsraum zum Hantieren seitlich frei zu halten, mussten alle Leitungen unter der Fräse hindurch nach hinten geführt werden. Um das Ganze aufgeräumt über die Bühne zu bringen wurden neben der X -Achsen Spindel zwei Aluwinkel montiert, auf denen die Leitungen und Schläuche für das Kühlwasser der Frässpindel liegen, ohne Gefahr zu laufen, mit der Spindel zu interferieren.

Kabelführungen unter dem Fräsbett

Hier sind die Energieketten für X- und Y-Achse fertig montiert und alle Kabel sind verlegt. Für die Y-Energiekette wurde ebenfalls eine Führung aus Alu-Winkeln an das Portal geschraubt.

Leitungsführung

Das erste auf der selbst gebauten Fräse erstellte Werkstück ist die Rückwand für das Rechnergehäuse mit Ausschnitten für die verschiedenen Steckverbindungen. Für die Stepper-Motoren habe ich 9polige SUB-D Stecker und Buchsen mit Vollmaterial-Kontakten verwendet. Da die Spindel mit bis zu 400 V betrieben wird, bin ich hier auf einen passenden Hochvolt-Rundsteckverbinder ausgewichen. Die blaue Steckdose versorgt die Kühlwasserpumpe.

Rückwand selbst gefräst
Rückwand selbst gefräst, innen

Auf dem Boden ist der Arduino Nano V3 befestigt der GRBL ablaufen lässt, an der Wand, unterhalb des Motherboard sitzt die Interfaceplatine.

Das Interface war bei meinem Stepper-Endstufen-Set dabei, kann aber über ebay auch einzeln erworben werden.
Fündig wird man z.B. mit den Suchbegriffen “CNC 5 Achse Schrittmotor interface”, es ergeben sich sofort einige Treffer.

Inzwischen gibt es die Version, die ich verwendet habe (die hat zusätzlich Anschlüsse für Koordinatenanzeigen, mehrere schmale weiße Stecker in der Board-Mitte) und ein neuere, kleinere Version.

Wichtig ist, dass neben den Schraubanschlüssen auch der 15polige ”Hand control”-Stecker vorhanden ist, im Bild unten der kleinere Stecker rechts:
CNC 5 Achse Schrittmotor Interface

Die Belegung  dieses Steckers muss dann noch gefunden werden. Bei einigen der Interfaces in ebay findet sich ein Link auf eine Beschreibung, aber leider nicht überall.

Zur Vereinfachung hier die Belegung bei meinem Interface:

15pol_Belegung

Der sicherere Weg ist aber auf jeden Fall, die passende Belegung für das eigene Interface in Erfahrung zu bringen.

Die Bezeichnung der Pins im Stecker ist im Bild unten angedeutet:

Hand-Control_ca_resize

Die drei Enable-Eingänge dürfen nicht zusammen geschaltet, sondern müssen einzeln mit jeweils einem eigenen Pin des Joystick-Controllers angesteuert werden.


Um die Arbeitsfläche auszuleuchten habe ich ein sogenanntes Angel-Eye aus der Fahrzeugtechnik verwendet. Der Ring mit LEDs wird mit doppelseitigem Klebeband an drei Stellen an der Spindelhalterung befestigt. Das doppelseitige Klebeband mit Schaumstoffzwischenlage erlaubt Bewegungen der Halterung, sollte der Spindelmotor mal gelöst werden müssen. So erfährt die Platine unterhalb der LEDs keinen mechanischen Stress.

Beleuchtung mit Angel-Eye


Soweit gediehen ist die Mechanik erst einmal fertig beschrieben, jetzt ein paar Worte zur Softwareumgebung.

Zur Erstellung einer Konstruktion ist ein CAD-Programm notwendig. Ich habe mich auf die von RS components kostenfrei zur Verfügung gestellte Software DesignSpark mechanical festgelegt. Das Programm ist geeignet zur Erstellung von 2D- und 3D-Konstruktionen und kann DXF-Dateien für 2D- und STL-Dateien für 3D-Konstruktionen exportieren.

Mit Estlcam von Christian Knüll steht eine Software zur Verfügung, die die weitere Verarbeitung der von DesignSpark mechanical erzeugten Dateien erlaubt. Estlcam generiert aus den DXF- oder STL-Dateien sogenannten G-Code, der von GRBL verstanden wird. Hat man sich für den Einsatz von Estlcam entschieden, wird eine Gebühr fällig, danach fallen die Nagscreens weg, die bei der Freeware beim Speichern erscheinen und immer längere Pausen aufzwingen.

Ich verwende die Version V8, inzwischen sind einige neuere Versionen vorhanden.
Erfreulich: Ab V10 arbeitet Estlcam auch mit GRBL zusammen, vorher hat Christian ausschließlich seinen eigenen G-Code -Interpreter unterstützt.

Im Übrigen baut Christian coole Funktionen in sein Programm ein. Immer mal wieder reinschauen! :-)

Als dritte Software in der Tool-Kette verwende ich die Freeware SerialComCNC von Ulrich A. Maassen, die neben der Kommunikation zwischen Steuerrechner und Fräse auch das Streamen der G-Code-Folge des CNC-Programms an den Arduino Nano V3 leistet, auf dem die Software GRBL läuft, die die G-Code-Befehle in Schritte und Richtung für die Stepper-Motoren umrechnet. Die Kommunikation zwischen Rechner und GRBL-Controller erfolgt über einen virtuellen seriellen Port per USB.

Als weitere Software verwende ich OpenCNCPilot von Martin Pittermann. Dieses Programm stellt Routinen zur Verfügung, die die Abtastung einer Oberfläche und die anschließende Berücksichtigung dieser Abtastwerte bei vorhandenem G-Code erlaubt. Dieses Verfahren ist besonders sinnvoll, wenn mittels Isolationsfräsen eine Leiterplatte aus kupferkaschiertem Basismaterial hergestellt werden soll.


SerialComCNC unterstützt die manuelle Positionierung der Frässpindel im Arbeitsraum durch Eingabe von Relativkoordinaten, Richtung und Geschwindigkeit für alle drei Achsen, wobei immer zuerst der zurückzulegende Weg sowie die Verfahrgeschwindigkeit voreingestellt wird, bevor der eigentliche Fahrbefehl per Mausclick ausgelöst wird. Mit diesem Verfahren kommt man immer ans Ziel, aber so richtig von der Hand geht es meiner Meinung nach nicht. Hat man einen ausreichend breiten Monitor an seiner Fräsensteuerung, kann man ein sogenanntes JogDial einblenden und damit zumindest eine einzelne Achse halbwegs gefällig bedienen.

Mir schwebte aber eine Steuerung vor, bei der ich alle drei Achsen parallel und vor Allem intuitiv verfahren kann um das Werkzeug z.B. über den Nullpunkt zu setzen oder zum Montieren oder Demontieren des Werkstücks aus dem Weg zu fahren. Auch möglich sind mit der angedachten Joystick-Steuerung einfache Fräsarbeiten, z.B. die rechteckige Kontur einer isolationsgefrästen Platine ausschneiden.

Realisiert habe ich folgende Lösung:

Zwei Joysticks und zwei Schalter sitzen in einem Gehäuse und erlauben die freie Positionierung des Werkzeugs durch Auslenkung der Joysticks. Die Verfahrgeschwindigkeit hängt direkt an der Auslenkung der Joysticks. Die Schalter dienen der gegenseitigen Verriegelung von G-Code-Steuerung und manuellem Verfahren über das oben erwähnte Interface.

Alu-Gehäuse und Einbauteile

Um die aufgeführten Teile in dem Alu-Gehäuse überschneidungsfrei einbauen zu können, habe ich im Vorfeld das Projekt in DesignSpark mechanical modelliert. Das war auch eine gute Fingerübung für mich, da ich bisher noch keine Berührpunkte mit CAD-Programmen hatte.

Gehäuse-Modell

Im Innern, hellgrün eingefärbt, kann man das Teil erahnen, an dem ich die beiden Joystick-Platinen befestigt habe:
Gehäuse halbtransparent

In Natura stellt sich das Ergebnis so dar:

Gehäuse fertig

Die Kunststoffplatte und den POM-Klotz habe ich natürlich mit der Fräse erstellt :-)
Joystick-Gehäusse innen

Hier sind beide Joysticks montiert:
Joysticks montiert

Das Signal für Enable ist Low-aktiv, also habe ich die rote LED im Schalter an P5V angeschlossen und schalte sie durch den Schalter direkt zusammen mit dem Enable-Signal ein. Die grüne LED im Taster wird von einem Ausgang des Arduino geschaltet und signalisiert, wenn Step-Impulse erzeugt werden. Der Taster selbst ist momentan noch ohne Funktion, ist aber bereits an einen Eingang des Arduino verdrahtet.

Joystick + Schalter verkabelt

Joystick-Steuerung betriebsbereit:
Joystick-Gehäuse fertig verkabelt


Das rechnerseitige Ende der Joystick-Steuerung ist ein Arduino Nano V3 der über einen 15poligen D-SUB-Stecker die Signale von den Joysticks und den Schaltern erhält und dessen Ausgänge Step- und Richtungsimpulse für die Stepper -Endstufen liefern, die über die Interfaceplatine an die Stepper-Treiber weiter gegeben werden.

Auch hier wurde wieder die Fräse eingesetzt um per Isolationsfräsen die Leiterplatte zu erstellen, die den Arduino und zwei Pfostenstecker trägt.

Leiterplatte Joystick-Interface

Die Ausführung lässt zu wünschen übrig, da ich keine Tiefenregelung habe und die Spitze des verwendeten Gravierstichels mit ca. 120° viel zu flach ist, aber die Verbindungen sind in Ordnung, die Schaltung funktioniert.

Der Film zeigt wie die Fräse den Bewegungen der Joysticks folgt:

Joystick-Steuerung in Aktion (Film auf Vimeo)
            (Click auf das Bild wechselt zu Vimeo)


Die Rückwand musste sich eine zweite Operation gefallen lassen um den Ausschnitt für den neuen, 15poligen Stecker zu erhalten.

Rückwand mit allen Ausschnitten

Der zweite Arduino sitzt ebenfalls auf dem Boden des Gehäuses, beide Arduinos sind intern am nicht benötigten USB 3 -Anschluss auf dem Motherboard angeschlossen. Die Buchsenleiste passend zum USB 3-MoBo-Stecker hat 10 Kontakte mit 2 mm Pitch. Die Datenleitungen für USB 2.0 werden verwendet, die Signale für USB 3 bleiben einfach unbeschaltet.

Joystick-Steuerung nachgerüstet

    Nachtrag:
    Die Anschlüsse für den GRBL-Arduino und den Joystick-Arduino habe ich über den auf dem Motherboard vorhandenen, nicht benutzten USB 3.0-Anschluss ausgeführt. Dabei habe ich in der Krabbelkiste vorhandene 2 mm Pitch Buchsenleisten verwendet. Das hat für die Steuerung der Fräse ziemlich lange gut funktioniert und die Kommunikation zwischen der Joystick-Steuerung und anderen Programmen (verschiedene Seriell-Konsolen) ebenfalls, obwohl die Steckerleisten nicht besonders fest auf den Kontakten sitzen.

    Kürzlich habe ich mal wieder etwas fräsen müssen und da konnte ich keine Verbindung mehr zwischen SerialComCNC und dem Arduino aufbauen. Erst als ich die beiden USB-Anschlüsse vertauscht habe, funktionierte die Steuerung der Fräse wieder.

    Ok, also habe ich Kontaktprobleme zwischen Steuerrechner und Arduino. Ich habe daraufhin ein normales Adapterkabel von 2x USB 3.0 (die blaue 10 pol Buchse) auf 8 pin Pfostenstecker gekauft, eingebaut und alles ist gut, jetzt auch die Kommunikation zu SerialComInterface.

Das Programm zur Erzeugung der Step- und Direction-Signale anhand der Joystick-Auslenkung ist in C geschrieben. Die serielle Kommunikation zwischen Arduino und Rechner zur Parametrierung der Steuerung basiert auf Arduino-Libs, die Erzeugung der Step-Impulse wurde komplett “zu Fuß” realisiert, da einige benötigte Funktionen von Arduino zu langsam laufen.

Einige Parameter für die Schritt-Erzeugung sind im EEPROM des Arduino abgelegt und können über die USB-Verbindung zur Laufzeit verändert und auch wieder abgespeichert werden. Zur Kommunikation wird ein Terminal-Programm benötigt, das in der Arduino-IDE integrierte Terminal funktioniert zum Beispiel prima. Die serielle Schnittstelle des Arduino läuft mit 57600 Baud, das muss im Terminal-Programm passend eingestellt werden.

Mit Eingabe von “?” wird eine kurze Hilfe ausgegeben.

JoyStep_V5.2 für den Arduino steht hier zum Download bereit.

Die in dem ZIP-Archiv enthaltene INO-Datei muss über die Arduino-IDE compiliert und auf den Arduino geladen werden. Danach müssen zuerst die Parameter im EEPROM abgelegt werden, das erreicht man am Einfachsten durch Aufruf von “defaults” und anschließendes “save”.
Durch Eingabe von “$$” werden die eingestellten Parameter angezeigt.
Jetzt können die Parameter sukzessive verändert werden um die Steuerung an die eigene Fräse anzupassen. Kritisch ist hier z.B. der Wert für die höchste Schrittgeschwindigkeit. Wird dieser Wert zu klein eingestellt, verlieren die Motoren Schritte oder bleiben mit schrillen Tönen komplett stehen. Nicht schön.
Abschließend oder auch zwischendurch nicht vergessen, die gefundenen Parameter wieder mit “save” im EEPROM abzulegen.


Bei Fragen zum Programm oder der mechanischen Ausführung der Joystick-Steuerung oder der Fräse bitte einfach per Mail melden.


Ausblick
Zusammenarbeit zwischen Joystick-Steuerung und SerialComCNC?

Zur Zeit nicht, Ulrich hat sich noch nicht dazu geäußert. Aber die Anzeige von Koordinaten habe ich über SerialComInstruments schon mal realisiert :-)

 

Über eine Suchmaschine hier gelandet? Dann bitte mit Click Navigations Schaltflächen anzeigen

[Home] [Modelle] [Eisenbahn TT] [Was ist neu ?] [Elektronik] [Kontakt] [Links] [Tipps+Tricks]