Pages: [1]   Go Down
Author Topic: mehrere Schrittmotoren mit verschiedener Geschwindigkeit  (Read 559 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 31
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
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);
  }
}

Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 270
Posts: 21859
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 31
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

0
Offline Offline
Faraday Member
**
Karma: 24
Posts: 3496
20 LEDs are enough
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Verschiedene Schrittmotoren verschieden schnell ansteuern? Dazu fällt mir immer openMoco ein: http://www.openmoco.org/.
Logged

Check out my experiments http://blog.blinkenlight.net

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 270
Posts: 21859
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Pages: [1]   Go Up
Jump to: