Eine CNC-Steuerung mit PIC zu entwickeln, ist ein anspruchsvolles, aber sehr lehrreiches Projekt: Sie lernen, Schrittmotoren präzise zu takten, Achsen zu synchronisieren, Beschleunigungsrampen sauber zu berechnen und gleichzeitig Endschalter, Not-Aus und Kommunikation zuverlässig zu handhaben. Gerade Schrittmotoren sind im Hobby- und Semi-Profi-CNC-Bereich beliebt, weil sie ohne Positionssensoren wiederholgenau arbeiten können – vorausgesetzt, die Ansteuerung ist sauber, die Mechanik passt und die Firmware erzeugt zeitlich stabile Step-Pulse. Ein PIC-Mikrocontroller eignet sich dafür gut, weil er Timer, Interrupts und deterministische Echtzeitverarbeitung mitbringt und sich in C (XC8/XC16/XC32) oder Assembler effizient programmieren lässt. Entscheidend ist dabei die Architektur: Der PIC sollte nicht „Motorstrom regeln“, sondern Step/Dir-Signale hochpräzise erzeugen und die Bewegungsplanung (G-Code-Interpretation, Segmentierung, Lookahead) in sinnvolle Schichten trennen. Je nach Leistungsanspruch kann ein PIC die komplette CNC-Logik übernehmen oder als Echtzeit-Pulsgenerator dienen, während ein PC/Host die Bahnplanung liefert. In diesem Artikel erfahren Sie, wie Sie Schrittmotoren mit PIC-basiertem Timing präzise ansteuern, welche Treiberkonzepte sich bewähren, wie Sie Jerk- und Beschleunigungsprofile implementieren und welche typischen Fehler (Ruckeln, Schrittverluste, Resonanzen) Sie mit einem robusten Design vermeiden.
Grundprinzip: Step/Dir statt „eigene H-Brücke“
Für CNC-Projekte hat sich die Step/Dir-Schnittstelle etabliert: Der Mikrocontroller liefert pro Achse ein STEP-Signal (ein Puls entspricht einem Schritt bzw. Mikroschritt) und ein DIR-Signal (Richtung). Die eigentliche Leistungsansteuerung übernimmt ein Schrittmotortreiber, der Stromregelung, Mikroschritt-Interpolation und Schutzfunktionen realisiert. Das reduziert Komplexität, erhöht Zuverlässigkeit und erleichtert den Aufbau erheblich.
- Vorteil: PIC muss „nur“ präzise Pulse erzeugen, nicht die Motorphasen mit PWM in Echtzeit regeln.
- Vorteil: Treiber bieten Strombegrenzung, Übertemperatur- und Überstromschutz.
- Vorteil: Mikroschritte reduzieren Geräusch, Resonanzen und verbessern Oberflächenqualität.
Als typische Treiber für Step/Dir finden sich z. B. A4988 oder DRV8825 im Einstiegsbereich sowie moderne Trinamic-Treiber (z. B. TMC2209) für leiseren Lauf und erweiterte Diagnosefunktionen. Einstiegsreferenzen sind die jeweiligen Datenblätter und Produktseiten: Allegro A4988 (Produktinfo/Datenblatt), TI DRV8825 und Trinamic/ADI TMC2209.
PIC-Auswahl: Welche Familie passt für eine CNC-Steuerung?
Für eine CNC-Steuerung zählt weniger „maximale Rechenleistung“, sondern stabile Timer, ausreichende I/O-Pins und eine saubere Interrupt-Architektur. Die Wahl hängt stark davon ab, ob der PIC nur Pulse ausgibt oder zusätzlich G-Code parst und eine Bedienoberfläche bereitstellt.
- PIC16/PIC18: geeignet für 2–3 Achsen mit moderater Stepfrequenz und schlanker Firmware; ideal als reiner Pulsgenerator oder für kleine Plotter/Gravierer.
- PIC24/dsPIC: mehr Performance und bessere Eignung für komplexere Bahnplanung, feste Punktarithmetik und mehrere Achsen.
- PIC32: komfortabel für umfangreiche Protokolle, Pufferung, Lookahead und zusätzliche Features (Netzwerk/USB), wenn die Echtzeit-Parts trotzdem timergetrieben bleiben.
Für die Entwicklung sind MPLAB X und die XC-Compiler der Standardweg: MPLAB X IDE und MPLAB XC Compiler (XC8/XC16/XC32).
Mechanik trifft Firmware: Schritte pro Millimeter berechnen
Eine CNC ist nur so präzise wie die Umrechnung zwischen gewünschtem Weg und erzeugten Step-Pulsen. Der wichtigste Parameter ist Steps/mm. Er ergibt sich aus Motorschritten, Mikroschritt-Einstellung und Mechanik (Spindelsteigung oder Riemen).
Beispielrechnung für eine Spindelachse
Für einen typischen 1,8°-Schrittmotor (200 Vollschritte/Umdrehung) mit Mikroschritt
Bei
Stepfrequenz und Vorschub: Wie schnell müssen die Pulse sein?
Aus Steps/mm und gewünschtem Vorschub ergibt sich die nötige Stepfrequenz. Das ist entscheidend für Timerdimensionierung, Interruptlast und die Wahl des PIC.
Mit
Treiberanbindung: Signalpegel, Timing und Entkopplung
Step/Dir-Treiber erwarten definierte Pegel und Mindestpulsbreiten. Prüfen Sie im Datenblatt die Anforderungen für STEP-High-Zeit, STEP-Low-Zeit und Setup-Zeiten für DIR. Viele Treiber arbeiten mit 3,3 V oder 5 V kompatiblen Eingängen, aber nicht alle. Planen Sie außerdem ein sauberes Signalrouting ein, damit die Pulse nicht durch Störungen verfälscht werden.
- Level-Shifting: falls PIC mit 3,3 V arbeitet und Treiber 5 V benötigt (oder umgekehrt).
- Saubere Masseführung: Digitale Signale getrennt von Motorstrompfaden führen, Sternpunkte nutzen.
- Schirmung/EMV: Motorleitungen verdrillen, ggf. Ferrite, ausreichende Entkopplung nahe Treiber.
- Enable/Reset: Treiber-Enable für Not-Aus und Fehlerzustände vorsehen.
Firmware-Architektur: Echtzeit-Pulsung und Planung trennen
Eine robuste PIC-CNC-Firmware trennt in der Praxis zwei Ebenen:
- Echtzeit-Ebene: Timer-ISR erzeugt Step-Pulse und führt Achsen synchron; diese Ebene muss deterministisch und kurz sein.
- Planungs-/Kommunikationsebene: G-Code-Parsing, Befehlswarteschlange, Lookahead, UI und Protokolle laufen außerhalb der kritischen ISR.
Diese Trennung verhindert typische Probleme wie Schrittverluste durch serielle Empfangsroutinen, LCD-Updates oder komplexe Berechnungen im Interruptkontext.
Warum die ISR kurz bleiben muss
Jeder Step-Puls ist ein zeitkritisches Ereignis. Wenn die ISR zu lange läuft oder durch andere Interrupts ausgebremst wird, entsteht Jitter. Dieser Jitter kann sich als unruhiger Motorlauf, Resonanzanregung oder sogar Schrittverlust bemerkbar machen. Der sichere Ansatz ist: ISR macht nur „nächstes Ereignis“ (Pulse setzen/löschen, Zähler aktualisieren, ggf. nächste Achse aktivieren) – und die großen Entscheidungen liegen in vorberechneten Strukturen.
Mehrere Achsen synchronisieren: DDA/Bresenham für Linearbewegungen
Eine CNC fährt selten nur eine Achse. Bei Geraden muss die Achsbewegung synchron sein, damit die Bahn stimmt. Klassisch löst man das mit einem digitalen Differentialanalysator (DDA) oder einem Bresenham-ähnlichen Verfahren: Eine Achse wird als „Master“ mit der höchsten Schrittzahl betrachtet, die anderen Achsen werden über Fehlerakkumulatoren nachgezogen.
- Master-Achse: erhält bei jedem Tick die höchste Schrittfrequenz.
- Slave-Achsen: erzeugen Step-Pulse, wenn der Fehlerakkumulator eine Schwelle überschreitet.
- Vorteil: sehr effizient, integerbasiert, ISR-freundlich.
Dieses Prinzip ist in vielen CNC/Plotter-Firmwares etabliert; als konzeptioneller Einstieg kann ein Blick auf die GRBL-Dokumentation helfen (auch wenn GRBL typischerweise auf AVR läuft, sind die Bewegungsprinzipien übertragbar): GRBL Projekt (GitHub).
Beschleunigungsrampen: Ohne Rampen ruckelt es und Schritte gehen verloren
Schrittmotoren können nicht beliebig schnell von 0 auf hohe Frequenzen springen, weil Drehmoment, Trägheit und Mechanik Grenzen setzen. Deshalb braucht eine CNC-Steuerung Rampen: Beschleunigen, konstante Geschwindigkeit, Abbremsen. In der Praxis sind zwei Profile üblich:
- Trapezprofil: lineare Beschleunigung, einfache Implementierung.
- S-Kurve (Jerk-limitiert): weichere Übergänge, weniger Vibrationen, bessere Oberflächen – aber mehr Rechenaufwand.
Trapezprofil: Kerngrößen und Plausibilitätscheck
Wenn Sie eine Beschleunigung
Der Beschleunigungsweg
Diese Plausibilitätsrechnung ist wichtig, weil kurze Segmente (z. B. viele kleine G-Code-Linien) sonst nie die Zielgeschwindigkeit erreichen. Dann muss Ihre Planung automatisch eine passende Spitzenfrequenz wählen.
Pulse sauber erzeugen: Timer-Compare statt „GPIO toggeln nach Gefühl“
Die zuverlässigste Methode ist ein Hardwaretimer im Compare/Match-Modus: Der Timer löst exakt dann einen Interrupt aus, wenn der nächste Step stattfinden soll. In der ISR setzen Sie STEP kurz aktiv und planen die Rücknahme (oder erzeugen den Puls über zwei Compare-Events). Alternativ kann ein Output-Compare-Modul (bei passenden PICs) Pulse sogar nahezu hardwaregestützt erzeugen, während die Firmware nur die Zeitabstände nachlädt.
- Konstante Pulsbreite: unabhängig vom Berechnungsaufwand.
- Geringer Jitter: weil die Zeitbasis hardwaregetrieben ist.
- Skalierbarkeit: mehrere Achsen, solange die Ereignisrate beherrschbar bleibt.
Endschalter, Homing und Not-Aus: Sicherheitslogik früh einplanen
Auch eine DIY-CNC braucht Sicherheitsmechanismen. Diese sollten nicht „später irgendwie“ ergänzt werden, weil sie die gesamte Architektur beeinflussen.
- Endschalter (Limit Switches): pro Achse min/max; idealerweise entprellt und mit Störfestigkeit (RC, Schmitt-Trigger, abgeschirmte Leitungen).
- Homing: definierter Referenzfahrt-Algorithmus (schnell anfahren, zurück, langsam anfahren) für reproduzierbare Nullpunkte.
- Not-Aus: hardwareseitig Treiber-Enable trennen; softwareseitig in einen sicheren Zustand wechseln und Bewegung sofort stoppen.
Für Homing und Limits ist eine klare Priorität wichtig: Sicherheitsereignisse müssen Bewegungslogik übersteuern. Praktisch heißt das: Limit-Interrupts dürfen die Step-Erzeugung stoppen, ohne auf „normale“ Parsing-Schleifen zu warten.
Kommunikation: G-Code annehmen, puffern und in Segmente zerlegen
Viele CNC-Steuerungen nehmen G-Code über UART/USB-Serial entgegen. Für PIC-basierte Systeme ist UART oft der Einstieg; bei PIC32 sind USB-CDC oder Netzwerk denkbar, wenn die Echtzeit-Schicht davon entkoppelt bleibt.
- Ringbuffer: Empfangsdaten in einen Buffer schreiben, Parsing im Hauptloop.
- Planner-Queue: Bewegungssegmente vorplanen, damit der Step-Generator nie „leerläuft“.
- Flow Control: klare Rückmeldungen (OK/ERROR) und ggf. Pufferstände, damit der Host synchron bleibt.
Als allgemeine Referenz für G-Code-Grundlagen (Befehlsklassen, Modalität) eignet sich ein neutraler Überblick: G-Code Überblick.
Typische Probleme bei Schrittmotoren und wie Sie sie reduzieren
- Resonanzen und „Rattern“: Mikroschritt erhöhen, Beschleunigung reduzieren, Mechanik prüfen, Step-Jitter minimieren.
- Schrittverluste: zu aggressive Rampen, zu hohe Endgeschwindigkeit, unzureichendes Drehmoment, Versorgungseinbruch am Treiber.
- Ungenaue Maße: Steps/mm falsch, Spiel/Backlash, elastische Riemen, lockere Kupplungen.
- Flächen mit Wellen: ruckelige Bahnplanung, zu kleine Segmente ohne Lookahead, Jerk-Spitzen.
- Störungen/Fehltrigger: Endschalterleitungen, EMV vom Motorstrom, fehlende Massekonzepte.
Praxis-Setup: Minimaler Hardwareaufbau für 3 Achsen
Ein bewährtes Startsetup, das schnell zu Ergebnissen führt und trotzdem professionell erweiterbar ist:
- PIC (z. B. PIC18/PIC24/PIC32): genügend I/O für 3× STEP, 3× DIR, 3× ENABLE, Endschalter, Not-Aus, UART.
- 3 Treiber-Module: A4988/DRV8825/TMC2209 je nach Anspruch.
- Stabile Motorversorgung: ausreichend Stromreserve, saubere Masse, Pufferelkos nahe den Treibern.
- Logikversorgung: getrennt geregelt, gut entkoppelt, gemeinsame Masse definiert (Sternpunkt).
- Endschalter: NC-Verdrahtung (Fail-Safe), Pull-ups, Entprellung/Störschutz.
Outbound-Links für Tooling, Treiber und Grundlagen
- MPLAB X IDE (Microchip)
- MPLAB XC Compiler (XC8/XC16/XC32)
- A4988 Stepper Driver (Allegro)
- DRV8825 Stepper Driver (Texas Instruments)
- TMC2209 Stepper Driver (Trinamic/Analog Devices)
- GRBL (Bewegungsplanung/Interpreter-Prinzipien)
- G-Code Grundlagen (Befehlsüberblick)
IoT-PCB-Design, Mikrocontroller-Programmierung & Firmware-Entwicklung
PCB Design • Arduino • Embedded Systems • Firmware
Ich biete professionelle Entwicklung von IoT-Hardware, einschließlich PCB-Design, Arduino- und Mikrocontroller-Programmierung sowie Firmware-Entwicklung. Die Lösungen werden zuverlässig, effizient und anwendungsorientiert umgesetzt – von der Konzeptphase bis zum funktionsfähigen Prototyp.
Diese Dienstleistung richtet sich an Unternehmen, Start-ups, Entwickler und Produktteams, die maßgeschneiderte Embedded- und IoT-Lösungen benötigen. Finden Sie mich auf Fiverr.
Leistungsumfang:
-
IoT-PCB-Design & Schaltplanerstellung
-
Leiterplattenlayout (mehrlagig, produktionstauglich)
-
Arduino- & Mikrocontroller-Programmierung (z. B. ESP32, STM32, ATmega)
-
Firmware-Entwicklung für Embedded Systems
-
Sensor- & Aktor-Integration
-
Kommunikation: Wi-Fi, Bluetooth, MQTT, I²C, SPI, UART
-
Optimierung für Leistung, Stabilität & Energieeffizienz
Lieferumfang:
-
Schaltpläne & PCB-Layouts
-
Gerber- & Produktionsdaten
-
Quellcode & Firmware
-
Dokumentation & Support zur Integration
Arbeitsweise:Strukturiert • Zuverlässig • Hardware-nah • Produktorientiert
CTA:
Planen Sie ein IoT- oder Embedded-System-Projekt?
Kontaktieren Sie mich gerne für eine technische Abstimmung oder ein unverbindliches Angebot. Finden Sie mich auf Fiverr.

