L293D Motor Sürücü Shield & Arduino ile DC, Step & Servo Kontrolü
Şunları sürebilir:
- 8 bit hız seçimine sahip 4 çift yönlü DC motor (0-255)
- Tek bobinli, çift bobinli, aralıklı veya mikro kademeli 2 kademeli motor (tek kutuplu veya iki kutuplu).
- 2 servo motor
L293D Motor Sürücüsü ve 74HC595 Vites Kaydı
L293D, bir çift DC motoru veya tek kademeli motoru sürebilen çift kanallı bir H-Köprü motor sürücüsüdür.
Kalkan iki L293D motor sürücü yonga setiyle birlikte geldiğinden, bu, dört adede kadar DC motoru ayrı ayrı çalıştırabileceği anlamına gelir ve bu da onu dört tekerlekli robot platformları oluşturmak için ideal hale getirir.
Kalkan toplam 4 H-Köprüsü sunar ve her bir H-köprüsü motora 0,6A'ya kadar güç sağlayabilir.
Kalkan ayrıca, Arduino'nun 4 dijital pinini iki L293D yongasının 8 yön kontrol pinine genişleten bir 74HC595 kaydırma yazmacı ile birlikte gelir.
Güç kaynağı
Motorlara kalkan aracılığıyla güç sağlamaya gelince üç senaryo vardır.
- Hem Arduino hem de motorlar için tek DC güç kaynağı: Hem Arduino hem de motorlar için tek bir DC güç kaynağına sahip olmak istiyorsanız, bunu Arduino'daki DC jakına veya blendaj üzerindeki 2 pimli EXT_PWR bloğuna takmanız yeterlidir. Güç bağlantı telini motor blendajına yerleştirin. Bu yöntemi yalnızca motor besleme voltajı 12V'den az olduğunda kullanabilirsiniz.
- (Önerilen) Arduino, USB üzerinden ve bir DC güç kaynağı ile motorlardan güç alır: Arduino'nun USB'den ve motorların bir DC güç kaynağından kapatılmasını istiyorsanız, USB kablosunu takın. Ardından motor beslemesini blendaj üzerindeki EXT_PWR bloğuna bağlayın. Atlama kablosunu kalkanın üzerine yerleştirmeyin.
- Arduino ve motorlar için iki ayrı DC güç kaynağı: Arduino ve motorlar için 2 ayrı DC güç kaynağına sahip olmak istiyorsanız. Arduino için kaynağı DC jakına takın ve motor beslemesini EXT_PWR bloğuna bağlayın. Atlama telinin motor korumasından çıkarıldığından emin olun.
Uyarı:
Atlama teli yerinde olduğunda EXT_PWR girişine güç VERMEYİN. Motor kalkanına ve ayrıca Arduino'nuza zarar verebilir!
Bir bonus olarak, kalkan aşağıdaki özellikleri sunar:
- Kalkan, güç verme sırasında motorları kapalı tutmak için bir açılır direnç dizisi ile birlikte gelir.
- Yerleşik LED, motor güç kaynağının iyi durumda olduğunu gösterir. Yanmazsa motorlar çalışmayacaktır.
- RESET, Arduino'nun sıfırlama düğmesinden başka bir şey değildir. Sadece kolaylık sağlamak için zirveye çıktı.
Çıkış Terminalleri
Her iki L293D yongasının çıkış kanalları, iki adet 5 pimli vida terminali ile ekranın kenarına bölünmüştür. M1 , M2 , M3 ve M4 . Bu terminallere 4.5 ile 25V arasında gerilimleri olan dört adet DC motor bağlayabilirsiniz.
Modül üzerindeki her kanal, DC motora 600mA'ya kadar verebilmektedir. Bununla birlikte, motora sağlanan akım miktarı, sistemin güç kaynağına bağlıdır.
Çıkış terminallerine iki kademeli motor da bağlayabilirsiniz. Bir step motor M1-M2 motor portuna ve diğeri M3-M4'e .
Tek kutuplu bir step motorunuz varsa, GND terminali de sağlanır. Her iki kademeli motorun merkez tapalarını bu terminale bağlayabilirsiniz.
Kalkan, 16 bit PWM çıkış hatlarını, iki servo motoru bağlayabileceğiniz iki adet 3 pinli başlığa getirir .
L293D kalkan üzerinde kullanılmayan pimler
Ekran tarafından dijital pimler # 2, # 13 ve analog pimler A0-A5 kullanılmaz.
Analog pinler, pin 2'nin küçük bir kopuşa sahip olduğu sağ alt köşede kırılmıştır. Bu pinleri kullanmak istiyorsanız, ona bazı başlıkları bağlayabilirsiniz.
AFMotor Kitaplığını Kurmak
Kalkanla iletişim kurabilmek için, DC, step ve servo motorları kontrol etmek için basit komutlar verebilmemiz için AFMotor.h kitaplığını kurmamız gerekir .
Kitaplığı kurmak için Sketch> Dahil Et> Kitaplıkları Yönet'e gidin… Kitaplık Yöneticisinin kitaplıklar dizinini indirmesini ve kurulu kitaplıkların listesini güncellemesini bekleyin.
Aramanızı ' motor kalkanı ' yazarak filtreleyin . Birkaç giriş olmalı. Adafruit tarafından hazırlanan Adafruit Motor Shield kitaplığını (V1 Firmware) arayın . Bu girişe tıklayın ve ardından Yükle'yi seçin.
L293D Shield ile DC Motorları Sürmek
Artık kalkan hakkında her şeyi bildiğimize göre, onu Arduino'muza bağlamaya başlayabiliriz!
Kalkanı Arduino'nun üstüne takarak başlayın.
Ardından, güç kaynağını motorlara bağlayın. Ekrana 4.5 ile 25V arası gerilimleri olan DC motorları bağlayabilmenize rağmen, deneyimizde 9V olarak derecelendirilmiş DC Motorları kullanıyoruz. Bu nedenle, harici 9V güç kaynağını EXT_PWR terminaline bağlayacağız.
Şimdi motoru M1, M2, M3 veya M4 motor terminallerine bağlayın. Deneyimizde onu M4'e bağlıyoruz .
Aşağıdaki taslak, L293D motor sürücü korumalı bir DC motorun hızını ve dönüş yönünü nasıl kontrol edeceğiniz konusunda size tam bir anlayış verecektir ve daha pratik deneyler ve projeler için temel oluşturabilir.
Kod Açıklaması:
Çizim, AFMotor.h kitaplığını dahil ederek başlar.
İkinci satır AF_DCMotor motor(motorPort#);
bir kitaplık nesnesi oluşturur. Burada motorun bağlı olduğu motor port numarasını belirtmeniz gerekir. M1 bağlantı noktası için 1 yazma, M2 için yazma 2 vb.
Kalkana birden fazla motor bağlamak istiyorsanız, her motor için ayrı bir nesne oluşturun. Örneğin, aşağıdaki kod parçacığı iki AFmotor nesnesi oluşturur.
Kodun kurulum ve döngü bölümünde, bir motorun hızını ve dönüş yönünü kontrol etmek için aşağıdaki iki işlevi çağırıyoruz.
setSpeed(speed)
fonksiyonu motorun hızını ayarlar.speed
0 ile 0 ile 255 arasında değişmektedir kapalı olmak ve tam gaz olarak 255. Programda istediğiniz zaman hızı ayarlayabilirsiniz.run(cmd)
fonksiyonu motorun çalışma modunu ayarlar. Geçerli değerlercmd
şunlardır:- İLERİ - ileri doğru koş (gerçek dönüş yönü motor kablolarına bağlı olacaktır)
- GERİ - geriye doğru koş (dönüş İLERİ'den ters yönde olacaktır)
- SERBEST BIRAK - Motoru durdurun. Bu, motordan gücü keser ve eşdeğerdir
setSpeed(0)
. Motor koruması dinamik frenleme yapmaz, bu nedenle motorun dönmesi biraz zaman alabilir.
L293D Shield ile Step Motorları Sürüş
Step motoru L293D ekranına bağlayalım. Kalkanı Arduino'nun üstüne takarak başlayın.
28BYJ-48 tek kutuplu step için
28BYJ-48 tek kutuplu step kullanıyorsanız, bu motorlar 5V olarak derecelendirilmiştir ve devir başına 48 adım sunar. Bu nedenle, harici 5V güç kaynağını EXT_PWR terminaline bağlayın.
PWR atlama telini çıkarmayı unutmayın.
Şimdi, motoru M1-M2 (port # 1) veya M3-M4 (port # 2) step motor terminallerine bağlayın. Deneyimizde onu M3-M4'e bağlıyoruz .
NEMA 17 bipolar step kullanıyorsanız, bu motorlar 12V olarak derecelendirilmiştir ve devir başına 200 adım sunar. Bu nedenle, harici 12V güç kaynağını EXT_PWR terminaline bağlayın.
PWR atlama telini çıkarmayı unutmayın.
Şimdi, motoru M1-M2 (port # 1) veya M3-M4 (port # 2) step motor terminallerine bağlayın. Deneyimizde onu M3-M4'e bağlıyoruz .
Arduino Kodu
Aşağıdaki taslak, L293D blendajlı tek kutuplu veya iki kutuplu bir step motorun nasıl kontrol edileceğini tam olarak anlamanızı sağlayacaktır ve stepsPerRevolution
parametre hariç her iki motor için aynıdır .
Krokiyi denemeden önce bu parametreyi motorunuzun teknik özelliklerine göre değiştirin. Örneğin, NEMA 17 için 200, 28BYJ-48 için 48 olarak ayarlayın.
Kod Açıklaması:
Çizim, AFMotor.h kitaplığını dahil ederek başlar.
İkinci satır AF_Stepper motor(48, 2);
bir kitaplık nesnesi oluşturur. Burada, motorun devir başına adımlarını ve motorun bağlı olduğu port numarasını parametre olarak geçirmeniz gerekir.
Kodun kurulum ve döngü bölümünde, bir motorun hızını ve dönüş yönünü kontrol etmek için aşağıdaki iki işlevi çağırıyoruz.
setSpeed(rpm)
işlevirpm
, step motorun dakikada kaç devir dönmesini istediğinizde motorun hızını ayarlar .step(#steps, direction, steptype)
fonksiyon, motorun hareket etmesini istediğiniz her seferde çağrılır.#steps
kaç adım atmasını istediğinizdir.direction
FORWARD veya BACKWARD şeklindedir ve için geçerli değerlerstepstyle
şunlardır:- TEK - Bir seferde bir bobine enerji verilir.
- ÇİFT - Daha fazla tork için aynı anda iki bobine enerji verilir.
- INTERLEAVE - Arada bir yarım adım oluşturmak için tekli ve çiftli arasında geçiş yapın. Bu, daha düzgün çalışmayı sağlayabilir, ancak ekstra yarım adım nedeniyle hız da yarı yarıya azalır.
- MICROSTEP - Bitişik bobinler, her tam adım arasında bir dizi 'mikro adım' oluşturmak için yukarı ve aşağı rampalanır. Bu, daha iyi çözünürlük ve daha yumuşak dönüşle sonuçlanır, ancak torkta bir kayıpla sonuçlanır.
L293D Shield ile Servo Motorların Sürülmesi
Servoları L293D kalkanla sürmek pasta kadar kolaydır.
Motor kalkanı aslında Arduino'nun 16bit PWM çıkış pinlerini # 9 & # 10 iki 3 pinli başlık ile kalkanın kenarına çıkarır.
Servolar için güç, Arduino'nun yerleşik 5V regülatöründen gelir, bu nedenle EXT_PWR terminaline herhangi bir şey bağlamanız gerekmez.
Yerleşik PWM pinlerini kullandığımız için, taslak IDE'nin yerleşik Servo kitaplığını kullanır .