-
-
Erfahrener Benutzer
Fleißiges Mitglied
Schrittmotor mit ATmega
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?
-
Stimmt, daher kannst du es nur mit Timer-Interrupt auf diese Weise machen.
-
Erfahrener Benutzer
Fleißiges Mitglied
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?
-
Ja, pack deine Routinen in die ISR des Timers.
-
Erfahrener Benutzer
Fleißiges Mitglied
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen