Hallo allerseits! Ich möchte gerne einen Schrittmotor im Microstepping Betrieb betreiben, dafür verwende ich den L6258 von ST. Über je vier Leitungen pro Phase, also für jede Spule vier Leitungen, gebe ich dem DAC den Referenzstrom vor. Steuere ich den DAC geeignet an so erzeugt er mit im Stator ein Sinusförmiges Signal. Der zweite macht das gleiche, nur halt Phasenverschoben. Im DB des Chips steh wie ich den Chip ansteuern muss, diese Signalwerte hab ich in ein array übertragen und mit einer Indexvariablen lauf ich im Timer interrupt da durch. Die Werte steigen und sinken linear (wie im Anhang) Nun wollte ich fragen, da ich schon den ganzen abend kopfe, ob es nicht irgend eine Formel oder so was gibt damit ich die Werte nicht im Array speichern muss? Oder ist das Durchlaufen des Arrays die einfachte und beste Lösung? Gruß und Dank Philipp
Das sind idealerweise einfach Sinus- und Cosinus-Werte, skaliert mit einem konstanten Faktor um Zahlen für die PWM zu bekommen. Eine Tabelle ist die beste Lösung. Sinus und Cosinus in Echtzeit mit Reihenentwicklung zu rechnen wäre Verschwendung.
der chip hat glaub ich schon einen nichlinearern DAC drein, also das was ich ihm gebe sind nur ganz normel zahlen von 0 bis 15, die setzte er dann entsprechend um. ich hab mir aus der signalform im DB die werte herausgesucht, hat lange gedauert, und habe dann gesehen dass da nur einfach rauf und runter gezält wird
Philipp Putzer schrieb: > der chip hat glaub ich schon einen nichlinearern DAC drein, also das was > ich ihm gebe sind nur ganz normel zahlen von 0 bis 15, die setzte er > dann entsprechend um. ich hab mir aus der signalform im DB die werte > herausgesucht, hat lange gedauert, und habe dann gesehen dass da nur > einfach rauf und runter gezält wird Hallo, wenn der DAC schon Sinus macht, kannst du dir natürlich alles Weitere sparen. Ansonsten verwende ich auch "Hand Made" Tabellen, weil man das wohl oder übel selbst optimieren muss. Bei 4 Bit linearem DAC verwende ich die Folge 0 6 11 14 15 14 11 6 0... Daraus ist auch zu ersehen, dass man nur die Tabelle 0..90 Grad braucht, der Rest zu 360 Grad ergibt sich durch Spiegelung. Man sieht auch, dass es bei 4 Bit wenig Sinn macht, einen Schritt in mehr als 8 oder 16 Mikroschritte aufzuteilen. Gruss Reinhard
hm, ja stimmt, einen Schritt in so kleinen schritten aufzuteilen haut mit den meisten Motoren (die billigeren eben) eh nicht so gut hin. ich werds mal mit deien Werten versuchen, die hast du dann auch nur in einer Tabell vorliegen, oder? Also ohne eine Rechenvorschrift oder sonstwas? Gruß Philipp
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.