Mit einem fertigen Programm kann ich nicht dienen.
Wie wird das Signal vom Hal-Sensor aufbereitet?
Ich gehe jetzt mal davon aus das dir der Sensor Impulse pro Umdrehung liefert. Das heißt die Geschwindigkeitsinformation ist im Pulsabstand enthalten.
Man könnte bei solch einem Signal die Zeit messen die von einem zum nächsten Impuls vergeht. Diese Methode ist recht kompliziert und benötigt viel Rechenzeit.
Besser ist es die Anzahl der Impulse in einer bestimmten Zeit zu messen. Dazu benutzt du am besten einen der Zähler deines Controllers. Um die Messzeit zu realisieren stellst du einen der Timer auf die gewünschte Zeit ein und lässt ihn einen Interupt auslösen. In der Interuptroutine liest du den Zähler aus und setzt ihn danach wieder auf 0. Den erhaltenen Wert legst du jetzt am besten im RAM ab und verlässt den Interupt. Zu viel sollte da nicht drin stehen.
Dein Hauptprogramm hat jetzt die Aufgabe die Zahl im RAM in eine Motorposition umzuwandeln. Die derzeitige Position des Motors musst du natürlich auch speichern. Jetzt vergleichst du die Soll mit der Istposition und bewegst den Motor so lange in die entsprechende Richtung bis sie übereinstimmen.
Ein total-chrash lässt sich recht leicht erkennen. Bleiben plötzlich die Impulse aus ist dieser Fall eingetreten.
Ach ja. Gute Informationen zu
Schrittmotoren findest du
hier
Auch die benötigte Schrittfolge an den Motoranschlüssen.
Ich hoffe das hat etwas geholfen.
Lesezeichen