Cl Hybrid Stepper Nema 23 (JMC) und MobaTools/Drehzahlanpassung für Rundtisch

Hi Franz Peter,
ich habe mir deine MobaTools für mein Projekt installiert und es funktioniert soweit sehr gut.
Ich setze einen Cl-Stepper IHSS57-36-10 1Nm Nema 23 von JMC mit 800 Stepps ein.
Leider komme ich nicht über 180Rpm, auch mit deinem Beispiel hier nicht darüber.

MicroBahner:
Wenn Du die delay loswerden willst, kannst Du den MoTo Timer einsetzen:

#include <MobaTools.h>

const byte stepPin = 6;
const byte dirPin  = 5;

const byte tasterPin = A0;

const int umdrMin = 600;  // 60 Umdrehungen / Minute
const long laufZeit = 2000; // Laufzeit 2 Sekunden

MoToStepper myStepper ( 200, A4988 );
MoToTimer  stopUhr;

void setup() {
    // put your setup code here, to run once:
    myStepper.attach( stepPin, dirPin );
    myStepper.setRampLen( 10 );

pinMode( tasterPin, INPUT_PULLUP );

}

void loop() {
    // put your main code here, to run repeatedly:
    if ( digitalRead( tasterPin ) == LOW && !stopUhr.running() ) {
        myStepper.setSpeed( umdrMin );  // Umdrehungszahl einsteeln ( in Umd/Min*10 )
        myStepper.rotate( 1 );          // Vorwarts drehen
        stopUhr.setTime( laufZeit );    // Zeit aufziehen
    }

if ( stopUhr.expired() ) {
        // Zeit ist abgelaufen
        myStepper.rotate( 0 ); //  wieder anhalten
    }
}




Das in deinen Code einzubauen überlass ich jetzt mal dir 8)

Wenn ich in meinem Projekt mit Port High/Low und delayMicroseconds(25) arbeite rennt der Stepper wie gewünscht aber leider ohne Anfahr/Bremsrampe.
Da ich den Stepper an meinen Rundtisch(4.Achse Fräsmaschine) einsetzen möchte brauche ich aber die Rampe, das anfahren und bremsen mit Port High/Low und delayMicroseconds(25) ist einfach zu hart.

Besteht die Möglichkeit mit MobaTools eine höhere Drehzahl zu erreichen?

Hier mein Testcode

#include <MobaTools.h>

const byte stepPin = 2;
const byte dirPin  = 3;

const byte tasterPin = A0;

const int umdrMin = 7200;   // 60 Umdrehungen / Minute
const long laufZeit = 2000; // Laufzeit 2 Sekunden

MoToStepper myStepper ( 800, A4988 );   // 200 Steps/ Umdrehung ( gegebenenfalls anpassen )

void setup() {
    // put your setup code here, to run once:
    myStepper.attach( stepPin, dirPin );
        myStepper.setSpeed( umdrMin ); //Geschwindigkeit einstellen
    myStepper.setRampLen( 50 );

    pinMode( tasterPin, INPUT_PULLUP );

}

void loop() {
    // put your main code here, to run repeatedly:
        myStepper.rotate( 1 );  // Vorwarts drehen
        delay(2000);
        myStepper.rotate( 0 ); //  wieder anhalten
/*    if ( digitalRead( tasterPin ) == LOW ) {
        myStepper.setSpeed( umdrMin ); //Geschwindigkeit einstellen
        myStepper.rotate( 1 );  // Vorwarts drehen
        delay ( laufZeit );
        myStepper.rotate( 0 ); //  wieder anhalten
    }*/

}

Gruß Burkhard

bufisch:
Besteht die Möglichkeit mit MobaTools eine höhere Drehzahl zu erreichen?

In der Doku steht:

Unter Berücksichtigung der Gesamtbelastung können diese Werte ( über #defines in MobaTools.h )
auch noch etwas ‚getuned‘ werden.

Welche Werte hast Du probiert?

agmue:
In der Doku steht:

Welche Werte hast Du probiert?

ich habe auch schon mit myStepper.setSpeedSteps() versucht ohne Erfolg weil es ja eben nur 2500 Stepps die Sekunde laut Doku sind und somit rund 180 Rpm.

Ich muss auch sagen das ich Anfänger in Sachen Arduino bin, mir gelingt es zwar funktionierende Sketche auf meine Bedürfnisse anzupassen aber voll durchblicken tue ich nicht, nach dem Motto learning by doing.

Zur Hardware, ich nutze einen Nano.

Ich habe auch schon in die MobaTolls.h und MoToStepper.h reingeschaut, leider sind es Böhmische Dörfer für ich, blicke da(noch) nicht durch.

Gruß Burkhard

Hi

'geht nicht' und 'verstehe ich nicht' ist nicht sonderlich zielführend.
Welche #define hast Du in den MoBaTools gefunden, Die etwas mit der Geschwindigkeit/Anzahl der möglichen Steppern zu tun haben könnten?
Was hast Du geändert und wie hat sich Das ausgewirkt?
Keine Auswirkung: Hat wohl Nichts mit Deinem Problem zu tun
Wird noch langsamer: in die falsche Richtung geändert
Wird schneller jubel: tada - richtige Knopf, richtige Richtung
Jetzt 'nur noch' verstehen, wieso diese Veränderung Dir was bringt, damit Du hier nicht zu doll dran drehst und Dir wo Anders ins Knie bohrst.

Wenn Du etwas nicht verstehst - frage nach!
Genau dafpr drücken wir uns hier den Tag über herum!
Aber auf ein 'klappt nicht' wird halt wesentlich weniger geantwortet, als auf ein 'Ich ahbe hier und Da den Wert auf x geändert, in der Annahme, daß ..., obwohl ich dies und das beobachten konnte, scheint die Anpassung nur teilweise zu klappen'.
Bei letzterem Beispiel sieht man: Aha - der Jung denkt mit, Der will, daß Das läuft.

MfG

PS: Die immer wiederkehrende Erwähnung, daß man noch Anfänger sei, ist hilfreich wie ein Kropf - glaube mir: wir erkennen Das auch ohne die explizite Nennung.

In meinem Sketch sind die MobaTools so eingebunden wie ich das Beispiel von MicroBahner das ich auch weiter oben gepostet habe,
wenn ich es mit myStepper.setSpeed(3600) versuche bleibt die Drehzahl bei etwa 180Rpm, langsamer als 180 Rpm geht immer,
was mir zeigt das alles richtig ist.

Ich schrieb das die MobaTools soweit sehr gut funktionieren bis auf die Drehzahlanpassung die nicht höher geht wie ca. 180Rpm

Auch bei dem Beispiel von MB lässt sich die Drehzahl nicht höher als 180Rpm einstellen und deshalb auch meine Frage.

Sorry wenn mein Posting nicht richtig rüber gekommen ist.

Gruß Burkhard

Hi

Das ist soweit schon rüber gekommen - hast Du Dir die Files der Lib Mal angesehen und dort die bereits genannten #define gefunden?
Weil: Durch 'drehen' an den Defines kann man die Library anpassen - wenn Du keine 10 Stepper brauchst, Die gleichzeitig laufen können sollen, reichen Dir vll. Zwei - und DIE könnte man dann ja auch schneller bespaßen, weil man eben nicht mehr für 10 Stepper die Signale bereitstellen muß, sondern nur noch für Zwei?
Wie der Name vermuten lässt, ist die Lib für eine Modell-Eisenbahn konzipiert - um dort Schranken oder so Zeug schnieke verfahren zu können - und wenn die Platte größer als 1mm² wird, wohl auch mit mehr als einem Stepper - die Lib ist für VIELE Stepper ausgelegt, weil Das der Haupt-Einsatz der Lib ist.

Du KANNST Das reduzieren - also weniger Stepper - um damit höhere Geschwindigkeiten zu erwirken - können heißt nicht müssen - und müssen schon gar nicht wollen.

MfG

Mache zunächst eine Sicherheitskopie der originalen Datei.

Ich sehe diese Parameter:

</sup> <sup>// stepper related defines #define MAX_STEPPER     6       // #define DEF_SPEEDSTEPS  3000    // default speed after attach #define DEF_RAMP        0       // default ramp after attach     // default CYCLETIME is processordependent, change only if you know what you are doing ). #define CYCLETIME       200     // Min. irq-periode in us ( default is 200 ), #define MIN_STEP_CYCLE  2       // Minimum number of cycles per step. #define RAMPOFFSET      16      // startvalue of rampcounter</sup> <sup>

Reduziere MAX_STEPPER auf die tatsächlich von Dir benutzte Zahl und dann wäre CYCLETIME mein Kandidat zum Verkleinern auf 150.

Was beobachtest Du?

Okay und Danke euch zwei :slight_smile:

damit kann ich jetzt etwas anfangen und verstehe jetzt mehr.

Leider bin ich unterwegs und komme erst am Montag dazu es um zu setzen.

Werde berichten :slight_smile:

Gruß Burkhard

Hallo,
CYCLETIME ist da schon die richtige Schraube zum drehen :wink: . Du kannst das bis auf 100 reduzieren - das geht bei wenigen Steppern auf jeden Fall. Darunter kann es kritisch werden - da ist der ATMega dann einfach zu langsam und die ISR kann sich selbst überholen. Damit kommst Du dann auf das Doppelte - also 5000 Steps/sec oder etwas 360 U/Min. Bis 80 könnte man versuchen ... aber auf die von dir gewünschte Geschwindigkeit von 720 U/Min kommst Du da auch noch nicht. Für die Rampen muss halt allerhand berechnet werden.
Wenn's mehr sein soll, brauchst Du einen schnelleren Prozessor. Mit einem ESP8266 kommst Du problemlos auf 8300 Steps/s. Auch da kann man noch etwas mit CYCLETIME optimieren.
Auch mit einem STM32F103 schaffst Du höhere Stepraten. Der ist bei Arduino aber nicht so verbreitet ( obwohl sehr günstig und leistungsfähig ).
Andere Prozessoren unterstützen die MobaTools bisher noch nicht. Mit der AccelStepper und einem schnellen Teensy ist da sicher noch mehr rauszuholen.

MicroBahner:
Hallo,
CYCLETIME ist da schon die richtige Schraube zum drehen :wink: . Du kannst das bis auf 100 reduzieren - das geht bei wenigen Steppern auf jeden Fall. Darunter kann es kritisch werden - da ist der ATMega dann einfach zu langsam und die ISR kann sich selbst überholen. Damit kommst Du dann auf das Doppelte - also 5000 Steps/sec oder etwas 360 U/Min. Bis 80 könnte man versuchen ... aber auf die von dir gewünschte Geschwindigkeit von 720 U/Min kommst Du da auch noch nicht. Für die Rampen muss halt allerhand berechnet werden.
Wenn's mehr sein soll, brauchst Du einen schnelleren Prozessor. Mit einem ESP8266 kommst Du problemlos auf 8300 Steps/s. Auch da kann man noch etwas mit CYCLETIME optimieren.
Auch mit einem STM32F103 schaffst Du höhere Stepraten. Der ist bei Arduino aber nicht so verbreitet ( obwohl sehr günstig und leistungsfähig ).
Andere Prozessoren unterstützen die MobaTools bisher noch nicht. Mit der AccelStepper und einem schnellen Teensy ist da sicher noch mehr rauszuholen.

Vielen Dank für die ausführliche Antwort,

Ich hatte mich kurz mit AccelStepper auseinandergesetzt aber mein Englisch ist nicht das Beste und MobaTools hat für mich einen großen Vorteil da die Doku und der Support (hier) in deutsch sind.:wink:

Eine Frage hätte ich noch bezüglich dem ESP8266, kann ich den NodeMCU V3.3 ESP8266 ESP-12E einsetzen?
Weil ich habe einen noch von meinem anderen Projekt (mySensors) über.

Gruß Burkhard

bufisch:
Eine Frage hätte ich noch bezüglich dem ESP8266, kann ich den NodeMCU V3.3 ESP8266 ESP-12E einsetzen?

Der DRV8825 kann auch mit 3,3 V arbeiten, wäre also einen Versuch wert.

Hallo Burkhardt,

Ich habe ESP8266-Module mit AccelStepper ausprobiert. Das läuft.
Im Datenblatt steht mindestens 4,5V Am Step/Dir-Eingang. Das heißt man bräuchte noch einen Pegelwandler
3,3 auf 5V oder vielleicht besser etwas höhere Spannung. bis 200kHz müsste das auch mit Transistoren zu machen sein.

Ich habe mir mal den Schrittmotor Cl-Stepper IHSS57-36-10 1Nm Nema 23 von JMC kurz angeschaut
edel mit closed-loop. Der hat seine eigene Endstufe onboard.

800 Schritte pro Umdrehung. Das ist ganz schön viel. Jetzt gäbe es unter Umständen noch eine andere Schraube zum drehen. Das kommt aber darauf an wie du den Schrittmotor verwendest. Wenn 400 oder 200 Schritte pro Umdrehung auch genügen, könnte man mal schauen ob man das an der closed-loop-Regelung einstellen kann. Das würde dann sofort die Geschwindigkeit verdoppeln/vervierfachen aber natürlich die Auflösung verringern. Wenn es auf größtmögliche Präzision ankommt dann wäre das kontraproduktiv. Da kommt dann doch irgendwann bessere Leistung nur mit besseren = schnelleren Komponenten = höherer Preis ins Spiel. Oder eigener Entwicklungsaufwand. Zum Beispiel mit dem Propeller-Chip von Parallax. Der schafft spielend 500 kHz Taktrate. Es gibt die eine oder andere "library" man müsste aber trotzdem noch selber weiterprogrammieren.

viele Grüße Stefan

StefanL38:
Ich habe ESP8266-Module mit AccelStepper ausprobiert. Das läuft.
Im Datenblatt steht mindestens 4,5V Am Step/Dir-Eingang.

In welchem Datenblatt?
dem des DRV8825?
Da steht aber:
VIH Input high voltage min 2.2 max 5.25V

Grüße Uwe

Ich meine das Datenblatt des Schrittmotors

Als closed-loop-System kommt die Ansteurung evtl. sogar mit vom Start weg maximaler Schrittfrequenz zurecht.
Bei closed-loop-Systemen gibt es teilweise PID-Regler für Position und Geschwindigkeit bei denen man einstellen kann wie groß die Abweichung zwischen Soll/Ist sein darf. Das heißt die Beschleunigung macht dann das closed-loop-System selbst. Man muss dabei aber die mechanische Schwingungsfähigkeit des Systems im Auge behalten mit unpassenden Parametern kann man dadurch ein System auf zum sich aufschwingen bringen.

viele Grüße Stefan

@ StefanL38
Was hat dieser Motor mit dem Problem des TO zu tun?
Grüße Uwe

Hallo, sorry, mein Fehler, habe die Themen verwechselt! Von DRV8825 ist hier überhaupt nicht die Rede!

uwefed:
Was hat dieser Motor mit dem Problem des TO zu tun?

Siehe bitte #5 #0.

sorry Jungs ich wollte keine Unruhe stiften :confused:

Ich wollte nur, weil hier ein kleiner Beispielsketch zu den MoBatools gepostet wurde, wissen wie sich das mit der Drehzahl steigern lässt.

Natürlich habe ich auch meinen Stepper gepostet damit man weiß welche Hardware ich einsetze.

@MicroBahner, danke für dem Tipp jetzt funktioniert es, habe gleich mal CYCLETIME 80 gesetzt und damit komme ich fast an die 720 Rpm. und mit der Rampenfunktion wird das Schneckengetriebe meines Rundtischs geschont.

@StefanL38 die 800 Stepps für diese Art Stepper sind die kleinste Auswahl, die Auswahl ist zwischen 800 - 51200 Stepps. (per Dip-Schalter) :wink:

Ich werde einen eigenen Thread für weiter Infos und Fragen auf machen.

Danke an alle Beteiligten

Gruß Burkhard

Hab diese Diskussion abgespalten, weil sie nichts mit der vorgehenden Thema zu tun hat.
Grüße Uwe

bufisch:
Ich werde einen eigenen Thread für weiter Infos und Fragen auf machen.

Das hat Uwe (Moderator) freundlicherweise für Dich erledigt!

In #0 könntest Du das Thema etwas spezifischer umbenennen, beispielsweise "Schrittmotor mit geregeltem Treiber; war Stepper".

Gibt es derzeit noch Fragen?

agmue:
Das hat Uwe (Moderator) freundlicherweise für Dich erledigt!

In #0 könntest Du das Thema etwas spezifischer umbenennen, beispielsweise "Schrittmotor mit geregeltem Treiber; war Stepper".

Gibt es derzeit noch Fragen?

@ agmue ja das habe ich gesehen, Danke und Danke dir Uwe

Ja ich werde es ändern

Fragen habe ich bis zum abwinken :wink:

Gruß Burkhard

Edit, geändert in Cl Hybrid Stepper Nema 23 (JMC) und MobaTools/Drehzahlanpassung für Rundtisch