PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Schrittmotor mit ATmega



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?

17.09.2004, 12:52
Stimmt, daher kannst du es nur mit Timer-Interrupt auf diese Weise machen.

eFFex
17.09.2004, 13:05
das bedeutet dann also prinzipiell genau das gleiche system, nur dass die Zähler nicht bei jedem mainloop - durchgang sondern bei jedem timer-interrupt um eins erhöht werden?

17.09.2004, 14:05
Ja, pack deine Routinen in die ISR des Timers.

eFFex
18.09.2004, 13:22
ok dankeschön