-
-
Erfahrener Benutzer
Roboter Genie
Das was du machen mußt ist im Grunde nicht viel. Das einzigste was die Probleme bereiten wird ist die gleichmäßige Impulsfolge bei schnelleren Schrittfolgen. Ein Betriebssystem ist da nicht so 100% ideal dafür.
Zum Schrittmotor. So wie du ihn verwendest hast du aud D0-D3 und von D4 bis D8 zwei Nibbles (4-Bit). Diese mußt du separat behandeln.
Zum Ansteuerprinzip. Du hast ein 8-Bit Register der LPT-Schnittstelle. Da schreibst du einen kompletten aud den 8-Bits bestehenden Wert der den Phasen der _beiden_ Motoren entspricht, also mußt du dir das Softwareseitig zusammenfummeln. Das Prinzip hierfür wäre:
Registerinhalt = PhasenMotor1 + PhasenMotor2 * 16
Die Phasenfolgen wäre nim einfachsten Fall 1, 2, 3, 4. Damit mußt du jeden Motor bestromen. Dies erreicht man am einfachsten indem man sich das Modulo erzeugt aus der aktuellen Ist-Position. Also:
PhasenMotor1 = IstPositionMotorA MOD 4
Jetzt hast du natürlich keine 1000, 0100, 0010 oder 0001 sondern 11, 10, 01 und 00. Das korregierst du indem man einfach im blödesten Fall folgendes macht:
TempByte = IstPositionMotorA MOD 4
If TempByte = 0 Then PhasenMotor1 = &B00000001
If TempByte = 1 Then PhasenMotor1 = &B00000010
If TempByte = 2 Then PhasenMotor1 = &B00000100
If TempByte = 3 Then PhasenMotor1 = &B00001000
Das selbe für den Motor 2 und immer danach zusammenrechnen nach oben beschriebener Variante.
Zum Modulo: Das hat den Sinn das du die aktuelel Phasen für den Motor aus der Ist-Position decodierst und ist der liene Trick an der ganzen Sache. Damit hast du dann bei 0,1,2,3,4,5,6,7,8... das Ergebnis 0,1,2,3,0,1,2,3,4,0,... Udn rückwärts eben auch passend das selbe.
Nun zur Ist-Position. Diese incrementierst du einfach immer in gleichmäßigen Abständen und führst imemr danach die oben beschriebenen Schritte aus. Dannn bekommt dein Stepper die richtigen Impulse und läuft schonmal synchron zur Ist-Position.
Weitere Features: Willst du auf eine Soll-Position fahren dann mußt du dich um die Angleichung eines virituellen Ist-Werts an den Sollwert kümmern. Ist der Ist-Wert kleiner den Sollwert muß man eben Incrementieren und ist der Istwert größer dem Sollwert muuß man dementsprechen decrementieren. Ist Sollwert gleich dem Istwert einfach nichts tun. Damit steht der Motor.
MAchst du es mit einer C-Control, dann kannst du es machen wie ich es mal vor einiger Zeit geschrieben hatte auf meiner Webseite:
http://www.wieselsworld-online.de/themen/px08x005.htm
Ansonsten einfach das anschauen, verstehen und nachbauen in einem anderen System. Viel Spaß dabei!
Grüße Wolfgang
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen