INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Bewegung zweier Motoren mit unterschiedlicher Geschwindigkeit mit AccelStepper
13.07.2018, 10:07
Beitrag #1
Bewegung zweier Motoren mit unterschiedlicher Geschwindigkeit mit AccelStepper
Hallo zusammen,
ich bin noch ziemlich neu im Gebiet der Programmierung, habe mich aber mittlerweile etwas damit beschäftigt und komme nun nicht mehr weiter und hoffe auf eure Hilfe.

In meinem Projekt, zwei Motoren zu bewegen, soll MotorA immer hin und her fahren und nach einer Gewissen Anzahl an Bewegungen stoppen (was auch schon funktioniert) und MotorB immer weiter in eine Richtung (was nicht funktioniert). Dabei soll sich der MotorB mit einer anderen Geschwindigkeit bewegen, in diesem Fall einfach mal die doppelte und dabei die entsprechende Strecke zurücklegen (also ebenfalls die doppelte). Planmäßig sollten dann beide Motoren zur selben Zeit die Endposition erreichen. MotorA fährt dann wieder zurück und MotorB nullt sich und fährt wieder von 0 bis 3200.

Da ich zurzeit nur einen Motor habe, lese ich die Positionen über Serial.println() aus, dabei zählt MotorA von 0 bis 1600 und wieder zurück. MotorB bleibt einfach bei 0 stehen. Warum?
Das zweite Problem besteht im setzen der Geschwindigkeit. Wenn ich Max.Speed() benutze, wird dann auch "garantiert" diese Geschwindigkeit erreicht, so dass ich bei doppeltem Wert auch die doppelte Strecke in der gleichen Zeiteinheit schaffe?

Ich bin für jede Hilfe dankbar!

Code:
#include <AccelStepper.h>

#define MOTOR_A_ENABLE_PIN 8
#define MOTOR_A_STEP_PIN 4
#define MOTOR_A_DIR_PIN 7

#define MOTOR_B_ENABLE_PIN 8
#define MOTOR_B_STEP_PIN 3
#define MOTOR_B_DIR_PIN 6

AccelStepper motorA(1, MOTOR_A_STEP_PIN, MOTOR_A_DIR_PIN);
AccelStepper motorB(1, MOTOR_B_STEP_PIN, MOTOR_B_DIR_PIN);


boolean Start = true;

int Pos=0;
int pos1=0;
int pos2=1600;
int Lagen=0;


void setup(){

Serial.begin(9600);

//Motordaten
motorA.setMaxSpeed(500);
motorA.setAcceleration(3200);

motorB.setMaxSpeed(1000);          //doppelte Geschwindigkeit wie MotorA
motorB.setAcceleration(3200);
}

void loop(){

if (Start == true){

    Pos = motorA.currentPosition();   //schreibe aktuelle Position in Pos
       if (Pos==pos1)                       //wenn die aktuelle Position Pos des MotorsA gleich der Startposition Pos1 ist, dann bewege Motor zur Position 2 (Endposition)
      {
          motorA.moveTo(pos2);
          motorB.moveTo(3200);     //Bewege auch MotorB zur Position 3200
          delay(50);
          Lagen++;                      //Zähle pro Fahrt eine Lage hoch
      }
       if (Pos==pos2)                  //wenn Position 2 erreicht, bewege Motor zurück zur Startposition 1
      {
          motorB.setCurrentPosition(0);  //wenn Position 2 erreicht, nulle aktuelle Position MotorB
          motorA.moveTo(pos1);           //MotorA soll wieder von 1600 zurück zu 0 fahren
          motorB.moveTo(3200);           //starte MotorB wieder von 0 bis 3200
          delay(50);
          Lagen++;
      }
            motorA.run();
      if (Lagen==4)                       //wenn 4 Durchläufe gelaufen sind, setze Start auf false und beende If-Schleife
      {
        Start=false;
      }

Serial.println(motorB.currentPosition());    //Ausgabe aktuelle Position MotorB
}
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.07.2018, 22:35
Beitrag #2
RE: Bewegung zweier Motoren mit unterschiedlicher Geschwindigkeit mit AccelStepper
Hallo,

ich kenne die Lib nicht, aber wenn es "motorA.run();" gibt, müsste es dann nicht auch "motorB.run();" geben?

Gruß GuaAck[/i]
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.07.2018, 06:40
Beitrag #3
RE: Bewegung zweier Motoren mit unterschiedlicher Geschwindigkeit mit AccelStepper
Das ist richtig. Und beide sollten am Anfang von loop stehen, und bei jedem Durchlauf aufgerufen werden.

Gruß, Franz-Peter
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  accelstepper und enable Grissu112 4 687 21.04.2018 16:36
Letzter Beitrag: Grissu112
  2 LEDLauflichter mit verschiedener Geschwindigkeit Atze 48 3.317 05.02.2018 09:52
Letzter Beitrag: hotsystems
Question HC-05 zu Android Bluetooth Geschwindigkeit Test Kai H. 2 1.585 04.12.2017 16:21
Letzter Beitrag: Tommy56
  Schrittmotor Geschwindigkeit mit Wägezelle + HX711 Modul steuern Schrittmotor 10 2.850 30.08.2017 23:45
Letzter Beitrag: hotsystems
  Wie steuere ich 2 DC Motoren über ein Motorshield mit einem Joystick? Vittelboy 12 8.607 29.12.2015 09:51
Letzter Beitrag: max123
  Problem mit Division zweier Zahlen torsten_156 3 1.172 18.12.2015 22:09
Letzter Beitrag: Bitklopfer
  Motoren anhand von Wii Nunchuck bedienen? Cyberxgirl 1 1.074 10.06.2015 08:20
Letzter Beitrag: Thorsten Pferdekämper
  Geschwindigkeit modifizierter Servo zu hoch murdok1980 11 5.992 25.05.2015 10:41
Letzter Beitrag: murdok1980
  RC-Empfänger auslesen und Motoren steuern Pat12-6 0 1.863 14.03.2015 10:29
Letzter Beitrag: Pat12-6
  PHP Seite aufrufen bei Bewegung platinenmaxe 1 1.692 27.02.2015 14:11
Letzter Beitrag: rkuehle

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste