Stepmotor Schrittmotor ansteuern

Hallihallo,

ich bin noch recht unbedeckt, was das Verbinden des Calliope mit externer Hardware angeht. Nun möchte ich ein Stückchen SmartHome nachbauen und dazu einen 5V Step Motor 28BYJ-48 verwenden. Nach einiger Recherche habe ich gesehen, dass man ihn mit einer Treiber Platine betreiben kann. Für Arduino gibt es auch schon fertige Bibliotheken, für Calliope vermutlich noch nicht. Nun habe ich den Motor an die Treiberplatine angeschlossen und auch geschafft zum Laufen zu bringen, auch links- und rechtsherum. Allerdings benötigt der Motor mit meiner Programmierung 24 Sekunden für eine komplette Umdrehung. Wenn ich die Pausen aber herausnehme, dann brummt er nur.

Hat da jemand eine Idee, wie man das beschleunigen könnte?

Danke und Gruß
Markus


Nun habe ich den Motor etwas schneller bekommen. Er braucht für eine Umdrehung nur noch etwa 15 Sekunden. Das mache ich, indem ich jede Position des Motors 50 mal durchgebe, bevor ich die nächste Position nehme.

Ich habe mal in die stepper.cpp für den Arduino angeschaut. Da wird immer gewartet, bis der nächste Schritt dran ist, und dann die nächste Pin-Belegung durchgegeben. Das hatte ich mit dem Warten auch versucht, aber bisher nicht hinbekommen.
Eine Vermutung von mir: Es könnte sein, dass der kurze Impuls der digitalen Werte nicht lange genug an den Motor weitergegeben wird. Deshalb hilft es vermutlich, wenn ich die Werte häufiger durchschicke. Aber vielleicht liege ich da auch falsch.

Versuch doch mal dein Glück mit dieser Erweiterung GitHub - sarahhyy/pxt-28BYJ-48-stepper: MakeCode Extension for one or more 28BYJ-48 stepper motors

Vielen Dank, das klappt damit ja sehr komfortabel. Allerdings liegt die Geschwindigkeit wie bei dem letzten Post auch bei etwa 15 Sekunden. Dann werde ich mich damit begnügen.

So wie ich nachgelesen habe ist es auch ein sehr langsamer Motor.

@Markus_P
zuerst einmal - beim Schalten der Stepperspulen legt man Spannung an eine Spule und will Strom reintreiben. „Das will die Spule NICHT“ Sie ist ein Enegiespeicher und will keine Veränderung. d.h. sie setzt dem Aufbau des Magnetfeldes etwas entgegen und verlangsamt den Aufbau.
Viel schlimmer ist das Abschalten. Das will die Spule auch nicht. Sie will - das der Strom weiterfließt - und daraus folgt - sie baut eine Spannung auf, die so hoch sein wird - um den Strom zu treiben. Dies nennt man Induktionsspannung. Tötet übrigens fast jedes Bauteil, wenn man keine Vorkehrungen trifft.
Diese Zeitkonstante des Einschaltstromanstieges kann man seeehr schlecht beeinflussen. Meistens sind es Baukonstanten, wie der Widerstand der Spulenwindung, die Anzahl der Windungen, die Größe des Luftspaltes, etc.
Beim Abschalten muss das schaltende Bauteil gegen Überspannung geschützt werden. Eine sogenannte Freilaufdiode läßt das Feld nur langsam abklingen, was aber wieder Zeit braucht. Wir haben es manchmal brutal kurzgeschlossen ( sehr hoher Strom ) um Zeit zu sparen, aber da muss man genau auf den Strom achten.
Nun schaltet man aber beim Stepper eine weitere Spule hinzu während die andere noch an ist. Da kann man tricksen um Zeit zu sparen. Man muss ein wenig mehr Schaltstufen einführen.
kannst du mir mal bitte die genaue Bezeichnung vom Treiber nennen

Auf der Seite

hatte ich gesehen, dass der Motor laut Datenblatt mit 8 Halbschritten zu betreiben ist:
"Hier die Schrittfolge gemäß Datenblatt des 28BYJ-48 Schrittmotors in 8 Halbschritten (Drähte nach unten, Schritte nach rechts):
__________Steps_____________ Wire__1__2__3__4__5__6__7__8 1____________________x__x__x 2______________x__x__x______ 3________x__x__x____________ 4_____x__x_________________x
"
Bei meinen eigenen Versuchen, habe ich mit Halbschritten die Geschwindigkeit nicht erhöhen können, aber vielleicht geht es ja doch irgendwie. Ob die nachfolgend verwendete Bibliothek Halbschritte benutzt, habe ich noch nicht nachgeschaut.

Ich habe die Bibliothek eingebunden, die klmi geschickt hatte:

Wo kann ich nach der genauen Treiberbezeichnung schauen? Ich habe die URL einfach bei Erweiterungen in MakeCode eingefügt, dann konnte ich die Methoden aufrufen.

Das Treiber-Board ist ein ULN2003.