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
Accelstepper libary und Schrittmotor
18.01.2020, 19:55
Beitrag #9
RE: Accelstepper libary und Schrittmotor
(18.01.2020 19:38)Lothileinchen schrieb:  Es funktioniert jetzt wie gewollt aber leider ohne Beschleunigung und Abbremsverhalten.
Du benutzt ja auch nur die Funktionen die kein Beschleunigen und Abbremsen unterstützen.

Gruß, Franz-Peter
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.01.2020, 18:32 (Dieser Beitrag wurde zuletzt bearbeitet: 19.01.2020 19:02 von Lothileinchen.)
Beitrag #10
RE: Accelstepper libary und Schrittmotor
(18.01.2020 19:55)MicroBahner schrieb:  
(18.01.2020 19:38)Lothileinchen schrieb:  Es funktioniert jetzt wie gewollt aber leider ohne Beschleunigung und Abbremsverhalten.
Du benutzt ja auch nur die Funktionen die kein Beschleunigen und Abbremsen unterstützen.

Hallo Franz-Peter !
Genau so ist es. Mit Beschleunigung und Abbremsen Funktioniert es Leider nur teilweise.Wie müsste es denn der Code mit Beschleunigen und Abbremsen in Taster 3 aussehen? Ich finde einfach die Lösung nicht.
Wenn ich nach Taster 4 die Taster 3 drücke, Motor dreht erst entgegen der NULL-Position(langsam und mit Abbremsverhalten) und fährt dann auf Null - Position mit Beschleunigung und mit Abbremsverhalten.
Taste 4 dann Taste 1 oder 2 dann Taste 3 das gleiche Problem.
Hier nun den Sketch nochmal gekürzt und hoffentlich für alle gut lesbar.

Gruß und schönen Restsonntag
Lothar
Code:
#include <AccelStepper.h>
const  int stepPin = 5 ;
const  int dirPin = 4 ;
const  int enPin = 8 ;
int LEDPIN = 13;
int taster1 = 9;
int taster2 = 10;
int taster3 = 11;
int taster4 = 12;
long int Pos = 0;
long int weg = 8000;
AccelStepper stepper(AccelStepper::DRIVER, stepPin, dirPin);
void setup() {
  Serial.begin(9600);
  pinMode(LEDPIN, OUTPUT);
  pinMode(taster1, INPUT_PULLUP);
  pinMode(taster2, INPUT_PULLUP);
  pinMode(taster3, INPUT_PULLUP);
  pinMode(taster4, INPUT_PULLUP);
  pinMode (stepPin, OUTPUT);
  pinMode (dirPin,  OUTPUT);
  pinMode (enPin,   OUTPUT);
  digitalWrite (enPin, LOW);
  stepper.setMaxSpeed(4200);
  stepper.setAcceleration(10000);
}
void Taster() {
  while (  ! digitalRead(taster1)) {
    stepper.setSpeed(4000);
    stepper.runSpeed();
    
  }
  while ( ! digitalRead(taster2)) {
    stepper.setSpeed(-4000);
    stepper.runSpeed();
  }
  while (  ! digitalRead(taster3)) {
    while (stepper.currentPosition() != 0) {
      stepper.runToNewPosition(0);
    }
  }
  while (  ! digitalRead(taster4)) {
    while (stepper.currentPosition() != weg) {
      stepper.moveTo(weg);
      stepper.setSpeed (4000 );
      stepper.runSpeedToPosition();
    }
  }
}
void loop() {
  Taster();
  Pos = stepper.currentPosition ();
  Serial.print("POS=  ");
  Serial.println(Pos);
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.01.2020, 22:54
Beitrag #11
RE: Accelstepper libary und Schrittmotor
Hallo Lothar,
Du musst bei der Accelstepper schon genau unterscheiden zwischen Aufrufen mit und ohne Beschleunigung und zwischen blockierenden und nicht blockierenden Aufrufen. Das geht bei dir alles ein wenig durcheinander.
Das 'runToNewPosition' ist z.B. blockierend und mit Beschleunigung.
Da gelten dann die Vorgaben von setMaxSpeed und setAcceleration. Du brauchst da auch keine while-Schleife - die ist sozusagen in den Funktionen drin.
Für Taste 3+4 ginge dass dann z.B. einfach so:
Code:
if (  ! digitalRead(taster3)) {
    stepper.runToNewPosition(0);
  }
  if (  ! digitalRead(taster4)) {
    stepper.runToNewPosition(weg);
  }
Die runSpeed Funktion ist dagegen nicht blockierend ( macht pro Aufruf max. einen Step ) und hat keine Beschleunigung. Da gilt dann die Vorgabe von setSpeed. Da brauchst Du eine eigene Schleife - die Du mit loop() aber eigentich auch schon hast.

Gruß, Franz-Peter
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.01.2020, 21:30
Beitrag #12
RE: Accelstepper libary und Schrittmotor
(19.01.2020 22:54)MicroBahner schrieb:  Hallo Lothar,
Du musst bei der Accelstepper schon genau unterscheiden zwischen Aufrufen mit und ohne Beschleunigung und zwischen blockierenden und nicht blockierenden Aufrufen. Das geht bei dir alles ein wenig durcheinander.
Das 'runToNewPosition' ist z.B. blockierend und mit Beschleunigung.
Da gelten dann die Vorgaben von setMaxSpeed und setAcceleration. Du brauchst da auch keine while-Schleife - die ist sozusagen in den Funktionen drin.
Für Taste 3+4 ginge dass dann z.B. einfach so:
Code:
if (  ! digitalRead(taster3)) {
    stepper.runToNewPosition(0);
  }
  if (  ! digitalRead(taster4)) {
    stepper.runToNewPosition(weg);
  }
Die runSpeed Funktion ist dagegen nicht blockierend ( macht pro Aufruf max. einen Step ) und hat keine Beschleunigung. Da gilt dann die Vorgabe von setSpeed. Da brauchst Du eine eigene Schleife - die Du mit loop() aber eigentich auch schon hast.



Hallo Franz-Peter

Danke für den Code-Schnipsel und für die gegebenen Hinweise.
Ich hatte Accelstepper Lip-Dokumentation gelesen aber keine Vorstellung bzw. einfach Ignoriert was mit blockierend gemeint ist/war und welche Wirkung es im Programm hat. (Zu meiner Schande)
Um meine Frage bzw. Anliegen besser umschreiben zu können, benenne ich die Taster neu.
In:
Taster1 Einrichten
Taster2 Ein_rich_ten
Taster3 Home
Taster 4 Start Automatik
Taster 5 Set Null_Position (Neu hinzugekommener Taster)
{
stepper.setCurrentPosition(0);
}
Arbeitsablauf:
Mit Taster -> „Einrichten oder Ein_rich_ten“ auf irgendeine Position fahren.
Mit Taster -> „Set Null_Position“-- angefahrene Position auf null stellen.
Mit Taster -> „Start Automatik“ auf eine definierte Position und mit definierter Schrittgeschwindigkeit fahren. Die Schrittgeschwindigkeit wird ermittelt mittels Encoder (Drehzahl der Hauptspindel - auch um die null-Position der Hauptspindel zu ermitteln) dieser Encoder wird an der Hauptspindel einer alten Drehmaschine montiert sein.
Ist die Position erreicht?
Mit Taster -> „Home“ auf Ausgangsposition fahren
Mit Taster -> „Start Automatik“ Zyklus beginnt neu
Und so weiter. Bis die Vorgaben erreicht sind.

if (! digitalRead(Home)) {
stepper.runToNewPosition(0); //Mit Beschleunigung und Abbremsen ist aber nicht zwingend Notwendig
}
if (! digitalRead(Start Automatik)) {
Muss ohne Beschleunigung und Abbremsen sein;
}
Frage: Wie müsste der Code in Taster „Start Automatik“ ohne Beschleunigung und Abbremsen aussehen? Bzw. Ist das in dieser Kombination(Mix)) überhaupt möglich? Ich kann die Lib durchlesen so oft wie ich will. Ich sehe einfach die Lösung nicht. (Brett vorm Kopf –Tomaten auf den Augen)
Wichtig: Die Endposition muss definiert werden können, ebenfalls die Schrittgeschwindigkeit. Diese ist abhängig von der Drehzahl der Hauptspindel. (Gewinde schneiden –Vorschub.)
Danke
Gruß,Lothar
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  sleep Libary huber5093 4 506 15.07.2020 20:11
Letzter Beitrag: Tommy56
  Wegbegrenzung für Schrittmotor Scouter 62 7.904 10.02.2019 13:48
Letzter Beitrag: Scouter
  Projekt Portionierer mit Schrittmotor, Bluetooth hilfe Flieger 3 1.619 09.08.2018 13:02
Letzter Beitrag: Hilgi
  Bewegung zweier Motoren mit unterschiedlicher Geschwindigkeit mit AccelStepper Yoink 2 1.627 15.07.2018 06:40
Letzter Beitrag: MicroBahner
  accelstepper und enable Grissu112 4 2.374 21.04.2018 16:36
Letzter Beitrag: Grissu112
  Endschalter für Schrittmotor clemens5555 10 5.215 18.04.2018 14:37
Letzter Beitrag: Tommy56
  Schrittmotor mit Puls/Richtung Steuern Günni 6 3.939 19.01.2018 10:30
Letzter Beitrag: Tommy56
  NodeMCU 12E - Libary für Arduino für den Node kompatibel machen ? Stargazer 4 2.077 04.11.2017 17:36
Letzter Beitrag: Stargazer
  Schrittmotor Geschwindigkeit mit Wägezelle + HX711 Modul steuern Schrittmotor 10 5.709 30.08.2017 23:45
Letzter Beitrag: hotsystems
  Schrittmotor mit l298n Sequenz huber5093 10 4.955 26.04.2017 15:06
Letzter Beitrag: huber5093

Gehe zu:


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