Hallo, ich steuere mit einem ESP23 S2 mini und einem DRV8825 einen Nema
17 an. Ca. alle 4 Sekunden kommt es zu einer Störung/Verzögerung im
loop-Ablauf, und der Lauf des Motors ändert sich für einen ganz kurzen
Moment hörbar. Dieses Verhalten zeigt sich auch, wenn der ESP nicht
seriell verbunden ist. Der Code sieht folgendermaßen aus:
1 | const byte MOTOR_DIR_PIN = 11;
|
2 | const byte MOTOR_STEP_PIN = 9;
|
3 | const byte MOTOR_PAUSE_PIN = 1;
|
4 | int actual = 20;
|
5 |
|
6 | void setup() {
|
7 | pinMode(MOTOR_PAUSE_PIN,OUTPUT);
|
8 | pinMode(MOTOR_STEP_PIN,OUTPUT);
|
9 | pinMode(MOTOR_DIR_PIN, OUTPUT);
|
10 | digitalWrite(MOTOR_DIR_PIN,LOW);
|
11 | digitalWrite(MOTOR_PAUSE_PIN,HIGH);
|
12 | }
|
13 |
|
14 | void loop() {
|
15 | pump();
|
16 | }
|
17 |
|
18 | void pump() {
|
19 | // for ( ;; ) {
|
20 | digitalWrite(MOTOR_STEP_PIN,HIGH);
|
21 | delayMicroseconds(actual);
|
22 | digitalWrite(MOTOR_STEP_PIN,LOW);
|
23 | delayMicroseconds(actual);
|
24 | // }
|
25 | }
|
Wenn ich die for-Schleife in der pump Funktion auskommentiere, läuft der
Motor wie erwartet ganz gleichmäßig.
Da ich gerne mit TCmenu arbeite, ist die for-Schleife keine gangbare
Lösung.
Kann mir jemand sagen, woran die beobachtete Störung/Verzögerung liegt
und ob es eine Möglichkeit diese zu unterbinden, wenn der Motor direkt
aus dem loop heraus angesteuert wird.
Vielen Dank und beste Grüße!