Ich habe einen Schrittmotor mit einem Schrittwinkel von 2 Grad. Ich möchte Sekunden mit einer an diesem Stepper befestigten Nadel anzeigen.
Der Uhrenkristall teilt sich gut, um 1-Hz-Impulse zu erzeugen, sodass ich dem Stepper jede Sekunde befehlen kann, CW-3-Impulse zu drehen (360 Grad / 60 Sekunden = 6 Grad pro Sekunde. Da der Stepper 2 Grad pro Schritt erreicht, benötige ich 3 solcher Impulse). .
Angenommen, ich möchte jeden Schritt verwenden, um Sekunden reibungsloser anzuzeigen. Ich müsste den Motor alle 1/3 Sekunde oder mit 3 Hz schalten.
Ich versuche herauszufinden, wie das am besten geht.
Ein offensichtlicher Trick besteht darin, eine höhere Frequenz zu verwenden (ich verwende 64 Hz) und etwas Jitter zu tolerieren. Gibt es einen anderen Weg, der mir die exakten 3 Hz von 32,768 kHz gibt? (Selbst wenn man weiß, dass das eine nicht durch das andere teilbar ist?)
Übrigens verwende ich einen MSP430, aber dieses Problem könnte auf jede andere Plattform portiert werden.
Antworten:
Sie könnten ein Übersetzungsverhältnis von 3: 1 und den Divisor bei 32768 ausführen.
32768 = 10.923 + 10.923 + 10.922, was eine Zustandsmaschine anzeigt, die zuerst bis 10.923 Wiederholungen zählt und dann eine Zählung löscht, wäre alle 3 Sekunden genau. Der schlimmste absolute Fehler, den Sie sehen würden, ist 31 ppm, was ungefähr der Leistung des Kristalls entspricht (abhängig von Ihrem Kristall).
quelle
Nehmen Sie die 32.768-Hz-Rechteckwelle und führen Sie sie durch ein 98-kHz-Bandpassfilter, um (hauptsächlich) ihre 3. Harmonische zu belassen - dies ist ziemlich trivial. Jetzt haben Sie 3 mal 32.768 Hz, die Sie mit der vorherigen Schaltung teilen können, die Sie verwendet haben, um 3 Hz zu erhalten.
quelle
Es ist wahr, dass 32768 Hz nicht durch 3 Hz dividiert, aber es ist nicht viel aus.
Sie benötigen eine Lösung, die optisch flüssig erscheint und im Durchschnitt über die Zeit genau ist .
Erstellen Sie einfach eine Logik, die:
Zählt 10923 Eingangstakte und macht einen Schritt
Zählt 10923 Eingangstakte und macht einen Schritt
Zählt 10922 Eingangstakte und macht einen Schritt
und wiederholt.
Sie benötigen Instrumente oder ein empfindliches Experiment, um festzustellen, dass jeder dritte Impuls um 0,009% kürzer ist.
quelle
Die digitale Lösung besteht darin, so etwas wie einen 8-Bit-Akkumulator zu nehmen und alle 128 Impulse 3 hinzuzufügen. Wenn es getragen wird, treten Sie auf den Motor. Der resultierende Jitter wird nicht wahrgenommen und wird langfristig aufgehoben. Ein längerer Akkumulator (und folglich ein kürzerer Vorteiler) verringert den Jitter, ein kürzerer erhöht ihn. Sie können wahrscheinlich ohne erkennbaren Unterschied zu einem Vier-Bit-Akkumulator (und einer Prädivision bis 2048) wechseln: Er würde dann interpolieren, indem 5 Uhren in 2 von 3 Fällen und 6 Uhren in 1 von 3 Fällen verwendet werden 3 Fälle.
quelle
Warten Sie auf den 1-Sekunden-Impuls und führen Sie den ersten Schritt aus. Verzögern Sie dann 333 ms, bevor Sie die beiden anderen Schritte ausführen. Möglicherweise erhalten Sie nicht genau die gleichen Schritte, aber es sollte nahe genug sein, damit Sie den Unterschied nicht bemerken (und die durchschnittliche Frequenz beträgt genau 3 Hz).
quelle
Der Stepper bewegt sich jedes Mal in diskreten Schritten, wenn Sie den Zustand der Spulen ändern. Wenn Sie den Stepper auf diese Weise antreiben, ist daher ein gewisses Maß an "Sprungkraft" unvermeidbar.
Wenn Sie Mikroschritt des Motor Sie eine große Anzahl von Schritten pro Umdrehung erhalten kann, vermeiden Sie die Sprunghaftigkeit im Wesentlichen vollständig (es wird eine Nicht - Linearität der Bewegung sein, aber es sollte nicht wahrnehmbar sein , wenn die Nadel sehr, sehr lang), und glatt erhalten Sweep-Bewegung der Nadel (ein heiliger Gral unter einigen Liebhabern von Zeitmessern). Es würde auch jegliche Vibration durch Unterdämpfung vermeiden.
Wenn Sie bei den 2 ° -Schritten bleiben möchten, können Sie einem 8-Bit-Register bei 64 Hz 0x0C hinzufügen und den Motor jedes Mal schalten, wenn Sie einen Übertrag erhalten.
So sieht der Jitter aus - weniger als +/- 8 Millisekunden, die nicht sichtbar sind:
Time = 0.328125 delta = 0.328125 Time = 0.656250 delta = 0.328125 Time = 0.984375 delta = 0.328125 Time = 1.328125 delta = 0.343750 Time = 1.656250 delta = 0.328125 Time = 1.984375 delta = 0.328125 Time = 2.328125 delta = 0.343750 Time = 2.656250 delta = 0.328125 Time = 2.984375 delta = 0.328125 Time = 3.328125 delta = 0.343750 Time = 3.656250 delta = 0.328125 Time = 3.984375 delta = 0.328125 Time = 4.328125 delta = 0.343750 Time = 4.656250 delta = 0.328125 Time = 4.984375 delta = 0.328125 Time = 5.328125 delta = 0.343750 Time = 5.656250 delta = 0.328125 Time = 5.984375 delta = 0.328125 Time = 6.328125 delta = 0.343750 Time = 6.656250 delta = 0.328125 Time = 6.984375 delta = 0.328125 Time = 7.328125 delta = 0.343750 Time = 7.656250 delta = 0.328125 Time = 7.984375 delta = 0.328125 Time = 8.328125 delta = 0.343750 Time = 8.656250 delta = 0.328125 Time = 8.984375 delta = 0.328125 Time = 9.328125 delta = 0.343750 Time = 9.656250 delta = 0.328125 Time = 9.984375 delta = 0.328125 Time = 10.328125 delta = 0.343750 Time = 10.656250 delta = 0.328125 Time = 10.984375 delta = 0.328125 Time = 11.328125 delta = 0.343750 Time = 11.656250 delta = 0.328125 Time = 11.984375 delta = 0.328125 Time = 12.328125 delta = 0.343750 Time = 12.656250 delta = 0.328125 Time = 12.984375 delta = 0.328125 Time = 13.328125 delta = 0.343750 Time = 13.656250 delta = 0.328125 Time = 13.984375 delta = 0.328125 Time = 14.328125 delta = 0.343750 Time = 14.656250 delta = 0.328125 Time = 14.984375 delta = 0.328125 Time = 15.328125 delta = 0.343750 Time = 15.656250 delta = 0.328125 Time = 15.984375 delta = 0.328125
Das gleiche Verfahren könnte verwendet werden, um einen Mikroschrittmotor zu steuern, nur mit feineren Schritten wie 2 ° / 16.
quelle
Für diejenigen unter Ihnen, die Hardware mögen, ist das Folgende eine schematische Darstellung der Dual-Modul-Zählerlösung des Platzhalters, jedoch ohne den möglichen 31PPM-Fehler.
Wenn Sie mit der Schaltung spielen möchten, finden Sie hier die LTspice-Schaltungsliste und die unterstützenden Dateien .
Das folgende Schema zeigt die Voreinstellungen für einen 32768-Hz-Takt, während bei der LTspice-Version die Anzahl - und das Timing - drastisch verkürzt wurden, um zu verhindern, dass die Sim für immer läuft, aber dennoch den Betrieb des Dual-Modul-Zählers zeigt.
quelle