DC ve Step Motorları L298N Çift Motor Kontrol Modülleri ve Arduino ile Kontrol Edin

Arduino veya uyumlu bir kartla motorları kontrol etmek için çok para harcamanıza gerek yok. Biraz avlanmadan sonra, iki DC motorun hızını ve yönünü kontrol etmenizi veya bir bipolar step motorunu kolaylıkla kontrol etmenizi sağlayan L298N H-köprü IC'ye dayanan düzgün bir motor kontrol modülü bulduk.

L298N H-köprü modülü, voltajı 5 ila 35V DC arasında olan motorlarla kullanılabilir. Bu öğreticide kullanılan modülle birlikte bir de yerleşik 5V regülatör vardır, bu nedenle besleme voltajınız 12V'a kadar ise, panodan 5V kaynak yapabilirsiniz.

Öyleyse başlayalım!

Adım 1: L298 Modülü Bağlantılarını Anlama

İlk önce bağlantılardan geçeceğiz, sonra DC motorları ve ardından bir step motorun nasıl kontrol edileceğini açıklayacağız. Bu noktada, L298N H-köprü modülündeki bağlantıları gözden geçirin.

Görüntüyü düşünün - sayıları görüntünün altındaki listeyle eşleştirin:

  1. DC motor 1 “+” veya step motor A +
  2. DC motor 1 “-” veya step motor A-
  3. 12V atlama kablosu - 12V DC'den daha yüksek bir besleme voltajı kullanıyorsanız bunu kaldırın. Bu, yerleşik 5V regülatöre güç sağlar

  4. Motor besleme voltajınızı buraya, maksimum 35V DC bağlayın. > 12V DC ise 12V atlama telini çıkarın

  5. GND

  6. 12V jumper yerinde ise 5V çıkış, Arduino'nuzu (vb.) Çalıştırmak için ideal

  7. DC motor 1 etkinleştirme bağlantı teli. Step motor kullanırken bunu yerinde bırakın. DC motor hız kontrolü için PWM çıkışına bağlayın.

  8. İN1

  9. IN2

  10. İN3

  11. IN4

  12. DC motor 2 etkin atlama teli. Step motor kullanırken bunu yerinde bırakın. DC motor hız kontrolü için PWM çıkışına bağlayın

  13. DC motor 2 “+” veya step motor B +

  14. DC motor 2 “-” veya step motor B-

Adım 2: DC Motorları Kontrol Etme

Bir veya iki DC motoru kontrol etmek L298N H-köprü modülü ile oldukça kolaydır. Önce her motoru L298N modülündeki A ve B bağlantılarına bağlayın.

Bir robot (vb.) İçin iki motor kullanıyorsanız, motorların polaritesinin her iki girişte de aynı olduğundan emin olun. Aksi takdirde, her iki motoru da ileri doğru döndürdüğünüzde ve biri geri gittiğinde bunları takas etmeniz gerekebilir!

Ardından, güç kaynağınızı bağlayın - modül üzerindeki pim 4'e ve pim 5'e negatif / GND'ye bağlayın. Eğer 12V'ye kadar ise 12 V atlama telinde (yukarıdaki resimde 3. nokta) bırakabilirsiniz ve 5V kullanılabilir modül üzerindeki pim 6'dan.

Bu, motorların güç kaynağından güç almak için Arduino'nuzun 5V pinine beslenebilir. Devreyi tamamlamak için Arduino GND'yi modül üzerindeki pim 5'e de bağlamayı unutmayın. Şimdi Arduino'nuzda iki tane PWM (darbe genişliği modülasyonu) pimi olması gereken altı dijital çıkış pimine ihtiyacınız olacak.

PWM pinleri, örneğin Arduino Uno'nun dijital pinlerinin görüntüsünde pin numarasının yanındaki dalga işaretiyle (“~”) gösterilir.

Son olarak, Arduino dijital çıkış pimlerini sürücü modülüne bağlayın. Örneğimizde iki DC motorumuz var, bu nedenle dijital pinler D9, D8, D7 ve D6, sırasıyla IN1, IN2, IN3 ve IN4 pinlerine bağlanacak. Daha sonra D10'u modül pim 7'ye (önce jumper'ı çıkarın) ve D5'i modül pimi 12'ye (tekrar jumper'ı çıkarın) bağlayın.

Motor yönü, her motor (veya kanal) için sürücüye YÜKSEK veya DÜŞÜK sinyal gönderilerek kontrol edilir. Örneğin, birinci motor için, YÜKSEK - IN1 ve DÜŞÜK - IN2 bir yönde dönmesine ve DÜŞÜK ve YÜKSEK diğer yönde dönmesine neden olur.

Bununla birlikte, motorlar bir YÜKSEK etkinleştirme pimine (motor 1 için 7, motor iki için 12) ayarlanana kadar dönmeyecektir. Ve aynı pim (ler) e bir DÜŞÜK ile kapatılabilirler. Bununla birlikte, motorların hızını kontrol etmeniz gerekirse, etkinleştirme pimine bağlı dijital pimden gelen PWM sinyali buna dikkat edebilir.

DC motor tanıtım taslağı ile bunu yaptık. Harici bir güç kaynağı ile birlikte iki DC motor ve bir Arduino Uno yukarıda açıklandığı gibi bağlanır. Ardından aşağıdaki çizimi girin ve yükleyin:

 // motor kontrol pinlerini Arduino dijital pinlerine bağlayın // motor one int enA = 10; int in1 = 9; int in2 = 8; // motor iki int enB = 5; int in3 = 7; int in4 = 6; void setup () {// tüm motor kontrol pimlerini pinMode (enA, OUTPUT) çıkışlarına ayarlayın; pinMode (enB, ÇIKIŞ); pinMode (in1, ÇIKIŞ); pinMode (in2, ÇIKIŞ); pinMode (in3, ÇIKIŞ); pinMode (in4, ÇIKIŞ); } void demoOne () {// bu fonksiyon motorları her iki yönde sabit bir hızda çalıştıracaktır // motoru açın A digitalWrite (in1, HIGH); digitalWrite (in2, DÜŞÜK); // hızı 0 ~ 255 analog aralığın dışına 200 olarak ayarlayın (enA, 200); // B motorunu aç digitalWrite (in3, YÜKSEK); digitalWrite (in4, DÜŞÜK); // hızı 0 ~ 255 analog aralığın dışına 200 olarak ayarlayın (enB, 200); gecikmesi (2000); // şimdi motor yönlerini değiştir digitalWrite (in1, LOW); digitalWrite (in2, YÜKSEK); digitalWrite (in3, DÜŞÜK); digitalWrite (in4, YÜKSEK); gecikmesi (2000); // şimdi motorları kapat digitalWrite (in1, LOW); digitalWrite (in2, DÜŞÜK); digitalWrite (in3, DÜŞÜK); digitalWrite (in4, DÜŞÜK); } void demoTwo () {// bu fonksiyon, motorları olası hız aralığında çalıştıracaktır // maksimum hızın motorun kendisi tarafından belirlendiğini ve çalışma voltajını // analogWrite () tarafından gönderilen PWM değerlerinin mümkün olan maksimum hız // donanımınız tarafından // motorları açın digitalWrite (in1, LOW); digitalWrite (in2, YÜKSEK); digitalWrite (in3, DÜŞÜK); digitalWrite (in4, YÜKSEK); // (int i = 0; i <256; i ++) {analogWrite (enA, i) için sıfırdan maksimum hıza hızlanma; analogWrite (enB, i); Gecikme (20); } // (int i = 255; i> = 0; --i) {analogWrite (enA, i) için maksimum hızdan sıfıra yavaşlama; analogWrite (enB, i); Gecikme (20); } // şimdi motorları kapat digitalWrite (in1, LOW); digitalWrite (in2, DÜŞÜK); digitalWrite (in3, DÜŞÜK); digitalWrite (in4, DÜŞÜK); } void loop () {demoOne (); Gecikme (1000); demoTwo (); Gecikme (1000); } 

Peki bu taslakta neler oluyor? DemoOne () fonksiyonunda motorları çalıştırıyoruz ve 200 PWM değerinde çalıştırıyoruz. Bu bir hız değeri değil, 200/255 için aynı anda güç uygulanır.


Sonra bir süre sonra motorlar ters yönde çalışır (thedigitalWrite () fonksiyonlarında YÜKSEK ve DÜŞÜKLERİ nasıl değiştirdiğimize bakın?). Donanımınızın mümkün olan hız aralığı hakkında bir fikir edinmek için, motorları açan demoTwo () fonksiyonundaki tüm PWM aralığı boyunca çalışıyoruz ve bunlar PWM değerlerini sıfırdan 255'e ve tekrar sıfıra geri dönüyor .

Son olarak bu, bu sayfadaki videoda gösterilmektedir - iki DC motorlu iyi aşınmış tank şasimiz kullanılarak.

Adım 3: Bir Step Motorun Arduino ve L298N ile Kontrol Edilmesi

Adım motorları karmaşık görünebilir, ancak hiçbir şey gerçeklerden başka olamaz. Bu örnekte, bu adımdaki resimde gösterildiği gibi dört kabloya sahip tipik bir NEMA-17 step motorunu kontrol ediyoruz.

Devir başına 200 adım vardır ve 60 RPM'de çalışabilir. Motorunuz için adım ve hız değerine sahip değilseniz, şimdi öğrenin ve çizim için buna ihtiyacınız olacak.

Başarılı step motor kontrolünün anahtarı telleri tanımlamaktır - hangisi hangisidir. A +, A-, B + ve B-tellerini belirlemeniz gerekecektir. Örnek motorumuzda bunlar kırmızı, yeşil, sarı ve mavidir. Şimdi kablolamayı yapalım.

A +, A-, B + ve B- tellerini step motordan sırasıyla modül bağlantılarına 1, 2, 13 ve 14 bağlayın. L298N modülü ile birlikte verilen jumper'ları modül noktaları 7 ve 12'deki çiftlerin üzerine yerleştirin. Sonra güç kaynağını gereken şekilde 4 (pozitif) ve 5 (negatif / GND) noktalarına bağlayın.

Bir kez daha step motorunuzun güç kaynağı 12V'dan düşükse, jumper'ı Arduino'nuz için temiz bir 5V güç kaynağı sağlayan 3. noktadaki modüle takın. Ardından, L298N modül pinleri IN1, IN2, IN3 ve IN4'ü sırasıyla Arduino dijital pinleri D8, D9, D10 ve D11'e bağlayın.

Son olarak, modülden 5V kaynaklanıyorsa, Arduino GND'yi modül üzerindeki 5 noktasına ve Arduino 5V'yi 6 noktasına bağlayın. Arduino IDE'de standart olarak bulunan Stepper Arduino kütüphanesi sayesinde step motorun eskizlerinizden kontrol edilmesi çok basittir.

Motorunuzu göstermek için, Step kütüphanesinde bulunan stepper_oneRevolution çizimini yükleyin. Bunu bulmak için Arduino IDE'deki Dosya> Örnekler> Step menüsünü tıklayın.

Son olarak,

 const int stepsPerRevolution = 200; 
çizimde ve 200'ü step motorunuz için devir başına adım sayısına ve ayrıca aşağıdaki satırda 60 RPM olarak ayarlanan hıza değiştirin:
 myStepper.setSpeed ​​(60); 

Şimdi, step motorunuzu bir tur etrafında gönderecek ve ardından tekrar geri gönderecek çizimi kaydedebilir ve yükleyebilirsiniz. Bu fonksiyon ile elde edilir

myStepper.step (stepsPerRevolution); // saat yönünde

myStepper.step (-stepsPerRevolution); // saat yönünün tersine

Son olarak, bu adımdaki videoda test donanımımızın hızlı bir gösterimi gösterilmektedir.

İşte orada, Arduino veya uyumlu kartınızla motorları kontrol etmenin kolay ve ucuz bir yolu var. Ve bu makaleden hoşlanıyorsanız veya Arduino'nun ilginç dünyasına başka birini tanıtmak istiyorsanız - kitabımı inceleyin (şimdi dördüncü baskıda!) “Arduino Atölyesi”.

İlgi̇li̇ Makaleler