arduino due çoklu sensör okuma sorunu
  • şema : http://oi63.tinypic.com/2cd8wb9.jpg
    (3.3v beslemesi için sensörlerin vin noktası kullanıyor.)

    daha önce mega ile kullandığım sensörleri due ile okumada sorun yaşıyorum. hmc5883l, l3gd20h, bme280 sensörlerini kullanıyorum. mega ile hepsini aynı anda sorunsuz okuyabiliyorum. due ile kullanmaya okumaya çalıştığımda rasgele sorunlar yaşıyorum. Açıkçası sorunu çözememe de takıldığım en büyük kısım rasgele sorunlar yaşamam. (bence de çok saçma)

    due ile daha önce 4 sensörü de okuyabildim ancak enerjiyi kesip tekrar çalıştırdığım da bu kez okumuyor. tek sensör bağlıyorum okuyor 2.sensörü bağladığım da ilk okuduğunu da okumuyor. due 3.3v ile çalışıyor. sensörlerin hepsi 3.3 v ile çalışabiliyor. tek tek denediğim de hepsini okuyabiliyorum.

    uno ya da mega da ile aynı bağlantı ve kod ile tüm sensörleri aynı anda okuyabiliyorum ancak due bazen okuyor bazen okumuyor bazen tek sensör okuyup bazen hepsini okurken bazen hiç birini bile okumayabiliyor. Sensörlerin hepsine güç olarka yetmediğini düşünerek harici güç kaynağı bağlayarakta kullandım ve gnd leri köprüledim. yaşadğım sorunlar da hiç bir değişiklik olmadı. Nerelere bakmam gerekiyor neyi gözden geçirmem gerek işin içinden çıkamadım. Aklıma gelen herşeyi denedim ancak sonuç alamadım. Son çare olarak konu açmayı gördüm.

    Not : Due de problem olma ihtimaline karşı ikinci bir due ile denedim aynı sorunları yaşadım.
  • Due sanrım sadece 3V3 ile çalışıyordu.Sensörleri 5V ile beslemeniz sorunu çözebilir.3.3 te stabil sonuç vermiyorlar.Ancak 5V da uzun süre çalışmalarıda iyi değil.
  • cevap için teşekkür ederim. 5v ile beslemeyi daha önce denedim farklı bi durum olmuyor.
  • chip select uçları bağlanmamış şemada hangisini o anda kullanıyorsan onu seçmen lazım. spi de her cihazın ayrı ayrı cs ucunu bağlan lazım
  • megada çalışmıştı dendiği için bağlantıda problem yoktur diye düşünmüştüm.Şemadaki 2 sensör i2c ile haberleşiyor.Adresleme yapılmıştır megada çalıştığına göre.
  • i2c ile haberleşiyorum. adresleme de sorun yok. tek tek bağladığımda tüm sensörleri due ile de okuyabiliyorum. birleştirince sorunlar başlıyor.
  • i2c ise okurken adres de veriliyor çalışması lazım, due de i2c çalışması farklı olabilir direnç değerlerini biraz daha düşürmeyi dene. 4k7 ise 3k3 ile dene olmadı 2k2 ile dene
  • 20 ve 21 pinlerinin (sda scl) pull up dirençleri board içinde mevcut. harici bağlamadım.
  • içerisinde 1.5 k pull up ile bağlıdır.Şu resimdeki gibi dener misiniz?4.7 yerine yine 1.5K ile
    https://i.hizliresim.com/rEm0lV.jpg
  • http://oi66.tinypic.com/mlqele.jpg

    bu şekilde bağlıyorum. bağlı olan sensörler hmc5883l pusula ve bme280 barometre.

    tek başına hmc5883l bağladığım zaman okuyabiliyorum. bme280 eklediğim anda ikisi de okunmuyor ya da 3-5ms kadar okuyup duruyor(serial monitor açık iken kart üzerinden resetlediğim anda bir kaç kere okuyup duruyor.). 5v ile denediğim zaman hmc5883l tek başına olsa da okunmuyor. bu bağlantıların tamamını mega ve uno ile de denedim hepsinde sorunsuz okudu. (2 tane due ile deniyorum ikisinde de sonuç aynı)
  • sorunu henüz çözebilmiş değilim bilgi olarak şunu eklemek istiyorum. i2Cscanner ile kontrol ettiğimde ilk bir kaç döngüde adresleri doğru olarak buluyor ancak bazen aslında olmayan bir adres daha yazabiliyor ve bu son yazdığı adres belli bir şey değil her seferinde farklı gelebiliyor. bir kaç kez döndükten sora hiç bir i2c adresi bulmamaya başlıyor.

    breadboard üstünde temassızlık olma ihtimaline karşı lehimleyerek de denedim sonuç değişmedi.
  • i2c de reset varmı hatırlamıyorum işlem başında bir reset yolla istersen
  • uzun uğraşlar sonucu sorunu çözdüm gibi, şu anlık düzgün çalışıyor ancak bir kaç test daha yapmam gerekiyor emin olmak için.

    l3gd20h
    mma845x
    mpu6050
    hmc5883l
    bme280

    bu sensörleri kullanıyorum. burda işi bozan sensör bme280 oldu. bme280 bağlı değil iken hepsini okuyorum ancak bme280 geldiği anda hiç bir sensörü okuyamıyorum.

    Ancak tek sorun bu değil. ide versiyonum 1.6.10. Wire.h kütüphanesini kullandığım zaman i2c haberleşmesi rasgele zamanlarda durabiliyor bu bazen 2milisaniye bazen 5-6 saniye.

    Bu sorunu Wire.h yerine aşağıda linklerini paylaştığım kütüphaneleri kullanarak çözdüm.



    https://raw.githubusercontent.com/QuadTinnakon/TK_QuadDue32bit_FullSensor/master/Wire_due32.cpp

    https://raw.githubusercontent.com/QuadTinnakon/TK_QuadDue32bit_FullSensor/master/Wire_due32.h



    şimdilik sorun çözülmüş görünüyor.

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Login with Facebook
Açık kaynak kültürü gereği, çözdüğünüz problemlerin çözümlerini paylaşmayı lütfen unutmayın.