İçindekiler

Motor Sürücü Kartları
Sürücü kartları sayesinde ardunio kartınız üzerinde istediğiniz voltaj ve güçte motoru kontrol edebilirsiniz.

Voltaj Regulatörlü Çift Motor Sürücü Kart L298N

İki DC motorun hızını ve yönünü kontrol etmenizi veya bir bipolar step motoru kolaylıkla kontrol etmenizi sağlar. L298N H köprü modülü, 5 ila 35V DC arasında gerilime sahip motorlarla kullanılabilir.

Ayrıca 5V'lık bir regülatör vardır. Besleme voltajınız 12V'a kadar ise, panodan 5V'luk kaynak alabilirsiniz.

24V'a kadar olan motorları sürmek için hazırlanmış olan bu motor sürücü kartı, iki kanallı olup, kanal başına 2A akım vermektedir. Kart üzerinde L298N motor sürücü entegresi kullanılmıştır. Sumo, mini sumo, çizgi izleyen robotlarda ve çok çeşitli motor kontrol uygulamalarında kullanılabilir.

DC motorlardan ayrı olarak step motor kontrolüne de imkan sağlamaktadır. Daha ayrıntılı bilgi için aşağıdaki örnek dokumanı inceleyebilirsiniz.

Özellikleri :

  • Birbirinden bağımsız olarak iki ayrı motoru kontrol edebilir.
  • Kanal başına 2A akım verebilmektedir.
  • Üzerinde dahili regülatörü vardır.
  • Yüksek sıcaklık ve kısa devre koruması vardır.
  • Motor dönüş yönüne göre yanan ledler vardır.
  • Kart üzerinde dahili soğutucu vardır.
  • Akım okuma (current sense) pinleri dışa verilmiş haldedir.
  • Kartın 4 yanında istenilen yüzeye sabitleyebileceğiniz 4 adet vida deliği bulunmaktadır.

Pin Bağlantıları :

  • ENA: Sol motor kanalını aktif etme pini
  • IN1: Sol motor 1. girişi
  • IN2: Sol motor 2. gitişi
  • IN3: Sağ motor 1. girişi
  • IN4: Sağ motor 2. girişi
  • ENB: Sağ motor kanalını aktif etme pini
  • MotorA: Sol motor çıkışı
  • MotorB: Sağ motor çıkışı
  • VCC: Besleme voltaj girişi(4.8V-24V)
  • GND: Toprak bağlantısı
  • 5V: 5V çıkışı

Ürün üzerinde ayrıca jumper takılmış pinler de yer almaktadır. Bu pinler opsiyonel kullanımlar ve farklı özellikleri aktif etmek için kullanılabilinmektedir. 

  • CSA: A motor sürücü kanalının akım çıkışıdır. Buradan jumper çıkarılarak çekilen akım değeri analog voltaj olarak okunabilinmektedir. 
  • CSB: B motor sürücü kanalının akım çıkışıdır. Buradan jumper çıkarılarak çekilen akım değeri analog voltaj olarak okunabilinmektedir.
  • V1: IN1 girişini direk olarak 5V'a çeken pull-up direncine bağlı olan bir jumperdır. Bu sayede siz toprağa çekmedikçe pine sürekli olarak 5V gelecektir.
  • V2: IN2 girişini direk olarak 5V'a çeken pull-up direncine bağlı olan bir jumperdır. Bu sayede siz toprağa çekmedikçe pine sürekli olarak 5V gelecektir.
  • V3: IN3 girişini direk olarak 5V'a çeken pull-up direncine bağlı olan bir jumperdır. Bu sayede siz toprağa çekmedikçe pine sürekli olarak 5V gelecektir.
  • V4: IN4 girişini direk olarak 5V'a çeken pull-up direncine bağlı olan bir jumperdır. Bu sayede siz toprağa çekmedikçe pine sürekli olarak 5V gelecektir.
  • 5V-EN: 7805 hattını aktif ve pasif hale getiren jumperder. Takılı durumda kartın 5V çıkışı aktif olur ve buradan 5V çekilebilir. Çıkarıldığı durumda ise bu hat pasif konuma geçer.

Motor Sürücü KartlarıMotor Sürücü Kartları

 

Motor Sürücü Kartları

Tronixlabs Avustralya'dan Arduino için L298N Motor Kontrol Cihazı

    1. DC motor 1 "+" veya step motor A +
    2. DC motor 1 "-" veya step motoru A-
    3. 12V jumper - 12V DC'den daha büyük 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 den yüksekse 12V jumper'ı çıkartın
    5. GND
    6. 12V atlamacı yerinde ise 5V çıkış, Arduino'nuzu (vb.) Çalıştırmak için ideal
    7. DC motor 1, jumper'ı etkinleştirir. Bir step motor kullanırken bunu yerinde bırakın. DC motor hız kontrolü için PWM çıkışına bağlayın.
    8. IN1
    9. IN2
    10. IN3
    11. IN4
    12. DC motor 2, jumper'ı etkinleştirir. Bir 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-

DC Motorların Kontrolü

Bir veya iki DC motorunu kontrol etmek oldukça kolaydır. Öncelikle her bir 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 kutuplarının her iki girişte de aynı olduğundan emin olun. Aksi halde, her iki motoru da ileri doğru ayarladığınızda ve bir tanesi geriye doğru gittiğinde onları değiştirmeniz gerekebilir!

Ardından, güç kaynağınızı bağlayın - modüldeki pim 4'e pozitif ve pim 5'e negatif / GND olacak şekilde besleyin. Eğer 12V'a kadar veriyorsanız, 12V jumper'da bırakabilirsiniz (yukarıdaki resimde 3. nokta) ve 5V mevcut olacaktır. modül üzerindeki pim 6'dan. Bu, motorların güç kaynağından güç almak için Arduino'nuzun 5V pinine beslenebilir. Arduino GND'yi modüldeki pim 5'e bağlamayı ve devreyi tamamlamayı unutmayın.

Arduino'nuzda, ikisi PWM (darbe genişlik modülasyonu) pinleri olması gereken altı dijital çıkış pinine ihtiyacınız olacak. PWM pinleri, pin numarasının yanında bulunan tilde ("~") ile gösterilir, örneğin:

Motor Sürücü KartlarıArduino UNO PWM pimleri

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. Ardından D10'u modül pim 7'ye bağlayın (önce atlama kablosunu çıkarın) ve D5'i modül pimi 12'ye bağlayın (tekrar atlama kablosunu çıkarın).

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

Bununla birlikte, motorlar bir YÜKSEK etkinleştirme pimine ayarlanana kadar dönmeyecektir (bir motor için 7, iki motor için 12). Ve aynı pimlere LOW ile kapatılabilirler. Bununla birlikte, motorların hızını kontrol etmeniz gerekirse, etkinleştirme pimine bağlı dijital pinten gelen PWM sinyali bununla ilgilenebilir.

Örnek Kodlama

// connect motor controller pins to Arduino digital pins
// motor one
int enA = 10;
int in1 = 9;
int in2 = 8;
// motor two
int enB = 5;
int in3 = 7;
int in4 = 6;
void setup()
{
  // set all the motor control pins to outputs
  pinMode(enA, OUTPUT);
  pinMode(enB, OUTPUT);
  pinMode(in1, OUTPUT);
  pinMode(in2, OUTPUT);
  pinMode(in3, OUTPUT);
  pinMode(in4, OUTPUT);
}
void demoOne()
{
  // this function will run the motors in both directions at a fixed speed
  // turn on motor A
  digitalWrite(in1, HIGH);
  digitalWrite(in2, LOW);
  // set speed to 200 out of possible range 0~255
  analogWrite(enA, 200);
  // turn on motor B
  digitalWrite(in3, HIGH);
  digitalWrite(in4, LOW);
  // set speed to 200 out of possible range 0~255
  analogWrite(enB, 200);
  delay(2000);
  // now change motor directions
  digitalWrite(in1, LOW);
  digitalWrite(in2, HIGH);  
  digitalWrite(in3, LOW);
  digitalWrite(in4, HIGH);
  delay(2000);
  // now turn off motors
  digitalWrite(in1, LOW);
  digitalWrite(in2, LOW);  
  digitalWrite(in3, LOW);
  digitalWrite(in4, LOW);
}
void demoTwo()
{
  // this function will run the motors across the range of possible speeds
  // note that maximum speed is determined by the motor itself and the operating voltage
  // the PWM values sent by analogWrite() are fractions of the maximum speed possible
  // by your hardware
  // turn on motors
  digitalWrite(in1, LOW);
  digitalWrite(in2, HIGH);  
  digitalWrite(in3, LOW);
  digitalWrite(in4, HIGH);
  // accelerate from zero to maximum speed
  for (int i = 0; i < 256; i++)
  {
    analogWrite(enA, i);
    analogWrite(enB, i);
    delay(20);
  }
  // decelerate from maximum speed to zero
  for (int i = 255; i >= 0; --i)
  {
    analogWrite(enA, i);
    analogWrite(enB, i);
    delay(20);
  }
  // now turn off motors
  digitalWrite(in1, LOW);
  digitalWrite(in2, LOW);  
  digitalWrite(in3, LOW);
  digitalWrite(in4, LOW);  
}
void loop()
{
  demoOne();
  delay(1000);
  demoTwo();
  delay(1000);
}

 

Peki bu kodda neler oluyor? DemoOne() işlevinde motorları açıp 200 PWM değerinde çalıştırıyoruz. Bu bir hız değeri değil, güç bir kerede 200/255 süre için kullanılıyor.

Sonra bir dakika sonra motorlar ters yönde çalışır (bkz. DigitalWrite () işlevlerinde YÜKSEK ve DÜŞÜK'leri nasıl değiştirdik?).

Donanımınızın mümkün olan hız aralığı hakkında bir fikir edinmek için, motorları açan demoWo () işlevindeki tüm PWM aralığı boyunca çalışıyoruz ve döngüler için iki ile PWM değerleri sıfırdan 255'e ve sıfıra geri dönüyoruz .

Sonunda bu, aşağıdaki videoda gösterilmiştir - iki DC motorlu iyi giyilmiş bir tank şasisi kullanarak:

Step Motor Kontrolü

Bu örnekte, dört telli tipik bir NEMA-17 step motorumuz var:

Motor Sürücü Kartları 

Devir başına 200 adımı vardır ve 60 RPM'de çalışabilir. Motorunuz için halihazırda bir adım ve hız değeri yoksa, şimdi öğrenin ve taslak için 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 mavi. Şimdi kablolamayı halledelim.

A +, A-, B + ve B tellerini, step motordan sırasıyla 1, 2, 13 ve 14 modül bağlantılarına bağlayın. L298N modülü ile birlikte verilen atlama tellerini 7 ve 12 numaralı modül noktalarındaki çiftlerin üzerine yerleştirin. Ardından güç kaynağını 4 (pozitif) ve 5 (negatif / GND) noktalarına gerektiği gibi bağlayın.

Bir kez daha step motorunuzun güç kaynağı 12V'dan az ise, jumper'ı Arduino'nuz için temiz bir 5V güç kaynağı sağlayan 3. noktadaki modüle takın.

Ardından, L298N modül pinlerini IN1, IN2, IN3 ve IN4'ü sırasıyla Arduino dijital pinleri D8, D9, D10 ve D11'e bağlayın. Son olarak, Arduino GND'yi modüldeki 5. noktaya, Arduino 5V ise modülden 5V alıyorsa 6. noktaya bağlayın.

Standart olarak Arduino IDE'ye dahil olan Stepper Arduino kütüphanesi sayesinde step motorunu çizimlerinizden kontrol etmek çok kolaydır.

Motorunuzu göstermek için, yalnızca Stepper kütüphanesinde bulunan stepper_oneRevolution çizimini yükleyin, örneğin:

Motor Sürücü Kartları

Son olarak, değerini kontrol edin

const int stepsPerRevolution = 200;


eskizde ve step motorunuz için 200 devir başına adım sayısını ve ayrıca aşağıdaki satırda 60 RPM olarak ayarlanan hızı değiştirin:

myStepper.setSpeed (60);


Şimdi step motorunuzu bir devir etrafına gönderecek olan eskizi kaydedip yükleyebilirsiniz, sonra tekrar geri getirebilirsiniz. Bu işlev ile elde edilir

myStepper.step (stepsPerRevolution); // saat yönünde
myStepper.step (-stepsPerRevolution); // saat yönünün tersi için


Son olarak, test donanımımızın hızlı bir şekilde gösterilmesi aşağıdaki videoda gösterilmektedir:

Ve sonunda, Arduino'nuz veya diğer geliştirme platformunuz için ucuz ve kullanışlı bir motor kontrol cihazı.