Arduino da DC motorun ileri veya geri dönmesinin
yanında, dönme hızını da Arduino üzerinden kontrol edeceğiz. Arduino
pinlerinden verilebilen akım motorları çalıştırmak için yeterli olmamaktadır.
Bu yüzden DC motorlar, motor sürücülerle kullanılmalıdır. Motor sürücüsü
kullanmadan doğrudan motoru Arduino'ya bağlamak, Arduino'nun pinlerine zarar
verebilir.
Motorun bağlantılar üzerinden bağlanan bir diyot
bulunmaktadır. Diyot motordan ters akım ile oluşabilecek kısa devreye karşı
korur.DC Motor Çalışma Prensibi |
H-Bridge (H-Köprüsü) ve
DC Motor
H
Köprüsü DC motorların ileri ve geri yönde hareket etmesini sağlayan devredir. Gerilim iki farklı yönde sağlayarak saat yönünde ya
da saat yönünün tersine motoru döndürmek mümkündür. Devrede 2 adet NPN ve 2 adet PNP transistör bulunur.
H Köprüsü Çalışma Simülasyonu |
L293D Yongası
Bu yonga ile aslında bağımsız iki motoru da kontrol edebilirsiniz. Biz sadece yarım
yongayı kullanacağız yani sol tarafı, yonga sağ taraftaki pimleri ikinci bir motoru
kontrol etmek için kullanılır. Öncelikle bu yonganın bağlantılarına bakalım:
INPUT 1, 2, 3 ve 4 (5, 7, 10 ve 12. pinler): INPUT pinleri motorların dönme yönünün kontrolü için Arduino'ya bağlanır. INPUT 1 ve 2 pinleri 1. motorun, INPUT 3 ve 4 pinleri ise 2. motorun kontrolünde kullanılır. İki pinin aynı anda 5 volt olması motoru kilitleyerek fren yapmasını sağlar. İki pininde 0 volt düzeyinde olması ise motorun boşta olmasına neden olup kısa süre sonra motorun durmasını sağlar.
OUTPUT 1, 2, 3 ve 4 (2, 3, 13 ve 14.
pinler): Bu pinler motorlara bağlanan pinlerdir. OUTPUT 1
ve 2. pinler 1. Motora, OUTPUT 3 ve 4. pinler ise 2. motora bağlanır.
ENABLE A ve ENABLE B (6. ve 11.
pinler): Bu iki pin motorların dönüş hızını ayarlamak
için kullanılır. Bu yüzden bu pinleri Arduino'nun PWM ayaklarına bağlamamız
gerekir. PWM sinyalinin görev zamanına göre motorun hızı arttırılabilir veya
azaltılabilir. ENABLE A pini 1. motorun, ENABLE B pini ise 2. motorun hızını
kontrol etmek için kullanılır. Eğer hız kontrolü yapılmayacaksa bu pinler 5
volt hattına bağlanabilir.
VSS (Logic Supply Voltage – 9. pin):
Adından da anlaşıldığı gibi bu pinin 5 volta bağlanması gerekmektedir. Devrenin
kararsızlığını azaltmak için bu pinle toprak arasına 100nF'lık kondansatör
bağlanabilir.
GND (8. pin):
Besleme hattının devreyi tamamlayabilmesi için bu pin toprak hattına bağlanması
gerekir. Ayrıca entegrenin üzerindeki demir de GND pinine bağlıdır.
VS (4. pin):
Entegrenin motorlara vereceği enerjiyi aldığı ana besleme hattıdır. Bu hatta
bağlanacak enerji kaynağı motorlara verileceği için, motorlarımızın özelliğine
göre besleme gerilimi kullanmalıyız. Genellikle bu hatta 7-12 volt arasında
besleme kaynakları bağlanmaktadır.
Arduino Sketch:
Arduino Sketch:
/* * pinler */ int hizPin = 11; // Motorun hızı int ileriPin = 10; //Motoru ileri yönde int geriPin = 9; // Motoru geri yönde int potPin = A1; //potansiyometre ile hızı ayarla boolean cevir; void setup() { /* * outputları veriyoruz. */ pinMode(ileriPin, OUTPUT); pinMode(geriPin, OUTPUT); pinMode(hizPin, OUTPUT); /* * pull-up direnci olarak oluşturuldu. */ pinMode(2, INPUT_PULLUP); pinMode(3, INPUT_PULLUP); pinMode(4, INPUT_PULLUP); pinMode(5, INPUT_PULLUP); } void loop() { int hiz = analogRead(potPin); if (digitalRead(3) && digitalRead(4) && !digitalRead(2) && !digitalRead(5)) { //saat yönünde cevir cevir = digitalRead(3) && digitalRead(4) && !digitalRead(2) && !digitalRead(5); setMotor(hiz, cevir); } else if (digitalRead(2) && digitalRead(5) && !digitalRead(3) && !digitalRead(4)) { //saat yönünün tersine cevir cevir = digitalRead(3) && digitalRead(4) && !digitalRead(2) && !digitalRead(5); setMotor(hiz, cevir); } else { //diger durumlarda motoru durdur digitalWrite(ileriPin, LOW); digitalWrite(geriPin, LOW); } } void setMotor(int hiz, boolean cevir) { analogWrite(hizPin, hiz); /* motora hız değeri analog olarak 11.pine gönderiliyor. */ digitalWrite(ileriPin, cevir); // ileri doğru cevir digitalWrite(geriPin, ! cevir); // geriye dogru cevir }
H Köprüsü Fritzing Şeması |
Bir sonraki yazımda görüşmek üzere…