Schrittmotoren mit Pololu DRV8834, keine Reaktion

Hallo,

ich versuche meine drei Schrittmotoren (3,18V und 1,02A) mit meinem Arduino Uno und drei Treibern DRV8834 von Pololu zu betreiben. Das Netzteil für die Schrittmotoren gibt 1,32A und 9V.

Pololu DRV8834

Ich habe folgendermaßen verkabelt:

Mein Beispielcode:
Pastebin Code

Die Motoren sollen sich direkt beim Start in eine Richtung bewegen und sobald man den Taster drückt, sollen die sich in die andere Richtung bewegen (Das ist nur ein Beispielcode zur Überprüfung der Beweglichkeit der Motoren ... Über den Sinn kann man gerne streiten :wink: )

Das Problem:

Ich führe den Code aus, jedoch passiert nichts außer, dass die Treiber unmenschlich warm werden (gerade sind mir die Treiberkabel der Stromversorgung für die Schrittmotoren durchgeschmort ... kein Gutes Zeichen :X ). Kann mir jemand sagen, was hier nicht richtig ist?

Vielen Dank schonmal im Vorraus.

Hallo,

wenn der Bsp. Code original ist und demzufolge funktionieren sollte, würde ich sagen wollen, Du mußt beide Massen verbinden. Das Board scheint das wohl intern nicht zu machen.

Laut Datenblatt müssen beide GND vom IC auf eine Masse. Wenn die auf dem Board auch getrennt rausgeführt sind, mußt Du sie verbinden. Sonst hängen beide Spannungsversorgungen in der Luft und machen Mist.

STEP benötigt nach meinem Verständnis ein wechselndes Signal, wobei sich der Motor je steigende Flanke einen Schritt weiterbewegt. Ein nicht schöner, aber für den 8824 funbktionierender Testsketch:

void setup() {
  Serial.begin(9600);
  pinMode (13, OUTPUT);
  pinMode (8, OUTPUT);  // STEP
  pinMode (9, OUTPUT);  // DIR
}

void loop() {
  Serial.println("Uhrzeigersinn");
  digitalWrite(13, HIGH);
  digitalWrite(9, HIGH);
  for (byte j = 0; j < 95; j++) {
    digitalWrite(8, !digitalRead(8));
    delay(20);
  }
  delay(500);

  Serial.println("Gegenuhrzeigersinn");
  digitalWrite(13, LOW);
  digitalWrite(9, LOW);
  for (byte j = 0; j < 95; j++) {
    digitalWrite(8, !digitalRead(8));
    delay(20);
  }
  delay(500);
}

Ob das mit der Richtung stimmt, hängt von der Beschaltung der Wicklungen ab. GND habe ich extern nicht verbunden.

Moin,
Du musst den ENABLE auf Masse legen.
Sonst kann es sein, dass der Treiber sperrt.

Gruss
Kurti

kurti:
Du musst den ENABLE auf Masse legen.
Sonst kann es sein, dass der Treiber sperrt.

Nicht nötig laut Anleitung:

The default state of the ENBL pin is to enable the driver, so this pin can be left disconnected.

Das Netzteil zu 1,3A ist schon für einen Motor hoffnungslos unterdimensioniert, geschweige denn für 3 Motore.
Außerdem würde ich den 3,18V Motor mit mindestens 12V betreiben was aber heißt daß der Treiber getauscht werden muß.

Mach bitte eine Foto des Aufbaus.

Viele Grüße Uwe

Eine Korrektur am Anfang: Das Netzteil bringt 5A, nicht 1,3A.

@Doc_Arduino: Hab ich umgesetzt, trotzdem keine Bewegung

@agmue: Auch hier keine Bewegung

@uwefed: Ich kann das Netzteil auf 12V hochdrehen, momentan steht es auf 9V, damit die Treiber nicht aufgeben.

Ich hoffe ihr könnt aus den folgenden Bildern etwas gewinnen:

Aufbau Bild1
Aufbau Bild 2

Kurze Erklärung:

Schwarz, Rot und Braun (GND) gehen zum Netzteil, Grau ist STEP und Weiß ist DIR (Belegen Pin 2,3 bzw. 4,5 bzw. 6,7). Blau-Grün bzw. Gelb-Orange gehen in die Schrittmotoren.

Danke für die schnellen Antworten :slight_smile:

Ich sehe kein GND-Kabel zwischen DRV8834 und Arduino. :o
0J4344.600.png
Was macht das orangene Kabel an 3,3V und das pinke an Pin 8?

Ich sehe kein GND-Kabel zwischen DRV8834 und Arduino. :o

Hopala ... Das habe ich gerade nachgesteckt :blush:

Das orangene und das pinke Kabel gehen an den Taster, den ich oben beschrieben habe.

DaDave:
Das orangene und das pinke Kabel gehen an den Taster, den ich oben beschrieben habe.

Das geht so nicht. Der Eingang hängt dann an 3,3 V oder hochohmig=unbestimmt, wenn ich nicht irre. Also Taster an +5V und Eingang mittels Pulldown-Widerstand (10 k oder so) an GND. Testsketch digitalWrite(13,digitalRead(8));

Okay! Wird umgesetzt sobald ich einen Widerstand gefunden habe.

Das sollte das Problem mit den Schrittmotoren aber nicht lösen, oder?

DaDave:
Okay! Wird umgesetzt sobald ich einen Widerstand gefunden habe.

Sollte das ein Problem sein, kannst Du auch den eingebauten Pullup mittels INPUT_PULLUP verwenden. Dann den Taster an GND und gedrückter Taster = LOW.

DaDave:
Das sollte das Problem mit den Schrittmotoren aber nicht lösen, oder?

Leider nicht. :confused:

Ich kann mir wohl vorstellen, dass die Treiber abgeraucht sind als ich falsch angeschlossen haben ...

@uwefed: Welche Treiber kannst du in diesem Fall denn empfehlen?

Dem wird so sein denn ein Verpolungsschutz gibt es hier nicht....

zb den DRV8825 oder A4988

Grüße Uwe