Debuggen meiner Schrittmotortreiberschaltung


7

Ich verwende den Pololu DRV8825 Schrittmotortreiber , um einen NEMA 17 Schrittmotor mit einem Arduino Uno zu steuern . Laut der Pololu-Website sollte die Schaltung wie folgt verdrahtet sein:

Geben Sie hier die Bildbeschreibung ein

Ich bin jedoch ein wenig von dieser genauen Skizze abgewichen:

  1. Der Arduino (Mikrocontroller) wird über ein an den Computer angeschlossenes USB-Kabel mit Strom versorgt
  2. Ich habe den 5V Pin am Arduino mit der + Schiene auf einem Steckbrett verbunden. Ich habe dann zwei Drähte auf dieser Schiene mit den RESET- und SLEEP- Pins am Treiber verbunden.
  3. Ich benutze eine 9V Batterie, um den Motor anzutreiben.
  4. Ich habe die DIR- und STEP- Pins mit den Arduino Uno-Pins 12 und 13 verbunden.

Folglich habe ich die folgende Skizze codiert und hochgeladen:

int stp = 13;  //connect pin 13 to step
int dir = 12;  // connect pin 12 to dir
int a = 0;     //  gen counter

void setup() 
{                
  pinMode(stp, OUTPUT);
  pinMode(dir, OUTPUT);       
}

void loop() 
{
  if (a <  200)  //sweep 200 step in dir 1
   {
    a++;
    digitalWrite(stp, HIGH);   
    delay(10);               
    digitalWrite(stp, LOW);  
    delay(10);              
   }
  else 
   {
    digitalWrite(dir, HIGH);
    a++;
    digitalWrite(stp, HIGH);  
    delay(10);               
    digitalWrite(stp, LOW);  
    delay(10);

    if (a>400)    //sweep 200 in dir 2
     {
      a = 0;
      digitalWrite(dir, LOW);
     }
    }
}

ERGEBNIS
Der Schrittmotor dreht sich nicht. Stattdessen zischt es nur mit hoher Tonhöhe. Nach kurzer Zeit wird der Fahrer sehr heiß.

Dinge, die ich versucht habe

  1. Ich habe noch einmal überprüft, ob die angeschlossenen Schrittdrähte ordnungsgemäß mit den Stiften "A" und "B" des Treibers verbunden sind.
  2. Ich habe versucht, das A1-A2-Paar und das B1-B2-Paar in allen möglichen Kombinationen umzukehren. Alle Kombinationen ergeben das gleiche Ergebnis wie oben.
  3. Ich habe versucht, die Motorstromversorgung auf 12 V (8 AA-Alkalibatterien) zu erhöhen. Das gleiche Ergebnis tritt auf.
  4. Ich habe zweimal überprüft, ob der 100-Mikro-FF-Radialelektrolytkondensator mit dem langen Ende an die positive Motorversorgung und dem kurzen Ende an die negative Motorversorgung angeschlossen ist (natürlich auf einer anderen Steckbrettschiene als die logische Stromversorgung).
  5. Ich habe versucht, den 3,3-V-Pin anstelle des 5-V-Pins zu verwenden, um eine Verbindung zu SLEEP und RESET am Treiber herzustellen. Wiederum tritt das gleiche Ergebnis auf.

Ich bin mir nicht sicher, was ich als nächstes versuchen soll, um meine Schaltung zu debuggen.

Meine Vermutung:

Ich habe jedoch einen Verdacht, der auf einem kleinen Warnfeld auf der pololu-Website beruht, das lautet:

Achtung: Wenn Sie die Kopfstifte so installieren, dass die Siebdruckseite nach oben und die Komponenten nach unten zeigen, kann dies den Bewegungsbereich des Trimpots einschränken, mit dem die Strombegrenzung eingestellt wird. Wenn Sie die Verteilerstifte in dieser Ausrichtung installieren möchten, stellen Sie bitte die Strombegrenzung ein, bevor Sie die Stifte einlöten.

Die Art und Weise, wie ich die Header auf den Treiber gelötet habe, sieht wie in der unteren linken Ecke des Bildes unten aus:

Geben Sie hier die Bildbeschreibung ein

Meine Frage:
Kann ich angesichts der Tatsache, dass mein Schrittmotor einen Strom von 1,7 A benötigt, irgendetwas tun, um diese Schaltung zu verbessern, damit sie funktioniert? Habe ich irgendwelche Fehler gemacht? Gibt es noch etwas, das ich versuchen oder überprüfen sollte? Habe ich den Header falsch gelötet?


2
Die Richtung der Stifte sollte keine Rolle spielen. Es heißt nur, dass es schwierig sein kann, den Trimpot mit dem schwarzen Kunststoffteil der Header direkt dagegen zu drehen. Daher wird empfohlen, dies so zu tun, wie Sie es getan haben.
Sachleen

@sachleen Ich nehme an, der Trimpot ist das winzige kreisförmige Teil, das wie eine Schraube aussieht. Muss ich es drehen, um die Stromaufnahme anzupassen? Wenn ja, wie kann ich genau sagen, wie viel Strom ich tatsächlich bekomme?
Paul

Ja, es ist das kreisförmige Ding oben links im unteren Bild (Komponentenseite nach oben). Ich bin mir nicht sicher, ob Sie es ändern müssen. Lesen Sie den Abschnitt "Strombegrenzung" auf pololu.com, um zu sehen, welche Art von Strom in der Zeichnung enthalten ist.
Sachleen

@sachleen: Ok. Aha. Es heißt "Messen des Stroms, der durch eine einzelne Motorspule fließt, ohne den STEP-Eingang zu takten". Aber ich bin mir nicht sicher, was "ohne Taktung des STEP-Eingangs" bedeutet ... Verstehst du, was das bedeutet?
Paul

2
Ich habe noch nie einen Stepper benutzt, daher habe ich möglicherweise keine Ahnung, wovon ich spreche. buuut ... Sehen Sie, wo Sie tun digitalWrite(stp, HIGH);und niedrig? das taktet es. Ich denke, es will, dass du es hoch lässt.
Sachleen

Antworten:


4

Ich hatte das gleiche Problem beim Einrichten dieser Schaltung mit diesem Code und Treiber auf einem Arduino Uno. Alles andere war in Ordnung, aber der Strom für den Motor wurde vom Fahrer ab Werk viel zu hoch eingestellt. Der VREF betrug 1,7 Volt und musste für den von mir verwendeten Motor etwa 0,5 Volt betragen. Als ich den VREF auf die entsprechende Spannung einstellte, begann sich der Motor wie gewünscht zu drehen und hörte auf zu zischen.

Ich weiß, dass dieser Beitrag alt ist, aber ich hoffe, dass dies jemand anderem hilft. Pololu hat ein großartiges Video (und eine Dokumentation im Allgemeinen) zum Einstellen der entsprechenden Spannung für die meisten Treiber auf der Produktseite hier: DRV8825 Schrittmotortreiberträger, Hochstrom .


2

Ein paar Dinge, die mir zuerst aufgefallen sind: Dies ist eine der am besten formatierten Fragen, die ich je gesehen habe ... :) Wie auch immer, Ihre Schaltung sieht für mich bis auf ein paar Dinge gut aus:

Warnung: Diese Trägerplatine verwendet Keramikkondensatoren mit niedrigem ESR, wodurch sie für zerstörerische LC-Spannungsspitzen anfällig ist, insbesondere wenn Stromkabel verwendet werden, die länger als einige Zoll sind. Unter den richtigen Bedingungen können diese Spitzen die maximale Nennspannung von 45 V für den DRV8825 überschreiten und die Platine dauerhaft beschädigen, selbst wenn die Motorversorgungsspannung nur 12 V beträgt. Eine Möglichkeit, den Fahrer vor solchen Spitzen zu schützen, besteht darin, a Großer (mindestens 47 µF) Elektrolytkondensator über Motorleistung (VMOT) und Masse irgendwo in der Nähe der Platine.

(Ich habe selbst etwas Kursiv / Fett hinzugefügt, Zitat von der Produktseite.)

Kondensatoren sind billig (1,50 US-Dollar bei eBay aus den USA), und obwohl es auch neue Treiber gibt, ist es im Allgemeinen eine gute Idee, sie richtig zu bauen. Es gibt nichts ärgerlicheres, als auf den Versand von etwas zu warten, das Sie nicht hätten reparieren müssen.

Darüber hinaus kann die Batterieleistung (insbesondere AAs) sperrig sein, wenn sie nicht richtig ausgeführt wird, und sie liefert möglicherweise nicht genügend Strom. Beachten Sie, dass in einer Reihenkonfiguration die Spannung von 8 AAs bereitgestellt wird, jedoch nur der Strom von einem. Sie können einen 1,7-A-Motor nicht mit dem Strom eines einzelnen AA betreiben. Stechen Sie in die Dunkelheit: Sie benötigen ~ 80-100 AAs, um genügend Strom und Spannung bereitzustellen. Ich bin zu faul, um den Innenwiderstand zu messen und tatsächlich zu berechnen.

Lösungsvorschlag: Es gibt eine Million Dinge, die schief gehen könnten. Ohne dort zu sein, wette ich, dass Ihre Verzögerungsfunktion zu kurz ist. Dies führt dazu, dass der Motor nicht genügend Zeit hat, sich zu bewegen, sodass er still bleibt. Dies würde immer noch viel Strom verbrauchen (50% der Zeit ist es voller Strom zu den Motorspulen), daher würde es den Fahrer heiß machen. ( Hinweis zur Wärme: ... um mehr als ca. 1,5 A pro Spule zu liefern, ist ein Kühlkörper oder eine andere Kühlmethode erforderlich ...-Produktseite: Sie benötigen einen Kühlkörper, um Ihren Chip abzukühlen.) Beachten Sie auch, dass etwas Wärme normal ist; Als Faustregel gilt: Wenn es zu heiß ist, um den Daumen einige Sekunden lang darauf zu halten, benötigen Sie mehr Kühlung. Denken Sie daran, dass es umso heißer wird, je mehr es verwendet wird. Denken Sie also daran, wenn Sie entscheiden, ob Sie einen Kühlkörper hinzufügen möchten.

tl; dr: Sie müssen die Verzögerungszeit erhöhen und mehr Strom liefern als derzeit.


Ich habe gerade versucht, die Verzögerungszeit auf 1000 ms (1 Sekunde) zu erhöhen, aber immer noch keine Verhaltensänderung. Ich denke, ich muss Batterien ausprobieren, die eine höhere Stromstärke liefern können. Ich habe meine AA-Batterien nachgeschlagen und festgestellt, dass sie ungefähr 900 Milliampere-Stunden liefern. Sollte ich nach Batterien suchen, die mindestens 1700 Milliamperestunden liefern (entsprechend der Stromaufnahme von 1,7 Ampere aus dem Schrittmotor)?
Paul

@ Paul Nein, das ist ein weit verbreitetes Missverständnis. Ein mAH bedeutet, dass er die Fähigkeit hat, so viel Strom freizusetzen, und nicht, dass er alles auf einmal freisetzen kann. Da es bei den meisten Einmalbatterien schwierig ist, den maximalen Strom zu ermitteln, würde ich empfehlen, eine wiederaufladbare 9,6-V-RC-Batterie mit 1,8 + A (Ampere, nicht Amperestunden) zu verwenden. Sie können etwas teuer werden, aber Sie brauchen so viel Strom. Hinweis: Versuchen Sie nicht, wiederaufladbare Batterien in Reihe zu schalten. Sie sind sehr gefährlich, wenn auch nicht perfekt "ausgeglichen"!
Anonymer Pinguin

Bitte geben Sie keine falschen Ratschläge zu Batterien mehr. Die meisten Zellen können einen Strom liefern, der ein Vielfaches ihrer mAh-Bewertung um den Faktor 10 oder mehr (die C-Bewertung) beträgt. "Balance" ist größtenteils ein Problem beim Laden und vor allem bei Lithiumchemien - etwas, das weder ein 9,6-V-RC-Pack noch einzelne 1,2 - 1,5-V-AA-Zellen verwenden.
Chris Stratton

Auf der Schaltung ist bereits eine 100-uF-Kappe angezeigt. Warum sollte also erwähnt werden, dass eine Kappe hinzugefügt werden muss?
jfpoilpret

@Chris Mit ausgewogen meinte ich, dass wenn Sie zwei leicht unterschiedliche Lithiumbatterien kombinieren, diese sehr gefährlich sein können. Soweit ich weiß, verwendet das OP Standard-AA-Alkalibatterien. Ich bin mir sicher, dass nicht zwei Ampere gleichzeitig unterstützt werden können. Selbst wenn dies möglich wäre, würde es aufgrund des Spannungsverlusts in der Batterie höchstwahrscheinlich keine zwanzig Minuten dauern. Es gibt keinen Chip zum Verwalten des Spannungsverlusts. Das OP hat auch die verwendete Batteriezusammensetzung nicht angegeben, sodass es möglicherweise genügend Strom liefern kann, wenn es ausreichend aufgeladen ist.
Anonymer Pinguin

1

Ich glaube nicht, dass Ihre Batterien zu wenig Strom haben, Ihre Verzögerungszeit nicht zu kurz ist, bei 10 +10 ms pro Taktimpuls sprechen Sie nur von 50 Schritten pro Sekunde, das ist gar nicht so schnell. Ich habe Programme geschrieben, bei denen ich in Mikrosekunden arbeiten musste, um genug Drehzahl aus meinem Stepper herauszuholen.

Nehmen Sie zunächst alles aus Ihrer Schleife heraus, außer Digitalwrite High, Delay Digitalwrite Low und Delay Line. Dann "sollte" das Programm den Motor nur kontinuierlich in eine Richtung drehen. Auf diese Weise sind Sie sicher, dass Sie kein logisches Problem haben. Zweitens haben Sie überprüft, ob Sie Pin 12 und 13 nicht rückwärts angeschlossen haben, sodass Sie dem Fahrer sagen, dass er alle 10 ms die Richtung ändern soll, anstatt zu treten? Das Geräusch, das es macht, ähnelt eher einem Summen oder einer Vibration. Normalerweise ist ein leises, statisches Zischen zu hören, wenn der Motor aktiviert ist, aber keinen Schrittimpuls erhält.

Schließlich ist dieser Beitrag ungefähr 18 Monate alt. Er ist rücksichtsvoll und hilfreich für andere, um zu erklären, wie Sie das Problem gelöst haben (vorausgesetzt, Sie haben es herausgefunden).


0

Das einzige, was mir geholfen hat, war, GND NICHT mit der Schrittplatine vom Mikrocontroller zu verbinden (untere schwarze Linie aus dem Schaltplan im ersten Beitrag).

Wenn es angeschlossen wäre, würde der Fahrer sofort 12V @ 3A ziehen und wird verdammt heiß. Auch der Motor drehte sich überhaupt nicht.


Nein, du liegst falsch. Damit dies funktioniert, ist eine gemeinsame Masse unbedingt erforderlich. Wenn Sie dort keine haben, erhalten Sie wahrscheinlich eine über die Wechselstromverkabelung. Was auch immer Ihre Überhitzung verursachte, war ein anderes Problem. Was Sie hier gepostet haben, ist ein schlechter Rat .
Chris Stratton
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.