Frage zu STEP MOTOR 28BYJ-48 5VDC zu ESP32

Hi zusammen,

ich habe mal eine Frage zum Stepper Motor 28BYJ-48 5VDC im Betrieb mit dem ESP32.

Und zwar habe ich Ihn bei mir an folgenden Pins im Betrieb: 12, 25 ,14, 27

Soweit funktioniert der Stepper und dreht sich 1x360° nach vorne danach wieder 1x360° zurück.

Allerdings bekommt der Stepper Probleme wenn die setSpeed über 18 gesetzt wird. Danach dreht sich der Stepper nur noch in eine Richtung, wenn ich mit dem Speed noch höher gehe, dann steht er auf der Stelle und vibriert sozusagen nur noch...

Womit hängt das zusammen? Ich hätte eine Vermutung würde die aber gern von jemanden der sich noch etwas besser auskennt bestätigt haben. Für eine Umdrehung sind ca 2048 Steps erforderlich. Ich vermute nun das bei der Übersetzung ab setSpeed 19 Schritte übersprungen werden, wie man das aus dem 3D Druck kennt. Ich denke der Treiber kommt dann nicht hinterher und dann steht das Ding. Wobei setSpeed 18 ca 3 Sekunden für eine Umdrehung benötigt. Finde ich jetzt nicht schnell, aber in Anbetracht der abgearbeiten Stepps ggf. schon.

Viele Grüße

Hallo,
ich versuche das jetzt mal ganz einfach.
der Motor hat ja ein ziemliches Getriebe mit eingebaut. Ich hab mal eben nachgesehen und einen gefunden 1:85,25. oder auch 1:64 Das bedeutet das der eigentliche Motor mit
1/3x60x85,25 =1700U/min dreht.

Bei Schrittmotoren sinkt ab einer bestimmten Frequenz das Drehmoment weil der Strom einfach nicht mehr voll zum fließen kommt, weil die Induktivität der Spulen den Strom langsam ansteigen lässt. ( Verz. höherere Odrnung e-Funktion)
Die Frequenz kann man jetzt auch rechnen.
1/3x2048=682Hz

Das kann man kompensieren in dem man die Spannung anhebt, dann ist sozusagen mehr Druck dahinter und der Strom steigt wieder schneller an. Das geht dann bis 60V hoch. Der Motortreiber arbeitete dann allerdings als Konstantstromquelle und treibt so viel Strom in die Spule wie passend für den Motor (Typenschild) eingestellt wird. Aber auch das hat natürlich seine Grenzen. Schrittmotore sind eigentlich nicht für hohe Drehzahlen gebaut, da sind DC Motoren besser zu geeignet.

Heinz

Wie ist hier setSpeed definiert? Du solltest mal deinen Sketch zeigen, und wie alles verdrahtet ist. Auch wie Du den Motor mit Strom versorgst.

3 Sekunden für eine Umdrehung schafft der Motor durch das Getriebe normalerweise eher nicht - ohne Beschleunigungsrampe schon gar nicht.

Im Halfstep-Modus schafft der Motor etwas höhere Geschwindigkeiten ( zumindest meine :wink: ).

Aha Also 1700 UPM des Motors für eine Wellengeschwindigkeit von 3 UPS / 180UPM

Meist findet man diesen Motor aber mit einem ca 1:64 Getriebe.

Mal genauer geschrieben:
Bei Spannungsansteuerung (wie dieser Motor angesteuert wird) steigt der Strom wegen der Induktivität der Wicklungen des Motos nicht momentan sondern etwas langsamer. Dieser Anstieg vermindert den Mittelwert des Stromes durch die Wicklungen. Bei langsamen Drehungen kann er venachlässigt werden ab einer gewissen Schrittgeschwindigkeit ist die Absenkung aber so groß daß das Drehmoment des Motors die Reibung und das Lastmoment nicht mehr überweinden kann uns der Motor brummend stehen bleibt.

Es gint mehrere dieser Grenzfrequenzen:
Ansteuerung mit konstanter Stepgeschwindigkeit vom stand an. Da ist die Grenze viele kleiner als wenn der Motor mit einer Rampe angefahren wird.

Grüße Uwe

Hallo
sorry nein 1700UPM bei 1/3 UPS. für i=85,xx
bei i=64 sind es dann eben knapp 1300UPM am Motor.

Gruß Heinz

Ok, 1 Umdrehung pro 3 Sekunden.

Beispiel Sketch von der Stepper.h:


/*
 Stepper Motor Control - one revolution

 This program drives a unipolar or bipolar stepper motor.
 The motor is attached to digital pins 8 - 11 of the Arduino.

 The motor should revolve one revolution in one direction, then
 one revolution in the other direction.


 Created 11 Mar. 2007
 Modified 30 Nov. 2009
 by Tom Igoe

 */

#include <Stepper.h>

const int stepsPerRevolution = 2048;  // change this to fit the number of steps per revolution
// for your motor

// initialize the stepper library on pins 8 through 11:
Stepper myStepper(stepsPerRevolution, 12, 25, 14, 27);

void setup() {
  // set the speed at 18 rpm:
  myStepper.setSpeed(18);
  // initialize the serial port:
  Serial.begin(9600);
}

void loop() {
  // step one revolution  in one direction:
  Serial.println("clockwise");
  myStepper.step(stepsPerRevolution);
  delay(500);

  // step one revolution in the other direction:
  Serial.println("counterclockwise");
  myStepper.step(-stepsPerRevolution);
  delay(500);
}

Soviel zum Sketch. Ok Ich lese da raus. Mehr Speed pro Umdrehung gehen dann wohl nur mit mehr Spannung? Vom Prinzip her reicht mit die aktuelle Geschwindigkeit wahrscheinlich auch aus. Ich habe mich nur gewundert, warum das Problem auftritt und woran das liegt. Denn im original Sketch sind stepsPerRevolution mit 200 angegeben und setSpeed(60) rpm. Das passt aber nicht zu meinem Stepper.

Du kannst keinen Hybridmotor mit 200 Schritte pro Umdrehung mit einem kleinen Permanentmagentmotor mit 64 Schritten und einem ca 1:64 Getriebe vergleichen.

Bei Spannungssteurung muß der Motor mit Nennspannung betrieben werden da er bei Stillstand (wenn keine Stromabsenkung durch die Induktivität da ist) der Strom sein wird und darum der Motor thermisch überlastet. Du macht ihn einfach kaputt.

Wenn Du mehr Kraft / Drehmoment bei einer gewissen Drehzahl brauchst dann brauchst Du einen größeren Motor.

Grüße Uwe

Hi zusammen nochmal!

Mir ist aufgefallen, sobald der Stepper einmal gelaufen ist bleibt Strom auf dem Stepper. Könnte wegen dem Rastmoment ggf sogar gewollt sein. Jedoch wird der schon ordentlich heiß und braucht nicht unbedingt dauerhaft bestromt zu werden.

Wie kann ich über den Sketch die Spannung ausschalten? Mir fällt sonst höchstens nur ein relais ein... Aber es müsste auch so gehen.

Jemand Erfahrung damit?

Vielen Dank

In diesem Thema konnte ich nirgendwo eine Angabe zum verwendeten Treiber finden, denn direkt am ESP32 geht ja wohl nicht.

Bei meinem Treiber geht das, indem ich alle Pins auf denselben Wert setze, weil dann mangels Spannungsunterschieden kein Strom fließt. Allerdings verliert er dann die Position.

Welchen Treiber verwendest Du?

Es ist normal Schrittmotore bestromt zu lassen auch wenn er steht.
Du kannst beim Motortreiber die Ausgänge abschalten.
Einfach alle Ausgänge des ULM2003 auf der mitgelieferten Treiberplatine ausschalten (Ausgänge des ESP auf LOW).
Die Motorversorgungsspannung einfach abzuschalten sehe ich als gefährlich an.
Grüße Uwe

Hi sorry für die späte Rückmeldung.

Ich kann nicht genau sagen welcher Treiber dabei ist. Dieser Motor wurde mit dem Stepper im Paket verkauft. Aber es scheint der ULM2003 zu sein. Jedenfalls von den Bildern her.

Ich versuche es mal mit dem low.

Danke.

Okay sehr gut! Das funktioniert genau das was ich möchte!

Herzlichen Dank!

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.