Bagaimana cara memasang motor stepper?


10

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 masukkan deskripsi gambar di sini

Papan driver saya terlihat seperti ini masukkan deskripsi gambar di sini

saya sudah

IN1 => GPIO 4

IN2 => GPIO 17

IN3 => GPIO 23

IN4 => GPIO 24


Apakah LED menyala dalam urutan yang benar, dengan penundaan 0,5 detik?
John La Rooy

Seandainya saya bisa memilih beberapa kali.
Loko

Mereka menyala dalam urutan yang benar dengan penundaan.
Steve French

Jawaban:


6

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 !!


[Memukul kepala] Saya tidak memikirkan itu - apakah ada cara untuk membuat pengontrol motor bekerja yang dapat Anda pikirkan - saya sadar saya meminta sesuatu yang ajaib di sini, atau saya hanya kurang beruntung?
Steve French

@SteveFrench itu sebabnya mereka membuat driver bus tegangan ganda yang buffer antara tegangan, saya membeli beberapa di ebay bulan yang lalu, tetapi tidak ingat bagian no. mereka umum dan tersedia
hildred

Tapi merah di foto terhubung ke pin 5V, bukan 3.3. Bukankah itu tidak apa-apa ?? Saya belum menggunakannya sendiri, tapi saya pikir ada beberapa peringatan ..
goldilocks

1
@goldilocks itu tergantung pada chip pengontrol, tetapi mungkin tidak. Saya tidak mencari datasheet untuk chip controller, tetapi kebanyakan chip tegangan ganda menggunakan 3.3V io ketika vcc terhubung ke 3.3V. tetapi sebelum mencoba Anda harus membuat shure itu adalah chip tegangan ganda, sebagian besar adalah tegangan tunggal. ada juga chip tegangan lebar, tetapi intinya adalah memeriksa lembar data untuk chip Anda.
Hildred

0

Kata artikel AdWords

Meskipun kode di bawah ini menyebutkan pin 18 dari konektor GPIO yang digunakan sebagai pin Aktifkan, ini hanya diperlukan saat menggunakan L293D.

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


Saya telah mengomentari enable_pin dan telah menggunakan motor yang berbeda, semuanya sia-sia. Saya mencoba pendekatan mutimeter hari ini - terima kasih atas bantuan Anda
Steve French

Saya memeriksa perlawanan - tidak ada perbedaan dalam perlawanan - sangat membingungkan.
Steve French

Apa cara yang baik untuk menguji 5v pada kabel merah? Saya sudah mencoba meletakkan multimeter langsung di sana, tetapi nadi sepertinya tidak cukup lama untuk mendaftar.
Steve French

0

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)?


Saya dapat membuat motor stepper untuk bergerak langsung - Saya mencoba metode lain sekarang.
Steve French

Baru saja mencoba metode vcc - hasil yang sama. Mungkin papan ini tidak bisa digunakan dengan pi karena alasan tertentu.
Steve French

Jika LED menyala dengan benar, maka papan berfungsi dengan benar. Entah motornya rusak atau tidak mendapat cukup arus (atau, agak tidak mungkin, kabel / konektor di sisi motor rusak.) Apakah Anda sudah mencoba jika motor bergerak tanpa menggunakan papan, hanya menghubungkan daya langsung ke kontaknya?
SF.

0

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:

# 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]

Saya pasti telah menyalin bahwa kesalahan urutan sebenarnya dari program adalah urutan yang Anda miliki.
Steve French

0

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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.