Forum: Mikrocontroller und Digitale Elektronik Stepper


von Beginner (Gast)


Lesenswert?

Hallo zusammen,

uihhh neues Forum-Design, seit wann isn das ?

Also habe meinen Stepper am laufen.
Bisher natürlich alles sehr "dirty" programmiert,
also vollkommen ohne Timer/Counter/PWM....
Bisher dreht der auch nur in eine Richtung
und das unentwegt. Das kann ich sowohl im Halb-, als
auch im Vollschritt machen....

Meine Fragen wären also:

01)  Wenn ich den Motor nun andersrum laufen lassen wollte,
     msste ich dann nur die Werte in der Tabelle umdrehen? (hier 
Halfstep)
      PORTC = 0x03;
      schlaf(1);
      PORTC = 0x01;
      schlaf(1);
      PORTC = 0x09;
      schlaf(1);
      PORTC = 0x08;
      schlaf(1);
      PORTC = 0x0C;
      schlaf(1);
      PORTC = 0x04;
      schlaf(1);
      PORTC = 0x06;
      schlaf(1);
      PORTC = 0x02;
      schlaf(1);
     Also z.B. aus PORTC = 0x03 wird dann PORTC = 0xFC   ???
     Also das dann immer ganz genau umgekehrt angesteuert wird...?
02)  Wie kann ich es realisieren, das der Motor nur einen HalfStep 
macht,
     dazu muss ich dann doch die Position wissen, in der sich der
     Anker befindet. Und somit dann jedes mal den letzten Step merken,
     damit ich beim nächsten mal weiss wo ich weiter machen muss, oder 
??

Danke

von Beginner (Gast)


Lesenswert?

 .

von Matthias H. (Gast)


Lesenswert?

um ihn rückwärts laufen zu lassen, muss du deine Tabelle einfach nur 
rückwärts durchlaufen. Welchen Stepper hast du denn wie an deinem 
Controller dran? Die einzelnen Schrittwerte sehen etwas merkwürdig aus.

von Beginner (Gast)


Lesenswert?

irgendein unipolar motor ausm alten scanner
hat 12V versorgun und 2 spulen mit mittenanzapfung, die auf einen draht 
gelegt wurde, somit hat der stepper also 5 drähte...

habe ihn an meinem atmega16 angeklemmt
dazwischen sitz pro strang ein widerstand 1k, 1 BC639, 1 freilaufdiode 
1N 4148

läuft alles wunderbar, richtig schön leise und im kreis,
wird auch nicht zu warm de motor...

nur wenn ich jetzt einen Halbschritt machen will,
wie mache ich das dann ??
muss dann doch die Position vom vorherigen male speichern, und dann beim 
nächsten halbschritt ab der stelle weiterfahren, oder ??

von Matthias H. (Gast)


Lesenswert?

das ist doch das Grundprinzip eines Schrittmotorantriebs. Der Motor weiß 
nicht wo er grade steht. Dazu brauchst du eine Variable mit der die 
Schritte des Motors gezählt werden. Diese Variable legt dann auch fest, 
welche Zeile deiner Tabelle gerade aktuell ist. Du kannst ja eine 
Tabelle für Halbschritt im RAM ablegen. Für Vollschritt musst du dann 
halt einen Wert überspringen.

von Magnus Müller (Gast)


Lesenswert?

Vollschritt:   es wird immer nur eine Wicklung bestromt

               1 -> 2 -> 3 -> 4 -> 1 -> 2 -> 3 -> 4 (...)

Halbschritt:   um einen Halbschritt zu machen werden zwischen den 
Vollschritten,
               in denen nur eine Wicklung bestromt wird, zwei 
Wicklungen
               gleichzeitig bestromt.

               1 -> 1+2 -> 2 -> 2+3 -> 3 -> 3+4 -> 4 -> 4+1 -> 1 (...)

Gruß,
Magnetus

von Sonic (Gast)


Lesenswert?

Normalerweise sollte immer nur EINE Wicklung unbestromt sein, zum 
Steppen eine zweite abschalten, im nächsten Schritt die vorige Spule 
bestromen:
0111
0011
1011
1001
1101
1100
1110
0110


wären 4 Steps.

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.