Forum: Mikrocontroller und Digitale Elektronik 13 Stepper zeitgleich & individuell steuern, Newbie


von Jeff W. (jeff_arduinum)


Lesenswert?

Hallo liebe Arduino Gemeinde,
ich bin interessierter Neuling mit dem Wunsch, eine Art Roboterhand 
einfache Bewegungen ausführen zu lassen.
Im Forum habe ich keine Erklärung gefunden, die zu meiner geringen 
Vorkenntnis passt :-(

Die Kraft der beschriebenen Stepper wird im Endeffekt zu gering sein. 
Sobald ich die angestrebten Bewegungen sicher programmieren kann und mit 
dem Ergebnis zufrieden bin, plane ich den Einsatz von stärkeren 
Steppern.


Mit dem Starterset "Funduino" (Arduino Uno Board) habe ich erfolgreich 
den mitgelieferten Stepper 5V steuern können, durch die Beispiele auf 
der Arduino-Hilfeseite.
Als nächste "Lernschritt" möchte ich individuell und zeitgleich 12 
weitere Stepper der gleichen Bauart inklusive mitgeliefertem 
"ULN2003-Treiber-Board" steuern.
Weiterhin möchte ich auch "Rampen" für langsames anfahren und stoppen 
steuern.
Eine externe Stromversorgung über  2A habe ich bereits gekauft.



Im Arduino-Browser sieht die bisherige einfache Stepper-Programmierung 
folgender weise aus:

#include <Stepper.h>
int SPU = 2048;
Stepper Motor(SPU,3,5,4,6);
void setup()
{
Motor.setSpeed(12);
}
void loop()
{
Motor.step(-1212);
delay(2500);
Motor.step(312);
delay(1000);
  Motor.step(-556);
delay(1250);
}



Wie und wo werden diese zusätzlichen Stepper am Arduino board 
angeschlossen, und wie wird die gezielte Unterscheidung für die 
jeweiligen Stepper programmiert?
Lassen sich neben Schrittzahl und Delayzeit auch verschiedene 
Geschwindigkeiten je Stepper während des Loops programmieren?
Welche Bausteine benötige ich noch für mein beschriebenes Vorhaben?

Über entscheidende Tipps würde ich mich sehr freuen.
Jeff






Schrittmotor-Set DAYPOWER S-SPSM-5V für 5,45 € (Bestellnummer 310543):
Daten des Schrittmotors:

Betriebsspannung: 5 V-
Phasen: 4
Übersetzung: 1/64 (mit eingebautem Getriebe)
Schrittwinkel: 5.625° (64 Schritte/Umdrehung)
Frequenz: 100 Hz
Gleichstromwiderstand : 50 Ohm ± 7% (25 °C)
Drehmoment: > 34.3 mN*m (120 Hz)
Geräuschpegel: < 35dB (120 Hz)

von Sascha W. (sascha-w)


Lesenswert?

Hallo,

du erzeugst für jeden Motor eine neu Instanz von Stepper:
1
Stepper Motor1(SPU,3,5,4,6);
2
Stepper Motor2(SPU,7,8,9,10);
3
Stepper Motor3(SPU,11,12,13,14);
auf diese Weise kannst du die Motoren eigenständing anprechen. Wie du 
siehst wirst du aber so keine 12 Motoren ansteuern können weil du dafür 
48 IO-Pins brauchst.
Bei der Anzahl brauchst du was externes mit eigenem Controller, so das 
du pro Motor nur ein Richtungssignal und ein Taktsignal hast.

Um mehere Motoren gleichzeitig zu bewegen müsste man mal schauen ob die 
Bewegung der Motoren nach dem Aufruf von Motor.step() von Programm 
asyncron ausgeführt wird, wenn nicht währe das an der Stelle schon ein 
Sackgasse.

Sascha

von Patrick J. (ho-bit-hun-ter)


Lesenswert?

Hi

Wenn ich den Code halbwegs verstehe, hast Du pro Stepper 4 Pins am µC - 
kann man auf zwei reduzieren, wenn Du z.B. einen Treiber aka L297 
zwischen schaltest. (Takt, Richtung statt die 4 Ausgangssignale).
Alternativ kann man ggf. auch ein Schieberegister/Portexpander dafür 
missbrauchen, Geschwindigkeit ist bei diesen Motor vernachlässigbar, so 
flott werden Die nicht.

Male Dir auf, welcher Motor was im zeitlichen Ablauf machen muß.
Vorgabe: Motor 1 lauft mit halber Geschwindigkeit von Motor 2 - also 
Nichts mit Delay-Schleifen.

Wie hast Du Dir Dein Vorhaben vorgestellt, was möchtest Du wie zusammen 
packen?


MfG

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.