Wie kann ich ein Schrittmotor mit einem Potentiometer steuern?

Hallo zusammen, ich bin neu in diesem Forum und arbeite zum ersten Mal mit dem Arduino und benötige Hilfe. In meinem Projekt möchte ich mit einem Arduino Maga und einem 10KΩ Potentiometer einen Schrittmotor steuern. Das bedeutet das, wenn der Potentiometer in eine Richtung gedreht wird, sollte der Schrittmotor diese Schritte in dieser Richtung machen. Also anders gesagt eine Positionsteuerung mit einem Potentiometer. Als Treiber würde ich einen TB6600 benützen. Ich hätte aber auch einen A4988. Und der Schrittmotor ist ein Joy-it Nema 17. Wäre das überhaupt möglich und wie könnte der Sketch dafür aussehen? Vielen Dank für die Unterstützung.

Freundliche Grüße Itachi

Ja :slightly_smiling_face:

Mein Tipp ist die Programmbibliothek MobaTools, wo Du verschiedene Beispielprogramme findest.

Das ist die mechanische Größe, wichtig sind die elektrischen Werte.

Diese Treiber möchten STEP, DIR und ggf. ENable als Signale verwenden. Sie benötigen eine höhere Spannung, beispielsweise 24 V aus einem Netzteil, das hinreichend Strom liefert.

1 Like

Was genau möchtest du mit dem Poti machen ?
Ein Poti hat üblicherweise keine Schritte und dann ca. 270 Grad Drehbereich.
Wie soll das zum Motor passen ?

1 Like

Der Poti sollte den Schrittmotor steuern. Auf YouTube habe ich ein Video von Circuit Digest gefunden. Ich möchte es in dieser Richtung, aber ich habe leider nicht dieselben Komponente.

Das YouTube Video: Arduino Stepper Motor Control with Potentiometer - YouTube

Du könntest mit dem Beispiel back_ForthStepperPause.ino anfangen, damit sich der Motor erstmal dreht. Dann mapst Du den Potiwert auf den Sollwert des Motors.

Momentan kann ich den Schrittmotor in beiden Richtungen drehen. Aber sobald der Poti zum Einsatz kommt, komme ich nicht mehr draus. Wie muss ich überhaupt beginnen oder was ist ein Sollwert?
Um den Schrittmotor zu drehen, habe ich das geschrieben:

void setup() 
{
  pinMode(6, OUTPUT); //Enable
  pinMode(5, OUTPUT); //Puls
  pinMode(4, OUTPUT); //Direction

  digitalWrite(6,LOW);
}

void loop() 
{
  digitalWrite(4,HIGH);
  digitalWrite(5,HIGH);
  delayMicroseconds(300);
  digitalWrite(5,LOW);
  delayMicroseconds(300);
}

Hast Du denn schon den Sketch vom Video getestet?

Ja
Der geht aber nicht, weil er ein anderen Treiber benützt.

Teil eines Regelkreises. Du mußt die Position mitzählen, in der sich der Motor befindet, das ist der Istwert der Position. Den vergleichst Du mit dem durch das Potentiometer vorgegebenen Sollwert der Position. Die Differenz positiv oder negativ gibt die Drehrichtung vor, der Absolutwert die Anzahl der Schritte, den Stellwert.

1 Like

Link des Videos: Stepper Motor Control with Potentiometer and Arduino
da findet man:

potVal = map(analogRead(A0),0,1024,0,500);
if (potVal>Pval)
  stepper.step(5);
if (potVal<Pval)
  stepper.step(-5);
 Pval = potVal;

Also wenn eine Änderung im gelesenen Wert ist, dann dreht sich der Motor um 5 Schritte. Ich finde diese Regelung aber sehr schlecht und eigentlich nur für Übungszwecke sinnvoll. Ansonsten könnte man mittels Potentiometer die Drehrichtung und Geschwindigkeit einstellen oder mittels Enkoder die Schritte bestimmen.

[EDIT]
Teil gelöscht weil falsch.
[/EDIT]

Ob der Treiber geeignet für den gewünschten Motor ist, kann ich Dir aus Mangel von Information bezüglich des Motors nicht sagen.

Prinzipiel wenn die Nennspannung des Motors so um 3-4V ist dann ist es ein Motor für Stromsteuerung und damit für den A4988 bzw TB6600

Grüße Uwe

1 Like

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.