Wireless Control

Allgemein

Beschreibung

Die Wireless bzw. Funk Lösung zur Steuerung einer CNC-Fräse basiert auf zwei Platinen, welche jeweils mit Arduino Mega Mikrocomputern bestückt sind. Diese kommunizieren über den NRF24L01 Chip miteinander und tauschen Daten aus. Das Design des Bedienpanels kann hierbei frei gestaltet werden. Es können je nach Belieben weitere Elemente hinzugefügt oder entfernt werden. Entwickelt wurde das Panel für Estlcam. Es ist aber durchaus denkbar auch andere Software zu verwenden. Ich sitze bereits an einer Integration für LinuxCNC.

In dem nachfolgendem Video stelle ich das Wireless Panel einmal vor und zeige die verschiedenen Funktionen.

Funktionen

  • Drahtlose Kommunikation mittels zweier Arduinos
  • Anschluss über D-SUB 37 direkt an das OPEN-CNC-Shield oder die Tillboard Extension
  • Andere Boards können über ein Breakout Board oder mit dem Extension-Panel angeschlossen werden
  • Anschluss vieler verschiedener Bedienelemente
    • Handrad zum schrittweisen Verfahren der Achsen
    • Analoger Joystick zum Verfahren der Achsen
    • Geschwindigkeitsauswahl(Bis zu 6 Stufen in Estlcam konfigurierbar)
    • Programm Start/Stop
    • Motor Start/Stop
    • Regelung der Vorschubgeschwindigkeit während des Fräsvorgangs
    • Regelung der Spindel Geschwindigkeit während des Fräsvorgangs
    • Stromlos schalten der Motoren(Enable-Anschluss der Stepper Treiber)
    • individuell Konfigurierbares Display, zeigt Standardmäßig den Autosquaring Status der Achsen, sowie den Status der Temperatur Sensoren (Programmierkenntnisse erforderlich, falls individuelle Sachen angezeigt werden sollen)
    • IN15 und IN16 der Steuerung kann geschaltet werden
    • Taster und Poti für Autosquaring
    • Button zum Abnullen der Achsen (Hier bietet sich z.B. der Knopf auf dem 4-Axis Joystick an)
  • 7 digitale Kanäle vom Bedienpanel zum Controller, DTC1-7 genannt. Hier können z.B. Schalter oder Taster angeschlossen welche etwa Relais oder ähnliches schalten
  • 2 analoge Kanäle vom Bedienpanel zum Controller, ATC1 und ATC2. Hier kann an dem Bedienpanel beispielsweise ein Poti angeschlossen werden und am Controller kann das analoge Signal dann abgenommen werden(z.B. Steuerung der Flussmittelgeschwindigkeit am ColdEnd)
  • 4 digitale Kanäle von der Steuerung zum Bedienpanel, DTP1-4. Hier könnte man zum Beispiel eine LED von der Steuerung auch am Panel verfügbar machen.
  • Digitale Kanäle können entweder mit GND oder mit 5-24V ausgelöst werden, dies ist jeweils über einen Jumper wählbar
  • Voraussichtlich auch mit LinuxCNC direkt über USB verwendbar. Hierfür gibt es eine Arduino Bibliothek namens HAL2Arduino. Das ist allerdings noch in der Testphase.

Was brauche ich für welche Funktion?

Hier eine Auflistung, welches Bauteil man für eine Funktion benötigt. Weiter unten gibt es dann eine Übersicht der Bauteile.

FunktionBauteil
Motor Start / Programm StartTaster
Motor Stop / Programm StopTaster (Wird aber nicht benötigt, da man auch einfach nochmal Start drücken kann)
OK(Abnullen)Taster (Kann weggelassen werden, wenn man einen 4-Axis Joystick hat und den Knopf des Joysticks dafür nutzt)
Stufe 1-6Drehschalter für 6 Positionen (Ich habe nur einen für 3 Positionen verbaut – reicht für mich vollkommen)
Auswahl X, Y, ZJeweils einen Taster. Hier ist es sinnvoll einen Taster mit LED zu nutzen, da die LED anzeigt, welche Achse gerade verfahren wird, bzw. ausgewählt ist.
Joystick3- oder 4-Axis analog Joystick (Bei 4-Axis kann der Button zum OK/Abnullen genutzt werden)
HandradHandrad mit 4 Anschlüssen(A, B, VCC, GND). Finde ich überflüssig, wenn schon der Joystick verbaut wird.
Spindel GeschwindigkeitPotentiometer mit 5-10K Ohm
Vorschub GeschwindigkeitPotentiometer mit 5-10K Ohm
AutosquaringTaster, zum Starten von Autosquaring
Autosquaring SpeedPotentiometer mit 5-10K Ohm
Stromlos schaltenSchalter
DisplayOLED Display

Platinen fertigen / besorgen

Falls Du keine Lust hast die Platine und Bauteile selbst zu besorgen ist hier ein kleines Bestellformular: https://forms.gle/eGtfc3Autmp8chfd6.

Möchtest Du die Platine allerdings lieber selbst fertigen ist dies auch möglich. Die Dateien stehen unter der Creative Commons CC BY-NC-SA 4.0 Lizenz und können hier heruntergeladen werden: Gitlab – Timos Werkstatt

Teilelisten:

Hier gehts zu den Teilelisten in Form einer —> Google Docs Tabelle
Über den Reiter oben kann zwischen den verschiedenen Platinen gewechselt werden

Benötigte Bauteile

Die folgenden Sachen werden zur Bestückung der Platinen bzw. Inbetriebnahme des Bedienpanels benötigt.

Bauteil / BeschreibungLink
Powerbank
Ich habe mehrere Powerbanks getestet. Mir war es wichtig, dass diese gleichzeitig geladen werden kann und auch das Panel mit Strom versorgt. Außerdem sollte sie klein sein, damit sie einfach in einem Gehäuse verarbeitet werden kann.
Daher habe ich mich für die verlinkte Entschieden. Diese hat 5000mah, das sollte auch über viele Stunden ausreichend Energie sein. Es gibt sicherlich auch viele andere funktionale Powerbanks, aber dann bitte beim Gehäuse aufpassen, dieses habe ich extra auf die verlinkte Powerbank ausgelegt.
Mega pro mini

Dieser wird zwei mal benötigt. Einmal für die Wireless Panel Platine und einmal für die Wireless Adapter Platine. Hiervon schwirren mehrere Versionen im Netz herum. Unbedingt darauf achten, dass ein USB Anschluss verbaut ist und im Pinout 3,3V zur Verfügung stehen.





NRF24L01

Dieses Funkmodul ermöglicht die Kommunikation der beiden Arduinos und wird zwei mal benötigt.




MCP4728

Da der Arduino nur PWM Signale herausgeben kann und keine echten analogen Signale übernimmt dieser Chip die Funktion. Er wird zweimal benötigt.


Taster

Gibts in verschiedenen Ausführungen. Generell können welche mit oder ohne LED genommen werden. Es gibt sie auch in vielen verschiedenen Durchmessern. Ich habe gute Erfahrung mit 19 oder 22 mm Durchmesser gemacht. Möchte man kleinere sollten die aber einen erhöhten Kopf haben, ansonsten braucht man sehr kleine Finger um die vernünftig zu betätigen. LED Taster können entweder mit oder ohne Vorwiderstand genutzt werden. Falls es welche mit LED sein sollen, unbedingt darauf achten, dass diese mit maximal 5V betrieben werden können! 12V Leds funktionieren nicht, oder leuchten schwach.


Drehschalter

Ich würde für die Geschwindigkeitseinstellung einen mit 3 Positionen nehmen. Das sollte reichen. Mit ein wenig Beleuchtung wirds natürlich hübscher. Bei Beleuchtung immer auf max 5V achten. Ansonsten sollte dieser ein „Latching“ Switch sein, bedeutet er bleibt in der Position und springt nicht automatisch zurück.


Joystick

Ich habe einen 4 Axis Joystick mit 10K Ohm, 5K Ohm sollten auch aber funktionieren.


Handrad

Das gibts in mit verschiedenen Durchmessern. Ich besitze die 60 mm Variante. Wichtig ist, dass es 4-polig ist und auf 5V ausgelegt ist.


Potentiometer

Für die analogen Einstellungen. Es sollten welche mit 5-10K Ohm genutzt werden.


Display

Ich nutze ein 4 oder 8 Zeilen OLED Display mit 128×32 oder 128×64 Pixel. Je nachdem welche Größe man gerne hätte. Das Display muss im Arduino Code einmal ausgewählt werden.


Schalter

Hier hat man im Grunde die freie Wahl.


Temperatur Sensoren

Hier müssen DS18B20 zum Einsatz kommen, ansonsten muss der Ardunino Code angepasst werden. Theoretisch kann man davon auch mehrere in Reihe schalten, da die mit einem 1-Wire Bus ausgelsen werden. Es gibt die in zwei Varianten, einmal als nacktes Bauteil und einmal eine wasserdichte Version. Je nachdem wo der eingesetzt werden soll kann man sich die passende Variante bestellen. Zum Auslesen und Anzeigen mehrerer Sensoren muss ebenfalls das Arduino Programm bearbeitet werden.

Gehäuse

BildBeschreibung
Gehäuse für den 3D-Drucker. Hier kann die unter den Bauteilen Verlinkte Powerbank direkt eingebaut werden. Ich habe außderdem das Fusion360 Projekt hochgeladen, damit hat man die Möglichkeit noch anpassungen zu machen und evtl. ein anderes Layout für den Deckel zu wählen.
Zu finden hier auf Thingiverse.
Hier ein Remake von Carsten Schröder. Ebenfalls zu finden auf Thingiverse.
Ein Remake von Michael Kaufmann.
Diese kann hier als zip-Datei heruntergeladen werden: LINK

Weiteres zur Funkstabilität und Reichweite

Der Wireless Adapter sitzt bei mir in einem Schaltkasten, zusammen mit der Steuerung, dem Spindel FU usw. Die Entfernung zum Panel sind immer etwa 2-3 Meter Luftlinie.

Vor dem letzten Software-Update hatte ich dauernd mit Unterbrechungen und Aussetzern zu kämpfen. Ab der Software Version 2.1 bleibt die Verbindung auch stabil, wenn ich 10 Meter weit weg bin.

Wer allerdings trotzdem noch Probleme hat, kann folgendes versuchen:

Diese Module funktionieren noch ein ganzes Stück besser als die NRF24L01+

BildLink
Mit den E01-ML01D Modulen habe ich wesentlich bessere Erfahrungen gemacht, was Reichweite und Stabilität angeht. Die können einfach gegen die NRF24L01+ Module ausgetauscht werdenAliexpress
Sollten die Module oben immernoch nicht ausreichen kann man das Funk-Modul am Wireless Adapter nochmal durch eines mit Antenne austauschen – NRF24L01 PA LNA. (Bitte beachten, dass dann im Arduino Code noch „LNA_ANTENNA_CONNECTED“ gesetzt werden kann, um das Signal weiter zu verstärken).
Es sollte eigentlich reichen, nur das Modul am Adapter auszutauschen.
Amazon

Mein empfohlenes Setup wäre, falls genug Platz vorhanden ist: Am Wireless Adapter ein NRF24L01 PA LNA mit Antenne und an dem Wireless Panel ein E01-ML01D. Damit läufts bei mir reibungslos und stabil.

Zusammenbau / löten

Hierfür gibt es eine extra Seite → Wireless Control Zusammenbau

Dokumentation

Hierfür gibt es eine extra Seite → Wireless Control Dokumentation

21 Gedanken zu „Wireless Control“

  1. Hi there. I’m building my first MPCNC Primo and want to use this type of controller. I LOVE this..:)

    Anyway, I have the Rambo 1.4 and was wondering if this controller would be possible to use or if I need to purchase the Tillboard and not use the Rambo 1.4 to control my MPCNC Primo.

    I’m new to all of this so any help will be greatly appreciated. I love your work.

    Thank you.

    Lara

    Antworten
  2. Hallo schickes Bedienteil,

    wieviel Strom zieht denn das Bedienteil so, also wie lange reichen denn die 5000mAh?
    Ja ich weiss das es von der Benutzung, wie oft, wie lange, wieviel usw usw, abhängig ist,aber so nen groben Anhaltspunkt gibt es doch bestimmt, oder?

    Antworten
  3. Hallo,

    bei meinem Bedienteil leuchten die Taster Programmstart und Spindel immer. Ist das so gewollt, oder hab ich da einen Fehler?

    Antworten
    • Ist so gewollt. Leider kommuniziert Estlcam nicht zurück, ob das Programm gestartet ist oder die Spindel läuft. Daher ist das dynamisch nicht so einfach umzusetzen.

      Antworten
  4. Hallo Timo,

    vielen Dank für die schnelle Lieferung der Bausätze.
    Beim kompilieren des wirelessAdapterSketch gibt es folgende Fehlermeldung beim kompilieren, was muss ich tun, damit der Sketch kompiliert werden kann ?

    exit status 1

    ‚class TwoWire‘ has no member named ’setWireTimeout‘; did you mean ’setTimeout‘?

    Antworten
  5. Hallo Timo,

    an dieser Stelle möchte auch ich Danke sagen für diese tolle Steuerung und die Möglichkeit der kabellosen Fernbedienung. Das ist wirklich genial, was Du da auf die Beine gestellt hast.

    Beim Bau des Handbedienteils habe ich mal versucht, eine etwas andere Bauform zu wählen, die meines Erachtens auch recht gut in der Hand liegt. Der Verfügbare Platz ist dort natürlich ziemlich knapp und der Zusammenbau mit etwas Fummelei verbunden. Als Anregung für andere Bastelbegeisterte habe ich mal zwei Fotos vom Ergebnis verlinkt.
    https://rebs.biz/files/Handbedienteil.jpg
    https://rebs.biz/files/Handbedienteil2.jpg

    Zur Stromversorgung wird hier übrigens eine vom Volumen her sehr kleine Powerbank mit 2500 mAh verwendet.

    Antworten
  6. Hallo Timo

    IIch habe mit dem Wireless Adapter Sketch ebenfalls das Problem mit folgender Fehlermeldung beim kompilieren

    ‚class TwoWire‘ has no member named ’setWireTimeout‘; did you mean ’setTimeout‘?

    Kannst du da vielleicht etwas Licht ins dunkel bringen ?

    Ansonsten ist alles Top

    Antworten
  7. Hi Timo,
    auf der Panel Platine sind zwei Eingänge mit IN16 beschriftet, ich nehm an, der eine ist IN15, kannst du uns sagen welcher das ist, der neben dem Display Anschluss oder der neben dem Feedrate Poti?

    Antworten
  8. Hallo Timo,

    ich habe bei dir das Gesamte Set (Extension, Wireless und alle Bauteile für die Fernbedienung) gekauft.
    Nun wollte ich nach dem löten die Software aufspielen.
    Allerdings erkennt mein PC keinen der Mega Pro Mini.
    Es lässt sich in der IDE kein Port auswählen.
    Was mache ich falsch.

    Danke dir.

    Antworten

Schreibe einen Kommentar