eFFex
17.09.2004, 12:40
Hi Leutz!
Das ganze gehört eigentlich eher zum Thema "allgemeine Programierung", da ich den aber nicht gefunden hab und nicht das ganze 3 mal posten wollte, post ichs hier an dieser Stelle:
Ich will mit meinem ATmega8 3 Schrittmotor, die über n L297/L298-Kombi angesteuert werden, steuern....
an sich kein Problem...1 Pin enable für alle , je 1 pin für clock und richtung.
Hardware funktioniert, allerding shab ich ein programmiertechnisches Problem:
Hab die Steuerung so angedacht (erstmal so realisiert), dass im mainloop bei jedem durchgang pro Mototr eine Zählvariable hochgezählt wird, bis sie ein vorgegebenes Limit erreicht hat. Dann wird der entsprechende Motorpin kurz angepulsed, der Motor dreht sich also einen Schritt vorwärts. Die Grenzen lassen sich für jeden Motor unterschidelich festlegen,.
Also würden sich so alle Drehgeschwindigkeiten unabhängig regeln.
Soviel zur Theorie *g*, praktisch erweist sich das ganze als recht problematisch, da die Länge des mainloops zum Beispiel wegen Navigationsalgorithmen, die verschieden lang "dauern" nicht konstant ist.
Das führ dazu, dass sich die Motoren also nicht mit konstanter Geschwindigkeit drehen.
Hat jemand von euch ne Ahnung/Erfahrung damit, wie sich dieses Problem lösen lässt?
Das ganze gehört eigentlich eher zum Thema "allgemeine Programierung", da ich den aber nicht gefunden hab und nicht das ganze 3 mal posten wollte, post ichs hier an dieser Stelle:
Ich will mit meinem ATmega8 3 Schrittmotor, die über n L297/L298-Kombi angesteuert werden, steuern....
an sich kein Problem...1 Pin enable für alle , je 1 pin für clock und richtung.
Hardware funktioniert, allerding shab ich ein programmiertechnisches Problem:
Hab die Steuerung so angedacht (erstmal so realisiert), dass im mainloop bei jedem durchgang pro Mototr eine Zählvariable hochgezählt wird, bis sie ein vorgegebenes Limit erreicht hat. Dann wird der entsprechende Motorpin kurz angepulsed, der Motor dreht sich also einen Schritt vorwärts. Die Grenzen lassen sich für jeden Motor unterschidelich festlegen,.
Also würden sich so alle Drehgeschwindigkeiten unabhängig regeln.
Soviel zur Theorie *g*, praktisch erweist sich das ganze als recht problematisch, da die Länge des mainloops zum Beispiel wegen Navigationsalgorithmen, die verschieden lang "dauern" nicht konstant ist.
Das führ dazu, dass sich die Motoren also nicht mit konstanter Geschwindigkeit drehen.
Hat jemand von euch ne Ahnung/Erfahrung damit, wie sich dieses Problem lösen lässt?