Das Arduino CNC Shield (meist in der Version 3.00, ist ein Klassiker in der Maker-Szene. Es dient als Schnittstelle zwischen der Software auf deinem Computer und der Hardware deiner CNC-Maschine oder deines 3D-Druckers. Auch mit Ardublock lässt sich dieses kleine Wunderwerk ganz einfach mit wenig Zeilen ansteuern.
Das CNC Shield: Die Hardware
Das Shield ist eine Aufsteckplatine für den Arduino Uno. Es bietet Steckplätze für bis zu vier Schrittmotortreiber.
- Achsen: Unterstützt X, Y, Z und eine vierte Achse (A), die als Klon einer anderen Achse fungieren oder über einen eigenen Pin gesteuert werden kann.
- Anschlüsse: Es bietet dedizierte Pins für Endstopp-Schalter (Endstops), Spindelsteuerung (An/Aus, Richtung) und Kühlmittel. Diese Anschlüssen können natürlich aus Softwareseit benutz werden.
- Stromversorgung: Das Shield benötigt eine externe Stromquelle (meist 12V - 36V), um die Motoren anzutreiben, diese Stromquelle kann auch für den Arduino über VIN genutz werden, wenn die Spannung zwischen 7 und 12 liegt.
Verwendung der CNCShield.h Bibliothek
Im Gegensatz zu GRBL, das den Arduino komplett "übernimmt", nutzt du bei der CNCShield.h klassische Arduino-Logik. Das ist ideal, wenn du das Shield nicht für eine Fräse, sondern für ein einfaches Projekt (z.B. eine automatische Futtermaschine oder einen Kameraslider) nutzt.
Beispiel-Code, für copy&paste
- Code im globalen einfügen:
- #include <CNCShield.h>
- CNCShield cnc_shield;
- StepperMotor *motorX = cnc_shield.get_motor(0); // der Name nach * ist frei Wählbar, ich habe motorX gewählt, weil (0)dies die X Achse ist
- StepperMotor *motorY = cnc_shield.get_motor(1); // der Name nach * ist frei Wählbar, ich habe motorY gewählt, weil (1) dies die Y Achse ist
- StepperMotor *motorZ = cnc_shield.get_motor(2); // der Name nach * ist frei Wählbar, ich habe motorZ gewählt, weil (2) dies die Z Achse ist
- Code im Setup Teil einfügen
- cnc_shield.begin();
- Code im Loop Teil einfügen
- cnc_shield.enable(); // Schaltet die Stromzufuhr zu den Motoren ein,
- cnc_shield.disable(); // Schaltet die Stromzufuhr zu den Motoren aus, gegen Hitzeentwicklung im Stillstand
- motorX->step(200,CLOCKWISE); // Zahl = Schritte danach Drehrichtung
- motorX->step(700,COUNTER); // Zahl = Schritte danach Drehrichtung
- motorX->set_speed (300); // Geschwindigkeit mit der der Motor dreht
Wichtiger Hardware-Hinweis: Die Jumper
Bevor du die Bibliothek nutzt, solltest du die Jumper unter den Motortreibern setzen. Diese bestimmen das Microstepping. Ohne Jumper macht der Motor volle Schritte, was oft laut ist und vibriert. Mit Jumpern (z.B. auf 1/16 Schritt) läuft der Motor wesentlich flüssiger.
| MS1 | MS2 | MS3 | Microstep Resolution |
| Full Step | |||
| J | Half Step | ||
| J | Quarter Step | ||
| J | J | Eighth Step | |
| J | J | J | Sixteenth Step |




