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
Mein Treiberboard sieht so aus
ich habe
IN1 => GPIO 4
IN2 => GPIO 17
IN3 => GPIO 23
IN4 => GPIO 24
Antworten:
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!
quelle
Der Adafruit-Artikel sagt
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
quelle
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)?
quelle
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:
quelle
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.
quelle