Forum: Mikrocontroller und Digitale Elektronik Schrittmotor Nema 23 vibriert nur


von Luis (luis_2801)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

vorweg, ich bin was programmieren angeht nicht wirklich fit und habe 
dort noch meine Schwierigkeiten, also bitte nicht zu streng sein :)

Für mein kleines Projekt möchte ich gerne einen Schrittmotor mit 
konstanter Drehzahl zum laufen bringen. Ich habe mir dazu folgende 
Komponenten angeschafft:

-Schrittmotor Nema 23 (Datenblatt dazu im Anhang)
-Schrittmotortreiber DRV8825
-Ramps 1.4 Board mit Arduino Mega 2560
-Netzteil (Ausgang 12V)

Nach reichlicher Recherche und Probieren, bin ich auf folgenden Code 
gestoßen:



#define X_STEP_PIN 54
#define X_DIR_PIN 55
#define X_ENABLE_PIN 38

#include "AccelStepper.h"

AccelStepper stepper(1, X_STEP_PIN, X_DIR_PIN);

void setup()
{
stepper.setEnablePin(X_ENABLE_PIN);
stepper.setPinsInverted(false, false, true); //invert logic of enable 
pin
stepper.enableOutputs();

// Alternativ müssten die folgenden Zeilen auch funktionieren, weis nur 
nicht sicher was mehr Sinn macht!!
//pinMode(X_ENABLE_PIN , OUTPUT);
//digitalWrite(X_ENABLE_PIN , LOW);

stepper.setMaxSpeed(400*128);
stepper.setSpeed(100*128);
stepper.setAcceleration(1000);
}

void loop()
{
stepper.runSpeed();
}




Außerdem habe ich noch diesen Code gefunden:



#include "AccelStepper.h"

AccelStepper stepper(1, 54, 55);


int pos = 100000;

void setup() {

stepper.setMaxSpeed(100);
stepper.setAcceleration(1000);

stepper.setEnablePin(38);
stepper.setPinsInverted(false, false, true); //invert logic of enable 
pin
stepper.enableOutputs();
}

void loop() {

stepper.move(pos);
stepper.runSpeed();
}




Nun zu meinem Problem:

Bei beiden Codes vibriert der Motor nur und macht keine Umdrehungen. Die 
Motorwelle dreht sich so gut wie gar nicht, nur der ganze Motor 
vibriert. Mein Motor hat einen Schrittwinkel von 0,039°, muss ich 
deshalb noch etwas am Programmcode anpassen?
Weiß zufällig jemand, wieso der Motor nur vibriert und keine Umdrehungen 
macht?

Ich kann durch das Belegen von Jumper auf dem Ramps 1.4 Board die 
Schritte wie folgt ändern:

jumper Yes/No step size
1 2 3
no no no full step
yes no no half step
no yes no 1/4 step
yes yes no 1/8 step
no no yes 1/16 step
yes no yes 1/32 step
no yes yes 1/64 step
yes yes yes 1/128 step

Ich habe auch schon am Treiber DRV8825 den Strom verstellt, leider hat 
das auch kein UNterschied gemacht, bis dass bei zu geringem Strom, der 
Motor auch nicht mehr vibriert.

Durch weiteres probieren und googeln komme ich leider nicht weiter und 
wende mich deshalb hier an die Community, in der Hoffnung, dass mir 
jemand weiterhelfen kann.
Über jede hilfreiche Antwort wäre ich sehr dankbar!

Danke schonmal für jede konstruktive Antwort.

Grüße, Luis

von Jochen (hermann_kokoschka)


Lesenswert?

Luis,
Den Code habe ich jetzt noch nicht verinnerlicht, denn Stepper sind ein 
unglaublich komplexes Thema und es gibt ZIG Problemstellen und Aufgaben 
also erstmal dies:

a)
BEIDE Spulen sind korrekt angeschlossen und haben Kontakt?
"NUR VIBRIEREN" wird der Stepper auch wenn eine Spule oder zugehörige 
Treiberseite ausgefallen wäre. Leitungen innerhalb einer Spule zu 
vertauschen schadet aber nicht, er dreht dann halt "andersrum".
Nebenbei: DRV8825 können sterben falls ohne Stepper betrieben.
b)
Starte erstmal mit FULLSTEP und GANZ LANGSAM und OHNE LAST.
So, daß Du mitzählen kannst 4-5 Steps/Sekunde damit Du testest ob es 
grundsätzlich klappt, Klebeband-Fahne an der Achse hilft.
Halte ALLE Steuersignale (ENABLE/DIR/ETC.) auf definiertem Potential und 
NICHT einfach "in der Luft".

ERST DANACH:
c) WELCHE Geschwindigkeit möchtest Du erreichen und welche Last?
d) DU weißt, das Stepper langsam hochgefahren werden müssen (Rampe)?

Soweit für den Anfang...

: Bearbeitet durch User
von Rainer W. (rawi)


Lesenswert?

Luis schrieb:
> Danke schonmal für jede konstruktive Antwort.

Läuft der Motor mit den mit der Library  mitgelieferten Beispielen?

von Markus W. (dl8mby)


Lesenswert?

@Luis,

es wäre auch sinnvoll sich den Strom durch die Spulen
an einem Oszilloskop anzusehen mithilfe kleiner Widerstände
in den Leitungen zu den Spulen. Eventuell gibt es die bereits
auch auf dem Treiber.
Strom deshalb, um das Oszi durch unsachgemäße Handhabung
der Schaltung nicht durch die induzierten Spannungsspitzen
zu killen, es sei denn man verwendet 10:1 oder 100:1 Tastköpfe.
(Frequenz und TP-Verhalten bei der zulässigen Spannung der TK beachten!)

Bei dieser Vorgehensweise stochert man nicht im Trüben, was die
Ansteuerung des Steppers angeht.

Markus

von Monk (roehrmond)


Lesenswert?

Luis schrieb:
> Nema 23

Kleiner Hinweis dazu: Das ist keine Produktbezeichnung, sondern bezieht 
sich auf die Abmessungen der Montagelöcher. Also für die Diskussion 
ziemlich nutzlos.

> Mein Motor hat einen Schrittwinkel von 0,039°

Hinter dem Getriebe! Der Motor hat 1,8° Schritte, also 200 Schritte pro 
Umdrehung.

Jochen schrieb:
> 4-5 Steps/Sekunde ... , Klebeband-Fahne an der Achse hilft

Wegen dem Getriebe wird man dann nicht viel sehen. Dennoch würde ich 
ebenfalls erst mal so langsam testen und die Spannungen an den 
Motorspulen kontrollieren. Man kann sie z.B. mit zweifarbigen LEDs 
anzeigen, die je nach Polung rot oder grün leuchten:
1
           1kΩ
2
BLK o-----[===]----(LED)----o GRN
3
4
RED o-----[===]----(LED)----o BLU

Außerdem würde ich die Steuersignale am Eingang des DRV Chips mit LEDs 
sichtbar machen. Dort reichen normale LEDs mit Vorwiderstand.

: Bearbeitet durch User
von Luis (luis_2801)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

vielen Dank für die zahlreichen Rückmeldungen!
Ich habe nun herausgefunden, dass der Motor sogar dreht, jedoch nur ganz 
ganz langsam. Das Vibrieren ist immer noch vorhanden.
Man sieht jedoch kaum, dass sich der Motor dreht. Ich habe zum besseren 
Verständnis dazu auch mal ein Video hochgeladen.

Kann man dadurch gewisse Fehlerquellen ausschließen? Hat da zufällig 
jemand eine Idee? Bevor ich jetzt alles wild durchprobiere, dachte ich, 
dass das evtl. noch hilfreich wäre, da man dadurch vielleicht gewisse 
Fehlerquellen ausschließen kann.

Vielen Dank und viele Grüße Luis

von Luis (luis_2801)


Lesenswert?

Vielen herzlichen Dank für die umfangreiche Rückmeldung!

Also ich habe die Spulenanschlüsse vom Motor getestet, das sollte 
passen. Ich habe interessehalber auch mal die Anschlüsse vertauscht, 
dann hat sich der Motor auch nicht mehr minimal gedreht, also vondaher 
gehe ich aus, dass das passen sollte oder?

Ich betreibe den Motor ohne Last und habe auf dem Ramps Board keien 
Jumper gesetzt, sodass der Motor sich in FULLSTEPS drehen sollte. Was 
müsste ich beispielsweise am Code verändern, damit ich 4-5 Steps/ 
Sekunde habe.

Vielen Dank und viele Grüße
Luis

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

Luis schrieb:
> Was müsste ich ..

du könntest z.B. auf die erwähnten Hinweise und Vorschläge (bezüglich 
LED) eingehen, und darauf antworten.

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

Luis schrieb:
> Was
> müsste ich beispielsweise am Code verändern, damit ich 4-5 Steps/
> Sekunde habe.

bei einer Getriebe-Übersetzung von 1:50 und 1,8° pro Schritt hättest du 
also eine Rotationsgeschwindigkeit von ... ziemlich klein.

4 Schritte * 1.8° / 50 (Übersetzung)  ergibt
0,14° pro Sekunde. ergibt immerhin 8,6° pro Minute.

Da musst du aber lange drauf starren, um Rotation mit dem Auge zu sehen. 
Oder wolltest du die Schritte (deren Ansteuerung)  mit LED oder Oszi 
ansehen?

: Bearbeitet durch User
von Luis (luis_2801)


Lesenswert?

Wegstaben V. schrieb:
> Luis schrieb:
>> Was müsste ich ..
>
> du könntest z.B. auf die erwähnten Hinweise und Vorschläge (bezüglich
> LED) eingehen, und darauf antworten.

Da bin ich gerade dabei, wollte noch warten, bis ich soweit bin um euch 
über das Ergebnis zu informieren.

von Luis (luis_2801)


Lesenswert?

Wegstaben V. schrieb:
> Luis schrieb:
>> Was
>> müsste ich beispielsweise am Code verändern, damit ich 4-5 Steps/
>> Sekunde habe.
>
> bei einer Getriebe-Übersetzung von 1:50 und 1,8° pro Schritt hättest du
> also eine Rotationsgeschwindigkeit von ... ziemlich klein.
>
> 4 Schritte * 1.8° / 50 (Übersetzung)  ergibt
> 0,14° pro Sekunde. ergibt immerhin 8,6° pro Minute.
>
> Da musst du aber lange drauf starren, um Rotation mit dem Auge zu sehen.
> Oder wolltest du die Schritte (deren Ansteuerung)  mit LED oder Oszi
> ansehen?

Mein Motor hat eine Übersetzung von 1:47 und einen Schrittwinkel von 
0,039° nach dem Getriebe. Alleridngs hat mich darauf ja @monk 
netterweise daraufhingewiesen, dass er vor dem Getriebe 1,8° 
Schrittwinkel hat.

Da haben Sie recht, dass das sehr schwierig wird, um dort was mit dem 
Auge erkennen zu können. Das erklärt auch, warum der Motor so langsam 
läuft.
Erklärt das auch, wieso der Motor so vibriert?
Bzw. was müsste ich am Code ändern, damit ich dieses Problem umgehen 
kann und mehr Umdrehungen pro Minute schaffe?
Vielen Dank im Voraus!

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Luis schrieb:
> Erklärt das auch, wieso der Motor so vibriert?

Schrittmotore schütteln sich!
u.a. Darum montiert man sie auch fest an irgendwelchen Trägern.
Mach den mal fest.

Schrittmotore sind nicht für Drehzahlen, sondern zum positionieren(grob 
gesagt)
Wenn man richtig Drehzahlen will, nimmt man Bürsten Motore oder BLCD.

: Bearbeitet durch User
von Rüdiger B. (rbruns)


Lesenswert?

Der Schrittmotor macht Schritte, also ruckartige Bewegungen. Erst durch 
die Massenträgheit etc. wird dadurch eine scheinbar flüssige Bewegung.

: Bearbeitet durch User
von Rainer W. (rawi)


Lesenswert?

Luis schrieb:
> Erklärt das auch, wieso der Motor so vibriert?

Ein nicht fest montierter Motor schafft die besten Voraussetzungen, um 
im Vollschrittbetrieb möglichst viele Vibrationen zu erzeugen. 
Vielleicht kommt noch eine Resonanz dazu.

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Rainer W. schrieb:
> viele Vibrationen

Gar Harmonien!?!
Siehe z.B.: https://www.youtube.com/watch?v=oGfkPCZYfFw

Beitrag #7707909 wurde vom Autor gelöscht.
von Norbert (der_norbert)


Lesenswert?

Monk schrieb im Beitrag #7707909:
> Luis schrieb:
>> Ich habe nun herausgefunden, dass der Motor sogar dreht, jedoch nur ganz
>> ganz langsam
>
> Schnell kann er auch nicht, wegen dem Getriebe.

Danke! Musste gerade dran denken, das ich schon längere Zeit nicht mehr 
in die Zwiebelfisch-Archive des Herrn Bastian Sick geschaut habe. ;-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.