Schrittmotor verliert Schritte

Schrittmotor: 200 Schritte/U 1.8°

Schrittmotortreiber: Pololu a4988

betrieben mit nem Arduino Uno

Hallo zusammen, ich habe nun schon mehrer Sketches zur Motoransteuerung getestet. Das Problem ist, dass ich wie hier in dem Beispielsketch gerne 200 Schritte fahren möchte

stepper.move(200);               // move 200 steps
  delay(1000);

.

Z.B. mit diesem Testsketch

#include <AH_Pololu.h>

// RES -> RESOLUTION per full revolve
// DIR -> DIRECTION PIN
// STEP -> STEPPING PIN
// AH_Polopu(int RES, int DIR, int STEP);
AH_Pololu stepper(200,2,3);   // Initialisation

void setup() {
  stepper.setSpeedRPM(60);          // RPM , rotations per minute
//stepper.setSpeedHz(100);           // Hz, steps per second
}

void loop() {

  stepper.move(200);               // move 200 steps
  delay(1000);
  
  stepper.revolve(1.0);            // revolve one time
  delay(1000);
  
  stepper.rotate(360);             // rotate 360° 
  delay(1000);  
  
}

Der Schrittmotor fährt allerdings nur ca. 180 Schritte, obwohl 200 Schritte eingestellt sind. Betrieben im Vollschrittmodus. Vlt hatte jemand von euch das Problem auch schonmal!? Über Tipps würde ich mich sehr freuen. Danke!

P.S: Verkabelung usw. stimmt, und auch den Strom/ die Spannung hab ich mit einem Multimeter auf dem Schrittmotortreiber (0.75) gemessen, da ist soweit alles ok.

Vielen Dank und MfG

Mechanisch könnte die Reibung oder Drehmoment zu groß sein, oder die träge Masse zu hoch für die gewählte Geschwindigkeit.

Elektrisch könnte die Spannung zu gering sein. Ob der benötigte Strom erreicht wird, läßt sich mit einem Multimeter kaum feststellen. Gibt es eine Strombegrenzung, die zu niedrig eingestellt sein könnte?

Was für Strom und Spannung erwartet Dein Schrittmotor, womit wird er gespeist, und welches Treiberboard/Chipsatz?

Wieviele Schritte gehen verloren, wenn der Motor 100 Schritte machen soll?

Ich würde es mal mit niedrigerer Steprate versuchen. Oder mit höherer Spannung, wenn der Treiber eine Strombegrenzung hat.

DrDiettrich: Mechanisch könnte die Reibung oder Drehmoment zu groß sein, oder die träge Masse zu hoch für die gewählte Geschwindigkeit.

Elektrisch könnte die Spannung zu gering sein. Ob der benötigte Strom erreicht wird, läßt sich mit einem Multimeter kaum feststellen. Gibt es eine Strombegrenzung, die zu niedrig eingestellt sein könnte?

Was für Strom und Spannung erwartet Dein Schrittmotor, womit wird er gespeist, und welches Treiberboard/Chipsatz?

Wieviele Schritte gehen verloren, wenn der Motor 100 Schritte machen soll?

Ich würde es mal mit niedrigerer Steprate versuchen. Oder mit höherer Spannung, wenn der Treiber eine Strombegrenzung hat.

Danke schonmal für die Antwort! Genaue Daten werde ich morgen mal nachschauen!

Er verliert ca. 20 % (geschätzt) der Schritte,wenn er 100 machen soll, macht er nicht ganz eine halbe Umdrehung...

Treiberboard ist wie gesagt Pololu a4988, gespeißt wird er über vin (externes Netzteil 12V 0.5 Ampere) MfG

Bei Arduino bin ich auch Neuling. Über Stepper- Stellgliedern kann ich berichten: Kommerzielle Steuerungen, wie die Pollux von Micos, lassen die Geschwindigkeit und die Beschleunigung getrennt einstellen. D.h. die ersten (und die letzten) Steps dauern länger, die Geschwindigkeit fährt also ein Trapez (Rampe). Denn der Motor lässt sich nicht von Null auf Drehzahl in einem Step bringen, auch nicht stoppen - außer man fährt recht langsam. Weiters: das System Magnetfeld - Trägheitsmoment ist ein Feder-Masse System mit Eigenresonanz. Eine große Gummischeibe als Dämpfer hat schon geholfen. Bei Optik-Antrieben manchmal als 'Handrad' getarnt. Viel Erfolg, HeinzKo

Es gibt auch die AccelStepper Bibliothek, die Anfahren und Bremsen in Software macht.

Aber zuvor sollte geklärt werden, ob die Stromversorgung in Ordnung ist. Wenn ich Vin lese, nuckelt da auch noch der Uno an den 0,5A? Und der Motor zieht alleine schon 0,75A?

DrDiettrich: Es gibt auch die AccelStepper Bibliothek, die Anfahren und Bremsen in Software macht.

Aber zuvor sollte geklärt werden, ob die Stromversorgung in Ordnung ist. Wenn ich Vin lese, nuckelt da auch noch der Uno an den 0,5A? Und der Motor zieht alleine schon 0,75A?

Hey, ne Vin ist nur für den Motor, der Arduino bekommt seinen Saft vom USB port...... Ich habe die 0.75A am Potentiometer des Treiberchips gemessen...

Philovic: Hey, ne Vin ist nur für den Motor, der Arduino bekommt seinen Saft vom USB port...... Ich habe die 0.75A am Potentiometer des Treiberchips gemessen...

Und das ist doch für ein 0,5 A Netzteil zu viel. Wundert mich, dass der Strom überhaupt dann vom Netzteil geliefert werden kann. Welche Spannung hast du dann am Netzteil ?

HotSystems: Und das ist doch für ein 0,5 A Netzteil zu viel. Wundert mich, dass der Strom überhaupt dann vom Netzteil geliefert werden kann. Welche Spannung hast du dann am Netzteil ?

12V 500 mA

Also, das hatte ich nicht erwähnt, bei diesem Sketch, macht er die gewünschte Anzahl an Schritten(200).

#define DISTANCE 200        // Steps--> Distanz

int StepCounter = 0;

int Stepping = false;


void setup() {                

  pinMode(6, OUTPUT);   //Dir  

  pinMode(7, OUTPUT);   //Step

  digitalWrite(6, LOW); //Dir

  digitalWrite(7, LOW); //Step


  pinMode(13,INPUT);     //Schalter

}


void loop() {

  if (digitalRead(13) == LOW && Stepping == false)

  {

    Stepping = true;

  }


  if (Stepping == true)

  {

    digitalWrite(7, HIGH);

    delay(10);       //Verzögerung zwischen den Steps   

    digitalWrite(7, LOW); 

    delay(1);


    StepCounter = StepCounter + 1;


    if (StepCounter == DISTANCE)

    {

      StepCounter = 0;

      Stepping = false;

    }

  }

}

jedoch würde ich gerne mit vorgefertigten Bibliotheken arbeiten bzw. da mal ein paar Sachen ausprobieren, nur bekomme ich den Motor mit "vorgefertigten" Bibliotheken leider nicht richtig zum laufen.... Hat jemand mal einen link oder einen Sketch, welcher in Verbindung mit dem Pololu-Treiberchip laufen "muss" bzw. bei euch lief!? Einfach nen Sketch zum testen, dass der Motor z.B 200 Schritte macht....wäre echt nett wenn jemand was weiß, danke schonmal. MfG

Versuche doch einfach nur mal zu verstehen, daß ein Netzteil für 500mA keine 750mA (0,75A) liefern kann, zumindest nicht lange. Du brauchst auf jeden Fall ein stärkeres Netzteil.

DrDiettrich:
Versuche doch einfach nur mal zu verstehen, daß ein Netzteil für 500mA keine 750mA (0,75A) liefern kann, zumindest nicht lange. Du brauchst auf jeden Fall ein stärkeres Netzteil.

Hey, ich habe aber wirklich 0.75A gemessen, und der von mir oben genannte Sketch funktiniert ja auch einfandfrei, jedoch möchte ich gerne die vorgefertigten Bibliotheken verwenden/testen, und da hakts leider…
MfG

P.S: habe es auch schon mit “stärkerenNetzteilen” getestet.

Philovic: P.S: habe es auch schon mit "stärkerenNetzteilen" getestet.

Was heißt bei dir stärker ?

Ich vermute, du hast falsch gemessen, kann leider immer mal passieren. Aber 0,5 A = 500 mA sind zu wenig für einen Motor der 0,75 A benötigt.

Was ist das für ein Netzteil ? Ist das geregelt ?

Zeig uns mal das ein Bild des Netzteils.

Und du hast noch keine Antwort darauf gegeben, welche Spannung du am Netzteil hast, wenn der Motor dreht.

Ich vermute die Spannung bricht auf ca. 6 Volt ein.

HotSystems: Was heißt bei dir stärker ?

Ich vermute, du hast falsch gemessen, kann leider immer mal passieren. Aber 0,5 A = 500 mA sind zu wenig für einen Motor der 0,75 A benötigt.

Kann schon sein dass da 750 mA gemessen wurden, aber nicht mehr bei 12 Volt. Du ziehst 750mA, die hats du gemessen o.k. Aber vielleicht würde der Motor mehr brauchen, nur das Netzteil bricht zusammen, die Spannung geht runter ins Nirwana, und die 750 mA kannst du dir wo hinschieben, weil keine Spannung mehr da ist. Nimm ein Netzteil das bei der vom Motor benötigen Last nicht schon überlastet ist, dann klappt das aus. Dein Programm kann schon 200 schritte rausgeben, aber wenn das Netzteil es nicht hergibt, dann macht der Motor eben das was er damit noch machen kann.

Netzteil Datenblatt Schrittmotor

Der Schrittmotor braucht laut Datenblatt 0.33A. Ich hatte eigentlich auch nich geschrieben dass der Schrittmotor 0.75A braucht, ich hatte lediglich geschrieben, dass ich 0.75 am Potentiometer des Treiberchips gemessen habe, aber ich hab da echt wenig Ahnung von(wie ihr bestimmt schon gemerkt habt :) ) und lasse mich gern korrigieren. Vielen Dank schonmal

Das Netzteil sieht für mich nach einem ungeregelten Billigteil aus. (Die unterbrochene Linie unter der durchgezogenen steht dafür)

Gruß Tommy

Tommy56: Das Netzteil sieht für mich nach einem ungeregelten Billigteil aus. (Die unterbrochene Linie unter der durchgezogenen steht dafür)

Gruß Tommy

Habe es schon mit anderen Netzteilen versucht. Aber wie gesagt der Sketch, welchen ich weiter oben gepostet habe mit dem Schalter läuft mit diesem "Billignetzteil" so wie er soll. Lediglich die Sketches der Bibliotheken läufen nicht rund bzw. da verliert er Schritte. MfG

Philovic: Habe es schon mit anderen Netzteilen versucht. Aber wie gesagt der Sketch, welchen ich weiter oben gepostet habe mit dem Schalter läuft mit diesem "Billignetzteil" so wie er soll. Lediglich die Sketches der Bibliotheken läufen nicht rund bzw. da verliert er Schritte. MfG

Du hast aber nicht geschrieben, was die anderen Netzteile leisten.

Also solltest du auch mal die Spannung messen, wie ich schon 2 (in Worten zwei) mal geschrieben habe.

Anders macht es keinen Sinn. Und für uns keinen Spaß....

HotSystems: Du hast aber nicht geschrieben, was die anderen Netzteile leisten.

Also solltest du auch mal die Spannung messen, wie ich schon 2 (in Worten zwei) mal geschrieben habe.

Anders macht es keinen Sinn. Und für uns keinen Spaß....

Ok, Sry und danke für deine Antwort erstmal. Ich werde nochmal die anderen Netzteile probieren und dann die Spannung messen, viel Dank schonmal, werde berichten! MfG

Motoren, auch Stepper, kommen problemlos mit ungeregelten Spannungen zurecht.

Er fährt aber sofort mit voller Last los, das mögen Stepper eben garnicht. Ich weis nun auch nicht ob er Leer läuft oder schon eine Last dran montiert ist. Leer schafft er es sauber anzulaufen, unter Last nicht. Das sind die Schritte die fehlen. Daher eine Regelung benutzten die Rampe fährt.

Du sagst ja selbst, das er mit deinem eigenen Script läuft. Mit delay 10 + delay 1 + Ausführung der Befehle kommst du auf ca 80 Hz statt 200 Hz wie in dem Script wo du Schritte verlierst. 200Hz deswegen, weil du 60U/min einstellst und 200Steps/U hast. Schau dich nach Accel (abkürzüng für Acceleration = Beschleunigung) um. Unter Accel versteht man wie lange es dauert bis er auf maximal Speed oben ist. Die pololu-Bibliothek hat keine Rampenfunktion drin, weil ich die auch schon getestet habe.

chefin: Motoren, auch Stepper, kommen problemlos mit ungeregelten Spannungen zurecht.

Er fährt aber sofort mit voller Last los, das mögen Stepper eben garnicht. Ich weis nun auch nicht ob er Leer läuft oder schon eine Last dran montiert ist. Leer schafft er es sauber anzulaufen, unter Last nicht. Das sind die Schritte die fehlen. Daher eine Regelung benutzten die Rampe fährt.

Du sagst ja selbst, das er mit deinem eigenen Script läuft. Mit delay 10 + delay 1 + Ausführung der Befehle kommst du auf ca 80 Hz statt 200 Hz wie in dem Script wo du Schritte verlierst. 200Hz deswegen, weil du 60U/min einstellst und 200Steps/U hast. Schau dich nach Accel (abkürzüng für Acceleration = Beschleunigung) um. Unter Accel versteht man wie lange es dauert bis er auf maximal Speed oben ist. Die pololu-Bibliothek hat keine Rampenfunktion drin, weil ich die auch schon getestet habe.

Ah, sehr hilfreich die Erklärung ! Momentan ist keine Last dran, allerdings hatte ich den Motor schon mit Last getestet(mit dem eigenen Skript), das lief ohne Probleme, nur mit den vorgefertigten Bibliotheken kommt er nichtmal ohne Last zurecht...ich schau nochmal, aber danke schonmal!