-
-
Schrittmotor ansteuern
Hi
ich habe eine Frage und zwar bauen wir für ein Schulprojekt einen Roboter und zwar kommt es auf einiger Maßen genau Navigation an.
Dafür wollten wir 2 Schrittmotoren verwenden, die jeweils über einen mega angesprochen werden und über die Standard L293D und L298 mit Strom versorgt werden. Das Signal wird vom Hardware PWM erzeugt. Nun ist meine Frage kann ich die Hardware PWM iwie mitzählen, d.h. das ich weiß wie viele Schritte er gemacht hat. 2 Frage wäre ein PWM Signal ist ein Schritt für den Motor ? Und wenn desto mehr Signale ich hintereinander schicke desto Schneller dreht er ?
Auf die Kraft oder so bei dem Schrittmotor muss man nicht iwie achten. Er muss nur einen kleinen Roboter aus Plexiglas bewegen und die Motoren sind direckt an den Rädern. d.h. Man brauch kein großes haltemoment ?
mfg
-
Erfahrener Benutzer
Roboter Genie
Hi!
PWM ist Pulsweitenmodulation, die Frequenz ist immer gleich, aber eben die Pulsweite ist unterschiedlich. Ich kenne den L297 nicht, aber ich denke mal das Teil arbeitet mit einem Clock Eingang, von dessen FREQUENZ es abhängt wie schnell der Motor dreht. Mit PWM kann man also nur eine einzige Geschwindigkeit stellen. Du kannst aber einfach die Timer von nem mega16/32 benutzen um irgendeinen Port an und aus zu toggeln. Und die Frequenz der Timer kannst du ja wie du willst aussuchen. Außerdem kannst du ganz einfach die Schritte mitzählen indem du in den Timer-Interrupt eine Variable hochzählst.
So mache ich das und es funktioniert. Ich kann so mit Timer0 und mit Timer1 jeweils einen Schrittmotor steuern. Aber vielleicht gibts ja noch elegantere Möglichkeiten...
Viel Erfolg,
William
-
Jupp das meinte ich hab mich vill Falsch ausgedrückt. Kannst mir vill Zeigen wie ich in Bascom nebenher noch eine Variable mit hochzählen lassen kann ?
Denn wie man so mit Timer usw usf die Motoren steuert weiß ich nur net das Mitzählen
mfg
-
Erfahrener Benutzer
Roboter Genie
Bei mir sieht das Clocksignal das so aus:
dim Stepcount as Word
...
Timer_irq0:
Timer0 = Vorgabe0
Toggle Portb.0
Incr Stepcount 'oder Stepcount=Stepcount+1
Return
Allerdings musst du Stepcount eigentlich noch durch 2 teilen damit du wirklich die Anzahl der Schritte erhälst.
Gruß,
William
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen