Yazılardaki ürünleri komponentci.net'te inceleyebilir, hemen sipariş verebilirsiniz.komponentci.net →
KomponentciBlog Mağaza

Lojik Seviye Dönüştürücü: 3.3V ve 5V Bağlantısı

Lojik Seviye Dönüştürücü: 3.3V ve 5V Bağlantısı
Kısa cevap

Lojik seviye dönüştürücü, 3,3V ile çalışan bir kartla 5V ile çalışan bir modülün dijital sinyallerini birbirine zarar vermeden taşır. BSS138 MOSFET tabanlı çift yönlü modül I2C hatları için en pratik çözümdür. Yalnızca 5V çıkıştan 3,3V girişe giden tek yönlü sinyallerde iki dirençli gerilim bölücü de yeterlidir.

ESP32, Raspberry Pi ve birçok yeni sensör 3,3V ile çalışırken Arduino Uno ve eski modüllerin büyük kısmı 5V kullanır. Bu iki dünyayı doğrudan kabloyla birleştirmek 3,3V tarafındaki pinlere zarar verebilir. Bu yazıda lojik seviye dönüştürücünün ne olduğunu, BSS138 tabanlı çift yönlü modülün nasıl çalıştığını, I2C hattına nasıl bağlandığını ve ne zaman basit bir gerilim bölücünün yettiğini anlatıyoruz.

Lojik seviye dönüştürücü nedir?

Lojik seviye dönüştürücü, farklı besleme gerilimleriyle çalışan iki dijital devre arasında sinyalin HIGH ve LOW seviyelerini karşı tarafın anlayacağı gerilime çeviren bir ara devredir. En yaygın kullanım, 3,3V bir mikrodenetleyiciyi 5V bir modülle konuşturmaktır.

Sorun şuradadır: ESP32 gibi 3,3V kartların pinleri 5V'a dayanıklı değildir. 5V bir modülün çıkışı bu pinlere doğrudan bağlanırsa pin zamanla ya da hemen bozulabilir. Ters yönde ise 3,3V'luk HIGH sinyali bazı 5V girişler için eşik değerin altında kalabilir.

BSS138 çift yönlü modül nasıl çalışır?

BSS138 tabanlı modül, her kanalda bir N kanal MOSFET ve iki pull-up direnciyle sinyali iki yönde de çevirir; bu yüzden aynı kablo üzerinden hem gönderilen hem alınan veriler için kullanılabilir. MOSFET'in kapısı (gate) 3,3V beslemeye, kaynağı (source) 3,3V tarafındaki sinyale, akaçı (drain) 5V tarafındaki sinyale bağlıdır.

  • Hat boşta: İki taraf da kendi pull-up direnciyle HIGH seviyededir; 3,3V tarafı 3,3V, 5V tarafı 5V görür.
  • 3,3V tarafı LOW yapılırsa: MOSFET iletime geçer ve 5V tarafını da LOW'a çeker.
  • 5V tarafı LOW yapılırsa: MOSFET'in gövde diyodu 3,3V tarafını aşağı çeker, ardından MOSFET tamamen iletime geçer.

Bu yapı açık akaçlı (open drain) hatlar için idealdir; I2C de tam olarak böyle çalışır. Kartı tek tek parçalarla kendiniz kurmak isterseniz BSS138LT1G N kanal MOSFET (SOT-23) kullanabilirsiniz; ancak hazır modül zaman kazandırır. MOSFET'in temel çalışmasını MOSFET nedir yazımızda anlattık.

Lojik seviye dönüştürücü nasıl bağlanır?

Modülün HV pini 5V beslemeye, LV pini 3,3V beslemeye, GND pinleri ortak toprağa bağlanır; sinyaller ise HV1–HV4 ve LV1–LV4 pinleri arasında karşılıklı taşınır. Aşağıdaki örnekte bir Arduino Uno, 3,3V ile beslenen bir I2C sensörle konuşuyor.

  1. Tüm bağlantıları kart USB'den ayrıyken yapın.
  2. Arduino Uno'nun 5V pinini modülün HV pinine, 3.3V pinini modülün LV pinine bağlayın.
  3. Arduino'nun GND pinini modülün GND pinine bağlayın; sensörün GND'si de aynı hatta olmalıdır.
  4. Arduino'nun A4 (SDA) pinini HV1'e, A5 (SCL) pinini HV2'ye bağlayın.
  5. LV1'i sensörün SDA pinine, LV2'yi sensörün SCL pinine bağlayın.
  6. Sensörün VCC pinini Arduino'nun 3.3V pinine bağlayın ve kartı çalıştırıp I2C tarayıcıyla adresi kontrol edin.
Lojik seviye dönüştürücü bağlantı şeması: Arduino Uno 5V pini HV pinine, 3.3V pini LV pinine ve sensör VCC pinine, GND ortak; A4 (SDA) HV1 ve LV1 üzerinden sensör SDA pinine, A5 (SCL) HV2 ve LV2 üzerinden sensör SCL pinine
HV tarafı 5V, LV tarafı 3,3V ile beslenir ve GND ortaktır. SDA HV1–LV1, SCL HV2–LV2 kanalından geçer.

Pin adları üreticiye göre değişebilir; bazı kartlarda HV yerine "5V", LV yerine "3V3" yazar. 4 kanal lojik gerilim seviye dönüştürücü 3.3V-5V dört bağımsız kanal sunduğu için I2C'nin iki hattının yanında iki ek sinyali de taşıyabilir. Deneme aşamasında devreyi 830 pin MB-102 breadboard üzerinde kurmak işinizi kolaylaştırır.

I2C hattında nelere dikkat etmeli?

I2C hattında en önemli nokta, pull-up dirençlerinin hangi gerilime bağlı olduğunu bilmektir; 5V'a çekilmiş bir hat, dönüştürücü olmadan 3,3V karta bağlanmamalıdır. Birçok 5V I2C modülünün üzerinde SDA ve SCL hatlarını 5V'a çeken dirençler bulunur. Bu modülü doğrudan ESP32'ye bağlarsanız ESP32'nin pinleri 5V görür.

BSS138 modülünün kendi pull-up dirençleri de vardır. Hatta çok sayıda modül varsa paralel bağlanan dirençler toplam direnci düşürür ve hattı LOW'a çekmek zorlaşır. Böyle bir durumda bazı modüllerin üzerindeki pull-up dirençlerini devreden çıkarmak gerekebilir. I2C adreslemesi ve hat yapısını ayrıntılı olarak I2C nedir yazımızda bulabilirsiniz.

Hız açısından BSS138 modülü standart (100 kHz) ve hızlı mod (400 kHz) I2C için yaygın olarak kullanılır. Yükselen kenarlar pull-up direnciyle oluştuğu için çok hızlı SPI hatlarında sinyal yuvarlanabilir; yüksek frekanslı işlerde buna özel üretilmiş dönüştürücü entegreleri daha uygundur.

Gerilim bölücü ne zaman yeterlidir?

Gerilim bölücü, sinyal yalnızca 5V çıkıştan 3,3V girişe doğru gidiyorsa yeterlidir; çift yönlü hatlarda ve I2C'de kullanılmaz. İki direnç 5V sinyali oranına göre küçültür. Örneğin üstte 1 kΩ, altta 2 kΩ kullanıldığında çıkış 5 × 2 / (1 + 2) ≈ 3,33V olur.

YöntemYönI2CParça sayısıTipik kullanım
BSS138 çift yönlü modülİki yönlüUygunTek modülI2C sensör, ekran, 1-Wire
Gerilim bölücü (1 kΩ + 2 kΩ)Yalnızca 5V → 3,3VUygun değilİki direnç5V modülün TX çıkışı → ESP32 RX
Doğrudan bağlantıYalnızca 3,3V → 5VUygun değilYokESP32 TX → Arduino Uno RX (çoğu durumda)

Son satırdaki doğrudan bağlantı, 5V girişin 3,3V'u HIGH olarak kabul etmesine dayanır. Arduino Uno'daki ATmega328P için giriş HIGH eşiği besleme geriliminin yaklaşık 0,6 katıdır (5V'ta 3V); 3,3V bu eşiğin hemen üzerindedir. Uzun kablolarda ya da gürültülü ortamlarda bu pay azalır, bu yüzden kalıcı projelerde dönüştürücü kullanmak daha sağlamdır.

ESP32 ile ilk adımlarınızı atıyorsanız ESP32-WROOM-32 geliştirme kartı ve kurulum adımları için ESP32'ye başlangıç yazımıza bakabilirsiniz. Diğer modülleri mağazamızın Arduino sensör ve modüller kategorisinde bulabilirsiniz.

En sık yapılan hatalar nelerdir?

En sık yapılan hata, HV ve LV beslemelerini ters bağlamak ya da hiç bağlamamaktır; modül iki tarafın gerilimini bilmeden doğru çalışamaz. Diğer yaygın hatalar şunlardır:

  • GND'yi ortak yapmamak: İki kartın toprağı birleşmezse seviyeler anlamsızlaşır.
  • Güç hattını dönüştürücüden geçirmek: Modül yalnızca sinyal içindir, akım taşımaz; besleme doğrudan verilir.
  • Analog sinyal taşımaya çalışmak: Dönüştürücü yalnızca dijital HIGH ve LOW seviyeleri için tasarlanmıştır.
  • Kanalları karıştırmak: HV1 her zaman LV1 ile eşleşir; HV1'e giren sinyal LV2'den çıkmaz.

Sık sorulan sorular

ESP32 pinleri 5V'a dayanıklı mı?

Hayır, ESP32'nin giriş çıkış pinleri 3,3V için tasarlanmıştır ve 5V'a dayanıklı değildir. 5V çıkış veren bir modül doğrudan bağlandığında pin hasar görebilir; bazen kart bir süre çalışıp sonra arıza verir. 5V'luk sinyali ESP32'ye taşımak için çift yönlü bir lojik seviye dönüştürücü ya da tek yönlü sinyallerde gerilim bölücü kullanın. Modülü 3,3V ile besleyebiliyorsanız bu da bir çözümdür.

Lojik seviye dönüştürücü ile motor sürülür mü?

Hayır, lojik seviye dönüştürücü yalnızca sinyal taşır ve motor, röle bobini ya da LED şerit gibi akım çeken yükleri süremez. Kanallardaki pull-up dirençleri yüksek değerlidir ve çok küçük akımlara izin verir. Yük sürmek için bir transistör, MOSFET sürücü modülü ya da motor sürücü kullanmanız gerekir. Dönüştürücüyü bu sürücülerin kontrol girişine giden sinyal için kullanabilirsiniz.

UART haberleşmesinde lojik seviye dönüştürücü gerekir mi?

Genellikle yalnızca 5V'tan 3,3V'a giden hatta gerekir. 5V modülün TX çıkışı ESP32'nin RX girişine giderken seviye düşürülmelidir; bunun için gerilim bölücü ya da dönüştürücünün bir kanalı yeterlidir. ESP32'nin TX çıkışı ise 5V modülün RX girişine çoğu zaman doğrudan bağlanabilir. Yine de modülün veri sayfasındaki giriş eşiğini kontrol etmek en güvenli yoldur.

Bir modülde kaç kanal kullanabilirim?

Dört kanallı bir modülde dört bağımsız sinyal taşıyabilirsiniz; her kanal ayrı çalışır ve kullanılmayan kanallar boş bırakılabilir. I2C için iki kanal (SDA ve SCL) yeterlidir. Kalan iki kanalı bir kesme (interrupt) pini ya da sıfırlama (reset) hattı için kullanabilirsiniz. Daha fazla sinyal gerekiyorsa ikinci bir modül ekleyin; beslemeleri ve GND'yi ortak bağlamayı unutmayın.

3,3V sensör 5V Arduino'ya doğrudan bağlanır mı?

Besleme açısından sensör 3,3V pinine bağlanmalıdır; sinyal hatları için ise duruma bakmak gerekir. Sensörün çıkışı Arduino'ya doğru gidiyorsa ve Arduino 3,3V'u HIGH olarak okuyabiliyorsa çalışabilir. Ancak Arduino'nun sensöre gönderdiği 5V'luk sinyal 3,3V sensörü zorlar. I2C sensörlerde Arduino'nun dahili pull-up dirençleri de devreye girebileceği için dönüştürücü kullanmak güvenli seçimdir.

Özet

  • Lojik seviye dönüştürücü, 3,3V ve 5V devreler arasında dijital sinyalleri güvenle taşır.
  • BSS138 tabanlı modül çift yönlüdür ve I2C için en pratik çözümdür.
  • HV pini 5V'a, LV pini 3,3V'a bağlanır; GND mutlaka ortak olmalıdır.
  • Yalnızca 5V'tan 3,3V'a giden tek yönlü sinyallerde 1 kΩ ve 2 kΩ'luk gerilim bölücü yeterlidir.
  • Dönüştürücü güç ya da analog sinyal taşımaz; motor ve röle sürmek için kullanılmaz.

Bu yazıdaki ürünler

Diğer yazılar