Elektronik_Header_3Lüftersteuerung mit ESP-01

 

Mini-Joystick

Mit Einführung der Anbindung eines Joystick an OpenCNCPilot bin ich der Meinung, dass die ursprüngliche Implementierung zwar funktional aber für Neueinsteiger in Sachen OCP mit Joystick unglücklich gelöst ist. Die Signale der Sticks und Schalter werden mit einem vielpoligen Kabel über einen 9-poligen Stecker ins Gehäuse der CNC-Steuerung geführt und erst dort mit einem Arduino Nano verarbeitet.

Viel schicker, weil über ein Standard USB-C-Kabel an den Steuerrechner angeschlossen, kommt der Mini-Joystick um die Ecke. Er basiert auf einem Seeeduino XIAO SAMD21 und zwei JoyCon TMR Sticks und hat als zusätzliche Bauteile nur noch zwei LEDs mit ihren Vorwiderständen an Bord.

Mini-Joystick Oberseite

Die Doppellochreihe in der Mitte ist keine Absicht, hilft aber beim Ausrichten des XIAO auf den Lötpads :)

Von unten macht die Schaltung ein wenig mehr her.

Mini-Joystick Unterseite

Der XIAO sitzt leider etwas außermittig und die aufgelöteten Befestigungsschrauben für die Sticks könnten auch noch ein bisschen besser ausgerichtet werden, aber ich habe das Gerät quasi mit der heißen Nadel gestrickt, weil ich dringend eine Bedienmöglichkeit für meine Mini-CNC brauche.

Der Anschluss der Sticks an den µC war eine echte Herausforderung, da die FFC-Kabel mit 3 mm Breite und 5 Leitungen eine passende Buchse mit 0,5 mm Pitch erfordern. Damit ich dieses feine Raster mit der CNC-Fräse bearbeiten kann, muss ich einen Gravierstichel mit 0,1 mm Spitze und 10° Spitzenwinkel nutzen. Diese feine Schneide nimmt so gut wie kein Material weg, sondern bricht das Kupfer eher weg statt es zu schneiden. Im Ergebnis sieht das dann so aus:

Alle Fräsjobs abgearbeitet

Insbesondere die Schrift gefällt mir überhaupt nicht, aber das nur am Rande...

Noch ein bisschen interessanter war das Auflöten der FFC-Buchsen. Hier komme ich selbst mit 3-fach vergrößernder Leuchtlupe und feinster SMD-Lötspitze an meine Grenzen. Die beiden äußeren Lötpads sind genau 3 mm voneinander entfernt, jedes Pad ist 0,5 mm breit und sitzt im 0,5 mm Raster.

FFC-Buchse verlötet        (Click auf das Bild für größere Darstellung)

Entsprechend liederlich sehen die Lötungen aus, ich war froh, als ich sich unweigerlich ergebende Kurzschlüsse zwischen den Pads mit einer Stahlnadel wieder trennen konnte, ohne die winzigen Pads abzureißen. Es hat geklappt und die Prüfung auf Verbindung zur Leiterbahn und auf Isolation gegenüber den Nachbarpads mit dem Durchgangsprüfer war erfolgreich. Hätte ich statt dem verwendeten 0,5 mm SMD Lot meine Rolle mit 0,3 mm Lot gefunden, wäre mir das vermutlich leichter gefallen :)

Die Befestigung der Sticks mittels Messingschrauben M1,2 x 5:

Messingschrauben M1,2 x 5

Messingschrauben aufgelötet

Als nächstes bekommt der XIAO ein Kaptonband unterlegt um Kurzschlüsse mit den Leiterbahnen zu vermeiden.

XIAO SAMD21 mit Kaptonfolie

Das Layoutsymbol war in der Library leider für die durchkontaktierte Variante vorgesehen, weshalb ich die genutzten Anschlüsse nach außen verlängert habe, um die castellated vias (halbe, aufgesägte Durchkontaktierungen, super geeignet, um eine Platine als Bauteil auf einer anderen Platine aufzulöten) gut löten zu können. Die Verlängerungen hätten gerne etwas kürzer ausfallen können, aber besser zu lang als zu kurz.

Stickbefestigung per Schraube, XIAO und LED aufgelötet

Auf diese Weise hätte es auf der Oberseite der Platine keine überflüssigen Löcher geben müssen... :)

Momentan arbeitet der Joystick noch unverpackt. Die Designunterlagen - Schaltplan und Layout - im Format EAGLE V7.7.


Damit aus der Sammlung von Bauteilen und Platine ein Joystick für eine CNC-Fräse wird, braucht es noch ein wenig Programm.

Ich habe meine vorhandene Firmware V5.9.2 des alten Joystick von allem Ballast befreit und die Bedienung so geändert, dass alle Funktionen mit den in den Sticks integrierten Tastern erledigt werden können. Der rastende Schalter zum Aktivieren der Joystickfunktion wurde durch eine sequentielle Logik für den Taster im X/Y-Stick ersetzt. Der Taster im Z-Stick ersetzt den separaten Taster. Die rote LED wird hier, wie die grüne LED schon immer, durch einen Ausgang des µC angesteuert. Das gibt mir die Möglichkeit, bestimmte Zustände des Joystick zu visualisieren.

So hat der SAMD21 z.B. kein echtes EEPROM, ein nichtflüchtiges Speichern von Informationen erfolgt im Flash mittels EEPROM Simulation, wie wir das schon vom ESP8266 kennen. Die Simulation hat den Nachteil, dass beim Aufspielen einer neuen Firmware auch der EEPROM-Inhalt gelöscht wird.

Konkret wird also die Kalibrierinformation für die zwei Sticks gelöscht, mit neuer Firmware muss also immer neu kalibriert werden.

Um auf diesen Zustand aufmerksam zu machen, flackern die beiden LEDs im uninitialisierten Zustand hektisch vor sich hin. Jetzt kann man entweder über eine Terminal-Applikation auf dem Rechner oder per 3 Sekunden Druck auf beide Stick-Taster die Kalibrierroutine starten (das Flackern der LEDs stoppt dann), beide Sticks ein paar Mal im Kreis rühren und zum Abschließen den X/Y-Taster einmal kurz drücken. Die Kalibrierwerte werden im Flash gespeichert und bis zum nächsten Flashvorgang verwendet.

Um den Joystick zur Steuerung der Maschine zu verwenden, den X/Y-Taster kurz drücken. Die rote LED leuchtet jetzt konstant und über USB werden die Stickdaten passend für OpenCNCPilot ausgegeben.

Mit aktivierter roter LED kann, wie gehabt, eine der beiden horizontalen Achsen stillgelegt werden. Dazu den Taster am Z-Stick festhalten und den X/Y-Stick kurz ein wenig auslenken. Als Ergebnis blinkt die grüne LED langsam, die Achse, die bei der Initialisierung ausgewählt wurde, kann weiterhin bewegt werden, die jeweils andere horizontale Achse ist blockiert. Z geht immer. Aufheben dieses Betriebszustands durch erneuten Druck auf die Z-Taste.

Mit einem Druck auf die X/Y-Taste wird der Joystick wieder deaktiviert, die serielle Kommunikation zum Rechner wird unterbrochen. Als visuelle Rückmeldung pulsieren jetzt beide LEDs gegenphasig langsam im 4-Sekunden-Rhythmus.

Diese Firmware, Version V6.0.3, gibt es hier zum Download als Sourcecode. Um den SAMD21 mit der Arduino IDE programmieren zu können, muss über die Preferences der Arduino IDE folgender Eintrag hinzugefügt werden:

https://files.seeedstudio.com/arduino/package_seeeduino_boards_index.json

Dann fehlt nur noch die Library FlashStorage by Various für die EEPROM Simulation. Nicht von der ebenfalls vorhandenen Library FlashStorage_SAMD by Christian Maglie ablenken lassen. Die richtige Version “...by Various” stammt zwar ursprünglich ebenfalls von Maglie, wurde aber von Khoi Hoang überarbeitet und hat ein inkompatibles API.

Hinweis
Im Netz gibt es Hinweise und Anleitungen, wie man dem SAMD21 doch persistentes EEPROM beibringen kann. Entweder kann man im Linker-Skript passende Festlegungen treffen, oder über die NVM-User-Row einen Speicherbereich festlegen, der sich dann wie ein echtes EEPROM verhält.

Beide Ansätze haben allerdings Nachteile. Der Weg über den Linker kann dann zu Problemen führen, wenn parallel zu Visual Studio mit Visualmicro auch mit der Arduino IDE gearbeitet wird. Die Linker-Skripte sind Bestandteil der Board-Support-Packages. Wenn das Package später mal aktualisiert wird, sind die Patches weg. Oder VS und IDE beziehen sich auf unterschiedliche Stände des Linker-Skripts- auch problematisch.

Die Fuses zu verändern, bringt die Gefahr mit sich, unbeabsichtigt andere Bits in der User-Row zu verändern, was zum Bricking des SAMD21 führen kann. Die verschiedenen Upload-Tools ignorieren diese Bits manchmal, was den Inhalt des EEPORM dann trotzdem löscht und die verwendete Library ignoriert ggf. die Angaben der Bits und löscht dann nicht Reihenweise sonder doch Blockweise.

Alles in Allem bleibe ich deshalb bei der schnellen und einfachen Methode, die Kalibrierung nach jedem Flashen der Frimware einfach neu zu erstellen und zu speichern.

Update
Neue Firmware V6.0.4 für den Mini-Joystick. Beim Druck auf die Z-Taste ist immer die Z-Achse verlaufen. Fixed


Damit ich nicht immer so aufpassen muss, dass der Mini-Joystick mit dem auf dem Schreibtisch herumliegenden metallischen Gerödel keine Kurzschlüsse auf seiner Unterseite produziert, bekommt er noch ein adäquates Gehäuse verpasst.

Die Konstruktion in Designspark Mechanical.

Mini-Joystick-Gehäuse

Und mit eingebauter Platine

Mini-Joystick-Gehäuse

Das Prachtstück ist fast genau 1 cm hoch und passt prima zu der weißen ASA-Version der Mini-CNC.

Für das Gehäuse gibt es die RSDOC-Datei und die fertige STL für den Slicer.


Um dem geneigten Nachbauer das Gefummel mit den winzigen FFC-Verbindern zu ersparen, habe ich eine weitere Variante entwickelt bzw. implementiert.

 


Beim Aufruf dieser Funktion werden Daten an Google in USA übermittelt. Neben Ihrer IP-Adresse wird auch die URL der besuchten Seite übertragen.
Besucherzaehler

Besucher seit
25.11.2000