Arduino LM293D iki tane motor ilk harekete başlama sorunu

Erdem⁣

Paylaşımcı üye
Katılım
14 Ocak 2013
Mesajlar
713
Puanları
106
l293d.png


Arkadaşlar, L293D motor sürücüsü kullanan yukarıdaki devreyi kurdum.

Burada +6V girişine harici sınırlamasız 500mA'lik güç kaynağında 6V seçerek bağlıyorum. Sizin de bilebileceğiniz üzere sınırlamasız ("unregulated") güç kaynakları yük altında değilken normal gerilimin yaklaşık %41 kadar fazlasını veriyor.

Güç kaynağının toprağı ile Arduino hattından gelen toprağı birbirine bağlıyorum. Her motora paralel olarak 0.1uF'lik bir sığaç lehimlenmiş.

Motorların ucunda birer teker var ama vites kutusu ("redüktör") yok.

Yazılımın kaynak kodu şu şekilde :

C++:
#include <Arduino.h>

unsigned int ilkMotorArti = 8;
unsigned int ilkMotorEksi = 7;
unsigned int ilkMotorAcKapat = 9;
unsigned int ikinciMotorArti = 5;
unsigned int ikinciMotorEksi = 4;
unsigned int ikinciMotorAcKapat = 3;

void setup()
{
    pinMode(ilkMotorArti, OUTPUT);
    pinMode(ikinciMotorArti, OUTPUT);
    pinMode(ilkMotorAcKapat, OUTPUT);
    pinMode(ikinciMotorArti, OUTPUT);
    pinMode(ikinciMotorEksi, OUTPUT);
    pinMode(ikinciMotorAcKapat, OUTPUT);

    // Tüm motorları kapat
    digitalWrite(ilkMotorArti, LOW);
    digitalWrite(ilkMotorEksi, LOW);
    digitalWrite(ikinciMotorArti, LOW);
    digitalWrite(ikinciMotorEksi, LOW);
}

void hizKontrolu()
{
    digitalWrite(ilkMotorArti, HIGH);
    digitalWrite(ilkMotorEksi, LOW);
    digitalWrite(ikinciMotorArti, HIGH);
    digitalWrite(ikinciMotorEksi, LOW);

    for (int i = 0; i < 10; ++i)
    {
        for (int i = 200; i < 255; ++i)
        {
            analogWrite(ilkMotorAcKapat, i);
            analogWrite(ikinciMotorAcKapat, i);
            delay(20);
        }
    }

    // Tüm motorları kapat
    digitalWrite(ilkMotorArti, LOW);
    digitalWrite(ilkMotorEksi, LOW);
    digitalWrite(ikinciMotorArti, LOW);
    digitalWrite(ikinciMotorEksi, LOW);
}
void loop()
{
    hizKontrolu();
    delay(1000);
}

Sorun şu ki yazılımı yüklediğimde motorlar kendiliğinden hareket almıyor.

İlk hareketi alması için elle yardım etmek gerekiyor. Bir kere hareket alınca dönmeye devam ediyor.

Her ne kadar torku arttıran vites kutusu olmasa da, tekerleklerin boşta, havada olduğunu düşünürsek ilk hareket alması gerekmez mi?

Kullanılan motorlar basit 6V DC motorlar.
 
Maalesef olmuyor.

pinMode(ikinciMotorArti, OUTPUT)

Hatta bu kısmı ilkMotorEksi olarak düzelttim.

Kademeli güç kaynağında 6 volt, 7.5 volt, 9 volt, 12 volta kadar denedim hala motorlar güç almıyor.

Yonga statik elektrikten dolayı uçtu desek o zaman elle ilk hareket verilince de çalışmaması lazım.

Zaten L293, L298 ve SN754410 yongaları düşük gerilim kaynağı kullanan uygulamalar için hiç tavsiye edilmiyor.

Bir de vites kutusu olmayınca torku yeterince aktaramıyor.

Ama altı üstü ufak bir oyuncak motor. 1.5 volt pil ile dönüyor, harici güç kaynağında neredeyse 12 volta çıktım. Sonra kademesini tekrar 6 volta çekince yüksüz neredeyse 17 volt ölçtüm. Bu ufacık bir motor için oldukça yüksek bir gerilim sayılır.

Kısacası işin işinden çıkamadım.
 

Zaten o örneği deniyorum ;-)

Bu arada Aduino farklı bir kaynaktan
besleniyor umarım. Şemada öyle
görülmüyor.
Dikkat ederseniz +6 voltluk besleme L293D'nin 8 numaralı ucuna bağlanmış. Arduino'dan gelen +5 volt girişi ise L293D'nin 5 numaralı ucuna bağlı. Sonra toprakları birleşiyor.

Arduino USB girişine bağlı ama harici bir kaynaktan beslenmiyor. +6 volt harici bir kaynaktan besleniyor.
 
Öncelikle geç kaldım mı bilmiyorum ama iç içe for döngülerinde iki tane "i" kullanmandan kaynaklanabilir sorun. Şöyleki; birinci döngüde iç döngüye girdiğini kabül edelim ve i 254'e kadar saysın ve döngüden çıksın ve başa dönsün. Bu durumda "i" 254 olarak kalacaktır. Sonuç olarak ana for döngüsündeki koşullar sağlanmayacak ve ana döngü pas geçilecektir. Bu durumda sürekli bekleyecektir. Döngülerin değişkenlerini aynı yapmayın. Ana for döngüsünün değişkenini i'den farklı birşey yapıverin. Değişikliklerin sonucunu bize de bildirirseniz sevinirim.
 
Analogwrite kullanma, kendin pwm oluştur bir dene bakalım. Ama frekansı 5-10khz olsun. Analogwrite frekansı düşük geliyor.olabilir
 

Forum istatistikleri

Konular
128,153
Mesajlar
915,486
Kullanıcılar
449,895
Son üye
HalilKonec

Yeni konular

Geri
Üst