BAĞLAN

Arduino ile Çizgi izleyen Robot Yapımı

  • Görüntüleme 18771
  • Çizgi izleyen robotun çalışma prensibi :

    İki farklı şekilde çizgiyi takip eder.

    1. Siyah zemin üzerinde beyaz çizgiyi takip etmek
    2. Beyaz zemin üzerinde siyah çizgiyi takip etmek

    Robot hakkında bilgiler:

    Kızılötesi sensörler sayesinde siyah veya beyaz çizgiyi takip eder.Kısaca algoritmadan baysedersek , ortadaki sensör çizginin üzerine geldiğinde robot düz devam eder.Soldaki sensörler çizginin üzerine gelirse sağa, sağdaki sensörler çizginin üzerine gelirse robot sola hareket eder.

    Robotta kullanılan komponentler:

    1. Arduino Uno
    2. QTR-8RC Kızılötesi Sensör
    3. L293D Motor sürücü kartı
    4. Robot Kit

    Qtr8rc üzerinde 8 tane alıcı verici bulunmaktadır.Arduino ile çizgi izleyen robot projesinde 5 tane sensör kullanarak çizgiyi takip ettirdik.Arduino bağlantısında istediğiniz 5 sensörü kullanabilirsiniz.Fakat 5 sensör de ard arda olmalı ki aksi halde aradaki boş sensörler çizgiyi takip etmeyeceğinden robotunuz çizgi dışına çıkabilir. Yazılımda sensörler analog 1 den 5 e kadar pinlere tanımlanmıştır.Burada dikkat etmeniz gereken nokta a1 den 5 e kadar ki bağlantınız sensör de soldan sağa aynı şekilde olsun.Motor sürücü arduino üzerine direk takılıyor.Sadece motor pinlerine bağlantılarını yapıp düz takıldığını kontrol etmelisiniz.

    Afmotor Shield için Arduino Kodu:

    #include <AFMotor.h>
    #include <QTRSensors.h>
     
    AF_DCMotor motor1(1, MOTOR12_8KHZ );
    AF_DCMotor motor2(2, MOTOR12_8KHZ );
     
    #define KP .2
    #define KD 5
    #define M1_minumum_hiz 120
    #define M2_minumum_hiz 120
    #define M1_maksimum_hiz 210
    #define M2_maksimum_hiz 210
    #define MIDDLE_SENSOR 3
    #define NUM_SENSORS 5
    #define TIMEOUT 2500
    #define EMITTER_PIN 2
    #define DEBUG 0
     
    QTRSensorsRC qtrrc((unsigned char[]) { 19,18,17,16,15} ,NUM_SENSORS, TIMEOUT, EMITTER_PIN);
     
    unsigned int sensorValues[NUM_SENSORS];
     
    void setup()
    {
    delay(1500);
    manual_calibration();
    set_motors(0,0);
    }
     
    int lastError = 0;
    int last_proportional = 0;
    int integral = 0;
     
    void loop()
    {
    unsigned int sensors[5];
    int position = qtrrc.readLine(sensors);
    int error = position - 2000;
     
    int motorSpeed = KP * error + KD * (error - lastError);
    lastError = error;
     
    int leftMotorSpeed = M1_minumum_hiz + motorSpeed;
    int rightMotorSpeed = M2_minumum_hiz - motorSpeed;
     
    // set motor speeds using the two motor speed variables above
    set_motors(leftMotorSpeed, rightMotorSpeed);
    }
     
    void set_motors(int motor1speed, int motor2speed)
    {
    if (motor1speed > M1_maksimum_hiz ) motor1speed = M1_maksimum_hiz; //MAKSİMUM MOTOR 1 HIZ LİMİTİ
    if (motor2speed > M2_maksimum_hiz ) motor2speed = M2_maksimum_hiz; // MAKSİMUM MOTOR 2 HIZ LİMİTİ
    if (motor1speed < 0) motor1speed = 0; // MİNIMUMMOTOER 1 HIZ LİMİTİ
    if (motor2speed < 0) motor2speed = 0; // MİNİMUM MOTOR 2 HIZ LİMİTİ
    motor1.setSpeed(motor1speed); //1.MOTOR HIZI
    motor2.setSpeed(motor2speed);// 2.MOTOR HIZI
    motor1.run(FORWARD); //İLERİ
    motor2.run(FORWARD); //İLERİ
    }
     
    void manual_calibration() {
     
    int i;
    for (i = 0; i < 250; i++)
    {
    qtrrc.calibrate(QTR_EMITTERS_ON);
    delay(20);
    }
     
    if (DEBUG) {
    Serial.begin(9600);
    for (int i = 0; i < NUM_SENSORS; i++)
    {
    Serial.print(qtrrc.calibratedMinimumOn[i]);
    Serial.print(' ');
    }
    Serial.println();
     
    for (int i = 0; i < NUM_SENSORS; i++)
    {
    Serial.print(qtrrc.calibratedMaximumOn[i]);
    Serial.print(' ');
    }
    Serial.println();
    Serial.println();
    }
    }

    Güncelleme – 19.01.2016

    Projenin L298N entegresi ile yapımı:

    Bu kısımda sadece motor sürücüyü değiştirdik. Sensör pinleri aynı ve bağlantılarında değişiklik yok.

    Yukarıdaki L298N entegresinin datasheetine bakalım ve aşağıdaki gibi bağlantılarımızı yapalım.

    Sol Motor için: output1 ve output2 pinleri motorun uçlarına bağlayın. input1 ve input2 pinleri arduinonun 9 ve 10. dijital pinlerine, enableA ise dijital 4. pine takın.

    Sağ Motor için: output3 ve output4 pinleri motorun uçlarına bağlayın. input3 ve input4 pinleri arduinonun 11 ve 12 dijital pinlerine, enableB ise dijital 5. pine takın.

    Enerji Pinleri: Supply voltage vs yazılı pin bizim motorlar için besleme pilimizin artı uç girişidir. 9v yeterlidir.

    Logic supply voltage vss yazılı pini arduinonun 5v pinine takın.

    currentsensingA ve currentsensingB pinlerini 0.47ohm 5W direnç üzerinden pilin eksi ucuna bağlayın.

    Son olarak da Gnd yazılı pini hem arduinun hem de pilin eksi ucuna bağlayın.

    Güncelleme – 30.11.2016

    Projenin L293B veya L293D Motor Sürücüleri ile Devresi:

    L298N , L293B ve L293D Motor Sürücüleri için Arduino Kodu:

    //Robimek Robotik Sistemler - 2016
    //Çizgi izleyen robot
    //www.robimek.com 
    #include <QTRSensors.h>
    #define SolMotorileri 9
    #define SolMotorGeri 10
    #define SagMotorileri 11
    #define SagMotorGeri 12
    #define ena 4
    #define enb 5
     
    #define KP .2
    #define KD 5
    #define M1_minumum_hiz 120
    #define M2_minumum_hiz 120
    #define M1_maksimum_hiz 210
    #define M2_maksimum_hiz 210
    #define MIDDLE_SENSOR 3
    #define NUM_SENSORS 5
    #define TIMEOUT 2500
    #define EMITTER_PIN 2
    #define DEBUG 0
     int lastError = 0;
    int last_proportional = 0;
    int integral = 0;
    QTRSensorsRC qtrrc((unsigned char[]) { 19,18,17,16,15} ,NUM_SENSORS, TIMEOUT, EMITTER_PIN);
     
    unsigned int sensorValues[NUM_SENSORS];
     
    void setup() {
     pinMode(SolMotorileri,OUTPUT);
     pinMode(SolMotorGeri,OUTPUT);
     pinMode(SagMotorileri,OUTPUT);
     pinMode(SagMotorGeri,OUTPUT);
     pinMode(ena,OUTPUT);
     pinMode(enb,OUTPUT);
    delay(1500);
    manual_calibration();
    set_motors(0,0);
     
    }
     
    void loop() {
    unsigned int sensors[5];
    int position = qtrrc.readLine(sensors);
    int error = position - 2000;
     
    int motorSpeed = KP * error + KD * (error - lastError);
    lastError = error;
     
    int leftMotorSpeed = M1_minumum_hiz + motorSpeed;
    int rightMotorSpeed = M2_minumum_hiz - motorSpeed;
     
    set_motors(leftMotorSpeed, rightMotorSpeed);
     
    }
     
    void set_motors(int motor1speed, int motor2speed)
    {
    if (motor1speed > M1_maksimum_hiz ) motor1speed = M1_maksimum_hiz; //MAKSİMUM MOTOR 1 HIZ LİMİTİ
    if (motor2speed > M2_maksimum_hiz ) motor2speed = M2_maksimum_hiz; // MAKSİMUM MOTOR 2 HIZ LİMİTİ
    if (motor1speed < 0) motor1speed = 0; // MİNIMUMMOTOER 1 HIZ LİMİTİ
    if (motor2speed < 0) motor2speed = 0; // MİNİMUM MOTOR 2 HIZ LİMİTİ
    analogWrite(ena,motor1speed);
    analogWrite(enb,motor2speed);
    digitalWrite(SolMotorileri,HIGH);
    digitalWrite(SagMotorileri,HIGH);
    digitalWrite(SolMotorGeri,LOW);
    digitalWrite(SagMotorGeri,LOW);
     
    }
     
    void manual_calibration() {
     
    int i;
    for (i = 0; i < 250; i++)
    {
    qtrrc.calibrate(QTR_EMITTERS_ON);
    delay(20);
    }
     
    if (DEBUG) {
    Serial.begin(9600);
    for (int i = 0; i < NUM_SENSORS; i++)
    {
    Serial.print(qtrrc.calibratedMinimumOn[i]);
    Serial.print(' ');
    }
    Serial.println();
     
    for (int i = 0; i < NUM_SENSORS; i++)
    {
    Serial.print(qtrrc.calibratedMaximumOn[i]);
    Serial.print(' ');
    }
    Serial.println();
    Serial.println();
    }
    }
    

    Projede kullanılan kütüphaneler ve kodları buradan indirebilirsiniz >> Çizgi İzleyen Robot

    User Rating: 4.4 (9 votes)
    Sending

    PAYLAŞ

    Sezgin GÜL

    Makine Mühendisi, Maker, Robotik Sistemler Uzmanı

    260 Yorum "Arduino ile Çizgi izleyen Robot Yapımı"

    1. Doğukan
      11 Ocak 2017

      Arduino:1.6.11 (Windows 10), Kart:”Arduino/Genuino Uno”

      C:\Users\doguk\Documents\Arduino\_izgi_izlyn_rbt_robimek\_izgi_izlyn_rbt_robimek.ino:4:24: fatal error: QTRSensors.h: No such file or directory

      #include

      ^

      compilation terminated.

      exit status 1
      Error compiling for board Arduino/Genuino Uno.

      This report would have more information with
      “Show verbose output during compilation”
      option enabled in File -> Preferences.

      Abi bu hatayı alıyorum yardım edermisiniz

      Cevapla
    2. mert
      26 Aralık 2016

      sensör olarak qtr 8rc yerine qtr 8a kullanınca neleri değiştirmeliyiz

      Cevapla
      • Mehmet
        3 Ocak 2017

        gerçekten

        Cevapla
      • mert baskın
        4 Ocak 2017

        Arduino:1.8.0 (Windows 10), Kart:”Arduino/Genuino Uno”

        C:\Users\MERT BASKIN\Documents\Arduino\mennan\mennan.ino:4:24: fatal error: QTRSensors.h: No such file or directory

        #include Preferences.

        böyle hata veriyor kodda niye oluyor sizin kodunuzu kopyaladım

        Cevapla
    3. Nadir
      7 Aralık 2016

      Mrb brn hazir 5 li monte edilmis sensot aldim.ama bunda ledon cikisi yok.5 sensor cikisi, NEAR ve CLP seklinde cikislar var.sizin kodlarinizda ve semanizda emitter digital pin2 ye baglanmis.bunu elimdeki 5li sensorle bunu nasil yapabilirim sizin kodlarinizi degistirmeden.?tesekkurler

      Cevapla
    4. Bahattinates
      16 Ekim 2016

      merhaba. hersey icin. tesekkurler. sizin.sayenizde. cok seyler. ögrendim.sagolun.
      allaha.emanet olun

      Cevapla
    5. Doğukan
      4 Ağustos 2016

      Abi senörün bacakları 8 tane arduino ya hangi pinleri bağlayacağım bide senörün güç bağlantıları nasıl bağlayacağım

      Cevapla
    6. PINAR
      1 Ağustos 2016

      CNY70 Kızılötesi Sensör ü kullanarak yapmak istesem nasıl yapabilirim bu konuda yardımcı olabilir misiniz ?

      Cevapla
    7. Fırat KAYA
      1 Haziran 2016

      Hocam birde bi sorum daha var.ben sadece in1 ile in3 e pwm verdiğimde hızlandırıp yavaşlatabiliyorum .bu yanlış bir yöntem mi acaba.doğrusu sizin yazdığınız şekilde mi

      Cevapla
    8. Fırat KAYA
      1 Haziran 2016

      sezgin hocam kolay gelsin.Bu 2000 değeri sensör tam ortadayken position diye yazdırılan değer mi acaba.bu bende 2500 ile 5000 arasında değişiyor sanırım ne yapmalıyım

      Cevapla
    9. mehmet
      22 Mayıs 2016

      tamam dediğiniz gibi yapıyorum ama olmuyor işte.. bi türlü çözemedim problemi..

      Cevapla
      • Sezgin GÜL
        22 Mayıs 2016

        hız değerleri maksimum 255 olmalı ve minimum ile maksimum hız değeri arasında biraz fark bırakmalısınız. örneğin maksimum hız değeri 220 iken minimum hız değeri 180 olsun.
        Ayrıca motor sürücüyü besleyen pil uygun volt ve akımda olmalı projede kullandığım pil 6v 700 mah di. tabi sizdeki motorlara uygun besleme yapın. 9v pil kömür ile beslemeyin akımı düşüktür karşılamaz.

        Cevapla
    10. mehmet
      22 Mayıs 2016

      yardım edin de bu gece bitirelim şu işi ..mübarek gece..:D

      Cevapla
    11. mehmet
      22 Mayıs 2016

      200 e kadar çıkardım hız değerini ama malesef yukarda dediğim gibi int error = position – 2000; deki 2000 i 200 e dusurunce iki tekerde çalışıyo ama çizgiyi izlemiyo..

      Cevapla
      • Sezgin GÜL
        22 Mayıs 2016

        error kısmını değiştirme sadece hız değerini arttır

        Cevapla
        • mehmet
          22 Mayıs 2016

          hız değerini 600 lere çıkarınca iki tekerde dönüuor ama çizgiyi takip etmiyor..

          Cevapla
    12. mehmet
      21 Mayıs 2016

      günlerdir bu proje ile uğraşıyorum en sonunda sensör bozuk olabilir diye yeni bir sessör aldım.. taktım çalıştı ama bir süre sonra o da çalışmaz oldu.. yeni bir sensör daha aldım ama çalışmadı.. motor sürücü kartını.. arduinoyu fln hep değiştirdim ama olmadı.. tek teker dönüyor sadece.. ayrı ayrı pille besliyom.. farklı konumlarda deniyom sensörü fln ama olmuyo bitürlü..

      Cevapla
      • Sezgin GÜL
        21 Mayıs 2016

        tek motorun çalışmama durumu iki nedenden kaynaklıdır. birincisi yeterli enerji olmadığıdır. ikincisi ise kodda minimum hız değeri düşük yani pwm çıkışında motoru hareket ettirmek için yeterli olmayabilir. tabi bu da enerjiyle alakalı. ama minimum değeri arttırırsan motor hareket edecektir. yalnız maksimum değeri de orantılı olarak arttırman gerekir. çünkü keskin dönüşlerde yoldan çıkma ihtimali yükselir.

        Cevapla
        • mehmet
          21 Mayıs 2016

          motor sürücü kartındaki m1 m2 m3 m4 ten aynı anda ikitanesi çalışmıyor.. sadece bir tanesi çalışıyor.. o çalışan blüme hangi tekeri takarsam sadece o çalışmış oluyor..

          Cevapla
          • Sezgin GÜL
            21 Mayıs 2016

            minimum hız değerini arttırın. ve uygun enerji ile besleyin.

            Cevapla
          • mehmet
            21 Mayıs 2016

            son durum şöyle
            int error = position – 2000;

            burdaki 2000 i 200 yapınca iki tekerde çalışıyor ancak çizgiyi takip etmiyor..
            sanırım kp kd değerleri ile oynanacak.. ne yapabilirim..

            Cevapla
            • mehmet
              21 Mayıs 2016

              hem arduinoya hem de motor sürücüye 9v duracel takıyorum.. sms tek teker çalışıyo yukarda dediğim gibi koddaki 2000 i 200 ye dusurunce iki teker de çalışıyo ama çizgiyi takip etmiyor..

            • Sezgin GÜL
              21 Mayıs 2016

              kodda minimum hız değerini arttırın

    13. Özgün Hazar
      14 Mayıs 2016

      iyi günler.
      ben bu projeyi yapmaya çalışıyorum elimde malzemeler var ve projeyi breadboard üzerinde yapıyorum ve L293D entegre olarak var . bağlantıları yapmakta başarısız oldum, kızılötesi sensörün bağlantısını nasıl yapmamız gerekiyor elinizde bir bağlantı şeması yada bilgi alabileceğim başka bir proje varmı kızıl ötesi sensörün bağlantısına bakabileceğim.Yardımcı olabilirseniz çok müteşekkir olurum.
      Şimdiden teşekkürler.

      Cevapla
    14. Yakup PALİÇ
      10 Mayıs 2016

      sezgin hocam merhaba.
      qtr8rc ile çizgi izleyen robot yapıyorum. sensör çizgiyi algılamıyor.lehimlerini kendim yaptım..aynı projeyi arkadaşlarım yapıyor.Aynı kodla bütün elemanlar aynı onların robotu çizgiyi takip ediyor.arkadaşların sensörünü benim robota bağlıyorum benimkide çalışıyor.kendi sensörümü deneme kodlarıyla deniyorum sensörde sıkıntı yok gibi duruyor.Sebebini anlayamadım.yardımcı olurmusunuz.

      Cevapla
    15. mehmet
      7 Mayıs 2016

      arduino uno R3 L293B motor sürücü QTR 3RC sensör kartı kullanarak yaptım fakat sensör yeterlimi ucuz diye aldım yeterli ise kodunu nasıl yazabilirim acil bi proje yardımcı olursanız çok iyi olur zaman sıkıntısı var

      Cevapla
      • Sezgin GÜL
        7 Mayıs 2016

        kodda sensör sayısını 3 e indirmelisiniz. ayrıca orta sensor tanımını da 2. sensör yani 2 yapmalısınız. sensör iş görür fakat robot hızlı giderse çizgiden çıkma olasılığı 5 sensörlü robota göre yüksek olur.

        Cevapla
    16. Kaan
      5 Mayıs 2016

      Robot 90 derece ve beyaz ksımda çalışmıyor bunun için napmalıyız ??

      Cevapla
    17. murat caner
      4 Mayıs 2016

      öncelikle çok teşekkür ederim hocam eline sağlık çok güzel olmuş bu makalen.Benım bi sorum olcaktı hocam. Robotu sorunsuz olarak çalıştırdım beyaz zemin ve siyah çizgide ama benım istediğim tam tersi yani siyaz zemin beyaz cizgide gitmesini istiyorum . Fazla bilgim olmadığı için yapamadım yardımcı olursan çok sevinirim hocam,
      Allah Razı olsun iyi çalışmalar…

      Cevapla
    18. burak
      3 Mayıs 2016

      merhaba com5 erişim engellendi sorunu alıyorum

      Cevapla
    19. muhammed
      3 Mayıs 2016

      selam arkadaşlar ban bi konu hakındas bilgi verebilir misiniz

      Cevapla
    20. Oğuzhan
      2 Mayıs 2016

      Hocam kolay gelsin ben bu projede siyah yerine beyaz çizgiyi takip ettirmek için ne yapmam gerekiyor ? programın neresinde bir değişiklik yapmam gerekiyor.

      Cevapla
    21. ömer
      1 Mayıs 2016

      robotun motorları çalışıyor ama sensörçalışmıyor QTR-8A

      Cevapla
    22. Burak
      1 Mayıs 2016

      Merhaba. Qtr 8A kullandım ledon pinini nereye bağlamalıyım shield üstünde

      Cevapla
      • murat caner
        4 Mayıs 2016

        LEDon pini digital 2 pinine bağla

        Cevapla
    23. burak
      30 Nisan 2016

      merhaba shield kodunu yükledim ancak sadece tek motor dönüyor …

      Cevapla
    24. burak
      30 Nisan 2016

      merhaba
      L293d ve QTR-8A bağlantısını yaptım ışık yanıyor ancak motor dönmüyor.. Yukarıdaki shield için kodu mu yoksa L298n İÇİN KODU MU YÜKLEMELİYİM …teşekürler

      Cevapla
    25. furkan
      30 Nisan 2016

      yazılımı hatasız yükledim ama sadece ışıklar yanıyor motorlar dönmüyor

      Cevapla
      • Sezgin GÜL
        30 Nisan 2016

        motorlar için yeterli enerji vermediğinizden kaynaklıdır.

        Cevapla
    26. RECEP
      27 Nisan 2016

      L298 ile yaptım projeyi.

      Cevapla
    27. RECEP
      27 Nisan 2016

      Kolay gelsin sezgin bey. ben QTR-8A ile yaptım kodlarda da sadece QTRSensorsRC qtrrc((unsigned char[]) { 14,15,16,17,18} yaptım ve sorunsuz şekilde çalıştı yani kodda qtra yapmadan çalıştı. Siyah zemin üzeri beyaz çizgide kod değişikliği yapmadan çalışır mı ? böyle bi ortam hazırlayamadım şu anda deneyemedim. kod değişikliği varsa nasıl olması gerekiyor yazabilirmisiniz? şimdiden teşekkür ederi. iyi çalışmalar.

      Cevapla
      • Sezgin GÜL
        27 Nisan 2016

        siyah zemin için kodu düzenlemeniz gerekiyor.

        Cevapla
        • RECEP
          27 Nisan 2016

          çok zamanınızı almazsa yazabilirmisiniz ? kod bilgim yetmiyor şu anda bunu yapmaya.

          Cevapla
    28. Bir Dost
      27 Nisan 2016

      Bütün Projelerunu İnceledik Kendimizce Yapmaya Çalıştık Helal Osun İşinde Süpersin Dostum
      😀 😀 😀

      Cevapla
    29. kardelen
      26 Nisan 2016

      Merhaba Sezgin Bey, dediğiniz gibi tb6612fng motor sürücünün datasheetine baktım ancak sizin verdiğiniz kodda 9.10.11.12 pinleri motora bağlı bu datasheette ise sürücünün AIN1,STYB,BIN1.BIN2 bu kısımlara bağlı olarak gösteriyor. O kısımlara sürücü bağlandığında motorlar çalışmıyor ancak direkt olarak motorlar bağlandığında motorlar çalışıyor. Bu durumu nasıl çözebilirim?

      Cevapla
    30. muratt
      25 Nisan 2016

      mrblar sezgin bey acaba projenin arduino uno ile yapılmıs baglantı seması varmı atabilirmisiniz ??

      Cevapla
    31. kardelen
      25 Nisan 2016

      İyi günler Sezin Bey, çizgi izleyen robotumda tb6612fng motor sürücü kullanıyorum ancak arduino uno ma bağlantısını yapmakta çok zorlandım yardımcı olur musunuz?

      Cevapla
      • Sezgin GÜL
        25 Nisan 2016

        sürücünün datasheetine bakarak bağlantıları yapabilirsiniz.

        Cevapla
    32. mehmet ısık
      21 Nisan 2016

      qr sensorden 8-7-6-5-4 numaralara takınca iki teker de çalışıyor ancak çizgiyi takip etmiyor..
      ne yapabilirim.. 1den 5 e kadar takınca sadece tek teker çalışıyor..

      Cevapla
      • Sezgin GÜL
        21 Nisan 2016

        sensörleri sırası ile doğru şekilde takmalısınız. Bir de emitter pini yani ledon pinini de arduinoda 2. dijital pine takın.

        Cevapla
    33. MURAT
      19 Nisan 2016

      Sezgin bey merhaba ;
      Biz engel algılayan ve çizgi izleyen robot yapıyoruz. Kodları ayrı ayrı yazdık. Fakat birleştirme ve çalıştırma kısmında sorun yaşıyoruz. Kesme gönderip birini aktif birini pasif etme durumlarından bahsediyorum.Yazdığımız kodu size mail üzerinden göndersek ilgilenme durumunuz olur mu ?
      şimdiden teşekkürler ..

      Cevapla
    34. mehmet ısık
      19 Nisan 2016

      gönderdim görseli mailinize..

      Cevapla
    35. mehmet
      17 Nisan 2016

      sezgin bey videodaki gibi.. qtr sensorun vvc ve gnd lerinden çıkan mavi ve yeşil renkli kabloları motor sürücünün üzerindeki gnd ve 5v larına bağladım.. sensorun 1 den beşe kadar olan çıkışları motor sürücü üzerindeki a1-a5 e kadar bağladım.. ancak sensorden çıkıp arduinoya bağlanan beyaz bir kablo var.. o nereye bağlanıyor..ne işe yarıyor bilemedim..

      Cevapla
      • Sezgin GÜL
        17 Nisan 2016

        videodaki beyaz kablo sensörün ledon pininden arduinonun 2.dijital pinine bağlantı kablosudur. Yani ledon pini kodda da emitter olarak geçer kesme işlemi yapar.

        Cevapla
        • mehmet ısık
          18 Nisan 2016

          O SEKİLDE BAĞLADIM AMA HALA RANDUMANLI ÇALIŞMIYOR..BAZEN İKİ TEKERDE ÇALIŞIYO BAZEN BİRİSİ ÇALIŞIYO..

          Cevapla
          • Sezgin GÜL
            18 Nisan 2016

            maksimum ve minimum hız değerlerini değiştir. sensörü de doğru konumlandır çizgiyi okuması için.

            Cevapla
            • mehmet ısık
              18 Nisan 2016

              bi mail adresi verebilir misin.. fotoğrafını atsam sana..

            • mehmet ısık
              18 Nisan 2016

              hız değerlerini değiştirmek işe yaramadı..

    36. mehmet ısık
      14 Nisan 2016

      olmadı arkadaş bitürlü yaa.. birisi QTR-8RC ile AFmotor sheldin bağlantısını resimli olarak gösterebilir mi.. msuheyb@hotmail.com adresine mail atsanız da olur..

      Cevapla
    37. emrah saraç
      10 Nisan 2016

      merhaba sezgin hocam Konya kadınhanı’nda bir lisede öğretmenim. tubitak 4006 bilim fuarı için sizin yardımınıza ihtiyacımız var. iletişime geçebilir misiniz?
      email. emrah00015@gmail.com

      Cevapla
    38. Mehmet Han
      8 Nisan 2016

      Merhaba Sezgin hocam;
      Kullandığım malzemler: Arduino uno, yaptığım 5 adet CNY70 sensor kartı ve yaptığım L293B motor kartı.
      Bağlantıları L298N deki gibi yaptım. Öncelikle sensör değerlerini test ettim. çizgiye göre sensör degerleri okunuyor. ancak L298Ndeki kodları yuklediğimde motorlar dengesiz dönüyor.
      Yardımcı olursan sevinrim. Teşekkürler…

      Cevapla
    39. ERDEM
      8 Nisan 2016

      #include
      #define SolMotorileri 13
      #define SolMotorGeri 8
      #define SagMotorileri 12
      #define SagMotorGeri 9
      #define ena 3
      #define enb 11

      #define KP .2
      #define KD 5
      #define M1_minumum_hiz 150
      #define M2_minumum_hiz 150
      #define M1_maksimum_hiz 255
      #define M2_maksimum_hiz 255
      #define MIDDLE_SENSOR 3
      #define NUM_SENSORS 5
      #define TIMEOUT 2500
      #define EMITTER_PIN 2
      #define DEBUG 0

      int lastError = 0;
      int last_proportional = 0;
      int integral = 0;
      QTRSensorsAnalog qtra((unsigned char[]) { A4, A3, A2, A1, A0} ,NUM_SENSORS, TIMEOUT, EMITTER_PIN);

      unsigned int sensorValues[NUM_SENSORS];

      void setup() {
      pinMode(SolMotorileri,OUTPUT);
      pinMode(SolMotorGeri,OUTPUT);
      pinMode(SagMotorileri,OUTPUT);
      pinMode(SagMotorGeri,OUTPUT);
      pinMode(ena,OUTPUT);
      pinMode(enb,OUTPUT);
      delay(1500);
      manual_calibration();
      set_motors(0,0);

      }

      void loop() {
      unsigned int sensors[5];
      int position = qtra.readLine(sensors);
      int error = position – 2000;

      int motorSpeed = KP * error + KD * (error – lastError);
      lastError = error;

      int leftMotorSpeed = M1_minumum_hiz + motorSpeed;
      int rightMotorSpeed = M2_minumum_hiz – motorSpeed;

      set_motors(leftMotorSpeed, rightMotorSpeed);

      }

      void set_motors(int motor1speed, int motor2speed)
      {
      if (motor1speed > M1_maksimum_hiz ) motor1speed = M1_maksimum_hiz; //MAKSİMUM MOTOR 1 HIZ LİMİTİ
      if (motor2speed > M2_maksimum_hiz ) motor2speed = M2_maksimum_hiz; // MAKSİMUM MOTOR 2 HIZ LİMİTİ
      if (motor1speed < 0) motor1speed = 0; // MİNIMUMMOTOER 1 HIZ LİMİTİ
      if (motor2speed < 0) motor2speed = 0; // MİNİMUM MOTOR 2 HIZ LİMİTİ
      analogWrite(ena,motor1speed);
      analogWrite(enb,motor2speed);
      digitalWrite(SolMotorileri,HIGH);
      digitalWrite(SagMotorileri,HIGH);
      digitalWrite(SolMotorGeri,LOW);
      digitalWrite(SagMotorGeri,LOW);

      }

      void manual_calibration() {

      int i;
      for (i = 0; i < 250; i++)
      {
      qtra.calibrate(QTR_EMITTERS_ON);
      delay(20);
      }

      if (DEBUG) {
      Serial.begin(9600);
      for (int i = 0; i < NUM_SENSORS; i++)
      {
      Serial.print(qtra.calibratedMinimumOn[i]);
      Serial.print(' ');
      }
      Serial.println();

      for (int i = 0; i < NUM_SENSORS; i++)
      {
      Serial.print(qtra.calibratedMaximumOn[i]);
      Serial.print(' ');
      }
      Serial.println();
      Serial.println();
      }
      }

      Cevapla
    40. ERDEM
      8 Nisan 2016

      PID sabitleriyle alakalı olma ihtimali nedir ? Sanırım donanımımda sorun yok. Siz analoğa göre bu kodları çevirebilirmisiniz. Sanırım biryeri atlıyorum.

      Cevapla
    41. ERDEM
      8 Nisan 2016

      Bağladım fakat gene olmuyor bu sefer kendi etrafında dönüyor. Lütfen Yardım edebilirmisiniz ? Şuan herşey aynı ve analoğa göre ama sorunu bilemiyorum 2000 rpm motor kullanıyorum.

      Cevapla
    42. ERDEM
      7 Nisan 2016

      #include
      #define SolMotorileri 9
      #define SolMotorGeri 12
      #define SagMotorileri 8
      #define SagMotorGeri 13
      #define ena 3
      #define enb 11

      #define KP .2
      #define KD 5
      #define M1_minumum_hiz 120
      #define M2_minumum_hiz 120
      #define M1_maksimum_hiz 210
      #define M2_maksimum_hiz 210
      #define MIDDLE_SENSOR 3
      #define NUM_SENSORS 5
      #define TIMEOUT 2500
      #define EMITTER_PIN 2
      #define DEBUG 0

      int lastError = 0;
      int last_proportional = 0;
      int integral = 0;
      QTRSensorsAnalog qtra((unsigned char[]) { 19,18,17,16,15} ,NUM_SENSORS, TIMEOUT, EMITTER_PIN);

      unsigned int sensorValues[NUM_SENSORS];

      void setup() {
      pinMode(SolMotorileri,OUTPUT);
      pinMode(SolMotorGeri,OUTPUT);
      pinMode(SagMotorileri,OUTPUT);
      pinMode(SagMotorGeri,OUTPUT);
      pinMode(ena,OUTPUT);
      pinMode(enb,OUTPUT);
      delay(1500);
      manual_calibration();
      set_motors(0,0);

      }

      void loop() {
      unsigned int sensors[5];
      int position = qtra.readLine(sensors);
      int error = position – 2000;

      int motorSpeed = KP * error + KD * (error – lastError);
      lastError = error;

      int leftMotorSpeed = M1_minumum_hiz + motorSpeed;
      int rightMotorSpeed = M2_minumum_hiz – motorSpeed;

      set_motors(leftMotorSpeed, rightMotorSpeed);

      }

      void set_motors(int motor1speed, int motor2speed)
      {
      if (motor1speed > M1_maksimum_hiz ) motor1speed = M1_maksimum_hiz; //MAKSİMUM MOTOR 1 HIZ LİMİTİ
      if (motor2speed > M2_maksimum_hiz ) motor2speed = M2_maksimum_hiz; // MAKSİMUM MOTOR 2 HIZ LİMİTİ
      if (motor1speed < 0) motor1speed = 0; // MİNIMUMMOTOER 1 HIZ LİMİTİ
      if (motor2speed < 0) motor2speed = 0; // MİNİMUM MOTOR 2 HIZ LİMİTİ
      analogWrite(ena,motor1speed);
      analogWrite(enb,motor2speed);
      digitalWrite(SolMotorileri,HIGH);
      digitalWrite(SagMotorileri,HIGH);
      digitalWrite(SolMotorGeri,LOW);
      digitalWrite(SagMotorGeri,LOW);

      }

      void manual_calibration() {

      int i;
      for (i = 0; i < 250; i++)
      {
      qtra.calibrate(QTR_EMITTERS_ON);
      delay(20);
      }

      if (DEBUG) {
      Serial.begin(9600);
      for (int i = 0; i < NUM_SENSORS; i++)
      {
      Serial.print(qtra.calibratedMinimumOn[i]);
      Serial.print(' ');
      }
      Serial.println();

      for (int i = 0; i < NUM_SENSORS; i++)
      {
      Serial.print(qtra.calibratedMaximumOn[i]);
      Serial.print(' ');
      }
      Serial.println();
      Serial.println();
      }
      }

      bunlarla deniyorum fakat olmuyo

      Cevapla
    43. ERDEM
      7 Nisan 2016

      Bu arada ben EMITTER pin bağlamıyorum onunla alakalı olabilirmi ? Bağlamak istemiyorum açıkçası elimde lehimlicek o pin bulunmuyor . Onunla alakalı olabilirmi?

      Cevapla
    44. ERDEM
      7 Nisan 2016

      küçük harfle olan qtrrc leri qtra yaptım. Ondan kaynaklanabilirmi ?

      Cevapla
    45. ERDEM
      7 Nisan 2016

      Kodları o şekilde değiştirdim fakat sorunu hala bulamıyorum.. Değiştirdiğim kodları atıyımmı?

      Cevapla
    46. ERDEM
      6 Nisan 2016

      Tekrardan merhaba. Ben analog sensör kullanıyorum ama ne denediysem robotu kıpırdatamıyorum. Sorunun ne olduğunuda çözemedim daha . Dediğim gibi milim oynamadı.

      Cevapla
      • Sezgin GÜL
        6 Nisan 2016

        kodda sensör tanımı var QTRSensorsRC diye bu dijital sensör tanımıdır. analog sensör kullanırsan bunun yerine bunu yaz QTRSensorsAnalog

        Cevapla
    47. mehmet ısık
      5 Nisan 2016

      batarya taktım şuan çalıştı ancak.. çizgiyi takip etöiyor..mümkünse QTR-8RC ile aAFmotor sheldin bağlantısını resimli olarak gösterebilir misiniz..

      Cevapla
    48. mehmet ısık
      5 Nisan 2016

      merhaba ne yaparsam yapayım sadece motor 2 çalışıyo..
      farklı piller ve güç adaptorleri kullndım yine aynı ne olabilir sorun..

      Cevapla
    49. Burak
      2 Nisan 2016

      Merhabalar; Çizgi izleyenin hem beyaz zemin siyah çizgi, hemde siyah zemin beyaz çizgide gitmesini istiyorum cny70 kullanıyorum. Nasıl bir program algoritması oluşturmam lazım. yardımcı olursanız sevinirim.

      Cevapla
    50. ali
      1 Nisan 2016

      Saolasınız Sezgin bey. Teşekkür ederim.

      Cevapla
    51. Bahattinates
      31 Mart 2016

      merhaba. sag olun. tesekkur ederim. size. allah isinizi. rast getirsin.

      Cevapla
    52. Bahattinates
      31 Mart 2016

      merhaba. sizin dediginiz gibi. yerleri degistirdim. 255 yaptim. olmadi. shel.l293 .2 test etim. bu kodla.
      tek motor calisiyor.DC. kod bu
      / Adafruit Motor shield library
      // copyright Adafruit Industries LLC, 2009
      // this code is public domain, enjoy!

      #include
      #include

      // DC motor on M2
      AF_DCMotor motor(2);
      // DC hobby servo
      Servo servo1;
      // Stepper motor on M3+M4 48 steps per revolution
      AF_Stepper stepper(48, 2);

      void setup() {
      Serial.begin(9600); // set up Serial library at 9600 bps
      Serial.println(“Motor party!”);

      // turn on servo
      servo1.attach(9);

      // turn on motor #2
      motor.setSpeed(200);
      motor.run(RELEASE);
      }

      int i;

      // Test the DC motor, stepper and servo ALL AT ONCE!
      void loop() {
      motor.run(FORWARD);
      for (i=0; i<255; i++) {
      servo1.write(i);
      motor.setSpeed(i);
      stepper.step(1, FORWARD, INTERLEAVE);
      delay(3);
      }

      for (i=255; i!=0; i–) {
      servo1.write(i-255);
      motor.setSpeed(i);
      stepper.step(1, BACKWARD, INTERLEAVE);
      delay(3);
      }

      motor.run(BACKWARD);
      for (i=0; i<255; i++) {
      servo1.write(i);
      motor.setSpeed(i);
      delay(3);
      stepper.step(1, FORWARD, DOUBLE);
      }

      for (i=255; i!=0; i–) {
      servo1.write(i-255);
      motor.setSpeed(i);
      stepper.step(1, BACKWARD, DOUBLE);
      delay(3);
      }
      }

      sizi meskul etim icin kusura bakma. istedigim bu Shiel. motor surucu. hem cizgi izliye. hemde engel robotu. icin kulanmak. isterdim? siz bu. cizgi izliyen. Shiel. motorsuru. kulandiniz. oylemi. video. izledim. motorsuru. bendeki. aynisi? tek istedigim. bu cizgi. izliyen robot. motor.surucu.Shiel. calisin. sizin sayenizde. hersey. icin tesekkurler.

      Cevapla
      • Sezgin GÜL
        31 Mart 2016

        bu kodla test etmeyin bu kodda step motor tabanlı yapılmış. siz normal dc motor kodunu kullanın. çizgi izleyen ile engel robotu birleştirebilirsin. yapman gerek robotun önüne ultrasonik sensör koy ve kodda mesafe ölçüm fonksiyonlarını yazıp belirlediğin mesafenin altında engel algıladığında robotun durdur.

        Cevapla
    53. ali
      31 Mart 2016

      İyi günler Sezgin bey. sizin bilgilerinizi referans alarak çizgi izleyen robot çalışması yapıyorum.Size iki sorum olacak.
      1. ln298n sürücünün in1,in2,in3,in4 ve enb pinlerine çıkışı arduinonun pwm pinlerinden mi almamız gerekiyor.
      2. qrt 8rc sennsör kullandım projede. ledon pinine enerji verdiğim halde qrt sensörünün üzerindeki ledlerin yandığını göremiyorum. nedeni ne olabilir.Birde yazılımda #define EMITTER_PIN 2 tanımlamıssınız. Bu ledon pinine mi giden çıkız arduinodan.
      Çok teşekkür ederim sorulara cevap verdiğiniz için.

      Cevapla
      • Sezgin GÜL
        31 Mart 2016

        iyi günler Ali bey, şöyle cevap vermek gerkirse;
        1 . ena ve enb pinlerini pwm pinlerine tanımlamanız gerekir. diğer in pinleri dijital olarak high low şeklinde kontrol edildiğinden pinleri fark etmez.
        2. #define EMITTER_PIN 2 tanımı ledon pini için tanımdır. bu tanımla ile dış kesme yapılarak sensörün gereksiz enerji harcaması engellenir. sensör ışıkları aydınlık ortamda fark edilmez. karanlık ortamda kağıt üzerine koyup o zaman görebilirsiniz.

        Cevapla
    54. Bahattinates
      30 Mart 2016

      merhaba. tessekur . ederim size kod calisti. sorun kalmadi. sizin sayenizde. calistirdim. allah.sizden razi olsun. cizgi izliyen L298. ve L293. calisiyor. Shell motor .2. adet L293D. Ve 74HC595. entegre var uzerinde. onunla. denedim. calismadi. sizce. ne olur? sizin sayenizde. cok seyler. ögrendim. sagolun.
      allah isinizi. rast. getirsin.

      Cevapla
      • Sezgin GÜL
        30 Mart 2016

        rica ederim. shield ile çalışmamasının nedenleri şunlar olabilir. birincisi yanlış motor girişlerine bağlamış olabilirsiniz. M1 ve M2 yazan girişlere bağlayacaksın. İkincisi ise maksimum ve minimum hız değerlerinden kaynaklı motorlara yeterli enerji gitmiyor olabilir bunu da kod kısmındaki
        #define M1_minumum_hiz 120
        #define M2_minumum_hiz 120
        #define M1_maksimum_hiz 210
        #define M2_maksimum_hiz 210

        bu değerleri değiştirip deneyebilirsin. maksimum hız değerini 255 yapıp dene. çalışmazsa shield bozuktur. Son olarak sadece shield e pil takmışsan yeterli enerji alamıyor. arduino ya da 9v pille jak girişinden enerji ver.

        Cevapla
    55. Bahattinates
      30 Mart 2016

      merhaba. son gonderdigin. bu sitedeki . Sezgin GÜL30 Mart 2016hata vermemesi gerekiyor. Kütüphaneleri doğru eklediyseniz eğer kodu siteden kopyalarken eksik kopyalıyor olabilirsiniz. Buradan kod dosyalarını indirin birisi l293d, l298n, l293b için diğeri de afmotor shield için >> http://www.robimek.com/wp-content/uploads/Çizgi-izleyen-robot.rar

      kodlar. calisti tesekkurler. bura indirdim. senin dedigin gibi. libraries klasörünün içine atım
      kodlar degerlendi. hata vermedi. Shiel motor surucu. DC 2 motor bagladim. motorlar calismadi.
      acaba QTR8. anolog sensor bende aynisi var. bunu soracaktim. sizden. tesekkurler. allaha emanet olun

      Cevapla
    56. Bahattinates
      30 Mart 2016

      merhaba. kusura bakma. inanki. bu konudan. sizi cok rahatsiz. etim. sizin dedigin gibi. iki lasörude.
      libraier icine atim. soyle yaptim. verdigin sitede indirdim. winarda. cikartip. masa. ustune .getirdim.
      sonra. iki klasöru. de. Libraries. klasörunun icine atim. ( dogrumu? sizden ricam. bunun kodu.gonderme. mumkunmu? winarla. bir daha deneyim. ben bir .hata .yapiyorum. ama ne .
      QTR sensor. Newpin Exeple. Adafruit motor shiel. libre. calisiyor . bu kodlar.
      ozaman siz bana kodu. gonderme. imkanin varmi. cunku bir hata yapiyorum. evelde gonderdigin. oyuncak kodlari calistirdim. sizden istedigim. bu cizgi izliyen motor Shiel. calisin. uzerindeki.L293D 2.tane , bide uzerinde.74hc595 var. sizin sayenide. bu .calistirma? allaha emanet olun.

      bir istegin olursa. cekilme. hersey. icin tessekkurler

      Cevapla
    57. Bahattinates
      30 Mart 2016

      merhaba. hayirli isler dilerim size. gonderdiginiz. dosya.content/uploads/%C3%A7izgi-izleyen-k%C3%BCt%C3%BCphaneleri.rar indirdim. rarda. cikartim masa ustune getirdim. 1.AFMOTOR. 2.QTRsensor.
      sunu soracaktim. sizden. 2 dosya. birdemi. Libraries. icine. yapistirmak. ayri ayrimi. olacak?

      bunun hakinda. tesekkurler. allaha emanet olun.

      Cevapla
    58. Bahattinates
      30 Mart 2016

      #include AFMOTOR Sheild icin arduno. bu kodu. degerleyince. hata. verdi?
      #include

      AF_DCMotor motor1(1, MOTOR12_8KHZ );
      AF_DCMotor motor2(2, MOTOR12_8KHZ );

      #define KP .2
      #define KD 5
      #define M1_minumum_hiz 120
      #define M2_minumum_hiz 120
      #define M1_maksimum_hiz 210
      #define M2_maksimum_hiz 210
      #define MIDDLE_SENSOR 3
      #define NUM_SENSORS 5
      #define TIMEOUT 2500
      #define EMITTER_PIN 2
      #define DEBUG 0

      merhaba. bu sizin yazdiginiz. cizgi izliyen robot. motorsurucu. Sheld uzeinde.L283D. 2 adet var.
      sizin gonderdiginiz. linkte. rar. cizgi izliyen. onunu indirdim. rar. cikartinca. 1.AFmotor.2 QTR.var.
      bu ikisinidemi. libera. oldugu. yere. yaptim. 2 sini. birden. libeare. oldugu. yapistirdim. dogrumu.
      sizin gondeerdigin. cizgi rarda. 2 kodu. liberare. icine yukledim. acaba. ondami. hata verdi?
      senin sitede yazdigin kodu. arduino. degerledim. hata verdi?sizden ricam. cigi.izliyen robotunuzu.AFMOTOR. shiel. motor surucu calisin. L293D. arduino beraber calisin. cizgi izliyen. kod bumu? hersey icin tesekkurler. ederim. size allaha emanet olun. hata. bende oluyor. sizin sayenizde. duzeltmek. tesekkurler.

      Cevapla
    59. Bahattinates
      29 Mart 2016

      merhaba. mumkunmu. sizin sayenizde. bu robotunuzu. yapmak. isterdim.
      Arduino ile Çizgi izleyen Robot Yapımı. bende . motorsurucu. Sheld. L293D. var. 2 adet.
      sitede. verdiginizlinkte. AFmotor. winarla. indirdim. sonra. winardan. cikartip. liberael. arduino. oldugu. yere.yapistirdim.degerleyince. hata verdi. bunun hakinda. cevap verirseniz. cok tessekur. ederim. size.
      sizin sayenizde. yapmak. tercube sahibi. olmak. tessekurler. allaha. emanet olun.

      Cevapla
    60. mehmet Elsiv
      21 Mart 2016

      bi de analog pinlere bağladım bu şekilde QTRSensorsAnalog qtra((unsigned char[]) {0, 1, 2, 3, 4} ,NUM_SENSORS, TIMEOUT, EMITTER_PIN);

      Cevapla
    61. mehmet Elsiv
      21 Mart 2016

      Merhaba hocam ,
      çizgi sensörleri 5 adet ncy70 sensörleri kullanarak yaptım . Ayrıca motor sürücüsü l293d kullandım. L298N için yazılan kodu kullansam sorun olur mu ve ne yapmam gerekıyor ?

      Cevapla
      • Sezgin GÜL
        21 Mart 2016

        ADC ile kontrol etmen daha iyi olur. CNY70 lerde ölçümler adc ile daha başarılıdır.

        Cevapla
        • mehmet Elsiv
          21 Mart 2016

          Analog kullanımı daha verim olur diye duymuştum. Dijital olarak mi daha uygun mu ? Teşekkürler

          Cevapla
          • Sezgin GÜL
            21 Mart 2016

            Analog daha iyi. Adc ile kontrolde de analog okuduğun değeri dijitale çeviriyor.

            Cevapla
    62. deniz
      19 Mart 2016

      sağ ve sol tekerler dengesiz olarak dönüyor veya dönmüyor neyden kaynaklı olabilir

      Cevapla
      • Sezgin GÜL
        19 Mart 2016

        minimum ve maksimum hız değerlerini değiştir. minimum hızı arttır.

        Cevapla
        • deniz
          20 Mart 2016

          değişen birşey olmadı dostum. türev ile ilgil bir sorun olabilirmi

          Cevapla
          • Sezgin GÜL
            21 Mart 2016

            Hayır, sizin sorununuz donanımdan kaynaklıdır. Yazılımsal sorun yok gayet iyi çalışıyor. Sensörlerin çalıştığından ve çizgiyi tam görebilecekleri konumda olduklarını kontrol edin. Ayrıca LedOn yazan pini de 2. dijital pine takın sensörlerin ledlerine kesme yapacaktır.

            Cevapla
            • deniz
              21 Mart 2016

              Sensorler calisiyor 0 ve 5 v cikis veriyor hersey normal fakat motorlar stabil degil. Değerlerden kaynakli birsey olabilir

            • Sezgin GÜL
              21 Mart 2016

              PID değerleri uygun. Gerilim yetersiz veya sensörlerin geç algılamasından kaynaklanabilir.

    63. Oğuzhan F
      17 Mart 2016

      abi ben bu kodu 2 sensör için kullanabilirmiyim ? kullanabilirsem kod nasıl olur?

      Cevapla
      • Sezgin GÜL
        18 Mart 2016

        iki sensör kullanmak mantıklı olmaz çünkü pid konum olarak orta sensöre göre ayarlama yapıyor. iki sensörden birini orta sensör olarak göstermen lazım ki bu da merkez olmayacağından minimum 3 sensör ile yapman sağlıklı olur. 3 sensör için;
        Orta sensör tanımlamasındaki >> #define MIDDLE_SENSOR 3 >>bu şekilde değiştir >> #define MIDDLE_SENSOR 2
        Sensör sayısı tanımlamasındaki >> #define NUM_SENSORS 5 >> bu şekilde değiştir >> #define NUM_SENSORS 3
        Sensör tanımında pin numaraları 3 pin kullandığın için 3 tane pin yazman gerekir >> QTRSensorsRC qtrrc((unsigned char[]) { 19,18,17,16,15} ,NUM_SENSORS, TIMEOUT, EMITTER_PIN);
        Örnek 3 pin için tanım >> QTRSensorsRC qtrrc((unsigned char[]) {17,16,15} ,NUM_SENSORS, TIMEOUT, EMITTER_PIN);

        Cevapla
    64. T.Mutlu
      17 Mart 2016

      hocam,arduno ya gönderdiğimiz kodları bir sonraki ardunoya bağladığımızda görebiliyormuyuz yoksa içerisinde kodlar var ama kod yükleme arayüzünde gözükmüyormu,pc ye kodları yedeklememizmi gerekiyor.
      bir de robotun karşısına engel geldiğinde demek, çizgi algılamıyor demekse sensorValue fonksiyonuna null değer atayıp set_motors fonksiyonu ile dönüş işlemlerinimi yapmamız gerekiyor….c# bilmeme rağmen ilk defa ardunoyla çalışacağımız için tam hakim olamadım kodlara…ilginize teşekkür ederim

      Cevapla
    65. alptuğ kafkaslı
      17 Mart 2016

      Merhaba sezgin bey,
      ben ek olarak çizgi rengine göre motorun hız ayarını yapmak istiyorum nasıl yapabilirim bide rgb sensör kullanıcam bunun için

      Cevapla
    66. T.MUTLU
      17 Mart 2016

      hocam, arduno ya kodumuzu yazıp gönderdik, ertesi gün değişiklik yapmak için tekrar bağladık. portlarını ayarladıktan sonra arduno içerisinde daha önceki attığımız kodları görebiliyormuyuz, yoksa kodlar arduno içerisinde olduğu halde pc ortamı göremiyoruzda sürekli her değişikliğimizin pc de yedeğinimi almamız gerekiyor.
      Ve birde engeli gördüğünde sağ ve ya sola gitmesi için ardumotor kodlarında setmotor(0,0) ile durdurup mu yapmamız gerekecek.engeli görmesi demek çizginin bitmesi demek değilmidir.(sensorvalues e null ise mantığındamı)
      kısaca çizgi bittiğinde sağ veya sol dönmesinimi kontrol edeceğiz..ilginize teşekkür ederim

      Cevapla
    67. 16 Mart 2016

      hocam iyi günler. L298N entegresiyle yazdığınız kod çok işime yaradı.Teşekkür ederim.Bu koda ayrıca hcsr04 mesafe sensörüyle engel algılaması yapmak istiyoruz.Engeli algılayarak etrafından dönerek yoluna devam etmesini istiyoruz.Nasıl yapabiliriz bize yardımcı olurmusunuz.

      Cevapla
      • Sezgin GÜL
        16 Mart 2016

        Çizgiyi takip ederken engel gördüğünde çizgi fonksiyonunu devre dışı bırakıp, yön komutlarıyla dönmesini sağlayın. Dönüş tamamlandığında tekrar çizgi fonksiyonunu aktif edin.

        Cevapla
        • 16 Mart 2016

          Mesafe sensörünün kodunu yazdık.Bu kodu çizgi izleyen koduyla birleştirmek istiyoruz.Çizgi fonksiyonunu nasıl devre dışı bırakacağız.

          Cevapla
          • Sezgin GÜL
            16 Mart 2016

            kesme tanımla engel gördüğünde çizgi izleme durur ve kesme fonksiyonundaki algoritma çalışır

            Cevapla
    68. ahmet
      14 Mart 2016

      iyi günler ben sürekli bu hataları alıyorum lütfen yardım eder misin ?
      sketch_mar15a:19: error: ‘QTRSensorsRC’ does not name a type
      sketch_mar15a:19: error: expected unqualified-id before ‘,’ token
      sketch_mar15a:19: error: expected unqualified-id before numeric constant
      sketch_mar15a.ino: In function ‘void loop()’:
      sketch_mar15a:37: error: ‘qtrrc’ was not declared in this scope
      sketch_mar15a.ino: In function ‘void manual_calibration()’:
      sketch_mar15a:67: error: ‘qtrrc’ was not declared in this scope
      sketch_mar15a:67: error: ‘QTR_EMITTERS_ON’ was not declared in this scope
      sketch_mar15a:75: error: ‘qtrrc’ was not declared in this scope
      sketch_mar15a:82: error: ‘qtrrc’ was not declared in this scope
      sketch_mar15a:82: error: ‘span’ was not declared in this scope

      Cevapla
      • Sezgin GÜL
        14 Mart 2016

        QTRSensors kütüphanesini eklemediğiniz için hata vermiş.

        Cevapla
        • ahmet
          15 Mart 2016

          sildim hala devam ediyo aynı hata

          Cevapla
          • Sezgin GÜL
            15 Mart 2016

            neyi sildiniz ? kütüphaneyi eklediniz mi ? Arduino sürümü güncel değilse eski sürümlerde çalışmayabilir.

            Cevapla
    69. Burak
      12 Mart 2016

      QTRSensorsRC ‘ yi digital olarak okuyabilirmiyim?

      Cevapla
      • Sezgin GÜL
        12 Mart 2016

        okuyabilirsin. zaten rc denmesinin nedeni o . dijital olarak çıkış alınmasıdır.

        Cevapla
    70. veysel
      12 Mart 2016

      degişiklik yapılcak yerleri bana atar mısın abi degiştirerek

      Cevapla
    71. veysel
      12 Mart 2016

      sezgin abi beyaz sensörde motor hız degerlerini degiştirdim ama en sol sensöre göre hareket ediyor ne yapmalıyım iyi gunler

      Cevapla
      • Sezgin GÜL
        12 Mart 2016

        pinlerinin yerini değiştir. ortadaki sensöre göre hareket etmesi lazım

        Cevapla
        • veysel
          12 Mart 2016

          degiştirdim ama yine olmadı

          Cevapla
          • Sezgin GÜL
            12 Mart 2016

            aşağıdaki kısımlarda değişiklik yapman gerekir deneyerek doğru değeri bulmalısın. serial monitörü açıp değerlere bak.
            int error = position – 2000;

            int motorSpeed = KP * error + KD * (error – lastError);
            lastError = error;

            int leftMotorSpeed = M1_minumum_hiz + motorSpeed;
            int rightMotorSpeed = M2_minumum_hiz – motorSpeed;

            Cevapla
    72. seyfullah
      11 Mart 2016

      iyi günler bu şemayı arduıno nanoya uyarlanabilir mi

      Cevapla
    73. deniz
      11 Mart 2016

      cny 70 sensörler ile 7414 entegersı sizin kullanıdınız ıle aynı hassasiyette çalışırmı . Bİrde kütüphanelerin son çalışır halinin verebilirmisinz

      Cevapla
    74. Burak
      10 Mart 2016

      kızılötesi sensörler analog mu digital mi giriş yapılıyor, birde motor sürücünün Enable pinleri input atanmış, başka bir kaynakta output olarak görmüştüm doğrusu hangisi acaba? yardımlarınız için çok teşekkür ederim.

      Cevapla
      • Sezgin GÜL
        10 Mart 2016

        sensörün türüne göre iki şekilde de giriş yapılabilir. enable pini output olacak yanlışlık olmuş .

        Cevapla
    75. ERDEM
      10 Mart 2016

      QTRSensorAnalog değişkenini tanımlıyorum fakat robotta hareket yok bütün rc leri analoğa göre değiştirdim fakat hareket yok motorlar bile çalışmıyor değerlerle alakalı sorun olabilirmi ben min max değerlerini değiştirdim fakat gene bir hareket yok sanırım sensörü yanlış kullanıyorum bide sensörün vcc bağlantısı 5v a gnd si (enssağ) gnd ye değlmi başka bir bağlantı yapmam gerekmiyor bu ikinci aldığım sensor ilkinde gücü farklı portttan verip 4. sensörden sonrasından bilgi alamamıştım. Sanırım sorun bağlantıda.

      Cevapla
      • Sezgin GÜL
        10 Mart 2016

        sensörü örnek kütüphane koduyla denediniz mi ? Bir de l298n için yazılı kodda enable pinleri input olarak tanımlanmıştı sonradan output olarak değiştirdim.

        Cevapla
    76. mehmet
      10 Mart 2016

      Sezgin hocam Paylaşımlarınız için ve sorduğumuz her soruya cevap verdiğiniz için teşekkür ederim. Hocam labirent içinde gezip yangın pervane ile yangın söndüren robot projesi var ama bununla ilgili hiç bir sitede devre şeması yada kod görmedim elinizde böyle bir proje varsa arduino ile hazılanmış devresini ve kodlarını paylaşırmısınız?

      Cevapla
    77. Erdem
      9 Mart 2016

      L298 entegresi kullanıyorum hangi kodları analoğa göre çevirmem gerekiyor ?

      Cevapla
      • Sezgin GÜL
        9 Mart 2016

        projede L298N e göre kod ve devre şeması var. Analog sensör kullandıysan sensör tanımını analog kütüphanesine göre yapmalısın.

        Cevapla
    78. Erdem
      9 Mart 2016

      Analog sensör satın aldım kafa sallama olayı ile kalibre ediyorum ama sensörlerde sıkıntı olduğunu gösteriyor.

      Cevapla
      • Sezgin GÜL
        9 Mart 2016

        bu kod için dijital olan sensör tanımlı. Analog sensör için tanımlamayı değiştirmelisiniz. Yani QTRSensorsRC olan sensör tanım fonksiyonunu QTRSensorsAnalog olarak değiştirmelisiniz.

        Cevapla
    79. Burak
      8 Mart 2016

      QTRSensors yerine cny 70 kullansak onların kalibrasyonunu aynı şekildemi yapacaz? ve
      QTRSensorsRC qtrrc((unsigned char[]) { 19,18,17,16,15} ,NUM_SENSORS, TIMEOUT, EMITTER_PIN) bir kütüphane. Burada cny 70 için nasıl bir tanımlama yapmalıyım?

      Cevapla
      • Sezgin GÜL
        9 Mart 2016

        QTR deki sensörler tekil olarak kullanıldıkları için, cny70 sensörünü kullanabilirsiniz. Yazılımı değiştirmenize gerek yok. Kalibrasyon işlemini kod kendisi yapıyor.

        Cevapla
    80. deniz
      6 Mart 2016

      sensörlerim 7414 entegresine bağlı oradan çıkış alıyorum

      Cevapla
      • Sezgin GÜL
        7 Mart 2016

        entegre kullandıysanız sorun olmaz . Devre korumasından kastım sensörleri tekil olarak kullanırken uygun voltaj ve akımı sağlamak gerekiyor. Shield ve entegreler kullanımı bu yüzden önemlidir.

        Cevapla
    81. Deniz
      6 Mart 2016

      Sensör olarak cnc 70 seti kullandım 5 adet bunlarda herhangibir sıkıntı yaratıcı

      Cevapla
      • Sezgin GÜL
        6 Mart 2016

        sensörleri devre koruması yaparak stabil çalışmasını sağlarsanız sorun yaşamassınız.

        Cevapla
        • deniz
          6 Mart 2016

          devre korumasından kastınız ney acaba

          Cevapla
    82. deniz
      5 Mart 2016

      ardiuno kütüphanelerinin linklerini verirmsiniz acaba

      Cevapla
    83. mehmet
      4 Mart 2016

      Sezgin hocam size bir sorum olacaktı konu hakkında bilginiz varsa sevinirim arduino içindeki programı bilgisayara almam şansım var mı simo robot var bitane ben yapmamıştım ama içindeki kodlerı mereak ettim nasıl görebilirim

      Cevapla
    84. mehmet
      3 Mart 2016

      Hocam keşke resim olarak bağlantısını da paylaşsan

      Cevapla
    85. Erdem
      3 Mart 2016

      Motor sürücünün altındaki yeri kazıyıp gücü ayırsam daha iyi verim alırmıyım ?

      Cevapla
      • Sezgin GÜL
        3 Mart 2016

        motor sürücüyü ayrı beslemen lazım. arduinoyu farklı pille besle

        Cevapla
    86. levent
      3 Mart 2016

      iyi çalışmalar kolay gelsin arduino ile bağlantı şeması var mı acaba paylaşabilir misiniz..

      Cevapla
    87. Erdem
      3 Mart 2016

      imgur.com/40YdiPd burdaki kart

      Cevapla
      • Sezgin GÜL
        3 Mart 2016

        Peojedeki L298n e göre olan kodu kullanacaksın. 3 . pin ena, 11.pin enb 9 ve 12 pinler birinci motor, 8 ve 13. pinler de ikinci motor.
        Buna göre koddaki motor pinlerini aşağıdaki gibi yap.
        #define SolMotorileri 9
        #define SolMotorGeri 12
        #define SagMotorileri 8
        #define SagMotorGeri 13
        #define ena 3
        #define enb 11

        motor sürücünün vin girişinden beslemesini yapıp çalıştır.

        Cevapla
    88. ERDEM
      3 Mart 2016

      Benim çözemediğim sorun rev3 kart halınde yani pinlerdede PwmA Pwm b gibi şeyler var bunların bağlantısını ena enb yemi yazmalıyım?

      Cevapla
      • Sezgin GÜL
        3 Mart 2016

        evet onlar pwm girişleri yine de siz fotoğraf linkini atın bağlantılarını söyleyeyim.

        Cevapla
    89. ERDEM
      2 Mart 2016

      Bu arada ardu kodlarını kullanmayıp L298 i kullanmalıyız değilmi? O konuda hata olmaz sanırsam.

      Cevapla
      • Sezgin GÜL
        2 Mart 2016

        İstediğin arduino modelini kullan kod değiştirmene gerek yok .
        Aşağıdaki tanımlar motor sürücülerin sinyal pin çıkışlarıdır yani arduinonun bağlantı pinleridir.
        #define SolMotorileri 9
        #define SolMotorGeri 10
        #define SagMotorileri 11
        #define SagMotorGeri 12
        #define ena 4
        #define enb 5
        Motor sürücünün datasheet ine bakıp sinyal ve motor pin bağlantılarını yaparsın. L298n için datasheet projede verdim.

        Cevapla
    90. ERDEM
      2 Mart 2016

      Yani Rev 3 kullanarak bu kodları kullanabileceğiz fakat REV 3 PWM bulunduruyo (L298P). PWM in bağlantılarını l298 kodunda nereye yazmamız gerekiyor. Biz tam bu noktada takılıyoruz. PWM ile PID beraber çalıştırmaya çalışırken sanırsam biyerde hata yapıyoruz. L298 kodunuzu referans olarak alıyoruz fakat bir sorun çıkıyor. Bu arada REV3 ün beslemesini nasıl yapmamız gerektiği hakkında bir fikriniz varsa çok yardımcı olursunuz. Cevabınız için teşekkürler. Dediğim gibi L298P PWM bulunduruyo ilk kullandığım sürücü kartı olduğu için o kısmını nasıl yöneticeğimi bilemiyorum.

      Cevapla
    91. Erdem
      2 Mart 2016

      Merhaba sezgin bey bi proje için çizgi izleyen robot kullanıyoruz. Arduino Motor shield REV3 kullanmaktayız. Rev 3 için bu kodların hangi kısımlarında değişiklik yapmalıyız. PID hakkında pek bilgimiz olmadığından nasıl değiştireceğimizi bilemedik. Siz ne önerirsiniz. Yada başka bir motor sürücümü satın almalıyız. Bu arada l298 ile l293 arasındaki fark fiyatta yansımama sebebi nedir. Yani bizim kullandığımızda L298P var Fakat bunu L298N olarak değiştirirsek yani onu satın alırsak sorun düzelebilirmi? PID ile bunu yazmaya pek hakimd değiliz .s . Sevgiler Saygılar.

      Cevapla
      • Sezgin GÜL
        2 Mart 2016

        değişiklik yapmanıza gerek yok 5 sensör için analog pinler yeterli zaten.
        l298 ler l293 e göre daha fazla akıma dayanır bundan dolayı da tork ve hız gerektiren durumlarda avantaj sağlar.

        Cevapla
    92. veysel
      1 Mart 2016

      tmm abi tesekkur ederim allah razı olsun

      Cevapla
      • Sezgin GÜL
        1 Mart 2016

        birde aşağıdaki hız değerlerini arttır
        #define M1_minumum_hiz 120
        #define M2_minumum_hiz 120
        #define M1_maksimum_hiz 210
        #define M2_maksimum_hiz 210

        Cevapla
    93. veysel
      1 Mart 2016

      ki hangi satırda abi bulamadım da

      Cevapla
      • Sezgin GÜL
        1 Mart 2016

        burada ki değerini kullanmıyoruz. hesaplamalar diğer iki değer referans alınarak yapılıyor. Yani ki değeri kodda yok.

        Cevapla
    94. veysel
      1 Mart 2016

      abi kusura bakma ben daha yeni başladim bu işe kp,ki ve kd ne demek oluyor
      ona gore degerleri degiştireyim
      kp degeri .2 gibi hep noktaylami başliycak

      Cevapla
      • Sezgin GÜL
        1 Mart 2016

        kp >> oransal kazanç
        ki >> integral kazanç
        kd >> türevsel kazanç
        buradaki kp değeri arttırılırsa cevap verme süresi hızlanır ama çok arttırlıması durumunda kararsız hale geleceğinden diğer iki değerde buna oranla arttırılmalıdır. kp deki 2 nin solundaki nokta aslında 0.2 demektir. yani bu şekilde de yazabilirsin.

        Cevapla
    95. veysel
      1 Mart 2016

      allah razı olsun senden abi çalıstı
      bunun daha hızlı çizgiyi okuması için ne yapmamız gerek

      Cevapla
      • Sezgin GÜL
        1 Mart 2016

        rpm yüksek motor ve l298n motor sürücü kullanabilirsin. Yukarıda kodu var l298n ile. Yalnız çok hızlı olduğunda çizgiden çıkabilir o yüzden pid deki kp, ki ve kd değerlerini değiştirmen gerekir onu da denem yanılma ile uygun değeri bularak yapabilirsin. İlerleyen günlerde hızlı çizgi izleyen robotu da ekleyeceğim.

        Cevapla
    96. veysel
      1 Mart 2016

      sensorleri ne taraftan dizicez

      Cevapla
      • Sezgin GÜL
        1 Mart 2016

        baştan sona sırayla analog 0 dan 6 ya kadar takın robot ters yöne hareket ederse sensörleri analog 6 dan o a doğru sırayla takın.

        Cevapla
    97. Sezgin GÜL
      1 Mart 2016

      bu şekilde yap analog 0 dan 6 ya kadar pin tanımladım. arduino mega için kullanabilirsin. eğer uno veya nano kullanacaksan analog 6 pini olmadığı için dijital pinlerden pwm olan herhangi bir pini tanımlayabilirsin. QTRSensorsRC qtrrc((unsigned char[]) {A6,A5,A4,A3,A2,A1,A0} ,NUM_SENSORS, TIMEOUT, EMITTER_PIN);
      Aşağıdaki kısımları da şu şekilde yap.
      bu kısmı >> #define NUM_SENSORS 5 >> bu şekilde yap >> #define NUM_SENSORS 7
      bu kısmı >> #define MIDDLE_SENSOR 3 >> bu şekilde yap >> #define MIDDLE_SENSOR 4
      bu kısmı >> unsigned int sensors[5]; >> bu şekilde yap >> unsigned int sensors[7];

      Cevapla
    98. veysel
      1 Mart 2016

      QTRSensorsRC qtrrc((unsigned char[]) { 19,18,17,16,15} ,NUM_SENSORS, TIMEOUT, EMITTER_PIN);
      abi bu satiri 7 sensöre ve arduino megaya göre yazabilir misin

      Cevapla
    99. veysel
      29 Şubat 2016

      tesekkur ederim sezgin abi
      bi sıkıntı olursa yine sorabilir miyim

      Cevapla
    100. veysel
      29 Şubat 2016

      programi yukledim 7 sensore göre ama tek motor surekli çalışıyor

      Cevapla
    101. İsmail
      29 Şubat 2016

      Merhabalar güzel bir çalışma olmuş ve bunu yapmak istiyorum bunun için bir kaç sorum olacaktı 2 parça ayrı ayrı kodlar var bunları nasıl yükleyeceğim yani ne olarak kayıt edip ne olarak kullanıp hangisini yükleyeceğim diğerine ne olacak daha sonrasında bu robotun daha hızlı olması için neler yapabilirim =)

      Cevapla
      • Sezgin GÜL
        29 Şubat 2016

        Kullandığın motor sürücüye göre iki kod yazdım. Bunların biri afmotor shield için diğeri de l298N, l293b, l293d gibi motor sürücüler için kullanınız. Hızını arttırmak için
        #define M1_maksimum_hiz 210
        #define M2_maksimum_hiz 210
        buradaki değerlari arttırın fakat çizgiyi çıkma durumuna göre uygun değeri bulun. Ayrıca kullandığınız motor sürücü ve batarya da hız için önemli husustur.

        Cevapla
    102. veysel
      28 Şubat 2016

      kusura bakmassanız bişey daha sorcam
      ledon pini hangisi

      Cevapla
      • Sezgin GÜL
        29 Şubat 2016

        Sensörün üzerinde yazıyor. Arduino da ise 2. dijital pin yani kesme pini.

        Cevapla
    103. veysel
      28 Şubat 2016

      elimde arduino mega var onada uyarmi bu program

      Cevapla
    104. veysel
      28 Şubat 2016

      iyi gunler bu programla beyaz çizgiyi de izler mi

      Cevapla
      • Sezgin GÜL
        29 Şubat 2016

        Program izler fakat hızı yavaş olur yani minimum hız olur. Bu durumda maksimum ve minimum hız değerlerini yer değiştirirseniz sorunsuz olarak çalışacaktır.

        Cevapla
    105. Sevgi
      27 Şubat 2016

      Merhaba kp ve kd değerlerini neye göre belirlediğinizi öğrenebilir miyim?

      Cevapla
      • Sezgin GÜL
        27 Şubat 2016

        deneme yanılma yoluyla hatasal oranların değerleri eklenerek en stabil çalışma durumundaki değerler yazıldı.

        Cevapla
    106. Suleyman kaya
      26 Şubat 2016

      Meraba kolay gelsin ben bu projeyi yaptım ama gövde ve motorları farklı kullandım çok fazla hızlı oldu yolda tutamıyorum ne yapmam gerekiyor

      Cevapla
      • Sezgin GÜL
        26 Şubat 2016

        buradaki değerleri değiştirin
        #define M1_minumum_hiz 120
        #define M2_minumum_hiz 120
        #define M1_maksimum_hiz 210
        #define M2_maksimum_hiz 210

        Cevapla
    107. Ahmet Can Ok
      21 Şubat 2016

      qtr 8x’in kütüphanesindeki kodların ne işe yaradığını yazabilir misiniz? bazılarını anladım ama bazıları hakkında soru işaretleri var aklımda.

      “int i;
      for (i = 0; i < 250; i++)
      {
      qtrrc.calibrate(QTR_EMITTERS_ON);"
      yukarıdaki kod ve

      "if (DEBUG) {
      Serial.begin(9600);
      for (int i = 0; i < NUM_SENSORS; i++)
      {
      Serial.print(qtrrc.calibratedMinimumOn[i]);
      Serial.print(' ');"

      bu kodlardan bir şey anlamadım.

      Cevapla
      • Sezgin GÜL
        21 Şubat 2016

        bu kod kısımları sensörü kalibre etmek için kullanılır. Yani robot ilk çalıştığında kalibrasyon işlemini başlatır. Bu kalibrasyon işleminin amacı beyaz ve siyah çizgilerin değerlerini alarak o değerleri referans kabul edip diğer işlemler de bu değerlere göre hesaplanır. Birinci kod kısmında sensörlere 250 kere kesme uygulanarak kalibre edilir. İkinci kod kısmında ise kullanılan her sensörün o an okuduğu minimum değer alınır.

        Cevapla
    108. Umut
      17 Şubat 2016

      kodu yüklüyorum ara kablo baglıyken çalışıyor . usb ara kablosunu söküp pilden enerji verdiğimde çalışmıyor.

      Cevapla
      • Sezgin GÜL
        18 Şubat 2016

        Afmotor Shield ve arduino uno’ya ayrı ayrı enerji vermelisiniz.

        Cevapla
    109. Umut
      17 Şubat 2016

      Sezgin Bey Afmotor Shield ve arduino uno’ya ayrı ayrı mı besleme vermemiz gerekiyor

      Cevapla
    110. Ayhan
      16 Şubat 2016

      Sezgin bey matlab ile pid hesabı yapmaya değinmişsiniz bunu biraz açar mısınız? Örnek veya kaynak verir misiniz?

      Cevapla
      • Sezgin GÜL
        16 Şubat 2016

        matlab kendi sitesinde var. Ayrıca matlab simulink de pid blokları mevcut oradan hazır veya kendi değerlerinizle grafiksel analizler yaptırabilirsiniz ya da simulink ile arduinoyu direk haberleştirebilirsiniz.

        Cevapla
    111. UMUT
      28 Ocak 2016

      Merhaba Sezgin Bey , 2500 rpm motorla robotu kontrol etmeye çalışıyorum da Kp değeri robotun dönüşünün keskinliğini mi ayarlıyor? Kd değeri robotun salınımını mı ayarlıyor?
      Birde L 293 N motor sürücüsüne soğutucu takılı değil, biraz ısınma oluyor sıkıntı çıkartır mı?

      Cevapla
      • Sezgin GÜL
        28 Ocak 2016

        kp hatasal oranlama kd ise türevsel hatayı verir. kd değeri daha etkilidir. 2500 rpm için referans oranını değiştirmende fayda var ve motor sürücünün ısınma durumu akıma bağlıdır ki anlık zorlanmada çekeceği akım maksimum olacağından bu değere göre soğutucu eklemende fayda vardır.

        Cevapla
    112. selim
      25 Ocak 2016

      Efendim iyi günler.Robotumu yaptım sensörler çizgiyi gördükleri zaman iki tekerde oynuyor fakat zemine koyduğum zaman tek teker oynuyor

      Cevapla
      • Sezgin GÜL
        26 Ocak 2016

        İyi Günler Selim Bey, Robot dönüşlerde minimum ve maksimum hız değerlerini referans alarak gerekli hızı ayarlayıp döner. diğer tekerleğin oynamama sebebi minimum hız değeri düşük olması ile birlikte kullandığınız pile göre motora yeterli enerji gitmemesidir. yani kodda pwm olarak tanımlı 120 değeri motorunuzu döndürmeye yetmiyor demektir.
        #define M1_minumum_hiz 120
        #define M2_minumum_hiz 120
        bu iki değeri yükseltirseniz motorlar dönecektir. 180 civarı yeterlidir

        Cevapla
    113. UMUT
      22 Ocak 2016

      8 sensörlü kodda sadece 3 tane sensör daha tanımlamamız yeterli olurmu kod da başka bir değişiklik yapmaya gereke varmı?

      Cevapla
      • Sezgin GÜL
        22 Ocak 2016

        #define MIDDLE_SENSOR 3
        buradaki tanımla orta sensörün numarasını verir. yani 8 tane kullanacaksan 4 veya 5 yapman lazım ama o zamanda sağ ve sol sensör sayısı eşit olmayacaktır. onun için 4 ve 5 nolu sensörleri aynı pine tak. yani 7 sensör gibi düşünerek orta sensör değerini 4 al.
        #define NUM_SENSORS 5
        buradaki tanımlama da sensör sayısını yazıyorsun. yukarıda 4 ve 5 i aynı pine takacağımız için 7 sensör pinine ihtiyacımız olacaktır. onun için 7 yazıyoruz.
        toplamda 8 sensör kullanarak bu şekilde tanımlamalarını ekleyebilirsin. kodun diğer kısımlarını değiştirmene gerek yok. sorun yaşarsan sadece pid hata oranlarını değiştirmen yeterli olur

        Cevapla
        • UMUT
          22 Ocak 2016

          teşekkürler sezgin bey

          Cevapla
    114. berk
      22 Ocak 2016

      peki motor olarak ne önerirsiniz veya kullandıgınız motorun rpm i nedir ?

      Cevapla
    115. berk
      21 Ocak 2016

      sensor olarak 8rc yerine 8A kullansam sorunla karıslasırmıyım.teknik olarak cok az farkları var diye araştırmıştım.

      Cevapla
      • Sezgin GÜL
        21 Ocak 2016

        kullanabilirsin ama kütüphane ve fonksiyonları değiştirmen lazım

        Cevapla
    116. UMUT
      21 Ocak 2016

      C:\Users\umut\AppData\Local\Temp\arduino_e2f20cc6aff72622c5c732b852aace31\sketch_jan21a.ino:4:24: fatal error: QTRSensors.h: No such file or directory

      #include

      Bende bu hatayı veriyor Sezgin Bey yardımcı olurmusunuz.

      Cevapla
      • Sezgin GÜL
        21 Ocak 2016

        QTRSensors kütüphanesini eklemediğin için hata alıyorosun

        Cevapla
        • UMUT
          22 Ocak 2016

          Teşekürler Sezgin Bey.Kod’da KP ve KD degerlerini neye göre veya hangi hesaplamalara göre değiştireceğiz?
          Yoksa deneme yanılma yoluylamı robota uygun degerleri bulmaya çalışacağız?

          Cevapla
          • Sezgin GÜL
            22 Ocak 2016

            kp ve kd değerleri motorun hızına göre referans alınır. bu değerlerde sorun yaşamasın. ama deneme ile de değişiklik yaparsın. pid değerini program ile de hesaplayabilirsin. matlab pid bölümüne bakarsan matamatiksel formüller ve algoritmaları bulabilirsin. burada hata payı ve oran hesaplandı ve motora hız olarak entegre edildi.

            Cevapla
    117. deniz
      17 Ocak 2016

      iyi aksamlar hocam ben bu kodu kullanıyorum fakat dönüş yapmıyor.yardımcı olabilir misiniz

      Cevapla
    118. selim
      3 Ocak 2016

      Teşekkürler

      Cevapla
    119. selim
      3 Ocak 2016

      Efendim ben direk arduinoya 9v taksam arduino shielde takmasam olur mu ?

      Cevapla
    120. selim
      3 Ocak 2016

      Efendim iyi günler peki 4.8 Volt kullansam olur mu ?

      Cevapla
    121. selim
      3 Ocak 2016

      Peki kaç volt ile çalıştırmam gerekiyor

      Cevapla
      • Sezgin GÜL
        3 Ocak 2016

        6v veya 7.2 v pille motor shield i besle arduinoyu ise farklı bir pille besle

        Cevapla
    122. selim
      3 Ocak 2016

      Olabilir çünkü ben şu anda USB fişe dönüştüren adopterle çalıştırıyorum

      Cevapla
    123. selim
      3 Ocak 2016

      Başka ne yapabilirim yine olmadı hızları 200 çıkardım

      Cevapla
    124. selim
      1 Ocak 2016

      evet aynen yazdığım şekilde

      Cevapla
      • Sezgin GÜL
        3 Ocak 2016

        motorlar m1 ve m2 girişlerine takılacak

        Cevapla
        • selim
          3 Ocak 2016

          Tamam efendim bende aynı şekilde M1 ve M2 giriş yerlerine taktım sensörde elimi sağ tarafa gösteriyorum sağ teker oynuyor sola çekiyorum elimi sol teker oynuyor fakat siyah çizgi koyuyorum ikisi bir anda oynamıyor

          Cevapla
          • Sezgin GÜL
            3 Ocak 2016

            siyah çizgiyi tam görmüyor olabilir. ayrıca koddaki min motor hız değeri 120 yani düşük olduğundan hareket etmiyo olabilir. Siz bu değeri yükseltin biraz 160 180 arası deneyin

            Cevapla
          • Oğuzhan
            2 Mayıs 2016

            aynı sorun bende de vardı ya motorların baglantıları kısa devre yapıyordur ya da pil gücünüz yetersiz geliyordur

            Cevapla
    125. selim
      1 Ocak 2016

      Efendim kütüphaneyi indirdim fakat hata veriyor TRSensorsRC qtrrc((unsigned char[]) { 19,18,17,16,15} ,NUM_SENSORS, TIMEOUT, EMITTER_PIN); böyle yazıyor ne yapabilirim

      Cevapla
      • Sezgin GÜL
        1 Ocak 2016

        hata vermemesi lazım sürüm farkından kaynaklanabilir. Bir de o kısım QTRSensorsRC qtrrc((unsigned char[]) { 19,18,17,16,15} ,NUM_SENSORS, TIMEOUT, EMITTER_PIN); bu şekilde mi siz de ?

        Cevapla
        • selim
          1 Ocak 2016

          evet aynen yazdığınız gibi

          Cevapla
          • Sezgin GÜL
            2 Ocak 2016

            derlemede sorun yok sürümü değiştirin ondan kaynaklı olabilir

            Cevapla
            • selim
              2 Ocak 2016

              teşekkürler halletim sağolun

            • selim
              2 Ocak 2016

              Araba çizgiyi görüyor fakat sadece bir teker oynuyor ikisi birden oynamıyor

    126. Mustafa İlker
      21 Aralık 2015

      Hocam bu sensörü digital olarak kullanacağımızda ilk başta 10 nf lık kondansatörü doldurup boşaltmamız mı gerekiyor bunu niçin yapıyoruz onuda anlamadım kalibrasyon dedikleri olay bunu yaparken mi oluyor açıklarsanız sevinirim . dijital çıkış allırkende kütüphane almamız gerekiyor mu

      Cevapla
      • Sezgin GÜL
        21 Aralık 2015

        kalibrasyon olayı aslında referans alma işlemidir. Örneğin beyaz ve siyah algılama sırasında analogdan voltaj değeri okursunuz. Bunlar sizin referans noktalarıdır. Kondansatörün görevi de renkten dolayı devreye gerilim değişkeni verir.Örneğin voltaj değeri 2.5 altı ise LOW 2.5 üstü ise HIGH işlemi yapmasını söylersiniz.

        Cevapla
      • Sezgin GÜL
        21 Aralık 2015

        Kütüphane kullanmadan her sensörü bağımsız kullanabilirsiniz.

        Cevapla
    127. mehmet
      15 Aralık 2015

      merhaba ben bu sensörü dijital olarak okumak istiyorum fakat okumuyor sebebi nedir acaba mesela en soldaki sensor 1 ise sağdaki motoru tam devir çalıstır motoru en soldakinin yanındaki sensorse yarım devir çalıstır motoru demem gerekiyor bunu nasl yapabilirim

      Cevapla
      • Sezgin GÜL
        15 Aralık 2015

        Merhaba Mehmet bey, kullandığınız pini input olarak ayarlayın ve analogRead fonksiyonu ile okuyun.

        Cevapla
    128. Meltem
      13 Aralık 2015

      Merhaba, ben daha yeni başladığım için bağlanmaları tam anlayamadım. Motorları motor sürücü kartına nasıl bağladığınız ?

      Cevapla
    129. emre
      12 Aralık 2015

      kütüphaneyi nereden ekliyoruz

      Cevapla
      • Sezgin GÜL
        12 Aralık 2015

        arduinonun kurulu olduğu yerde libraries klasörünün içine ekle

        Cevapla
    130. emre
      6 Aralık 2015

      peki ben daha yeni arduino programlamaya başladım allh izin verirse robot yarışmasına katılacağım ve internet üzerinden bilgi topluyorum. sizin yazdığınız programda şu gibi hatalar veriliyor.

      cızgı_ızleyen_robot_ınternet.ino:1:21: fatal error: AFMotor.h: No such file or directory
      compilation terminated.
      Derleme sırasında hata oluştu.

      gibi hatalar veriyor.

      #include
      #include

      bir de buraları anlamadım yardım ederseniz çok sevinirim.

      Cevapla
    131. birkan ersen
      23 Kasım 2015

      QTR bağlantılarını nasıl yaptınız acaba? 5sensör kullanılmış bunlar hangi pinlere bağlandı?arduino bağlantısını nasıl yaptınız?
      ayrıca programda eksiklikler var mı?

      Cevapla
      • Sezgin GÜL
        23 Kasım 2015

        Sensör pinlerini A1 den A e kadar ki pinlere bağla. Sensörleri soldan başlayarak sırayla bağla. Yani en soldaki a1 en sağdaki a5 olacak şekilde diğerlerini de sırayla bağla.

        Cevapla
    132. Muhammed Türkeri
      6 Kasım 2015

      seri haberleşme ile ne yapıyor niye seri haberleşme kullanılmış
      cevabınızı bekliyorum

      Cevapla
      • Sezgin GÜL
        6 Kasım 2015

        Seri haberleşme sensördeki verileri yazdırmak için kullanıldı. Bu verileri sürekli yenileyerek kalibre ediliyor.

        Cevapla

    Bir yorum yaz

    E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

    Projeler Devamı

    Bizi Takip Et

    izmir escort- izmir escort- izmir escort- izmir escort- izmir escort