Bir step motor nasıl bağlanır?


10

Geçenlerde bu step motor ve sürücü kartlarından birini satın aldım - ve Raspberry Pi'ye nasıl bağlanacağına dair herhangi bir belge bulamıyorum - AdaFruit eğitimini kullanmaya çalışıyorum ve doğru şekilde yapılan tüm bağlantıları aldığımda gpio pimleri bağlı (sürücü kartındaki ledler düzgün yanıyor, motor hiçbir şey yapmıyor).

Ahududu pi'yi bir step motora nasıl bağlayacağım hakkında daha fazla bilgi nerede arayabileceğimi bilen var mı?

Güncelleme: 15 Kasım 2013 Program kodum bu

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

Breadboard'um şöyle görünüyor resim açıklamasını buraya girin

Sürücü kartım şöyle görünüyor resim açıklamasını buraya girin

Sahibim

IN1 => GPIO 4

IN2 => GPIO 17

IN3 => GPIO 23

IN4 => GPIO 24


LED'ler 0,5 sn gecikmeyle doğru sırada mı yanıyor?
John La Rooy

Birden fazla oy verebilsem.
Loko

Gecikme ile doğru sırada yanıyorlar.
Steve French

Yanıtlar:


6

3.3 volt - 5 volt arası otobüs sürücülerine ihtiyacınız var. Satın aldığınız motor kiti, 5 volt gpio kullanan Arduino içindi, rpi 3.3 volt kullanıyor, sadece ledleri gezecek kadar çalışıyor, ama çalışmıyor. 3.3 voltluk kontrol hatlarını kabul eden bir motor kontrolörü de alabilirsiniz.

Her zaman volt derecelendirme kontrol unutmayın !!


Bunu düşünmedim - aklınıza gelebilecek motor kontrolörünü çalıştırabilmenin bir yolu var mı - burada mucizevi bir şey istediğimi fark ettim, yoksa sadece şanssız mıyım?
Steve French

@SteveFrench bu yüzden voltajlar arasında tampon çift voltaj otobüs sürücüleri yapmak, ben ebay aylar önce bazı aldım, ama parça no hatırlayamıyorum. bunlar yaygın ve hazırdır
hildred

Ancak fotoğraftaki kırmızı, 3.3'e değil, 5V pinine bağlanır. Bu iyi olmaz mı ?? Kendim kullanmadım, ama bazı uyarılar olduğunu düşünüyorum ..
goldilocks

1
@ goldilocks denetleyici yongasına bağlıdır, ama muhtemelen değil. Denetleyici yongası için veri sayfasına bakmadım, ancak çift voltajlı çiplerin çoğu vcc 3.3v'ye bağlandığında 3.3v io kullanıyor. ama shure yapmanız gerektiğini denemeden önce çift voltajlı bir çip, çoğu tek voltaj. geniş voltajlı çipler de var, ancak sonuçta çipinizin veri sayfasını kontrol edin.
Hildred

0

Adafruit makalesi diyor ki:

Aşağıdaki kod, Etkinleştirme pimi olarak kullanılan GPIO konnektörünün pin 18'inden bahsetmesine rağmen, bu sadece L293D kullanılırken gereklidir.

LED'ler yanıyorsa ve kırmızı kabloda 5V olup olmadığını iki kez kontrol ettiyseniz, motorun arızalı olduğundan şüphelenmenin zamanı geldi.

Motor bağlı değilken, her bir kablo ile kırmızı kablo arasındaki direnci kontrol etmek için bir multimetre kullanın. Hepsi aynı olmalı


Enable_pin yorum ve tüm boşuna, farklı bir motor kullandık. Mutimeter yaklaşımını bugün deniyorum - yardımınız için teşekkür ederim
Steve French

Direnç kontrol ettim - dirençte fark yok - çok şaşırtıcı.
Steve French

Kırmızı kabloda 5v'yi test etmenin iyi bir yolu nedir? Sadece multimetreyi doğrudan oraya koymaya çalıştım, ancak nabız bir şeyin kaydedilmesi için yeterince uzun sürmüyor gibi görünüyor.
Steve French

0

İlk olarak, hangi güç kaynağını kullanıyorsunuz? Gördüğüm yapılandırmada, RPi'yi, motoru ve kartı sürmek için aynı Vcc kullanılır (atlama teli kısa devre). Ahududu sıfırlamıyor şaşırdım (+ 5V çok fazla çizim yapmak eğilimindedir) ama gerçekten motor özelliklerini bilmiyorum - yani, belki?

Güç kaynağından + 5V'yi motordan Red'e ve GND'yi kalan 4 terminale sırayla bağlayarak stepin hareket etmesini sağlayabilir (minimum düzeyde, tek adım)?

LED'ler yanıyorsa ve motor hareket etmiyorsa, gerçekten yeterli akım almıyor gibi görünüyor. Bu durumda, daha güçlü bir güç kaynağı alın veya (önerilen) motora güç vermek için ayrı bir PSU ekleyin - jumper'ı çıkarın ve yerine en dıştaki pime Vcc takın ve GND'yi breadboard'daki aynı hatta bağlayın. "-" tel (ortak toprak, zaten orada olanın bağlantısını kesmeyin.)

(tahtada da yanlış bir şey olması ihtimali düşüktür. Tahtanın arka yüzünün iyi bir fotoğrafını verebilir misiniz? (lehim tarafı)?


Step motorun doğrudan hareket etmesini sağlayabilirim - Şimdi diğer yöntemi deniyorum.
Steve French

Sadece vcc yöntemini denedim - aynı sonuç. Belki bu kartlar bir sebepten dolayı pi ile kullanılamaz.
Steve French

LED'ler doğru yanıyorsa, kart doğru çalışır. Motor arızalı veya yeterli akım almıyor (veya motor tarafındaki kablolar / konektörler hasar görmüş.) Motor kartı kullanmadan hareket edip sadece doğrudan kontaklara bağlamayı denediniz mi?
SF.

0

AdaFruit koduna ve sizinkine baktığınızda, adım dizisi yanlış gibi görünüyor, özellikle de sadece bir pim değil aynı anda iki pim kullanmanız gerekiyor gibi görünüyor.

Aşağıdaki sıralamanın AdaFruit koduna göre çalışması gerektiğini düşünüyorum:

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

Yanlışlıkla programın gerçek sırasının sahip olduğunuz sıra olduğunu kopyalamalıydım.
Steve French

0

Buradaki kılavuzu takip ediyorum http://www.raspberrypi-spy.co.uk/2012/07/stepper-motor-control-in-python/ , GPIO pinlerinin güzel gruplanması, ancak stackexchange'te sona erdi çünkü motor hiçbir şey yapmıyordu. Dışında. Aldığımda LED her değiştiğinde küçük bir "kalp atışı" hissedebiliyordum, WaitTime parametresini 0.001'den 8.5 saniyede tam dönüşe izin verene kadar 0.5'ten daha küçük ve daha küçük değerlere değiştirdim.

Ancak, tip 1'i, çalışan bir "kalp atışı" ile bile bazen motoru durdurmuş gibi göründüğü için dizi tipini 2 (üreticiler) olarak değiştirdim.

Tam bir rotasyonun attığı adım sayısını test edebilmek için kodu değiştirdim ve saat yönünde veya saat yönünün tersine döndürmek için bir komut satırı anahtarı oluşturdum.

0.001'de WaitTime ile bir test CW'sini çalıştırdıktan sonra aynı sayıda adımı kullanarak CCW az miktarda hata üretti, yani başladığı yere hizalanmadı.

WaitTime öğesini 0.01 olarak ayarlamak, CW veya CCW'nin 4100 adımın tekrar tekrar yürütülmesini her zaman aynı noktada gösterdi.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.