Schrittmotor dreht langsam, ruckelt

Hallo zusammen

Ich habe eine Steuerung mit folgenden Komponenten gemacht.

Arduino Nano
Schrittmotor Nema 17
Treiber A4988
Poti

Der Motor hat ca 20min super funktioniert, nun dreht es nur noch ganz langsam und ruckelt

Anbei der Code und ein Schaltplan.

Kann mir jemand weiter helfen oder muss ich eher auf der mechanischen Seite schauen?

const int dirPin = 2;
const int stepPin = 3;
const int switchPin = 4;
const int potPin = A0;

void setup() {
  pinMode(dirPin, OUTPUT);
  pinMode(stepPin, OUTPUT);
  pinMode(switchPin, INPUT_PULLUP); // Schalter gegen GND
  digitalWrite(dirPin, HIGH); // Drehrichtung
}

void loop() {
if (digitalRead(switchPin) == LOW) { // Schalter EIN
  int potValue = analogRead(potPin);
  int delayTime = map(potValue, 0, 1023, 2000, 100); // Geschwindigkeit steuern

  digitalWrite(stepPin, HIGH);
  delayMicroseconds(delayTime);
  digitalWrite(stepPin, LOW);
  delayMicroseconds(delayTime);
}
}


Versuche bitte solche Konstellationen durch sinnvolles Einrücken aufzulösen. Strg+T in der IDE hilft Dir dabei.
Es erleichtert Dir und uns das Verständnis Deines Codes.

Gruß Tommy

Wenn da 12V raus kommen, ist der Analogpin hinüber.

Muss ich den Poti am 5v anschliessen?

Nein.

Der PIN darf aber nur 5V bekommen! (Toleranz siehe Datenblatt, im mV-Bereich)
Also : Spannungsteiler oder der Poti gehört an 5V vom Arduino angeschlossen.

Ja, ich meinte, soll ich das Poti am Arduino 5v anschliessen

ja!

und wieviel V gibst du beim Arduino Vin?

ab 7,5V aufwärts. 12V gehen, 9V reichen auch.
Alles was runter auf 5V muss, wird in Wärme umgesetzt.
Mt deinem Poti dran gehen die 12V in Ordnung auf Vin

ist der A0 defekt oder das der ganze Nano?
Kann ich jetzt am A1 anschliessen?

Musst Du ausprobieren.
Ich würde das Poti so beschalten wie es soll und dann einen Kurzsketch aufspielen, der nur den Analogwert ausgibt.
wart mal nen Moment... und zieh schon mal den Stecker.

Den hier spiel auf:


const int potPin = A0;

void setup()
{
Serial.begin(9600);
Serial.println(F("Start..."));

}

void loop()
{
Serial.println(analogRead(potPin));
delay(50);
}

Poti am Anschlag GND muss 0 auf dem Seriellen Monitor ausgeben und am anderen Ende bei 5V sollten wenigstens 1021 dauerhaft ausgegeben werden.

Wenn das Poti ein lineares ist, wird in der MItte etwa 510 stehen...

ok, danke dir für deine Hilfe

Viele Grüsse

Mich irritiert die noch unvollständige Beschaltung des A4988.
Der Enable-Pin sollte einen definierten Pegel (LOW bzw. GND) bekommen.

3 Probleme:

  • Potentiometer auf 12V
  • Der Motor ist nicht für den A4988 in Microstepbetrieb geeignet. ( Motordaten 15.4V, 280mA). Den kann man nicht mit dem Stromtreiber in Microschritten A4988 ansteuern.
    Geeignete Motoren sind solche mit einer Nennspannung von 3 bis 4V und ca 1A Nennstrom. Der verwendete Motor kann mit einem Treiber zB L293D betrieben werden.
  • Die Spulen des Motors gehören: erste Spule 1A und 1B; andere Spule an 2A und 2B.
  • Im Schaltplan fehlt die Masseverbindung zwischen Netzteil und Arduino. Ich nehme an das ist nur ein Zeichenfehler.
  • Das Netzteil ist ein 12V 5A ??

Ich verstehe nur nicht wieso der Motor 20 Minuten gut gegangen ist und danach Probleme auftraten.

Wenn Du das Projekt ausschaltest für zB eine Stunde funktioniert dann die Schaltung wieder für 20 Minuten?

Grüße Uwe

Haben diese Pins nicht Pulldowns auf der Platine?

Grüße Uwe

Schwer zu sagen, denn wir kennen die Platine nicht.
Möglich wäre es und weil da schon mal was gelaufen ist wäre das ein Indiz.

Was die Motoren angeht: Bist Du Dir sicher, dass Du nicht falsch liegst mit 5V Motoren an den 12V?

Der L293 ist doch nicht für Steppermotoren...

GND vom VMot und VDD sind zusammengeschalten. Da sehe ich mit der Verbindung kein Problem.

Welchen Treiber empfiehlst du?

Der Treiber ist m.M.n. ok. Richtig angewendet und richtig beschalten, sollte das eigentlich funktionieren.

Was gibt der Kurzsketch aus?

Mache ich am Nachmittag