Go Down

Topic: mehrere Schrittmotoren mit verschiedener Geschwindigkeit (Read 608 times) previous topic - next topic

stock95

Hallo erstmals

und zwar ich habe hier ein Unterprogramm dass ein paar Schrittmotoren ansteuert. Es führt in der while Schleife eine gewisse Zeit etwas aus. Das Problem was ich habe ist wenn ich nur einen Motor ansteuere kann ich die Geschwindigkeit regulieren wie ich will. Doch wenn mehrere Schrittmotoren angesteuert werden drehen sie sich mit der gleichen Geschwindigkeit. Sie sollen aber verschieden schnell drehen.

Code: [Select]
void planeten_schnellauf(){
 
  schnellauf = millis();
  merkur_stepper.setSpeed(25);
  venus_stepper.setSpeed(10);
  erde_stepper.setSpeed(5);
  mars_stepper.setSpeed(5);
 
  while((schnellauf + schnellauf_zeit_in_ms) > millis()){
   merkur_stepper.step(1);
   venus_stepper.step(1);
   erde_stepper.step(1);
   mars_stepper.step(1);
  }
}



uwefed

Du drehst alle Motore um einen Schritt. Damit haben alle die gleiche Geschwindigkeit. Die Geschwindigkeitsangabe zB in merkur_stepper.setSpeed(25); sagt aus wie schnell die abfolge mehrere Schritte erfolgen soll.
Du mußt die Motore zeitversetzt, je nach Geschwindigkeit, ansteuern.
Grüße Uwe

stock95

Danke und kannst du mir bitte dafür ein Codebeispiel bzw. Wie ich es am besten machen soll geben

Udo Klein

Verschiedene Schrittmotoren verschieden schnell ansteuern? Dazu fällt mir immer openMoco ein: http://www.openmoco.org/.
Check out my experiments http://blog.blinkenlight.net

uwefed

Codebeispiel nicht aber eine Erklährung.

Arbeite mit millis() bzw micros() und schaue ob die Zeit bis zum nächsten Impuls vergangen ist. Der Impuls auf den Step-Eingang des Schrittmotor-Treibers kann sehr kurz sein (einige µS, klähre das aber im Daenblatt ab).

Also millis() in variable abspeichern und kontrollieren ob die Wartezeit verstrichen ist. Wenn ja den Motor einen Schritt weiter und die neue millis() abspeichern.
Das für jeden Motor getrennt hintereinander.

Viele Grüße Uwe

Go Up