I2C sevice tanımama problemi

fide

Meraklı ve "nasıl" sorusunu seven biri
Katılım
8 Eylül 2021
Mesajlar
2,765
Bir arkadaşımın devresini dizdim.
Devre üzerinde RP2040, TOF sensör ve imu var. Tof 2V8, imu ise 1V8 ile çalışıyor. İki cihaz da i2c ile rp2040'a bağlı. I2C hattı gerilimleri farklı olduğu için BSS138 ve adını hatırlayamadığım mosfet ile level converter var.
Sıkıntım şu:
I2C scan yaptığım zaman imu sensör her zaman 0x68 adresini görüyor ama TOF sensor bazen 0x29 olarak tanınıyor bazen tanınmıyor.
Tof sensore 2V8 gerilim geliyor. Ada ve scl pinlere kadar data geliyor. 2 ayrı kart dizdim. 2 devrede de bazen tanınıyor bazen tanınmıyor.


IMG_20250909_170302.jpg

Tof sensör sol ortada sarı kare olarak görünen, imu ise alt ortada kare çip.
Sizce sıkıntı ne olabilir?
 
Level shifter kararlığı yeterince sağlayamıyor olabilir mi? Voltajın 3.3V'tan 2.8'e düştüğünü düşünüyorum pull up dirençleri uygun mu acaba?
 
Level converter iki mosfetle yapılıyor.
Screenshot_2025-09-16-15-05-15-574_com.android.chrome-edit.jpg
 
Hocam clock hızını düşürüp deneye biliriniz ilk, sonrasında skop ile hat sinyalinin düşme ve yükselme sürelerini karşılaştırın bu süre veri sayfasına uygun mu . pcb iyi bi temizliğe ihtiyacı var gibi duruyor resimden . Kartın beslemelerini kontol edin çalışma sırasında çökme falan oluyor mu . TOF sensör temzilerken yine dikkat edin bozulabilir. rp2040 clocklarını doğrunu kontrol edin onda kayma yaşanıyor olabilir.
 
Hocam imkan varsa 2V8 tarafında bulunan pull-up dirençlerini biraz daha düşürme ihtimaliniz var mı? 3k3 ya da 2k2 gibi.
 
Olayı benzer ama değerler farklı şekilde çözdüm.
2V8 tarafındaki 4K7 direnci 10K yaptım. iki devre de çalıştı. Şimdilik gönderdim ama sonrasında sıkıntı çıkarsa direnç değerleri ile oynamaya gidicem.
Öneriler için teşekkür ederim.
 
Yeterince hızlı hat çekilmiyor diye düşündüm ve o yüzden dirençleri düşürme fikrinde bulundum ama sanırım sorun tam tersiymiş hat çok hızlı çekildiği için ya da akımı fazla geldiği için çalışmıyordu galiba neyse sorunun çözüldüğüne sevindim.
 
Sorun bence sensör üzerindeki mosfetler hattı 0 seviyesine çekmeye zorlanması. Direnç değeri yükselince iş daha kolay oluyor.
 
Son düzenleme:
normalde 4k7 pull up 400 khz hızlar için yeterli gelmiyor. 2k2 gibi daha düşük değerler lazım 3.3 volt tarafında.

devrede toplam 4 adet level converter olması gerekiyor. bunların uçları da 3.3 tarafında rp2040'da birleşecek.
mosfetin 400 khz gibi hızlarda yetişememe durumu olmaz. ama bunu bir skop ile kolaylıkla test edebilirsin. önce 100khz ile sck pininin 2.7 volt
kısmında daha sonra 400 khz ile aynı noktadan skop ile ölçüm alırsan hemen kendini belli eder.

aslında skobun iki kanalını kullanım birinci kanal 3.3 ikinci kanal 2.7 volt hattı üzerinde olursa hem gecikmeleri hem de kara dalganın ne kadar bozulduğunu görebilirsin.
 
Sorun çözüldü. Devreyi ben çizmedim. Bu yüzden şematik tarafını tam kontrol etmemiştim. Vl53lx1 çipin xshut diye bir pin var. Enable gibi düşünülebilir. Bu xshut pini float bırakılmış. Bu da sensörün bazen tepki verip bazen vermemesine sebep oluyor. Revize edildi.
 
Son düzenleme:
Daha dün Annemizin kollarında...
Pardon nerden geldi şimdi klavyeme yahu.. (Rahmet istedi galiba rahmetli) :emindegil1:
Dün PIC 16F1825 çipli devremde prgram atma aşamasında bazı kartların programlama sorunu çıkardıklarını gördüm.
1764313021516.jpeg
1764313055244.jpeg

Devre yukarıdaki gibi.
ICSP Port hepsinde aynı ve kullandığım programlayıcı ICD5.
İşlemciye elimle bastırıp program attığımda herşey normale dönüyor. Soğuk lehim war diye düşündüm.
Lehimleri tazeledim vs. vs. ama fayda etmedi.
Devrelerime genelde RX, TX ledi eklerim.
1764313398945.png

Kart normal ise Mavi (RX) ledi ışıldar. Işıldamıyorsa bi sıkıntılar war demektir.
Picin 5 nolu ucuna cımbızla dokununca ledde işildamaların durum değiştirdiğini farkettim.
Ne alaka yahu deyip derinleştirdim meseleyi.
485 çipinin Send Receive kontrol ucuna gidiyor. Başkaca da bir bağlantısı yok.
485 nçipini sötüm ve program attığımda hiç bir sıkıntının olmadığını gördüm.
Çiplerde bugüne kadar hiçbir sıkıntım olmamıştı.
Gözüme takılan birde 485 çipin altındaki flux kalıntıları oldu.
Temizliğini yapıp çipi yerine başka marka bir flux ile oturttuk.
İşte bundan sonra hiç bir sıkıntı kalmadı ve şakır şakır programlanır hale geldi. Problemin flux kalıntıları olduğu böylelilke kesinleşti.

Soru 1: PIC MCU 5 numaralı uç sadece I/O olduğu halde dışarıdan gelen etkenlerden neden etkilenip VPP gibi kritik voltajlara tepki göstersin.?
Programlama anında zaten devre dışına çıkarılması gerekir.
Soru 2: Parmağımla çipe bastırdığımda neden normale dönsün. (Aklıma ilk gelen şebeke kaçak gerilimleri oldu. Şebeke toprağı ile cihaz GND leri arasında kaçak AC ölçümü sıfır olarak ölçüldü)
Soru 3: Flux sadece 485 şeması üzerinden yürürsek 1 ve 4 nolu uçlardan 2 ve 3 nolu uca kaçak yapmak zorunda. 4 Nolu uç TX (TTL işlemci out) ve 1 nolu uç ta zaten 5 volta direnç ile kutuplanmış iken nasıl bir etkileşimle işemciyi sapıttırır.?

Çözümünü keşfettiğim için sorular askıda kaldı soruların cevabı maalesef üretici tarafına kadar uzanacak gibi.

Kısacası @fide Kardeşim derdin temizlik olabilir diyecektim ki sorun çözüldü mesajını ancak gördüm bu kadar yazı döşendikten sonra. :gulus2:
 

Forum istatistikleri

Konular
8,604
Mesajlar
140,713
Üyeler
3,420
Son üye
Code

Son kaynaklar

Son profil mesajları

Abdullah karaoglan falcon_browning Abdullah karaoglan wrote on falcon_browning's profile.
selamın aleyküm ses sistemindeki cızırtıyı hallettınızmi
"Araştırma, ne yaptığını bilmediğinde yaptığın şeydir." - Wernher von Braun
“Kendi yolunu çizen kişi, kimsenin izinden gitmez.” – Nietzsche
Kim İslâm’da güzel bir çığır açarsa (güzel bir alışkanlık başlatırsa), onun sevabı ve kendisinden sonra ona uyanların sevapları, onların sevaplarından hiçbir şey eksilmeksizin ona da yazılır.
erdemtr55 taydin erdemtr55 wrote on taydin's profile.
Merhaba Taydin bey,
Gruba spms serisi yapıcak mısınız?
ben 3 sargılı toroid ile 2 adet flyback sürücek bir devre yapmayı düşünüyorum.size soracak sorularım vardı?
Back
Top