Forum: Mikrocontroller und Digitale Elektronik Schrittmotor


von Cleo (Gast)


Lesenswert?

Hallo,

ich weiß leider keinen anderen Weg als hier nochmal zu Posten und meine
Frage erneut zu stellen.

Ich habe einen alten bipolar Schrittmotor zu Hand, dem dummerweise
keinerlei Daten beigefügt sind. Mein Anliegen ist es, diesen Motor
schlichtweg zum drehen zu bringen.

Über einem Atmega16 und L293D möchte ich ihn ansteuern. Als
Steuersoftware schwebt mir in etwa sowas vor:

char step[4] = { 0b0010; 0b0010; 0b0001; 0b01010 };
while(stop==ja/nein)
{
  for(int i=0; i<3; i++)
  {
    PORTA = step[i];
    delay();
  }
}

Leider ist mir bisher nicht richtig klar geworden, wie ich das passende
Bitmuster (0010) gewinne.

Könnte mir vielleicht jemand helfen?

von ??? (Gast)


Lesenswert?

...mhmm, "Das Passende ..." Das passt eigentlich immer.
Das ist ein Kleiner Irrtum. Das Bitmuster ist Nicht vom Anfangszustand
abhängig. Das ist eine vorgeschriebene Bitmusterfolge. Also es geht
immer vorn los und läuft dann durch. nach einem totalen Stop ohne
Haltestrom gehts eben wieder von vorn los. Man kann auch mittendrin
anfangen (wie bei nem Ringspeicher) die Aufeinanderfolge ist wichtig.

von Martin K. (mkohler)


Lesenswert?

Hast du den Motor denn hardwaremässig richtig angeschlossen?
Stichwort: Doppel-H-Brücke, L297/L298 Kombination

von Cleo (Gast)


Lesenswert?

Die Frage ist, wie erhalte ich denn die vorgeschriebene Bitmusterfolge?

@Martin Kohler
Warum L297/L298 Kombination? Ich möchte doch das Bitmuster selbst
generieren und keinen Motorcontroller (L297) verwenden.

von inoffizieller WM-Rahul (Gast)


Lesenswert?

>Die Frage ist, wie erhalte ich denn die vorgeschriebene
>Bitmusterfolge?

Durch ausprobieren...

Du musst eigentlich nur den Strom durch die Spulen umpolen nacheinander
umpolen. Unter der Annahme, dass Spule 1 des Steppers an den Anschlüssen
3 und 6 und Spule 2 an den Anschlüssen 11 und 14 angeschlossen ist,
sollte sich der Motor nach folgender Tabelle drehen:

Anschluß:   3    6    11   14
            +    -     +    -
            -    +     +    -
            -    +     -    +
            +    -     -    +

Bei Belegung des PORTA mit PA.0 an Pin 2, PA.1 an 7, PA.2 an 10 und
PA.3 an 15 kommt dann folgendes dabei heraus:
Anschluß 3,6,11,14 PORTA
+-+-               1010
-++-               0110
-+-+               0101
+--+               1001

Es ändert sich immer nur ein Bit...
Die Anschlüsse 1 und 9 des L293 müssen dabei aber auf H-Pegel liegen.
Wenn man eine Wicklung zwischen den o.g. Schritten noch ausschaltet,
landet man beim Halbschritt-Betrieb...

Vielleicht hilft dir das hier noch:
http://de.wikipedia.org/wiki/Schrittmotor

Das sollte eigentlich zum Vollschritt-Betrieb führen.

von Cleo (Gast)


Lesenswert?

@inoffizieller WM-Rahul

Wunderbar beschrieben und schon mit den entsprechenden L293D Belegungen
dargestellt. Danke!

Allerdings, habe ich noch ein paar Fragen.

Ist die dargestellte Tabelle für alle bipolar Schrittmotoren gleich?
Oder ist die Tabelle nur ein Beispiel?

Es ändert sich immer nur ein Bit... ??? -> wirklich?

von Karl heinz B. (kbucheg)


Lesenswert?

> Es ändert sich immer nur ein Bit... ??? -> wirklich?

Es ändern sich 2 Bits.
Weil immer abwechselnd eine der beiden Spulen 'umgedreht'
wird.

Zum Verständnis ist es recht hilfreich (wars zumindest
bei mir) einfach mal die Spulen mit ein paar Drahtstücken
an die Spannung anlegen und ausprobieren wie die Spulenanschluesse
umgepolt werden muessen. Ist schon faszinierend, wenn der Motor
dann einen winzig kleinen Schritt macht. Dann an der anderen
Spule die Polarität umdrehen und schon macht er wieder einen
kleinen Schritt, usw ...

von Profi (Gast)


Lesenswert?

Auch wenn Du keinen L297 einsetzen willst, solltest Du Dir sein
Datenblatt durchlesen, da Du ja seine Funktion (oder besser einen Teil
davon) selbst programmieren willst.
Dort ist alles wunderbar beschrieben, auch die verschiedenen
Möglichkeiten der Ansteuerung:
Normal (immer beide Spulen bestromt)
Wave (immer eine Spule bestromt)
Half-Step (abwechselnd eine und zwei Spulen bestromt)

Weiterhin:
fast decay
slow decay

Beachte allerdings, dass der L297 eine weitere wichtige Funktion hat:
das Konstanthalten des Spulenstromes durch Choppen.
Ich bin zwar dabei, auch diese Funktion in den µC zu verlagern, ist
aber recht kompliziert (zeitkritisch).

Viel einfacher ist die Verwendung eines modernen Stepper-Drivers mit
FET-Endstufe:
L6208
L6207, wenn Du Deine Step-Sequence selbst erzeugen willst

von busy (Gast)


Lesenswert?

Ich bin jetzt etwas abgeschreckt.

Ich dachte eine simple Bitmusterfolge in der richtigen Reihenfolge
(vorausgesetzt ich weiß sie irgendwann) an den Portausgängen des
Mikrocontroller, sollte für den Anfang ausreichen, um einen
Schrittmotor zum bewegen zu bringen.


----|        |-------|     |-------|
    |---1----|       |-----|       |
µM  |---0----| L293D |-----|Schritt|
    |---0----|       |-----| Motor |
    |---1----|       |-----|       |
----|        |-------|     |-------|

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
Noch kein Account? Hier anmelden.