Forum
Arduino Programmierung "speciale" (Elektronik)
» Der MCP... wird im Automatik-Modus abgefragt, es erfolgt aber keine
» Impulsausgabe, nur das Quittierungs-Signal wird ausgegeben.
» Auf CLK und DIR ist keine Aktivität (laut Oszilloskop auch nichts
» hochfrequentes).
Wenn das Quittierungssignal ausgegeben wird, heißt das, dass im Automatikbetrieb die Variable "motorschritte" den Wert 0 hat und im Handbetrieb der Eingangspin LOW ist.
Hast du denn die Kodierschalter samt der dazugehörigen Elektronik überhaupt angeschlossen? Falls ja, haben die Digits die richtige Wertigkeit? Und hast du die Vergleichsoperatoren in den anderen beiden Verzögerungsschleifen ebenfalls korrigiert (es sind insgesamt 3) ?
Eventuell kannst du testweise für "motorschritte" im Programm einen festen Wert vorgeben.
»
» Du setzt CLK sofort von LOW auf HIGH, kann das stimmen?
»
Bei den Schrittmotor-Treibermodulen, die ich benutze (DAYCOM ST-A4988), funktioniert das, auch mit dem RPi pico, der deutlich kürzere Impulse ausgibt als der Arduino. Du kannst ja testweise zwischen
digitalWrite(clkPin, HIGH);
und
digitalWrite(clkPin, LOW);
ein delay(...) von 1 oder 2 Millisekunden setzen. Dann ist das Signal auch auf dem Oszi besser zu sehen.
» » impulslaenge = millis() + schrittmotortakt; // für schrittmotor
» handmodus
» » digitalWrite(clkPin, HIGH); // taktimpuls
» » digitalWrite(clkPin, LOW);
» » while (impulslaenge > millis()) {} // warten
»
» Ich habe dann
» » digitalWrite(clkPin, LOW);
» mal unter die while-Schleife gesetzt, das bringt leider auch nichts.
Natürlich nicht. Die Schleife wird nur so lange durchlaufen, wie das Eingangssignal (an Pin 9) HIGH ist.
EDIT: DIR wird nur HIGH, wenn während der Torzeit genau 2 fallende Flanken gezählt wurden.
--
Es ist unter der Würde eines Technikers, die Gebrauchsanweisung zu lesen!
Gesamter Thread:
