Stepper

Gast #423681
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
Gast #423751
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.
Gast #423775
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 ??
Gast #423780
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.
Gast #423782
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
Gast #423907
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.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.