Jump to content

Forumlar

  1. Genel

    1. Forum Hakkında

      Forum hakkında bilgiler, bölüm açma talepleri, şikayetler, öneriler.

      1
      ileti
    2. 1
      ileti
  2. Bilgi Alışverişi

    1. Elektronik

      Güç elektroniği, Yüksek frekans, Lojik kapılar, Sayıcılar

      • Burada henüz ileti yok
    2. Robotik

      Motorlar, Aküatörler, IMU'lar, Sensörler, Konum hesaplamaları

      • Burada henüz ileti yok
    3. Arduino

      Arduino ile ilgili sorular ve cevaplar

      3
      ileti
    4. PIC

      Mikrochip firmasının PIC ürünleri hakkında soru ve cevaplar

      • Burada henüz ileti yok
  3. Ürün İncelemeleri

    1. Tanıtım istekleri

      Malzeme tanıtım istekleri bu bölümden yapılacaktır

      1
      ileti
    2. Elektronik Malzemeler

      Her türlü elektronik malzeme

      • Burada henüz ileti yok
    3. Arduino

      Arduino'ya özel malzemeler

      • Burada henüz ileti yok
    4. Robotik Malzemeler

      Tekerlek, Gövde, Motorlar

      • Burada henüz ileti yok
    5. PIC

      Microchip PIC ve ilgili malzemeler

      • Burada henüz ileti yok
    6. Sensörler

      Sensörler ve malzemeleri

      • Burada henüz ileti yok
  4. Yazılım

    1. Yazılımlar

      Yazılımlarla ilgili bilgi alışverişi

      • Burada henüz ileti yok
  5. Öğrencilere Özel

    1. KOU Elohab

      Kocaeli Üniversitesi Elektronik ve Haberleşme bölümü ödev ve deneyler

      16
      ileti
    2. KOU Mekatronik

      Kocaeli Üniversitesi Mekatronik bölümü ödev ve deneyler

      • Burada henüz ileti yok
  • Çevrimiçi Kullanıcılar   0 Üye, 0 Kayıtsız, 1 Misafir (Tam liste)

    Şu anda bağlı kayıtlı kullanıcı bulunmuyor

  • Konular

  • İletiler

    • "İlk proje" ne olmalı? Tabii ki çizgi izleyen robot. Belki yanıp sönen led de yapabilirdik ilk proje olarak ama, onları proje bölümünde değil de, kendi alt bölümlerinde yapmayı daha uygun gördük. Donanım olarak Arduino UNO'nun daha ucuz olan CH340 arabirimli modelini tercih ettik. Tabii siz elinizde olan bir Arduino kullanabilirsiniz. Çünkü bu proje için çok miktarda I/O ve bellek gerekmiyor. Ayrıca iki tane tekerlekli ve redüktörlü DC motor, motorları sürmek için L298N motor sürücü ile devrenin "gözü" olarak da TCRT5000 üçlü sensor kullandık. Önce piyasada bulunan yazılımlara baktık ve doğrusu bu yazılımı kullanmak içimize sinmedi. Çünkü üç gözlü sensorda, sensorun özelliğini kullanabilmek için kalınlığı iki göz arasındaki mesafeden daha fazla olan bir bant kullanmak gerekli. Aksi halde robotumuzu bant görmediğinde de hareket edecek şekilde programlamak zorunda kalırız ve bu da çok dengesiz sonuçlara yol açar. Yazdığımız bu program aslında gerçek bir "çizgi izleyen robot" için halen uygun değil. Çünkü dört başı mamur bir şey yazdık diyebilmek için, robot çizgiden çıktığında hangi açı ile çıktığını hesabedip ona göre bir rota düzeltme yapmalı. Biz ise diğer public yazılımlardaki gibi sadece gözlerin durumunu motorlara aktaracak bir kod tasarladık. Motorlarımızı LN298'e bağlarken ikisini de aynı yönde bağlamalıyız. Eğer motorları ters bağladıysak tekerler geri doğru dönecektir. Bu durumda ya motorların bağlantılarını değiştirmelisiniz ya da koddaki   digitalWrite(L298N_RightB,LOW);
        digitalWrite(L298N_LeftB,LOW);
        digitalWrite(L298N_RightA,HIGH);
        digitalWrite(L298N_LeftA,HIGH); kısmını   digitalWrite(L298N_RightB,HIGH);
        digitalWrite(L298N_LeftB,HIGH);
        digitalWrite(L298N_RightA,LOW);
        digitalWrite(L298N_LeftA,LOW); olarak değiştirmelisiniz. Böylece motorlara uygulanacak gerilimin yönünü değiştirmiş olursunuz, kablo söküp takmaya gerek kalmaz.   TCRT5000 sensoru, beyaz yüzey için 0, siyah yüzey için 1 değerini verir. Eğer pistimizi siyah (koyu renkli) yaptıysak ve çizgimizi beyaz (açık renk) yaptıysak, okuyacağımız değerler ters gelecektir. Bu yüzden sensor okuma kısmını //TCRT5000 okuma
        int d1 = 1-digitalRead(TCRT_Left);
        int d2 = 1-digitalRead(TCRT_center);
        int d3 = 1-digitalRead(TCRT_right); olarak yazmalıyız. Ama pistimiz açık renk ve çizgimiz koyu renkli ise, o zaman sensor okuma kısmındaki "1-" leri kaldıracağız:
      //TCRT5000 okuma
        int d1 = digitalRead(TCRT_Left);
        int d2 = digitalRead(TCRT_center);
        int d3 = digitalRead(TCRT_right); Böylece koda fazlaca dokunmadan pist seçimimizi yapmak imkanımız olacak. Sensorlardan hem orta hem de yanlardan biri çizgiyi görüyorsa, robotumuz çizgiden çıkmak üzere sayılır, bu sırada daha düzgün bir hareker için, eğer iki göz birden çizgiyi görüyorsa kenardaki gözün çizgiyi görmediğini varsayacağız. Bunun için koda: //Sensorların iki tanesi birden çizgiyi görüyorsa
        if ((d1+d2)==2) d1=0;
        if ((d2+d3)==2) d3=0; ekledik. Bundan sonrası motorlar dönecek mi, dönecekse ikisi de mi dönecek, birisi dönecekse hangisi dönecek buna karar vermekten ibaret. Öncelikle motorların dönmesi için tek bir gözün (yukarıda orta ve bir kenar görürse bire indirgemiştik) çizgi görmesi gerek. Böyle değilse, yani üç göz ya da iki kenar çizgi görüyorsa, ya da hiç biri çizgi görmüyorsa motoru çevirmiyoruz. Bunu da bir if komutu ile sağlıyoruz:   if ((d1+d2+d3)==1) Burada d1,d2 ve d3 gözler. Bunların toplamı 1 olmalı. Yani sadece bir göz çizgiyi görüyor olmalı. Aksi halde hiç bir motoru çevirmiyoruz. Böylece kenara koyduğumuzda robot saçma sapan hareket etmeyecek, hareketsiz duracaktır. Eğer bu şart sağlanıyorsa, iki motor birden ya da motorların biri dönmelidir. Bunu da basit bir toplama işlemi ile gerçekleştiriyoruz:     analogWrite(L298N_RightS,(d1+d2)*hiz);
          analogWrite(L298N_LeftS,(d2+d3)*hiz); Programın başında "hiz" değerimizi tanımlamıştık. Örneğin 100-150 gibi bir hız değeri verebilirsiniz. Burada d2 değeri 1 ise her iki teker, d1 veya d3 değeri 1 ise, ilgili teker dönecek, böylece robotumuz çizgiyi izlemiş olacaktır.

      Bağlantılar: TCRT'nin sol ucunu Arduino'nun 10 numaralı ucuna, orta ucunu 11 numaraya, sağ ucunu ise 12 numaraya bağlıyoruz. Motor sürücünün ENA ve ENB pinlerindeki jumper cap'leri çıkartıyoruz. Sonra sırasıyla ENA-IN1-IN2-IN3-IN4-ENAB uçlarını Arduino'nun sırasıyla ,   9-7-6-5-4-3 uçlarına bağlıyoruz. Besleme uçlarını ise besleme planınınıza göre yapabilirsiniz.
        Robotun deneme videosunu aşağıdaki linkten izleyebilirsiniz. https://youtu.be/2WsJSOnJRbw Arduino kodlarını da aşağıdaki linkten indirebilirsiniz. CizgiRobot.ino
    • Aktif derken, çalışıp çalışmadığını anlamayı mı kastediyorsunuz? Eğer öyle ise, mikrokontrolcünün i2c portuna bağlayıp cevap verip vermediğini, veriyorsa cevapların anlamlı olup olmadığını kontrol etmelisiniz. Eğer çalışmıyorsa büyük ihtimalle i2c haberleşmesi kilitlenecektir. Devrenizi kurdunuz mu? Mikrokontrolcüye bir yazılım koydunuz mu? Daha önce i2c protokolünü kullandınız mı?  
    • Msp430g2553 ile VL53L0X uzaklık sensorunu kullanmak istiyoruz fakat aktif olup olmadığını anlayamıyoruz,nerden anlayabiliriz?
    • Hangi microcontroller ve hangi TOF sensoru kullanıyorsunuz? Bu tür sensorlar genellikle I2C ile çalışır. I2C ile daha önce çalıştınız mı? Kullandığınız sensorun datasheet'i elinizde var değil mi? En işe yarar kaynak genelleikle datasheetlerdir.
    • merhabalar,tof(time of flight) sensörünü nasıl aktif edebilirim?
  • Üye İstatistikleri

    • Toplam Üye
      13
    • Çevrimiçi Rekoru
      12

    En Yeni Üye
    nbanuu
    Kayıt tarihi
  • Forum İstatistikleri

    • Toplam Konu
      7
    • Toplam İleti
      22
×

Önemli Bilgilendirme

Facebook / Twitter / Google hesabınızla kolayca kaydolup cevap verebilir, soru sorabilir, istekte bulunabilirsiniz.
Devam etmeniz, forum kurallarını kabul ettiğiniz anlamına gelir.            Forum Kuralları