Saya baru-baru ini membeli salah satu motor stepper dan papan driver ini - dan saya tidak dapat menemukan dokumentasi bagaimana menghubungkannya ke Raspberry Pi - Saya mencoba menggunakan tutorial AdaFruit dan sementara saya mendapatkan semua koneksi yang dibuat dengan benar pin gpio terhubung (led pada papan driver menyala dengan benar, motor tidak melakukan apa-apa).
Adakah yang tahu di mana saya dapat mencari informasi lebih lanjut tentang cara menghubungkan raspberry pi ke motor stepper?
Pembaruan: 15 Nov 2013 Kode Program Saya adalah ini
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))
Papan tempat memotong roti saya terlihat seperti ini
Papan driver saya terlihat seperti ini
saya sudah
IN1 => GPIO 4
IN2 => GPIO 17
IN3 => GPIO 23
IN4 => GPIO 24
Jawaban:
Anda membutuhkan driver bus 3,3 volt hingga 5 volt. Kit motor yang Anda beli adalah untuk Arduino yang menggunakan 5 volt gpio, rpi menggunakan 3,3 volt, cukup untuk membuat trip, tetapi tidak berfungsi. Anda juga bisa mendapatkan pengontrol motor yang menerima jalur kontrol 3,3 volt.
Ingat selalu periksa peringkat volt Anda !!
sumber
Kata artikel AdWords
Jika LED menyala, dan Anda telah mengecek apakah Anda memiliki 5V pada kabel merah, saatnya mencurigai motornya rusak.
Dengan motor dilepas, gunakan multimeter untuk memeriksa resistansi antara setiap kabel dan kabel merah. Mereka semua harus hampir sama
sumber
Pertama, catu daya apa yang Anda gunakan? Dalam konfigurasi saya melihat, Vcc yang sama digunakan untuk menggerakkan RPi, motor dan papan (jumper korsleting). Saya terkejut karena tidak mengatur ulang Raspberry (menggambar terlalu banyak dari + 5V cenderung melakukan itu) tetapi saya benar-benar tidak tahu karakteristik motor - jadi, mungkin?
Bisakah Anda membuat stepper bergerak (minimal, satu langkah) dengan menghubungkan + 5V dari catu daya ke Red dari motor, dan GND ke 4 terminal yang tersisa secara berurutan?
Jika LED menyala, dan motor tidak bergerak, sepertinya itu tidak mendapatkan arus yang cukup. Jika demikian, dapatkan catu daya yang lebih kuat, atau (disarankan) tambahkan PSU terpisah untuk memberi daya pada motor - lepaskan jumper dan ganti Vcc ke pin terluar, dan hubungkan GND ke baris yang sama di papan tempat memotong roti sebagai kabel "-" (kesamaan, jangan lepaskan kabel yang sudah ada di sana.)
(ada kemungkinan kecil bahwa ada sesuatu yang salah dengan papan juga. Bisakah Anda memberikan foto yang bagus dari sisi sebaliknya? (sisi solder)?
sumber
Melihat kode AdaFruit dan kode Anda, sepertinya urutan langkahnya salah, khususnya sepertinya Anda perlu menggerakkan dua pin sekaligus bukan hanya satu.
Saya pikir urutan berikut ini harus bekerja berdasarkan kode AdaFruit:
sumber
Saya telah mengikuti panduan di sini http://www.raspberrypi-spy.co.uk/2012/07/stepper-motor-control-in-python/ , pengelompokan pin GPIO yang bagus, tetapi berakhir di stackexchange karena motor tidak melakukan apa-apa. Kecuali itu. Ketika diangkat saya bisa merasakan "detak jantung" kecil setiap kali LED berubah, saya mengubah parameter WaitTime dari 0,5 menjadi nilai yang lebih kecil dan lebih kecil hingga 0,001 memungkinkan rotasi penuh dalam 8,5 detik.
Tapi saya memang mengubah tipe urutan ke 2 (produsen) karena tipe 1 sepertinya sesekali menghentikan motor bahkan dengan "detak jantung" yang berfungsi.
Saya mengubah kode sehingga saya bisa menguji jumlah langkah yang diambil oleh rotasi penuh dan membuat saklar baris perintah untuk memutar searah jarum jam atau berlawanan arah jarum jam.
Dengan WaitTime pada 0,001 menjalankan tes CW dan kemudian menggunakan jumlah langkah yang sama CCW menghasilkan sejumlah kecil kesalahan yaitu tidak berbaris di mana ia mulai.
Mengatur WaitTime ke 0,01 memungkinkan saya untuk menunjukkan eksekusi berulang dari 4.100 langkah baik CW atau CCW selalu berakhir pada titik yang sama.
sumber