Step by Step: Ansteuerung

Hinterlasse einen Kommentar

05.08.2015 von plaintron

Im letzten Beitrag dieser Serie ging es um den Leistungsteil der Schrittmotorsteuerung. Nun fehlt noch das passende Signal, um die Endstufen im richtigen Takt so umzupolen, dass daraus ein Drehfeld für den Motor resultiert.

Die Grafik mit den Spannungsverläufen habe ich hier auf acht Takte gekürzt und jeweils eine 1 für V+ und eine 0 für GND eingetragen.

signale_c

Nun lässt sich für jeden Takt ein Wert in Form einer Binärzahl mit 4 Bit darstellen:

1: 1000h-bridge
2: 1001
3: 0001
4: 0101
5: 0100
6: 0110
7: 0010
8: 1010

Nochmal zur Verdeutlichung: Die Endstufe hat 4 Anschlüsse. Je H-Brücke existiert ein Anschluss für „positiv“ (A und C) und ein Anschluss für „negativ“ (B und D). In unserem Beispiel soll jeweils am gerade aktiven Anschluss eine Spannung von +5V anliegen, ansonsten 0V. Das sieht also nach einem idealen Job für einen kleinen 8-Bit-Mikrocontroller aus. Wir nehmen uns einfach einen Port und verbinden die unteren 4 Bit mit dem Schrittmotortreiber. Die oberen 4 Bit bleiben ungenutzt oder werden durch logische Verknüpfung anderweitig genutzt.

Was noch fehlt, ist das passende Programm. Wir könnten uns jetzt einen wahnsinnig raffinierten Algorithmus ausdenken, um die oben gezeigten Bitfolgen zu generieren. Wir können aber auch einfach ein 8-Byte-Array spendieren und die Werte dort ablegen. Das spart Rechenleistung, die wir für andere Aufgaben sinnvoller nutzen können.

Die Zahlenfolge für dieses Beispiel lautet 8,9,1,5,4,6,2,10.

Hexadezimal sieht das dann in C stark vereinfacht dann so aus:

char states[8] = {0x08, 0x09, 0x01, 0x05, 0x04, 0x06, 0x02, 0x0A};

 

Mit einer einfachen Schleife werden diese Werte nun nacheinander auf einen Port geschrieben:

int step = 0;

while (step < 8){
  PORTA = states[step];
  step ++;
  if ( step > 7 ) step = 0;
}

 

Natürlich fehlt hier noch eine Menge, etwa Initialisierungen und eine Verzögerung in der Schleife für die korrekte Drehgeschwindigkeit. Außerdem soll die Drehzahl variabel und auch die Drehrichtung umkehrbar sein. Um das Grundprinzip zu erklären genügt das aber und es gibt natürlich fertige Controller, die diese Aufgabe komfortabel erledigen. Das wird dann Thema des folgenden Artikels dieser Serie.

Advertisements

Kommentieren

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

Blogverzeichnis - Bloggerei.de
%d Bloggern gefällt das: