Wie verdrahtet man einen Schrittmotor?

10

Ich habe kürzlich eine dieser Schrittmotor- und Treiberplatinen gekauft - und ich kann keine Dokumentation zum Anschließen an den Raspberry Pi finden -. Ich versuche, das AdaFruit-Tutorial zu verwenden, und während ich alle Verbindungen hergestellt habe, werden die richtigen Verbindungen hergestellt GPIO-Pins angeschlossen (die LEDs auf der Treiberplatine leuchten ordnungsgemäß, der Motor macht nichts).

Weiß jemand, wo ich nach weiteren Informationen suchen kann, wie man den Himbeer-Pi an einen Schrittmotor anschließt?

Update: 15. November 2013 Mein Programmcode lautet:

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)

#enable_pin = 18
coil_A_1_pin = 4
coil_A_2_pin = 17
coil_B_1_pin = 23
coil_B_2_pin = 24

#GPIO.setup(enable_pin, GPIO.OUT)
GPIO.setup(coil_A_1_pin, GPIO.OUT)
GPIO.setup(coil_A_2_pin, GPIO.OUT)
GPIO.setup(coil_B_1_pin, GPIO.OUT)
GPIO.setup(coil_B_2_pin, GPIO.OUT)

#GPIO.output(enable_pin, 1)

def forward(delay, steps):  
  for i in range(0, steps):
    setStep(1, 0, 1, 0)
    setStep(0, 1, 1, 0)
    setStep(0, 1, 0, 1)
    setStep(1, 0, 0, 1)

def backwards(delay, steps):  
  for i in range(0, steps):
    setStep(1, 0, 0, 1)
    setStep(0, 1, 0, 1)
    setStep(0, 1, 1, 0)
    setStep(1, 0, 1, 0)


def setStep(w1, w2, w3, w4):
  GPIO.output(coil_A_1_pin, w1)
  GPIO.output(coil_A_2_pin, w2)
  GPIO.output(coil_B_1_pin, w3)
  GPIO.output(coil_B_2_pin, w4)

while True:
  delay = raw_input("Delay between steps (milliseconds)?")
  steps = raw_input("How many steps forward? ")
  forward(int(delay) / 1000.0, int(steps))
  steps = raw_input("How many steps backwards? ")
  backwards(int(delay) / 1000.0, int(steps))

Mein Steckbrett sieht so aus Geben Sie hier die Bildbeschreibung ein

Mein Treiberboard sieht so aus Geben Sie hier die Bildbeschreibung ein

ich habe

IN1 => GPIO 4

IN2 => GPIO 17

IN3 => GPIO 23

IN4 => GPIO 24

Steve French
quelle
Leuchten die LEDs in der richtigen Reihenfolge mit einer Verzögerung von 0,5 Sekunden?
John La Rooy
Ich wünschte, ich könnte mehrmals abstimmen.
Loko
Sie leuchten mit der Verzögerung in der richtigen Reihenfolge auf.
Steve French

Antworten:

6

Sie benötigen 3,3 Volt bis 5 Volt Bustreiber. Das Motor-Kit, das Sie gekauft haben, war für Arduino, das 5 Volt GPIO verwendet, das RPI verbraucht 3,3 Volt, gerade genug, um die LEDs auszulösen, funktioniert aber nicht. Sie könnten auch einen Motorcontroller bekommen, der 3,3-Volt-Steuerleitungen akzeptiert.

Denken Sie daran, immer Ihre Voltwerte zu überprüfen!

hildred
quelle
[Smacks Head] Daran habe ich nicht gedacht - gibt es eine Möglichkeit, den Motorcontroller zum Laufen zu bringen, an die Sie denken können - mir ist klar, dass ich hier um etwas Wunderbares bitte, oder habe ich einfach kein Glück?
Steve French
@SteveFrench, deshalb stellen sie Dual-Voltage-Bustreiber her, die zwischen Spannungen puffern. Ich habe einige bei ebay vor Monaten gekauft, kann mich aber nicht an die Teile-Nr. Sie sind üblich und leicht verfügbar
Uhr
Das Rot auf dem Foto ist jedoch mit dem 5-V-Pin verbunden, nicht mit dem 3.3. Sollte das nicht in Ordnung sein? Ich habe es selbst nicht benutzt, aber ich denke, es gibt einige Einschränkungen.
Goldlöckchen
1
@goldilocks es kommt auf den controller chip an, aber wahrscheinlich nicht. Ich habe das Datenblatt für den Controller-Chip nicht nachgeschlagen, aber die meisten Dual-Voltage-Chips verwenden 3,3 V io, wenn vcc an 3,3 V angeschlossen ist. Aber bevor Sie versuchen, sicherzustellen, dass es sich um einen Dual-Voltage-Chip handelt, handelt es sich bei den meisten um Single-Voltage-Chips. Es gibt auch Breitspannungs-Chips, aber unter dem Strich überprüfen Sie das Datenblatt für Ihren Chip.
Hildred
0

Der Adafruit-Artikel sagt

Obwohl im folgenden Code Pin 18 des GPIO-Anschlusses erwähnt wird, der als Enable-Pin verwendet wird, ist dies nur bei Verwendung des L293D erforderlich.

Wenn die LEDs leuchten und Sie zweimal überprüft haben, ob das rote Kabel 5 V hat, ist es Zeit zu vermuten, dass der Motor defekt ist.

Verwenden Sie bei ausgeschaltetem Motor ein Multimeter, um den Widerstand zwischen jedem Kabel und dem roten Kabel zu überprüfen. Sie sollten alle ungefähr gleich sein

John La Rooy
quelle
Ich habe den enable_pin auskommentiert und einen anderen Motor verwendet, alles ohne Erfolg. Ich versuche heute den Mutimeter-Ansatz - danke für Ihre Hilfe
Steve French
Ich überprüfte den Widerstand - kein Unterschied im Widerstand - sehr verwirrend.
Steve French
Was wäre ein guter Weg, um 5 V am roten Draht zu testen? Ich habe versucht, das Multimeter direkt dort anzubringen, aber der Puls scheint nicht lange genug zu dauern, um etwas zu registrieren.
Steve French
0

Erstens, welches Netzteil verwenden Sie? In der Konfiguration, die ich sehe, wird derselbe Vcc verwendet, um das RPi, den Motor und die Platine anzutreiben (Jumper kurzgeschlossen). Ich bin überrascht, dass die Himbeere nicht zurückgesetzt wird (wenn man zu viel von +5 V zieht, ist das normalerweise der Fall), aber ich kenne die Eigenschaften des Motors wirklich nicht - also vielleicht?

Können Sie den Stepper in Bewegung setzen (minimal, in einzelnen Schritten), indem Sie + 5 V von der Stromversorgung an Rot vom Motor und GND an die verbleibenden 4 Klemmen nacheinander anschließen?

Wenn die LEDs aufleuchten und sich der Motor nicht bewegt, scheint es wirklich, dass er nicht genug Strom bekommt. Wenn dies der Fall ist, erhalten Sie entweder eine stärkere Stromversorgung oder (empfohlen) ein separates Netzteil, um den Motor mit Strom zu versorgen. Entfernen Sie den Jumper und befestigen Sie an seiner Stelle Vcc am äußersten Pin und schließen Sie GND an dieselbe Leitung auf dem Steckbrett an wie das "-" Kabel (gemeinsame Masse, trennen Sie nicht das bereits vorhandene.)

(Es besteht die geringe Möglichkeit, dass auch mit der Platine etwas nicht stimmt. Können Sie ein gutes Foto von der Rückseite der Platine liefern? (Lötseite)?

SF.
quelle
Ich kann den Schrittmotor direkt bewegen lassen - ich versuche jetzt die andere Methode.
Steve French
Ich habe gerade die vcc-Methode ausprobiert - das gleiche Ergebnis. Vielleicht können diese Boards aus irgendeinem Grund einfach nicht mit dem Pi verwendet werden.
Steve French
Wenn die LEDs richtig leuchten, funktioniert die Karte richtig. Entweder ist der Motor defekt oder er erhält nicht genügend Strom (oder es ist eher unwahrscheinlich, dass Kabel / Anschlüsse auf der Motorseite beschädigt sind). Haben Sie versucht, den Motor ohne Verwendung der Platine zu bewegen, indem Sie nur die Stromversorgung direkt an seine Kontakte anschließen?
SF.
0

Wenn Sie sich den AdaFruit-Code und Ihren ansehen, scheint die Schrittfolge falsch zu sein, insbesondere müssen Sie zwei Pins gleichzeitig ansteuern, nicht nur einen.

Ich denke, die folgende Sequenz sollte basierend auf dem AdaFruit-Code funktionieren:

# Define simple sequence
StepCount1 = 4
Seq1 = []
Seq1 = range(0, StepCount1)
Seq1[0] = [1,0,1,0]
Seq1[1] = [0,1,1,0]
Seq1[2] = [0,1,0,1]
Seq1[3] = [1,0,0,1]
PiBorg
quelle
Ich muss kopiert haben, dass fälschlicherweise die tatsächliche Reihenfolge des Programms die Reihenfolge ist, die Sie haben.
Steve French
0

Ich habe die Anleitung hier http://www.raspberrypi-spy.co.uk/2012/07/stepper-motor-control-in-python/ befolgt, eine nette Gruppierung der GPIO-Pins, bin aber beim Stackexchange gelandet, weil die Motor tat nichts. Außer es war. Beim Aufnehmen konnte ich jedes Mal, wenn sich die LED änderte, einen kleinen "Herzschlag" spüren. Ich änderte den WaitTime-Parameter von 0,5 auf immer kleinere Werte, bis 0,001 eine vollständige Drehung in 8,5 Sekunden ermöglichte.

Aber ich habe den Sequenztyp in 2 (Hersteller) geändert, da Typ 1 den Motor gelegentlich sogar mit einem funktionierenden "Herzschlag" anzuhalten schien.

Ich habe den Code geändert, um die Anzahl der Schritte zu testen, die für eine vollständige Drehung erforderlich waren, und einen Befehlszeilenschalter erstellt, der sich entweder im oder gegen den Uhrzeigersinn dreht.

Wenn die WaitTime bei 0,001 einen Test-CW ausführt und dann die gleiche Anzahl von Schritten verwendet, erzeugt CCW eine kleine Fehlermenge, dh sie wird nicht dort ausgerichtet, wo sie begonnen hat.

Durch Einstellen der Wartezeit auf 0,01 konnte ich die wiederholte Ausführung von 4100 Schritten anzeigen, entweder CW oder CCW, die immer am selben Punkt endeten.

rauben
quelle