Çift yönlü 5v-3.3v seviye değiştirici var mı?


27

3.3V Giriş / Çıkış'ı 5V Çıkış / Giriş'e bağlayan herhangi bir IC var mı? Öncelikle Arduino Due için ihtiyacım var, ancak böyle çalışan iki yönlü bir IC varsa harika olurdu.

Bazı insanlar SN74AHC125 ve CD4050 IC'lerini kullanmamı önerdiler, ancak nasıl çalıştıklarını ya da onlarla nasıl etkileşeceklerini anlamıyorum.


2
Amaçlanan frekans aralığı nedir?
alexan_e

1
Örneğin 5V cihazı bir 3.3V arduinoya bağlamak istediğimi varsayın. 5V çıkışını ve 3.3V girişini nereye bağlayacağımı bulamadım. Ve bir arduinodan örneğin 5V'luk bir cihaza 3.3V vermeyi ne dersiniz? Frekans aralığı ile ne demek istiyorsunuz?
3bdalla

1
Amacım olduğundan emin değilim, daha önce frekanslarla uğraşmadım, amacım basit elektronikler için: |
3bdalla

3
sparkfun'un bir panosu var, 'seviye çeviricisi'
geometrikal

1
Genellikle ben IC'leri texas enstrümanlarından kullandım. TXS ve TXB serisinde çift yönlü voltaj çeviricileri bulunur (örneğin, TXS0102 iki kanala sahiptir)
frarugi87

Yanıtlar:


44

Tek bir N-mosfet ile çok basit bir çift yönlü seviye tercümanı yapılabilir:

görüntü tanımını buraya girin

Kullanılan mosfet düşük Vgs eşiğine sahip bir model olmalıdır, böylece istenen giriş voltajı seviyesinde (bu durumda 3.3v) nispeten düşük bir Rds-ON (ON direnci) olabilir.
Bu gibi bir örnekte BSS138 , 1.5 V maks.

Gösterilen örnek 3.3v <-> 5v çeviri kullanır, ancak 2.5v <-> 3.3v veya 2.5v <-> 5v ile, 2.5v <-> 12v arasında da çalışabilir. Menzil sadece kullanılan mosfet'in özellikleri ile sınırlıdır.

Gösterilen devre NXP’den bir uygulama notuna dayanmaktadır.
AN97055 I2C-Bus ve diğer sistemler için çift yönlü seviye değiştiriciden
Yeni kısa versiyon: AN10441 I2C-Bus tasarımında seviye kaydırma teknikleri

L1 yüksek olduğunda (3v3) veya yüzer R1 mosfet'i uzak tutar, böylece R2 boşaltma tarafını yukarı çeker (5v'ye).

L1 aşağı çekildiğinde mosfet iletilir ve drenaj düşer.

H1'e düşük bir seviye (0) uygulandığında, bu voltaj substrat diyotundan kaynak tarafına (L1) aktarılır.

Lütfen, direnç boyutunun hızı etkileyebileceğini unutmayın ( görüntü kaynağı )

görüntü tanımını buraya girin

Alternatif transistör çözümü görüntü tanımını buraya girin


Faydalı bulabileceğiniz ilgili makaleler:


11

Soru, çift yönlü seviye kayması sağlayan bir IC'ye yönelik göründüğü için, Texas Instruments TXB010x parça ailesini düşünün: TXB0102'de 2 kanal var, TXB0104'de 4 kanal var ve TXB0108'de 8 kanal var.

Bu IC ailesinin öne çıkan özelliği, sinyal yönünün otomatik olarak algılanmasıdır, bu nedenle ayrı bir yön ayar pimi gerekli değildir.

10 MHz'e kadar anahtarlama hızları güvenilir şekilde çalışır. Teorik maksimum hız daha yüksek olabilir - veri sayfaları bu konuda belirleyebileceğimden açık değildir.

3.6 Volt MSP430 Launchpad ve 5 Volt Arduino Nano arasında çalışan bir TXB0108 var, bu yüzden sorunun kullanım durumu ele alınmıştır.

Denemek amacıyla Adafruit bir amacıyla Adafruit , size bir SMD parçasını lehimleme zorunluluğunu ortadan kaldıran TXB0108'i içeren önceden oluşturulmuş bir modül . 0102 ve 0104 için onlardan veya başkalarından benzer seçenekler olabilir.

8 kanallı Çift Yönlü Mantık Seviyesi Dönüştürücü - TXB0108

Amaç, TXB serisi IC'lere ideal olarak uygun olmayan bir I2C sinyalini seviye kaydırma yapmaksa, I2C'nin çekme direncine ve açık kollektör topolojisine özel olarak hitap eden bir seçenek bu gibi bir modüldür tekrar Adafruit tarafından satılan, ve diğer satıcılar.

I2C seviye değiştirici

Bu modül, BSS138 MOSFET s 'i alexan_e tarafından verilen cevapta açıklandığı şekilde kullanır . Sorulduğu gibi tek bir IC olmasa da, amaçlanan amacı yerine getirebilir. Alternatif olarak, MOSFET'leri kullanarak bu devreyi kendiniz kurmak basittir.


+1 Güzel bul! ... TXB0102’ye bağlantınız aslında TXS0102’dir. Farkı tespit etmedim, ancak bu TXS0102'nin veri sayfasında belirtiliyor: "Birincil hedef uygulama kullanımı, I2C veya 1-wire gibi veri giriş / çıkışlarında açık tahliye sürücüleri ile arayüz oluşturmak içindir çift ​​yönlüdür ve kontrol sinyali mevcut değildir. TXS0102, itmeli-çekmeli sürücünün I / O verilerine bağlı olduğu uygulamalarda da kullanılabilir, ancak TXB0102 bu itmeli-çekmeli uygulamalar için daha iyi bir seçenek olabilir. " İşte TXB0102
Tut

@Tut Oops, slip-up, teşekkürler. Kendi ihtiyaçlarım TXB0108 tarafından karşılandı, bu yüzden diğerleri benim için "bilmesi güzel". :-)
Anindo Ghosh

10

Dikkate almanız gereken bir diğer şey, aslında seviye değiştirmeye ihtiyacınız olup olmadığıdır. Çoğu cips, 3.3 gibi daha düşük bir voltajda çalışırken bile 5V toleranslı giriş pinlerine sahiptir. Atmega CPU ayrıca bir arduino için bir mantık yüksek olarak 0.6 * Vcc veya 3V üzerindeki herhangi bir şeyi yorumlar, böylece bir 3.3V sinyali doğrudan bir seviye kayması olmadan bir arduino pinini çalıştırabilir.

Bir 5V arduino kullandığınızı ve bir parçanın 5V toleranslı girişleri varsa (bugünlerde çoğu kişi yapıyorsa) 3.3V'lık bir bölümle konuşmanız gerektiğini varsayarsanız, sadece bunları bağlayın ve çalışacaktır. Çift yönlü hattınız, cihazın sadece hattı alçalttığı i2c gibi açık bir kollektör tasarımıysa, çekme dirençlerini 5V yerine 3.3V'a takmanız yeterlidir;

Aksi halde yapmanız gereken tek şey hattın 3.3V'un üzerine çıkmadığından emin olmaktır, bunu bir direnç ve zener ile yapabilirsiniz, arduino hattına bir direnç ve ardından gerilimi 3.3V'a bağlamak için bir zener kullanın. (kaynak: repetae.net )zener direnç kelepçesi

Tehlikeli yaşamaya özendirmek ve sadece 10k direnç ve başka bir şey kullanmak istemezsiniz. Bunun (bazen!) Çalışmasının nedeni, aşırı gerilimi vcc veya 3,3V'a düşüren alıcı çipin içinde bir kenetleme diyodunun olmasıdır. Tüm 3.3V hattını 5V'a kadar çekmeye çalışırsanız (bu hattın 5V'a çekilmesinin neden olduğu herhangi bir hasara ek olarak) bu diyot yanacaktır, ancak rezistör ile çok fazla akım akmaz ve 3.3V hattınız varsayar. üzerinde önemsiz olmayan bir yüke sahip olması, güç hattınızın seviyesini büyük ölçüde değiştirmez ancak çok fazla uyarı vardır. Bu nedenle, genel olarak, yerel, yalıtılmış bir 3.3V otobüsünüz yoksa ve zener için ekstra iki kuruş ayıramazsanız, bunu yapmayın. Sadece bahsettiğim için, ebay'a taktığınız ve ucuz kopyalanacak kir tahtaları için şemalarda göreceksiniz. sadece breadboard'dan geçerek bir üretim tasarımına girmesine izin vermeyin. :)

Düzenleme yeni 3.3V arduino kullandığınızı fark etti, bu yüzden yukarıda söylediklerimi tersine çevirin, zener rezistans hilesi hala işe yarayacak, ancak sonuçta i / o satırlarının bazıları 5v toleranslı olabilir, ancak bazı anlaşmazlıklar görünse de forumlarda. Teensy 3.1 aynı zamanda 5V toleranslı tüm pinlere sahip küçük bir ARM kartıdır ve gerekli ve daha iyi tasarlanmış IMHO’nun maliyetinin yarısından daha azdır http://www.pjrc.com/store/teensy31.html


3

Ucuz [er?] Çözüm departmanından, FET (NXP apnesi temelinde kabul edilen cevaptan), BJT ve Schottky diyotu ile Silikon Labs AN883'te olduğu gibi değiştirilebilir . Şemaları diğer şeylerle biraz karışık, bu yüzden temel parçayı burada açtım ve yeniden yönlendirdim, böylece iki şemanın kolay karşılaştırılması için kabul edilen cevabına benziyor:

görüntü tanımını buraya girin

BJT sadece düşük-yüksek yöne çeviriyor ... aynen Tek transistörlü seviye değiştiricide tartışıldığı gibi . Schottky, yüksek> düşük çeviri için FET'in vücut diyotunun yerini alır.

Aşağıda 3.3 <-> 1.8V tercüman için kapsam ölçümlerinin yakınlaştırılmış halleri verilmiştir; ayrıca bu şemayı 5 <-> 1.8V çeviri vb. için önermektedirler. 3.3 <-> 1.8V çeviri yaparken bir MMBT3904 sadece 150mV (doygunluk) düşüşe sahipti. BAS40 diyotunun tersi yönde 350mV düşüş vardı. Bu ofsetler (açıkçası) tercümanın alçak ve sırasıyla yüksek tarafındaki mantık-düşük seviye çıktısını etkiler.

görüntü tanımını buraya girin

Her iki tarafta da CMOS aygıtları vardı, bu yüzden giriş empedansı çok da önemli değildi. Mantık-yüksek marjların 1V / div izlerinde gözle görülür bir bozulma / dengeleme olmadı, bu yüzden buraya dahil etmekten rahatsız olmadım. Cihazlarının giriş empedansı bir simülasyondan anlatabildiğimden en az 1Mohm idi. Lojik-yüksek marjlar 100K giriş empedansının altına düşmeye başlar.

Ayrıca, bu BJT-bazlı tercümanı sadece 300KHz'e kadar falan tavsiye ediyorlar.

Bu çözümlerden hangisinin pratikte daha ucuz olduğundan emin değilim, FET veya Schottky + BJT ... ama PZMT1101 gibi var olan diyot + transistör paketlerinden birini kullanmazsanız, bunun kesinlikle daha fazla parçaya ihtiyacı var . Ama aynı zamanda 3 rezistansa ihtiyacınız var.


FET tabanlı yönteme kıyasla bu yöntemin beklenen akım çekme / güç tüketimi nedir?
KyranF,

@KyranF: Onları karşılaştırmamıştım, ama eğer endişeleniyorsanız, ikisini de çekip çekmediği için pembe olmayacaksınız. Düşük güçlü CMOS sürümleri , m.eet.com/media/1103155/Fig2.gif gibi görünmektedir. Bu , çeşitli yaklaşımları karşılaştıran iyi bir makale olan eetimes.com/document.asp?doc_id=1231111 adresinden geliyor .
Fizz

Bağlantılar için teşekkürler. BJT yaklaşımının, bazın doygun olduğu zamanlara kıyasla çok yüksek güç olacağından şüpheleniyorum. Çekme dirençlerinin sabit yükü gerçekten herhangi bir tasarım, özellikle de pille çalışan tasarımlar için endişe vericidir.
KyranF

@KyranF: Simülasyonda ona baktım: transistör ve diyot, dirençler mW'yi dağıttığı zaman uW'yu dağıtır. Aslında BJT, 100uW, diyot 1uW civarında yayılır. FET veya BJT burada önemli değil ... statik dağılım için toprağa giden dirençler. Bu 1Meg giriş empedansları ile.
Fizz

@KyranF: ON'un BSS138LT1 modelini kullanmayı denedim, ancak bu LTspice'de (-63uW) negatif ortalama güç kaybı veriyor ... bu yüzden onların modellerinin sorunlu olabileceğini düşünüyorum. Çöp içeri çöp dışarı. Ayrıca, yüksek taraftan sürüldüğünde salınmaya (sinyalden çok daha yüksek bir frekansta) başladı. Basit bir MOS modelinden ziyade bir batık modeldir, bu yüzden neler olduğunu anlamak zor. [devam]
Fizz 19




1

En basit çözüm tüm devrelerinizi 3.3V'ta çalıştırmaktır. HC cipsleri bu seviyede mutlu bir şekilde çalışacaktır.

Bu mümkün olmadığında, kendinizi bir yöne kısıtladığınızda işleri çok daha basit hale getirebilirsiniz. 5V’daki bir HCT çipi sadece 3.3V seviyelerini iyi kabul eder ve basit bir iki dirençli bölücü 5V’i 3.3V’a düşürebilir. Bazı uC'ler pimlerine 5V toleranslıdır, böylelikle bölücüye ihtiyacınız yoktur. Ve eğer pinlere 5V çekme koyarsanız ve toprak ile açık (= giriş) arasında geçiş yaparsanız, geçirgen bir 0-5V çıkışa sahip olursunuz.

Açık kollektör otobüsleri bağlamak için (I2C, dallas 1-wire) BS138 numarası bir yoldur. İki FET'i bir yuvaya yerleştiren I2C için küçük çipler var. (PCA9306 vb.)

Ancak gerçekten iki aşamalı çeviri istiyorsanız: bu tür fişler var, örneğin TXB0108'i kontrol edin.


-4

Basit bir çözüm SN74LVC244AN kullanıyor. 3V3 ile çalıştırılabilir ve girişlerde 5V toleranssızdır.


5
Bu çift yönlü değil.
Matt Young

Hayır, ancak 74LVC4245'tir.
Bregalad
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.