Fehlerbehebung bei Schrittmotoren mit dem Pololu DRV8825-Treiber


7

Ich habe einen bipolaren Schrittmotor (QH4-4242) und ein Netzteil von einem alten Drucker geborgen, an dem ich basteln möchte, bevor ich auf größere Motoren skaliere. Mit den begrenzten Kenntnissen über den Stepper (z. B. Nennstrom), aber dem Wissen, dass das Netzteil über eine 24-V / 0,55-A- und 5-V / 0,2-A-Versorgung verfügt, würde ich davon ausgehen, dass der Stepper eine Nennleistung von mindestens 0,5 A haben muss . Ich habe Spulendrahtpaare durch Messen des Widerstands gefunden (~ 8,5 Ohm).

Unter Verwendung einer Pololu-Karte, die um den DRV8825 herum aufgebaut ist, habe ich die Anweisungen auf der Website befolgt, um die richtigen Stifte A1, A2, B1, B2 mit den entsprechenden Spulenpaaren zu verbinden. Ich habe den Motor mit dem 24V / .55A-Ausgang versorgt und den Strombegrenzungs-Trimmtopf eingestellt, während ich die Ampere in einer einzelnen Phase gemessen habe, während der Step-Pin hoch war, so dass der Strom .29A betrug (da die Phasen nur 70% von erhalten der Strom bei vollem Schritt). Und ich habe den Schlaf eingestellt und wie angewiesen auf hoch zurückgesetzt.

Mit einem FEZ Panda II als Mikrocontroller habe ich einen einfachen Code geschrieben, der den Step-Pin und den Sleep-Pin 1 s lang hoch und dann 1 s lang niedrig dreht. Der Schrittmotor macht ein hohes Pitch-Geräusch (wie ich gelesen habe, ist für einen Chopper-Fahrer ziemlich normal) und die Welle wird schwer zu drehen, dreht sich jedoch nicht. Während die Stifte niedrig sind, dreht sich die Welle leicht, wenn ich die Welle leicht aus der "Zahn" -Position bewege, wenn die Stifte wieder zu hoch sind, als würde sie wieder einrasten. Es wird sich jedoch weder selbst drehen noch treten.

Ich würde mich über Beiträge oder Vorschläge zum Debuggen dieses Problems sehr freuen.


Aktualisieren:

Entschuldigung für die Verwirrungshelfer, ich dachte eine Sache und schrieb letzte Nacht eine andere. Mein Hoch und Tief für das Treten beträgt 1000 ms oder 1 Sekunde.

Pseudocode würde folgendermaßen aussehen:

while(true)
{
   step(true)
   sleep(1000)
   step(false)
   sleep(1000)
}

Update 2:

Gemäß Richmans Vorschlag habe ich hintereinander LEDs hinzugefügt, um das Umschalten der Polarität zu überwachen, wenn ein Schrittimpuls gesendet wird. Dies scheint etwas Licht auf das Problem zu werfen. Und tatsächlich das Problem gefunden. Die Polarität wurde beim Senden des Step-Signals nicht umgeschaltet. Dies lag daran, dass ich nicht nur einen Impuls an den Step-Pin gesendet habe, sondern auch den Sleep-Pin umgeschaltet habe, der die Stromversorgung des Motors aktiviert / deaktiviert. Ich habe gelesen, dass dies getan wurde, um hohe Geräusche zu minimieren, aber ich glaube, ich habe es falsch verstanden und das Aktivieren / Deaktivieren erfolgt, nachdem ALLE Schritte ausgeführt wurden. Das ist jetzt erledigt. Entschuldigen Sie die Antwortenden für die Verwirrung mit dem Timing. Ich würde Ihnen die richtige Antwort geben, da ich es falsch erklärt habe, wenn ich könnte.

Eine unbekannte Konsequenz ist, dass der Stepper von selbst tritt, wenn der Step-Pin niedrig gelassen wird. Ich bin neugierig, ob dies auf Rauschen im Signal zurückzuführen ist, das möglicherweise dazu führt, dass der Step-Pin hoch / niedrig wechselt, obwohl meine Logik dies nicht sagt. Oder vielleicht liegt ein Erdungs- / Abschirmungsproblem vor, denn wenn ich das Motorgehäuse, die Verkabelung berühre oder einfach nur meine Hand in die Nähe lege, beginnt es schneller und schneller zu treten und wird schließlich unregelmäßig.

Irgendwelche Gedanken zu diesem neuen Rätsel?


Mit 1000 ms meinst du 1 Sekunde, oder?
Clabacchio

Antworten:


3

Ich denke, Sie fahren den Schrittmotor zu schnell.

Mit einem 1000uSec-Hoch und einem 1000uSec-Tief erzeugen Sie eine 500-Hz-Rechteckwelle. Als solches versuchen Sie, 500 Mal pro Sekunde einen Schritt zu machen.

Versuchen Sie, die Geschwindigkeit auf 50 Schritte / Sekunde zu verringern (machen Sie Ihre niedrige Dauer auf 20 ms oder 20.000 usec).


Siehe Bearbeiten (1 s statt 1 ms).
Clabacchio

Was macht bei dieser Bearbeitung den hohen Klang aus? :-) Ich bin sicher, er meinte 1 ms ...
Brian Drummond

1

Schrittmotoren müssen auf maximale Drehzahl und nach unten rampen, um eine optimale Leistung zu erzielen. Beginnen Sie langsam und erhöhen Sie die Dauer um den Faktor 10x. Experimentieren Sie dann mit einem Rampenprofil_ _ / --- \ _ zur Geschwindigkeitsregelung.

Wenn Sie nicht über genügend Oszilloskopkanäle verfügen, überwachen Sie die Phasenspannung mit LEDs und verwenden Sie zwei LEDs hintereinander mit einem 1K-Widerstand für ~ 20 mA. Verwenden Sie Grünblau oder eine andere Farbe, um das Lesen zu vereinfachen, und verlangsamen Sie Ihr Programm auf 1 Sekunde pro Schritt. Stellen Sie sicher, dass jede Phase ordnungsgemäß angesteuert wird. Keine Notwendigkeit, die Schlafzeit zu verlängern Ich denke, das hängt mehr vom Lastfaktor ab.

Im Allgemeinen gibt es zwei Designschnittstellen. Richtung und Impulszahl Wie Disketten und alte ST506-Festplatten und Pulse Fwd / Rev. An der Motorschnittstelle befinden sich Voll-, Halb- und Mikroschritte. Die Totzeit ist ein kritischer Faktor bei großen Motoren, z. B. 1 bis 10 us, da die Latenz und die Durchschuss-Effekte beim Laden die Fahrer leicht von beiden hoch-niedrig-niedrig mit eingeschalteter induktiver Last braten können. Alle CMOS arbeiten ohne Totzeit, aber sie empfehlen nicht, Motoren mit ihnen zu fahren.


Siehe Bearbeiten (1 s statt 1 ms).
Clabacchio

gotcha .. Ich denke, die Phasenspannungen sind falsch angesteuert ... in 1 Sekunde sollte es möglich sein, die Spannungen an jedem und jedem Strom zu bestätigen, um sicherzustellen, dass keine Wicklung verbrannt wird. 8 Watt pro Wicklung werden heiß.
Tony Stewart Sunnyskyguy EE75

0

Ein bisschen zu schnell. Versuchen Sie es 5 mal langsamer. Wenn es immer noch nicht ausgeführt wird, überprüfen Sie, wie Sie die Schritte sequenzieren. Sind sie in der richtigen Reihenfolge und Polarität?

Wenn diesbezüglich Zweifel bestehen, führen Sie einige Schritte von Hand mit zwei Drähten vom Netzteil aus und überprüfen Sie, ob der Treiber dieselbe Sequenz generiert.


Siehe Bearbeiten (1 s statt 1 ms).
Clabacchio
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.