Arduino ile L293 Motor sürücü ile DC Motor Kontrolü

Proje adı:  Arduino ile L293 Motor sürücü ile DC Motor Kontrolü

Keşfedin:  H-köprüleri

Ekler: kütüphaneler ve KOD:

const int controlPin1 = 2;
const int controlPin2 = 3;
const int enablePin = 9;
const int directionSwitchPin = 4;
const int onOffSwitchStateSwitchPin = 5;
const int potPin = A0;
int onOffSwitchState = 0;
int previousOnOffSwitchState = 0;
int directionSwitchState = 0;
int previousDirectionSwitchState = 0;
int motorEnabled = 0;
int motorSpeed = 0;
int motorDirection = 1;

void setup(){
pinMode(directionSwitchPin, INPUT);
pinMode(onOffSwitchStateSwitchPin, INPUT);
pinMode(controlPin1, OUTPUT);
pinMode(controlPin2, OUTPUT);
pinMode(enablePin, OUTPUT);
digitalWrite(enablePin, LOW);
}
void loop(){
onOffSwitchState = digitalRead(onOffSwitchStateSwitchPin);
delay(1);
directionSwitchState = digitalRead(directionSwitchPin);
motorSpeed = analogRead(potPin)/4;
if(onOffSwitchState != previousOnOffSwitchState){
if(onOffSwitchState == HIGH){
motorEnabled = !motorEnabled;
}
}
if (directionSwitchState != previousDirectionSwitchState) {
if (directionSwitchState == HIGH) {
motorDirection = !motorDirection;
}
}
if (motorDirection == 1) {
digitalWrite(controlPin1, HIGH);
digitalWrite(controlPin2, LOW);
}
else {
digitalWrite(controlPin1, LOW);
digitalWrite(controlPin2, HIGH);
}
if (motorEnabled == 1) {
analogWrite(enablePin, motorSpeed);
}
else {
analogWrite(enablePin, 0);
}
previousDirectionSwitchState = directionSwitchState;
previousOnOffSwitchState = onOffSwitchState;
}

Bu projede, şu parçalara ihtiyacınız vardı:

1.Aruduino Uno R3 (Arduino’nun diğer sürümünü de kullanabilirsiniz)

2. atlama kabloları

3. Anlık anahtar 2 adet

4. H köprü motor sürücüsü L293D

5. Potansiyometre

6. Direnç 2 adet (2 adet 10 kOm)

7. Breadboard yarım boyutu 

8. DC motor 6 / 9V 1 adet

9. 9V pil 1 adet

10. pil yapış 1 adet

11. Arduino IDE (siz indirebilirsiniz burada  )

GENEL

İnternetten önce, televizyondan, hatta filmlerden önce, ilk hareketli görüntülerden bazıları zoetrope adlı bir araçla oluşturuldu. Zoetroplar, içinde küçük değişiklikler olan bir grup hareketsiz görüntüden hareket yanılsaması yaratır. Bunlar tipik olarak yan kesikli silindirlerdir. Silindir döndüğünde ve yarıklara baktığınızda, gözleriniz duvarın diğer tarafındaki hareketsiz görüntüleri canlandırmayı algılar. Yarıklar, görüntülerin büyük bir bulanıklık olmasını önlemeye yardımcı olur ve görüntülerin görünme hızı görüntülerin hareket etmesine neden olur. Başlangıçta, bu yenilikler elle veya bir krank mekanizması ile döndürüldü. Bu projede, etçil bir bitkiyi canlandıran kendi zoetropunuzu inşa edeceksiniz. Harekete bir motorla güç vereceksiniz. Bu sistemi daha da gelişmiş yapmak için, yönü kontrol etmenizi sağlayan bir anahtar ekleyeceksiniz, açmak ve açmak için bir başkası ve hızı kontrol etmek için bir potansiyometre. Motorlu Fırıldak Projesinde bir yönde dönecek bir motorunuz var. Motorun gücünü ve topraklamasını alıp yönlerini tespit ederseniz, motor ters yönde dönecektir. Her şeyi farklı bir yönde döndürmek istediğinizde bunu yapmak çok pratik değildir, bu nedenle motorun polaritesini tersine çevirmek için H köprüsü adı verilen bir bileşen kullanacaksınız.H köprüler , entegre devreler (IC) olarak bilinen bir bileşen türüdür. IC’ler, büyük devreleri küçük bir pakette tutan bileşenlerdir. Bunlar kolayca değiştirilebilen bir bileşene yerleştirerek daha karmaşık devrelerin basitleştirilmesine yardımcı olabilir. Örneğin, bu örnekte kullandığınız H köprüsünde yerleşik bir dizi transistör vardır. H köprüsünün içindeki devreyi kurmak için muhtemelen başka bir breadboard’a ihtiyacınız olacaktır. Bir IC ile, devrelere yanlardan çıkan pimlerden erişebilirsiniz. Farklı IC’lerde farklı sayıda pim bulunur ve bunların hepsi her devrede kullanılmaz. Bazen pimleri işlev yerine numara ile belirtmek uygun olur. Bir IC’ye bakarken, çukurlu kısım üst olarak adlandırılır. Aşağıdaki resimde olduğu gibi sol üst köşeden “U” yönünde sayarak pin numaralarını belirleyebilirsiniz.

Zoetroplar, bazen POV olarak kısaltılan “vizyonun sürekliliği” adı verilen bir fenomen nedeniyle çalışır. POV, gözlerimiz ardı ardına küçük değişimlerle hareketsiz görüntüler gözlemlediğinde oluşan hareket yanılsamasını açıklar. Çevrimiçi olarak “POV ekranı” için arama yaparsanız, genellikle LED’ler ve Arduino ile bu etkiden yararlanan birçok proje bulacaksınız.

DEVRE

Breadboard’unuzun bir tarafından güç ve topraklamayı Arduino’ya bağlayın. Breadboard’a her birinin bir tarafını güce bağlayan 2 anlık anahtar ekleyin. Her iki anahtarın çıkış piminde topraklanmış bir seri olarak 10Kohm aşağı çekme direnci ekleyin. Pim 4 üzerindeki anahtar yönü kontrol edecektir; pim 5 üzerindeki anahtar motoru açar ve o ff. Potansiyometreyi breadboard’a bağlayın. 5V’yi bir tarafa bağlayın ve diğerini topraklayın. Orta pimi Arduino’daki analog giriş 0’a takın. Bu motorun hızını kontrol etmek için kullanılacaktır. H köprüsünü merkeze yerleşecek şekilde breadboard’unuza yerleştirin. H köprüsünün pimini 1 Arduino’daki dijital pim 9’a bağlayın. Bu, H köprüsündeki etkinleştirme pimidir. 5V aldığında motoru açar, 0V aldığında motoru o turns açar. Bu pimi H köprüsünü PWM için kullanacaksınız, ve motorun hızını ayarlayın. H köprüsündeki pim 2’yi Arduino’daki dijital pim 3’e bağlayın. Pimi 7 dijital pim 2’ye bağlayın. Bunlar, H köprüsüyle iletişim kurmak için kullanacağınız pimlerdir ve hangi yöne döneceğini söyler. Pim 3 DÜŞÜK ve pim 2 YÜKSEK ise, motor bir yönde dönecektir. Pim 2 DÜŞÜK ve pim 3 YÜKSEK ise, motor ters yönde dönecektir. Her iki pim aynı anda YÜKSEK veya DÜŞÜK ise, motorun dönmesi durur. H-köprü gücünü pin 16’dan alır, 5V’ye takın. Pim 4 ve 5’in her ikisi de yere düşer. Motorunuzu H köprüsündeki 3 ve 6 pimlerine takın. Bu iki pim 2 ve 7 pimlerine gönderdiğiniz sinyale bağlı olarak açılacak ve o ff açılacaktır. Bunlar, H-köprüsüyle iletişim kurmak için kullanacağınız pimlerdir ve hangi yöne döneceğini söyler. Pim 3 DÜŞÜK ve pim 2 YÜKSEK ise, motor bir yönde dönecektir. Pim 2 DÜŞÜK ve pim 3 YÜKSEK ise, motor ters yönde dönecektir. Her iki pim aynı anda YÜKSEK veya DÜŞÜK ise, motorun dönmesi durur. H-köprü gücünü pin 16’dan alır, 5V’ye takın. Pim 4 ve 5’in her ikisi de yere düşer. Motorunuzu H köprüsündeki 3 ve 6 pimlerine takın. Bu iki pim 2 ve 7 pimlerine gönderdiğiniz sinyale bağlı olarak açılacak ve o ff açılacaktır. Bunlar, H-köprüsüyle iletişim kurmak için kullanacağınız pimlerdir ve hangi yöne döneceğini söyler. Pim 3 DÜŞÜK ve pim 2 YÜKSEK ise, motor bir yönde dönecektir. Pim 2 DÜŞÜK ve pim 3 YÜKSEK ise, motor ters yönde dönecektir. Her iki pim aynı anda YÜKSEK veya DÜŞÜK ise, motorun dönmesi durur. H-köprü gücünü pin 16’dan alır, 5V’ye takın. Pim 4 ve 5’in her ikisi de yere düşer. Motorunuzu H köprüsündeki 3 ve 6 pimlerine takın. Bu iki pim 2 ve 7 pimlerine gönderdiğiniz sinyale bağlı olarak açılacak ve o ff açılacaktır. Her iki pim aynı anda YÜKSEK veya DÜŞÜK ise, motorun dönmesi durur. H-köprü gücünü pin 16’dan alır, 5V’ye takın. Pim 4 ve 5’in her ikisi de yere düşer. Motorunuzu H köprüsündeki 3 ve 6 pimlerine takın. Bu iki pim 2 ve 7 pimlerine gönderdiğiniz sinyale bağlı olarak açılacak ve o ff açılacaktır. Her iki pim aynı anda YÜKSEK veya DÜŞÜK ise, motorun dönmesi durur. H-köprü gücünü pin 16’dan alır, 5V’ye takın. Pim 4 ve 5’in her ikisi de yere düşer. Motorunuzu H köprüsündeki 3 ve 6 pimlerine takın. Bu iki pim 2 ve 7 pimlerine gönderdiğiniz sinyale bağlı olarak açılacak ve o ff açılacaktır.pil takılı olmadan! ) breadboard’unuzdaki diğer güç raylarına bağlayın. Arduino’nuzdan aküyü toprağa bağlayın. 8 numaralı pimi H köprüsünden akü gücüne bağlayın. Bu, H köprüsünün motora güç verdiği pimdir. 9V ve 5V güç hatlarınızın bağlı olmadığından emin olun. Ayrı olmalılar, ikisi arasında sadece toprak bağlanmalıdır.

KOD

Çıkış ve giriş pinleri için sabitler oluşturun. Girdilerinizdeki değerleri tutmak için değişkenleri kullanın. Kum saati projesine benzer şekilde, durumu bir döngüden diğerine karşılaştırarak her iki anahtar için durum değişikliği algılaması yapacaksınız. Bu nedenle, mevcut durumu kaydetmeye ek olarak, her bir anahtarın önceki durumunu kaydetmeniz gerekir. motorDirection , motorun hangi yönde döndüğünü izler ve motorPower , motorun dönüp dönmediğini izler. Gelen kurulumu () , her bir giriş ve çıkış piminin yönünü ayarlamak. Motorun hemen dönmemesi için etkinleştirme pimini DÜŞÜK konuma getirin. Senin içinde döngü () , Açık / Ç ff anahtarının durumunu oku ve depolamak Ono ff SwitchStatedeğişken. Geçerli anahtar durumu ile öncekisi arasında bir fark varsa ve anahtar şu anda YÜKSEK ise, motorPower değişkenini 1 olarak ayarlayın. DÜŞÜK ise, değişkeni 0 olarak ayarlayın. Yön anahtarı ve potansiyometrenin değerlerini okuyun. Değerleri ilgili değişkenlerinde saklayın. Yön anahtarının halihazırda öncekinden farklı bir konumda olup olmadığını kontrol edin. Farklı ise, motor yönü değişkenini değiştirin. Motorun dönmesi için sadece 2 yol vardır, bu nedenle değişkeni iki durum arasında değiştirmek isteyeceksiniz. Bunu yapmanın bir yolu, ters çevirme operatörünü şu şekilde kullanmaktır: motorDirection =! MotorDirection . Motor Yönüdeğişken motorun hangi yöne döndüğünü belirler. Yönü ayarlamak için kontrol pimlerini biri YÜKSEK diğeri DÜŞÜK olarak ayarlarsınız. Zaman motorDirection değişiklikleri, kontrol pimleri durumları tersine çevirir. Yön düğmesine basıldığında, kontrol pinlerinin durumunu ters çevirerek motoru diğer yönde döndürmek istersiniz. Eğer motorEnabled değişkeni 1 kullanılarak motorun hızını ayarlamak analogWrite () pimi sağlar PWM. Eğer motorEnabled 0, daha sonra ayarlayarak ff o motoru çevirmek analogWrite çıkmadan önce değeri 0 olarak döngü () programı aracılığıyla sonraki saldırı için önceki devlet olarak anahtarlar mevcut durumu kaydet.

BAŞLANGIÇ

Arduino’nuzu bilgisayarınıza takın. Pili konektöre takın. Açma / Kapama düğmesine bastığınızda motor dönmeye başlamalıdır. Potansiyometreyi çevirirseniz, hızlanmalı ve yavaşlamalıdır. Açma / Kapama düğmesine başka bir kez basmak motoru durduracaktır. Yön düğmesine basmayı deneyin ve motorun her iki yönde döndüğünü doğrulayın. Ayrıca, tencere üzerindeki düğmeyi çevirirseniz, gönderdiği değere bağlı olarak motor hızını artırdığını veya yavaşlattığını görmelisiniz. Devrenin beklendiği gibi çalıştığını doğruladıktan sonra, pili ve USB’yi devreden çıkarın. Zoetropunuzu inşa etmek için, daha önce kullandığınız fırıldakı ve kitinizde bulunan dikey yarıklarla kesmeyi almalısınız. CD motorun şaftına güvenli bir şekilde takıldıktan sonra, her şeyi tekrar takın. Projenizi yukarıda tutun, böylece yarıklara bakabilirsiniz (ancak CD’nin motora sabitlendiğinden ve ona çok yakın olmadığından emin olun). Hareketsiz görüntülerin sırasını “hareket ettirin”! Çok hızlı veya çok yavaş gidiyorsa, animasyonun hızını ayarlamak için potansiyometrenin düğmesini çevirin. Geri oynatıldığında animasyonun nasıl göründüğünü görmek için yön anahtarına basmayı deneyin. Motoru desteklemek için bir kaide yapın. İçinde delik açılmış küçük bir karton kutu, baz olarak çalışabilir ve ellerinizi anahtarlar ve düğme ile oynamak için serbest bırakır. Bu, çalışmanızı herkese göstermeyi kolaylaştıracaktır. Küçük bir çalışma ile, zoetrope’nizin düşük ışık koşullarında da çalışmasını sağlayabilirsiniz. Bir LED’i ve direnci serbest dijital çıkış pinlerinizden birine bağlayın. Ayrıca ikinci bir potansiyometre ekleyin ve analog girişe bağlayın. Işığı görüntüler üzerinde parlayacak şekilde konumlandırın. 

İLAVE

Bu projeye alternatif (DC motor oldukça küçük olduğundan 9V pil gerektirmez)



Bu konuda Youtube’daki filmlerden birini izleyin – buraya bağlantı verin

Posted in Makaleler.