Hızlı Çizgi izleyen robot (PCB gövde)

Hızlı Çizgi izleyen robot (PCB gövde)

Çizgi izleyen robot kodu:

hizliCizgiIzleyenQtrV4

qtr-sensors-arduino documentation.

 

hizliCizgiIzleyenQtrV3

ÖNEMLİ UYARI! Yukarıdaki kod Qtr 3.0 kütüphane kodlarıdır. Arduino güncel kütüphanesi 4.0 dır. aşağıdaki kütüphaneyi yüklemezseniz hata verecektir.

qtr-sensors-arduino-3.0.0 kütüphane dosyası

QTR-8x datasheet

QTR_arduino_library

Hızlı Çizgi izleyen robot (PCB gövde)

araba_hizli proteus dosyası

hizli_cizgi_izleyenSTL

 

46 cevap

  1. murat köse dedi ki:

    yardım lütfen
    l293 shild sürücü ve 6 sensör kullanarak kodları bir türlü uyarlayamadım yardımlarınızı bekliyorum

  2. murat köse dedi ki:

    merhaba sayenizde çok şey öğrendim teşekkürler.
    Şimdi l293d shield kullanarak robot yaptım ancak bir türlü kodlarınız uyarlayamadım yardımcı olursanız çok sevinirim kolay gelsin

  3. yusuf dedi ki:

    iyi günler pcb kartın boyutu ne kadardır acaba

  4. Arkman dedi ki:

    Kapsamlı videonuzu haziran sonu gibi yayınlayacaktınız ne zaman yayınlayacaksınız kolay gelsin.

  5. Arkman dedi ki:

    Merhaba hocam size bir bilgi danışmak istiyorum, yaptığım bir projede hem sd kart modülü (wav uzantılı müzik çalacak) hem de servo motor kullanmam gerekiyor. Fakat ile kütüphaneleri çakışıyor, hata veriyor. VE kütüphaneleri ile de denedim istediğim yerlerde istediğim müzik çalmıyor. Yardımcı olursanız sevinirim.

  6. cenk dedi ki:

    merhaba,
    qtr8a sensorun 6 pın kodunu nerden bulabılırım..
    cok acele lazım da bana

  7. Arkman dedi ki:

    Öncelikle paylaşımınız çok güzel , çok yardımcı oldu, emeğinize sağlık. Söylediğiniz daha kapsamlı videonuzu ne zaman yayınlayacaksınız hayırlı geceler.

    • admin dedi ki:

      Merhaba. Rica ederim. Şu aralar çok yoğunum. haziran sonu gibi yayımlamayı planlıyorum.

  8. Sevil dedi ki:

    Merhaba qtr 8 a sensör kullanıyoruz aurdino uno kullandığımızdan dolayı 6 tane analog çıkış kullanıyoruz tek tekeri dönüyor sadece bunu sebebi ne olabilir aceba?

    • admin dedi ki:

      Sensörden çok motor sürücü problemi gibi görünüyor. Kodu veya kablorı kotrol edin motor sürücüde.

  9. Bilişimci dedi ki:

    Ustam emeğine sağlık. Çok güzel bir paylaşım. AIN1-AIN2-BIN1-BIN2 pinlerini motor dönüş yönü için kullanıyorsun sanırım. Sadece AIN1 ve BIN1 kullanamazmıyız..

  10. DRL dedi ki:

    Öncelikle iyi günler. Kodu yüklediğimde aşağıda belirttiğim kodu işaret edip “expected identifier before numeric constant” diye bir hata alıyorum. Bunu düzeltmek için ne yapmalıyım?
    } while((sensor([3])<200)||(sensor([4])<200));//çizgi dışında olduğun sürece dön

  11. eren altun dedi ki:

    hocam en kısa zamanda bir sumo calışmasıda bekliyorum.. harika anlatım.. allah razı olsun

  12. Serkan dedi ki:

    İyi günler kodda yazdığınız STBY değeri nedir?

    teşekkürler

    • admin dedi ki:

      stby 0 yapıldığında pololu tb6612fng motor sürücüsünü pasif bırakır. şuan kodda işlevi yok. kaldırılabilir.

      • Barış dedi ki:

        STBY yi nasıl kaldırcaz? motorların çalışması için gerekli değil mi sonuçta?

        • admin dedi ki:

          Şöyleki bu devrede stby ucu kullanılmak için tasarlanmış. ama farklı bir tasarımda motor sürücünün STBy ucunu 5 volta verirsek yazılımda bunu kullanmak zorunda da kalmayız

  13. Gürkan Çelik dedi ki:

    Merhabalar , verdiğiniz kod ile qtr8a ve 1000 rpm motor kullanarak bir çizgi izleyen robot geliştirdim . Ancak bu robot 90 derecelik dönüşleri alamıyor. hızını biraz düşürüp (bahsettiğim değer 45 civarında ) denediğimde ise yumuşak dönüşleri alıp 90 derece olanları zorlanarak bazen geçiyor bazen geçmiyor.
    Sizce sıkıntı nerededir ?
    Kp&Kd değerlerini değiştirmeyi denedim ancak sağlıklı sonuçlar alamadım , değerleri denerken nasıl bir yol izlemeliyim ?
    18*14cm bir robot için nasıl Kp&Kd değerleri atamalıyım ?

    • admin dedi ki:

      Yukarıdaki kod hızlı çizgi izleyende ve basit dönüşlerde işe yarar. Ancak 90 derecelik ve üstü açılarda farklı komutlar ilave etmek gerekir. Onun videosunu hazırlamadım. Bağlantıdaki kod işinizi görecektir. https://create.arduino.cc/editor/muratsasal/e0023d97-cc33-4aa5-b8cb-41c4a5625349/preview

      • Barış dedi ki:

        verdiğiniz bu linkteki de hata verdi.

        ” “kontrolBiti” wasnt declared in this scope”

        • admin dedi ki:

          Düzelttim. Tekrar deneyin.

          • Barış dedi ki:

            tekrar denedim fakat kafasına göre hareket ediyor robot. neden kaynaklanabilir? kp-kd değerleriyle de oynadım ama pek değişmiyor gibi.

          • Barış dedi ki:

            son verdiğinizi de denedim. önceki hiç çalışmıyordu ama bu daha iyi tabi ufak tefek değişiklikler yaparak. ben 6 sensör kullanıyorum. uno da 6 adet anolog çıkış var diğer 2 sini nasıl bağlayabilirim? bir de bu son denediğim kodda sanki ortadaki 2 sensör işlevsiz gibi devamlı sağ ya da sol motor çalışıyor tekler gibi gidiyor. devamlı sağa ya da sola ata ata gidiyor yani. normal yolunda hızlanıp gitmiyor hiç. çoğu yeriyle oynadım. bu 2 sorumu cevaplarsanız çok sevinirim.

          • admin dedi ki:

            Uno da 6 analog giris oldugundan 6 adet sensör kullanabilirsiniz. Sağa sola kafa atmasının titremesinin sebebi kp kd degerlerinin büyük gelmesidir. Kucultun.

          • Barış dedi ki:

            merhabalar tekrar :)sizin kodlar üzerinde çalışıyorum ama tam olarak oturmadı sanki. son verdiğiniz kodlara göre birkaç sorum olacak.

            1- verdiğiniz kodlardaki en keskin dönüş 90 derece diye anlıyorum doğru mu acaba? Mesela Z tarzındaki dönüşlerde sıkıntı oluyor gibi? yoksa ben mi yanlış yapıyorum birşeyleri? 🙂

            2- daha önceden hiç bilmediğimiz(ölçülerini vs vs gibi) bi pistte sorunsuz çalışması için hızını ister istemez düşük tutmamız gerekir sanırım değil mi? başka nelere dikkat etmeli?

          • admin dedi ki:

            Merhaba,
            1. Evet Z leri dönebilecek komut şu
            https://create.arduino.cc/editor/muratsasal/e0023d97-cc33-4aa5-b8cb-41c4a5625349/preview

            2. evet hizi düşük tutmak gerekir 90 dereceler olduğu için. hızlanma komutları da ayrıca gönderirim. ya da uzak mesafe sensörü var o da kullanılabilir waveshare

          • Barış dedi ki:

            Z leri dönebilecek komut ile diğerini birleştirmemiz mi gerekiyor o zaman? yani hem normal hem 90 hem de z gibi dönüşler için. yani amacım hiç bilmeden koyduğum pisti sonuna kadar tamamlatmak. 🙂

            ayrıca hızlanma komutlarını da gönderirim demişsin yapisti bilmeden nerde hızlanıp yavaşlayacağımız biraz zor olur sanırım değil mi?

            Bu arada çok teşekkürler cevaplar için.

          • admin dedi ki:

            son gönderdiğim kod aslında tüm dönüşleri yapar. pisti bilinmeyen yerde hızlanmak için tek çare uzun mesafe renk sensörü.ancak garip açılı boşlukları olan pistlerde özel kod yazmadan geçmek imkansız tabii ki

  14. Ahmet dedi ki:

    Kodun doğru olduğuna emin misiniz

  15. Levent dedi ki:

    Merhaba bu kodu kullanarak robot yaptım fakat çalışmıyor yardımcı olun

  16. Bahaddin ates dedi ki:

    merhaba elin koluna saglik harika olus.
    islerinizden basarilar dilerim

  17. Egehan İmamoğlu dedi ki:

    Merhaba, ben bu kodu L298N ile uyumlu olacak hale getirdim fakat kod çalışmadı. Sensör değer veriyor fakat motorlar çalışmıyor. Yardımcı olur musunuz? Kod bu:

    #include

    const int enA = 10; //L298N
    const int enB = 5;
    const int in1 = 9; //motor a (sol)
    const int in2 = 8; //motor a (sol)
    const int in3 = 7; //motor b (sağ)
    const int in4 = 6; //motor b (sağ)

    #define NUM_SENSORS 6
    #define TIMEOUT 4
    #define EMITTER_PIN 2

    #define LED 13
    #define MZ80 4

    int maxhiz = 70;

    boolean zemin = 0; //1 siyah 0 beyaz

    //PD’yi kullanmak için değişkenleri bildirme (her araca göre ayar yapılmalı)
    int hata = 0; float KP = 0.01; // hata (her araca göre ayar yapılmalı)
    int turev = 0; float KD = 0.1; // turev

    unsigned int pozisyon = 0;

    int fark = 0; // motorlara uygulanan fark
    int son_hata; // Orantılı son değer (hatanın türevini hesaplamak için kullanılır)
    int hedef = 3500;

    QTRSensorsAnalog qtra((unsigned char[]) {
    0, 1, 2, 3, 4, 5
    } , NUM_SENSORS, TIMEOUT, EMITTER_PIN);

    unsigned int sensor[NUM_SENSORS];

    void setup()
    {
    pinMode(in1 , OUTPUT);
    pinMode(in2 , OUTPUT);
    pinMode(enA , OUTPUT);
    pinMode(in3 , OUTPUT);
    pinMode(in4 , OUTPUT);
    pinMode(enB , OUTPUT);
    pinMode(LED , OUTPUT);
    pinMode(MZ80 , INPUT);

    // Dahili Led yanıp söndüğü sürece (3sn) Elle Kalibrasyon yap
    for ( int i = 0; i maxhiz ) fark = maxhiz;
    else if ( fark < -maxhiz ) fark = -maxhiz;

    ( fark = 0 )
    {
    digitalWrite(in1, HIGH);
    digitalWrite(in2, LOW);
    }
    else
    {
    digitalWrite(in1, LOW);
    digitalWrite(in2, HIGH);
    deger *= -1;
    }
    analogWrite(enA, deger);
    }

    void solmotor(int deger)
    {
    if ( deger >= 0 )
    {
    digitalWrite(in3, HIGH);
    digitalWrite(in4, LOW);
    }
    else
    {
    digitalWrite(in3, LOW);
    digitalWrite(in4, HIGH);
    deger *= -1;
    }
    analogWrite(enB, deger);
    }

    void motor(int sol, int sag)
    {
    solmotor(sol);
    sagmotor(sag);
    }

    • admin dedi ki:

      Herhangi bir değişiklik yapmadan l298n motor sürücü ile de kullanabilirsin kodu.

      Senin buraya yazdıgin kodda loop fonksiyonu ve pek çok şey eksik.

    • Fatih dedi ki:

      6 sensör kullandın hedef 3500 olmaz 2500olur. ( Sensör sayısı-1)*1000 /2
      Her sensör beyazda 0 a yakın siyahta 1000e yakın değer verir

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.