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:
Ich bin jedoch ein wenig von dieser genauen Skizze abgewichen:
- Der Arduino (Mikrocontroller) wird über ein an den Computer angeschlossenes USB-Kabel mit Strom versorgt
- 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.
- Ich benutze eine 9V Batterie, um den Motor anzutreiben.
- 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
- Ich habe noch einmal überprüft, ob die angeschlossenen Schrittdrähte ordnungsgemäß mit den Stiften "A" und "B" des Treibers verbunden sind.
- 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.
- Ich habe versucht, die Motorstromversorgung auf 12 V (8 AA-Alkalibatterien) zu erhöhen. Das gleiche Ergebnis tritt auf.
- 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).
- 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:
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?
digitalWrite(stp, HIGH);
und niedrig? das taktet es. Ich denke, es will, dass du es hoch lässt.Antworten:
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 .
quelle
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:
(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.
quelle
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).
quelle
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.
quelle