Mach3-CNC-Handrad-Tastatur

Handräder und Fernsteuerungen für Mach3-gesteuerte CNC-Fräsen gibt es wie Sand am Meer. Einige Varianten werden über den Parallelport, andere per USB angebunden. Parallelport-Varianten haben oft nur sehr wenige Tasten, per USB angebundene Varianten benötigen meist ein Mach3-Plugin und gelten als nicht besonders dynamisch. Das hier vorgestellte Bastelprojekt kombiniert beides und kann von den jeweiligen Vorteilen profitieren. Es benötigt kaum Hardware (nur ein billiges Evaluation board), erfordert kein Plugin auf dem Steuerrechner und sendet bis zu 27 frei konfigurierbare, priorisierbare und gruppierbare Tastenkombinationen.

Testaufbau (Foto)
Testaufbau mit Holz-Frontplatte zum Testen der Tastenanordnung (Zum Vergrößern auf das Bild klicken)

Übliche Handräder, Fernsteuerungen oder Bedienterminals für Mach3 lassen sich in drei Kategorien aufteilen (eine Übersicht über die Eingabemethoden in Mach3 findet sich im Mach3-Wiki[1]):

Das hier vorgestellte Bastelprojekt fällt die die Kategorie der Tastatur-Emulationen. Es benötigt kaum Hardware (nur ein billiges Evaluation board), erfordert kein Plugin auf dem Steuerrechner und sendet bis zu 27 frei konfigurierbare, priorisierbare und gruppierbare Tastenkombinationen.

Technisch gesehen handelt es sich bei diesem Projekt lediglich um ein USB-HID-Gerät, das eine Tastatur emuliert und Tastenkommandos und Tastenkombinationen an den anschlossenen PC sendet.

Hardware

USB-Eval-Board
Sehr preisgünstiges Mini-Eval-Board (Zum Vergrößern auf das Bild klicken)

Als Entwicklungsplatine wird eine Leiterplatte verwendet, die unter dem Namen „STM32 minimal development board” für weniger als 5€ erhältlich ist. Sie ist mit einem STM32F103C8T6, einer USB-Buchse und einem 8 MHz-Quarz bestückt. Durch den geringen Preis kann sie nachher einfach als Zielschaltung weiterverwendet werden und die bestückte MCU ist für den Einsatzzweck als Tastatur mehr als ausreichend. Ein Jumper erlaubt die Abschaltung des USB-Pull-Ups, was das Debuggen deutlich erleichtert, da nicht immer der USB-Stecker für ein Wiederverbinden mit dem PC herausgezogen werden muß.

Eval-Board mit Tastern
Mini-Prototypenaufbau (Zum Vergrößern auf das Bild klicken)

Obwohl die Entwicklungs­platine anscheinend in großen Stückzahlen angeboten wird, scheint ein Schaltplan nicht einfach beschafftbar zu sein. Dankens­werter­weise hat sich schon ein anderer Bastler die Mühe gemacht, den Schaltplan der kleinen USB-Platine herauszuzeichnen, dabei aber leider den JTAG-Stecker außen vor gelassen[7]. Es besteht allerdings eine gewisse Ähnlichkeit zum STM32-H103 Development Board von Olimex[8]. Die USB-Schutzbeschaltung besteht nur aus zwei Längswiderständen, und die Masseflächen sind nicht mit Masse verbunden — aus EMV-Gesichtspunkten ist diese Leiterplatte also nicht gerade vorbildlich.

Alle I/O-Pins des STM32F103C8T6 sind auf Stiftleisten geführt. Zieht man die durch USB, JTAG, Reset und anderweitig vorbelegten Pins ab, bleiben 25 I/O-Pins für Taster und Signal-LEDs (Caps Lock, Num Lock, Scroll Lock). Entfernt man den Uhrenquarz und dessen Bürdekondensatoren, sind es sogar 27 frei belegbare Pins.

In der bislang getesteten Umgebung reichen die internen Pull-Up-Widerstände der MCU völlig aus, um einen zuverlässigen Betrieb ohne Falscherkennung von Tasten zu gewährleisten. Damit reicht es als äußere Beschaltung sogar aus, mit Tastern die Anschlußbeinchen des Evaluation Boards gegen Masse zu ziehen.

Firmware

Die Implementierung basiert auf dem ARM-GCC und der USB-FS-Library[9] von STMicroelectronics. Der Quelltext und ein fertiges Binary können unten heruntergeladen werden.

Es erstaunlich, wie wenige Open-Source-Projekte sich mit einer Tastatur-Emulation beschäftigen. Es gibt ein Projekt bei Sourceforge[10], daß ebenfalls eine USB-HID-Tastaturemulation auf Basis eines STM32F103 bietet, als Schwerpunkt aber eine LED-Steuerung ist. Bei diesem Projekt ist leider sehr wenig als Vorlage für eine eigene Implementierung verwendbar, da eine recht alte Version der USB-Library für die STM32 Verwendung findet und das Projekt leider auch nicht dokumentiert ist. Auf Arduino-Basis gibt es eine Tastaturemulation[11], die auf einem AVR aufsetzt. Für die Implementierung einer USB-Tastatur auf einem STM32 ist also etwas tiefere Beschäftigung mit dem Thema notwendig.

Ein gute Einführung in USB bietet der Online-Artikel „USB in a nutshell”[12]. Erstaunlich gut lesbar ist auch die Spezifikation für USB-HID-Devices[13]. Um sie und um die „HID Usage Tables”[14] führt vermutlich bei der Implementierung einer USB-Tastatur kein Weg herum. Die USB-FS-Library selbst ist kaum dokumentiert, dafür jedoch die Beispiele, die der Library beiliegen. Der Anfang einer Dokumentation ist im Wiki des Mikrocontroller-Forums[15] zu finden.

Mit dem USB Tree View[16] lassen sich die Device-Descriptoren der eigenen Implementierung überprüfen. Außerdem hilft dieses hervorragende kleine Programm sehr gut bei der Fehlersuche. Noch detailliertere Informationen und eine live-Ansicht der Busnachrichten liefert die kommerzielle Software USBlyzer[17]. Der USB-HID-Demonstrator[18] von STMicroelectronics funktionierte bei mir nicht. Es ist zu vermuten, daß dieses betagte Programm nicht für 64-Bit-Windows geeignet ist.

Mit einer Web-Applikation von Microsoft[19] läßt sich die fertige Mach3-CNC-Tastatur testen.

Einbindung unter Mach3

Für die Einbindung der Tastatur-Komponente unter Mach3 wurde ein angepaßtes Screenset entworfen, das die benötigten Tastenkürzel bereitstellt.

Die Einbindung der Handrad-Komponente erfolgt wie üblich über das Parallelport-Interface oder wie beim einfachen Handrad über die Erweiterungsbuchse.

Downloads

ZIP Firmware

Links

DL1DOW German Amateur Radio Station