Über die Google Suche bin ich schon öfters auf dieses Forum gestossen und konnte auch schon einige hilfreiche Tipps mitnehmen. Unteranderem sah ich in diesem Forum ein Thema, dass meinem ziemlich ähnlich oder gleich kommt.
Ich möchte über eine serielle Eingabe der Drehzahl, das entsprechende Rechtecksignal erzeugen und damit auf den Takteingang gehen. Für den Motor gilt: 1 Umdrehung = 800 Flankensetzer. Mit diesen Angaben kann ich ja die Frequenz bestimmen bzw. Pulsabstand bestimmen. So sieht mein Code aus:
Dieser funktioniert allerdings nicht. Doch wegen was nicht? Diese Frage würde ich gerne en Euch liebes Forum weitergeben.
Sorry, da war ich in meinem Beitrag unpräzise. Der Motor läuft beim Abspielen keinen einzigen Schritt. Die berechnete Periodendauer die stimmt soweit (Habe ich nochmals überprüft, die Rechnung sollte also stimmen).
Fehlt in deinem Vorschlag nicht eine erste Initialiserung von start_puls? Er hat ja noch keinen micros() Wert wenn man es weglässt? Oder irre ich mich da?
Die Information ist ein wenig arg dünn. Nanotech baut sicher nicht nur einen Schrittmotor .
Poste mal Links zu deiner verwendeten Hardware ( Motor und Treiber ).
Du solltest dich für eine Variante entscheiden. Ich plädiere für die zweite Variante.
Außerdem ist der Vergleich-Pfeil immer noch falsch herum. Man wartet ja bis die Differenz den gewünschten Wert überschritten hat.
@Doc_Arduino
Ich habe deinen Code kopiert und hat auf Anhieb funktioniert! Vielen Dank dafür. Ich werde mich noch daran machen dein Vorschlag in allen Details zu verstehen. Auf die Kürze konnte ich feststellen, dass ein Takt von 1ms (entspricht ja 75 Umdrehungen pro Minute) sich nicht mehr gut anhört. Vielleicht ist der Takt-Richtungs Modus nicht das richtige, da auch sonst mitten im Lauf Holpergeräusche auftreten.
Ich habe zudem den Vergleichspfeil noch in meinem eigenen Code geändert und habe dann festgestellt, dass der Schrittmotor genau nur einen Schritt ausführt. Man sieht es kaum, aber kann es fühlen. Habe dann den Code mit Serial.print Ausgaben ergänzt und man kann feststellen, dass bei meinem Code die Schleife genau einmal ausgeführt wird (darum auch nur einzelne Schritt) und danach im Loop nach einer neuer Serial Eingabe verlangt wird. Muss das nochmals genauer anschauen, warum genau nur der einzelne Schritt kommt. Eigentlich war mein ursprüngliches Ziel, dass man zu Beginne einen Wert angibt und danach für eine unbestimmte Zeit (bis Reset) dieser Takt ausgeführt wird.
Dein Code ging perfekt! Viele Dank. Sieht sehr professionell aus. Sowas hätte ich nicht gekonnt. Muss das alles noch erstmal verstehen können (vor allem die readSerial Funktion).
Ich reiche den Dank an Serenifly weiter. Der hat mir das damals beigebracht. Von dem Gerüst gibts gefühlt tausende Variationen. Du findest das hier im Forum immer wieder einmal wenn es um die Serielle geht. Um die 32 etc. zu verstehen musste dir eine ASCII Tabelle anschauen.