Der hier vorgestellte Mikroschrittzähler kann in die Schrittmotor- oder Servo-Leitung einer CNC-Steuerung mit Schritt-Richtungs-Signal eingeschleift werden, um die Soll-Position jederzeit ablesen zu können. So lassen sich entweder gefahrlos Tests durchführen — ohne dass sich eine Achse bewegt — oder Schrittverluste gezielt ermitteln.
Es gibt viele Gelegenheiten, bei denen man überprüfen will, welche Soll-Position ein Motortreiber einer CNC-Steuerung wirklich vorgegeben bekommt. Stimmt die Anzeige auf dem Bildschirm? Treten Schrittverluste oder gar sporadische Pulse auf der Leitung auf? Wie kann ich ein Testprogramm durchfahren lassen, ohne dass die Steuerung es mitbekommt und ohne dass sich die Achse bewegt?
Der hier vorgestellte Schrittzähler lässt sich in die Steuerleitung zwischen einer CNC-Steuerung und dem Motortreiber einschleifen, und zeigt in Echtzeit die aktuelle Soll-Position, die aktuelle Taktflanke und die Gesamtzahl aller gezählten Flanken an.
Der Schrittzähler unterstützt Takt-Richtungs-Steuersignale mit TTL-Pegeln mit bis zu 500 kHz. Das ist ausreichend für alle mir bekannten Schrittmotor-Endstufen und viele Servosteuerungen. Wie bei allen meinen Schrittmotor-Projekten entspricht die Belegung dem Benezan-BOB als „Hausstandard” (siehe auch hier und hier). Im Gegensatz zu den anderen Projekten ist die Belegung allerdings nur per Software vorkonfiguriert und lässt sich beliebig anpassen. Für integrierte Steuerungen, bei denen sich die Schrittmotortreiber direkt auf der Steuerplatine befinden (z.B. bei 3d-Druckern) ist ein Adapter mit Tastspitzen erforderlich. Leitungen müssen nicht aufgetrennt werden.
Besitzt die Steuerung die genannte Pinbelegung, kann auf ein Netzteil verzichtet werden, weil die Schaltung sparsam genug ist, um direkt über die Steuerleitung mit +5V und GND versorgt werden zu können. Wird ein Netzteil benötigt, können zwei beliebige freie Adern für eine Einspeisung mit 5...14V genutzt werden.
Mit einem langen Tastendruck gelangt man in ein Einstellungsmenü, in dem sich die Schritt-Auflösung (Taktflanken/Mikroschritte pro Millimeter) einstellen lässt. Ein kurzer Tastendruck nullt die aktuell angezeigte Position.
Schaltplan, Leiterplattenlayout, Firmware und Gehäusedaten finden sich unten zum Download.
Die Hardware ist sehr einfach aufgebaut. Eine etwa scheckkartengroße einseitig bestückte Leiterkarte beherbergt einen STM32F103C8T6, die Anschlüsse, ein gut erhältliches LCD, Taster, Hühnerfutter und ein EEPROM für Konfigurationsdaten.
Die Eingangs- und die Ausgangsbuchse sind hart miteinander verdrahtet, so dass sich der Zähler transparent in jede Leitung einschleifen lässt. Das Signal wird direkt abgetastet ohne schaltungslogische Vorverarbeitung der Signaladernpaare. Das erlaubt eine sehr flexible Konfiguration und vereinfacht die Leiterplatte. Auf Eingangsfilter wurde bewusst verzichtet, um auch sporadische Pulse auf der Leitung mitloggen zu können.
Die direkte Abtastung ohne schaltungslogische Vorverarbeitung erfordert es, dass alle Signale an einem einzelnen GPIO-Port angeschlossen sein müssen, um dithering-Effekte zu vermeiden. Darüber hinaus müssen alle Pins 5V-tolerant sein. Damit sind als kleiner Wermutstropfen alle der wenigen Hardware-I2C-Pinpaare belegt und das EEPROM muss per Bitbanging betrieben werden. Da es im Normalfall nur beim Start des Geräts ausgelesen wird, lässt sich das verschmerzen.
Das 84 × 48 Pixel große Grafikdisplay ist per SPI angebunden.
Die Kernfunktionalität ist so einfach, dass dafür eine einzige Quelltext-Datei ausreicht. Wie immer sind die Nebenfunktionen — insbesondere die formatierte Darstellung großer Ziffern und das Einstellungsmenü — der softwaretechnisch aufwendigere Teil.
Schaltplan und Layout (KiCAD 5.1.4) | |
Schaltplan (PDF) | |
Firmware-Binaries und Quelltexte | |
Frontplatten-Layout für Gehäuse Fischer AKG 55 24 80 ME (DXF) |