Forum: Mikrocontroller und Digitale Elektronik CNC "mit" GRBL - Stepper wimmern nur


von Lukas (Gast)


Lesenswert?

Hallo,

ich taste mich so langsam zu einer selbstbau-CNC vor. Dazu habe ich mir 
ein paar Stepper-Motoren besorgt [1] und eine Schaltung zum Steuern 
aufgebaut [2].

Das Minimalbeispiel für den Arduino läuft ohne Beanstandungen:
1
#include <Stepper.h>
2
3
Stepper myStepper(200, 4, 7); 
4
5
void setup() {
6
  myStepper.setSpeed(50);
7
}
8
9
void loop() {
10
  myStepper.step(400);
11
  delay(500);
12
  myStepper.step(-400);
13
  delay(500);
14
}

Dann also GRBL [3] draufgeflashed, eine Achse angeschlossen und mal 
einen Befehl zum Bewegen geben: der Stepper "wimmert" nur einen Moment 
(während der Bewegung) und verstummt wieder ohne eine Bewegung zu 
vollziehen.

Ich habe auch an der Konfiguration von GRBL herumgespielt ($0 - $21) - 
aber keine Besserung in Sicht. Kann es sein, dass sich die Schaltung [2] 
nicht eignet? Kann man das irgendwie ändern?

Viele Grüße,
Lukas

[1] 
http://www.pollin.de/shop/dt/NjQ1OTg2OTk-/Motoren/Schrittmotoren/Schrittmotor_PSM42BYGHW603_1_8_.html
[2] http://www.tigoe.net/pcomp/img/bipolar_stepper.png
[3] https://github.com/grbl/grbl

von Flof (Gast)


Lesenswert?

Ich kann mir gut vorstellen, dass du in GBRL laengere Signalzeiten (und 
Pausen) einstellen musst - und auch die Beschleunigungsrampen angepasst 
werden muessen.

Probier doch mal in deinem Minimalprogramm wie weit du mit dem Delay 
runter gehen kannst, bevor es keine Bewegung mehr gibt.

von Helfer (Gast)


Lesenswert?

Hallo,
ganz wichtig ist, dass du die Vorschubgeschwindigkeiten ($0-$2) anpasst.
Der voreingestellte Wert (Ich glaube 1000), ist für viele Stepper viel 
zu groß. Versuche es mal mit deutlich kleineren Werten (zwischen 5 und 
20).
Villeicht hilft es dir ja.
Gruß
Helfer

von думлихер троль (Gast)


Lesenswert?

Mach das Ganze mal doch so langsam, dass du jeden einzelnen Step hoerst.

von Lukas (Gast)


Lesenswert?

Hallo,

und schon mal Danke für die Tipps. Allerdings funktioniert es immer noch 
nicht.

Helfer schrieb:
> ganz wichtig ist, dass du die Vorschubgeschwindigkeiten ($0-$2) anpasst.
> Der voreingestellte Wert (Ich glaube 1000), ist für viele Stepper viel
> zu groß. Versuche es mal mit deutlich kleineren Werten (zwischen 5 und
> 20).

Das hilft leider nicht.

Flof schrieb:
> Probier doch mal in deinem Minimalprogramm wie weit du mit dem Delay
> runter gehen kannst, bevor es keine Bewegung mehr gibt.

Ich kann in mein Minimalprogramm ja nur eingeben, wie viele Steps er 
machen soll. Den Rest erledigt die Bibliothek. Falls Du das meinst: ich 
kann die Funktion loop() problemlos umschreiben in:
1
void loop() {
2
  myStepper.step(1);
3
}

und der Stepper läuft normal weiter.

Diverse Änderungen an den Einstellungen haben nichts geändert. Ich bin 
jetzt ein wenig ratlos, da doch der "Steppertreiber" zu funktionieren 
scheint.

Habt Ihr noch weitere Ideen?

Viele Grüße,
Lukas

von spess53 (Gast)


Lesenswert?

Hi

>Dazu habe ich mir
ein paar Stepper-Motoren besorgt [1] und eine Schaltung zum Steuern
aufgebaut [2].

Du willst aber nicht ernsthaft die Motoren für etwas CNC-ähnliches 
verwenden? Die sind für einen vernünftigen Chopperbetrieb viel zu 
hochohmig. Gut dein 'Treiber kann das mit dieser Schaltung eh nicht.

MfG Spess

von Lukas (Gast)


Lesenswert?

Vielleicht habe ich das misverständlich formuliert: wenn der Stepper 
sich bewegen soll (durch entsprechenden G-Code Befehl), dann hört man 
ihn anfahren, er zuckt kurz in die Richtung und dann brummt er weiter 
vor sich hin und hört entsprechend auf. Während des Brummens bewegt er 
sich nicht.

von Lukas (Gast)


Lesenswert?

Hallo,

ich habe mir nochmal das Pinout von GRBL angeschaut und glaube jetzt zu 
wissen, woran es scheitert. Z.B. für die X-Achse gibt es die Pins 
"Step-Pulse" und "Direction". Der Steppertreiber [1] führt die 
entsprechend raus. "Meine" Schaltung hat die Pins garnicht. Da wird das 
in Software erledigt [2]. Da [1] eine längliche Lieferzeit hat, muss ich 
wohl oder übel ran und mir selber einen G-Code-Interpreter auf dem 
Arduino schreiben ...

spess53 schrieb:
> Du willst aber nicht ernsthaft die Motoren für etwas CNC-ähnliches
> verwenden? Die sind für einen vernünftigen Chopperbetrieb viel zu
> hochohmig.

Mmm, hier [3] funktionierts aber. Und wesentlich hochohmiger wenn ich es 
hinzufügen darf ...

Grüße,
Lukas

[1] 
http://www.ebay.com/itm/StepStick-Pololu-stepper-driver-A4983-A4988-DRV8825-RepRap-Sanguinololu-RAMPS1-4-/310763158057?pt=LH_DefaultDomain_0&var=&hash=item485aed7a29
[2] 
https://github.com/codebendercc/arduino-library-files/blob/master/libraries/Stepper/Stepper.cpp
[3] http://der-frickler.net/technik/lasergravierer

von Max H. (hartl192)


Lesenswert?

Lukas schrieb:
> Mmm, hier [3] funktionierts aber. Und wesentlich hochohmiger wenn ich es
> hinzufügen darf ...
Hier müssen die Stepper auch so gut wie kein Drehmoment liefern und 
fahren nur sehr langsam.

von думлихер троль (Gast)


Lesenswert?

> Ich kann in mein Minimalprogramm ja nur eingeben, wie viele Steps er
machen soll. Den Rest erledigt die Bibliothek.

Dann schmeiss die Bibliothek weg. Soviel ist da auch nicht dahinter.

Ein Step bedeutet bestromen der Wicklungen. Dann mach einen einzelnen 
Step und miss die Spannungen und kontrollier die Stroeme. Dann noch 
einen Schritt.

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.