Ads_700x200

czwartek, 7 maja 2015

KONWERTER poziomów 3,3V / TTL

Witam,

W związku z ogromnym wysypem ostatnimi czasy pytań i przeróżnych (dodam przedziwnych) niejednokrotnie pomysłów na konwersję napięć dla takich magistral prostych jak I2C albo UART pomiędzy dwoma urządzeniami zasilanymi różnym napięciem - postanowiłem opublikować na blogu w końcu schemat, albo schematy. No bo prościej już się nie da, a działa to niezawodnie i pewnie nawet na dla dużych transferów danych. W przypadku I2C spokojnie do 400 kHz i więcej, w przypadku zaś UART do 250000 bodów! Pomimo iż są to na prawdę znane rozwiązania, pomimo to, że jest ich pełno w internecie - to nie wiadomo wręcz skąd początkujący zawsze akurat znajdują tzw potworkowate rozwiązania. Nie będę pokazywał tutaj tych potworków aby nie mieszać w głowach - za to zaprezentuję jak można to zrobić tanio, dobrze i szybko. Nawet na płytce stykowej, nawet biorąc pod uwagę tylko elementy przewlekane, gdyby ktoś nie miał SMD albo nie potrafił lutować SMD, albo po prostu chciałby sobie to złożyć na zwykłej płytce stykowej na szybko.



Poniżej mega popularny schemat .... proponuję go stosować gdzie się da:

UWAGA! SOURCE (czyli źródło) tranzystora ZAWSZE podłączamy po tej stronie gdzie mamy niższe napięcie (na rysunkach niżej lewa strona). Natomiast DRAIN (czyli dren) tranzystora podłączamy po stronie wyższego napięcia. 



Jak widać można go stosować zarówno do I2C ale także do transmisji UART (RS232) .... a także wielu innych - np SPI i jeszcze innych. Zawsze bezpieczna i pewna metoda. Oczywiście można się tym posłużyć nawet dla innych zakresów napięć po obu stronach, nie tylko dla 3,3V i tylko dla 5V. Równie dobrze po jednej stronie może być napięcie np 1,8V a po drugiej 3,3V. Tylko w takim wypadku (szczególnie gdy mamy do czynienia z tak niskim napięciem jak 1,8V należy zmniejszyć po tej stronie rezystory podciągające do wartości nawet kilkaset ohm. W ogóle rezystory podane na schemacie można dobierać wg potrzeb. Najlepiej gdy mamy oscyloskop i w przypadku pracy z granicznie wysokim prędkościami - warto je czasem zmniejszyć do np 2,2K albo i 1K w miarę potrzeb.

-------------------------------------------
JAK TO DZIAŁA ?

rozpatrzymy górny schemat (po lewej RX a po prawej TX).  

R1, R2, R3 i Q1

1. tranzystor jest cały czas spolaryzowany napięciem dodatnim a więc WCIĄŻ PRZEWODZI (co w tym akurat przypadku nie jest istotne - jeśli omawiamy jednokierunkową transmisję Tx do Rx)

2. linia RX jest podciągnięta do VCC więc mamy wymuszony stan wysoki
3. jeśli na pinie TX jest stan NISKI to przewodzi wbudowana dioda i na RX też jest stan NISKI
4. jeśli na pinie TX jest stan WYSOKI to nie ma znaczenia ani tranzystor ani dioda, ale na RX też będzie stan WYSOKI dzięki temu że istnieje rezystor podciągający R2. Stan wysoki w standardzie 3,3V

weźmy pod uwagę dolny schemat (po lewej TX a po prawej RX). 

R4, R5, R6 i Q2

1. tranzystor jest cały czas spolaryzowany napięciem dodatnim a więc WCIĄŻ PRZEWODZI

2. linia RX jest podciągnięta do VCC więc mamy wymuszony stan wysoki
3. jeśli na pinie TX (po lewej) jest stan NISKI a tranzystor wciąż PRZEWODZI to co? to na pinie RX (po prawej) mamy także stan NISKI (dioda nie bierze udziału)
4. jeśli na pinie TX (po lewej) jest stan WYSOKI, to znowu tranzystor jest nieistotny, dioda też nieistotna - a na pinie RX (po prawiej) występuje stan WYSOKI dzięki temu że jest rezystor podciągający R6, i to stan wysoki TTL.

REASUMUJĄC - z opisów powyżej jasno wynika , że jest to układ DWUKIERUNKOWY, dzięki czemu może działać na takiej linii jak SDA (bo ona jest przecież linią przesyłającą dane w dwie strony)


-------------------------------------------

Przy okazji jeśli chcemy stosować konwersję TYLKO I WYŁĄCZNIE na potrzeby UART to schemat można jeszcze bardziej uprościć ku uciesze zapewne początkujących konstruktorów ;) Proszę bardzo rzućcie okiem poniżej:



Prawda, że zrobiło się miło ? ;) od razu mniej elementów czyli w tym wypadku rezystorów - więc mniej możliwości popełnienia błędu i większa jeszcze niezawodność działania. A gdyby tak iść na całość i zupełne ograniczenie na maxa - można nawet pozbyć się rezystorów sterujących tranzystorami - ponieważ są to mosfety sterowane napięciowo ;) czyli coś takiego:



Naturalnie dla schematu na samej górze także można się pozbyć w razie usilnej potrzeby uproszczenia do testów - tych rezystorów i zamiast użycia 6 sztuk wyjdą nam tylko 4 ! ;)

Przy okazji jak widzicie na schemacie pokazałem wam tranzystory BSS138 - warto się w nie zaopatrzyć i mieć je zawsze pod ręką. Tyle że są to tranzystory SMD, więc do stykówki nadają się jak pięść do oka ;) .... ale co za problem ? podałem wam też na każym schemacie odpowiednik tranzystora przewlekanego w obudowie TO92 ! więc taki już do stykówki się nadaje. Także wato się w nie zaopatrzyć ... zawsze się przydadzą - zamiast np tranzystorków NPN ;) Można powiedzieć, że są to wręcz ich odpowiedniki tyle że wykonane w innej technologii.

------------------------------------------------------------------
To tyle - chociaż hmmm mówiłem na początku, że nie pokażę wam koszmarków - ale nie mogę wytrzymać - spójrzcie co ludzie potrafią wymyślić ;) - pokażę tylko schemat ... wprawdzie użyto tranzystorów BSS138 i super, wprawdzie jest to konwerter aż dwu-kanałowy - super .... ale nagle ! BABOL !... dla linii TX konwersja na tranzystorze a dla RX na ???? .... na dzielniku rezystorowym - masakra ... Wystarczy sobie porównać przebiegi sygnałów na oscyloskopie wtedy na tych dwóch liniach. Owszem - może dla ślimaczych prędkości uart np 240 bodów to się sprawdzi :) (troszkę przesadzam sprawdzi się to pewnie nawet dla 9600, ale kto wie co będzie z większymi - poza tym jak już robić taką kosmiczną płytkę to po co oszczędzać na tak małych i tanich tranzystorkach - kosztem tragicznego pogorszenia się sygnału :( W efekcie końcowym jak się uprzeć to można skorzystać z tego dwukanałowca jako z jednokanałowca i będzie ok ... tylko czy jest sens tak robić ?



Inny przykład koszmarka, który wprawdzie będzie działać - jakby z technicznego punktu widzenia nie ma jakichś wad - ale jak się spojrzy z kolei na ilość elementów - to aż dreszcz przechodzi po plecach , udach , kostkach i podeszwach ;)



Jedyne wytłumaczenie dla tego koszmarka to ew fakt, że użyte zostały tutaj zwykłe tranzystory bipolarne a nie mosfety. Czyli niektórzy mogą powiedzieć, że nie mają mosfetów a za to dużo wala im się po szufladach zwykłych tranzystorów no to proszę - nie ma sprawy - wtedy można korzystać z rozwiązania dla masochistów ;) Ja bym wolał sobie kupić 2N7000 ;) albo BSS138.


38 komentarzy:

  1. Do konwersji dla rs'a chyba też dobre byłoby użycie transoptora. Dobrze myślę?

    OdpowiedzUsuń
    Odpowiedzi
    1. No jeśli ktoś chce mieć pełną izolację galwaniczną to pewnie że można zastosować optoizolację, ale trzeba użyć porządnych optoizolatorów np takich:

      https://www.sklep.atnel.pl/pl/p/6N137/52

      bo na CNY17 to pójdzie w porywach prędkość 9600 a i to nie zawsze

      Usuń
  2. Wyborny artykuł.

    OdpowiedzUsuń
  3. Bardzo fajny i prosty układ.Można się pokusić i zmontować na PCB
    W razie potrzeby zawsze będzie pod ręką taki mały modulik .

    OdpowiedzUsuń
  4. Pierwszy schemat (I2C na mosfetach), a ostatni (I2C na bipolach), to raptem różnica 2 tranzystorów, więc z masochizmem bym nie przesadzał. Rozwiazanie na mosfetach jest dobre, ale mniej ekonomiczne i dostępnością jest różnie, chociażby w szczecińskim sklepiku BSS niedostępne, a 2N7000 za 1zł. BC są wszechobecne (ma je chyba każdy na stanie) no i 3-4krotnie tańsze od BS. Chociaż przy groszowych sprawach ma to mniejsze znaczenie...

    OdpowiedzUsuń
    Odpowiedzi
    1. Dla mnie jednak pozostanie to masochizmem ;) (oczywiście piszę to z przymrużeniem oka) .... w porównaniu do dwóch tranzystorów mosfetów i 4 rezystorów. I to bez dwóch zdań masochizmem ;)

      A argumenty, że nie ma tranzystorów w sklepiku elektronicznym tuż "za rogiem" ... sorki ... ale to jakby z zamierzchłych czasów. Aż ciężko się do tego odnieść.

      Usuń
    2. Wdług mnie, to na dzisiejsze czasy używanie BC (w pewnych rzeczach - czyli w elektronice analogowej ;) ) to masochizm :) a jeżeli chodzi o cene to wystarczy trochę chęci: https://goo.gl/5nzi4r
      i za 100szt masz 10.33PLN wg dzisiejszego kursu dolara

      Usuń
  5. Mirku Art warty zapamiętania po wsze czasy :) Prosty, łatwy w implemetacji na PCB - od dużych dedykowanych scalaków - szczególnie gdy zależy nam na miniaturyzacji układu.
    Mam tylko dwa pytania. Po pierwsze czy ten górny BSS na schemacie nie powinien być odwrotnie podłączony? Czy nie ma to znaczenia - brak doświadczenia. Drugie pytanie, czy taką konfigurację tranzystorów można połączyć i zrobić z niej transmisję dwukierunkową?
    I oczywiście pozdrawiam i dziękuję za wkład w społeczeństwo i niesienie wiedzy - przystępnie i konkretnie

    OdpowiedzUsuń
    Odpowiedzi
    1. Spróbuj przeanalizować jak działa taki BSS138 ;) on działa tutaj DWUKIERUNKOWO ;) a nie jednokierunkowo ;)

      Raz działa tranzystor a w drugą stronę dioda która jest w środku. Więc niezależnie którą stroną podłączysz to zawsze zadziała poprawnie w dwóch kierunkach ;)

      Usuń
  6. Ktory z parametrow tranzystora jest w tym rozwiazaniu kluczowy i jaka powinien miec wartosc? (pomocne w szukaniu zamiennikow)

    OdpowiedzUsuń
  7. A czy to rozwiązania można by zastosować do 1Wire (długie kable ) ??

    OdpowiedzUsuń
  8. Ja używam 74lvc125 i nie mam żadnych kłopotów. Polecam te układziki. Co ciekawe używam ich też gdy mam kilka źródeł sygnału RS ,np. dwa urządzenia nadające i jeden odbiornik w postaci uP. Wtedy można sobie przełączać te bramki za pomocą wejścia sterowania i wybierać to co chcemy odczytywać. Pozdrawiam.

    OdpowiedzUsuń
    Odpowiedzi
    1. No to już rozwiązanie "z wyższej półki" ;) naturalnie .... Też polecam

      Usuń
  9. Mirku super artykuł jak zawsze, jednak mi dla początkującego brakuje jeszcze rozwinięcia jak to działa dokładnie od strony elektronicznej tzn już tłumaczę o co mi chodzi. Np schemat pierwszy: Mamy od strony prawej przy SDA podciągnięcie pull up do 5 V. następnie tranzystor mosfet którego bramka jest sterowana rezystorem 4.7 K i teraz jest to sprzężenie zwrotne R2? nie rozumiem również jak tranzystor może przepuszczać w jedną i drugą stronę? Ja z mojej małej wiedzy wiem, że mosfet działa tak, że od drenu do źródła przepuszcza prąd, a od źródła do drenu na jakiej zasadzie? za to jest odpowiedzialna to dioda w schemacie tranzystora? mam nadzieje, że za bardzo nie zagmatwałem o co mi chodzi;) i jeszcze raz wielki podziw dla Ciebie Mirku!;)

    OdpowiedzUsuń
    Odpowiedzi
    1. No to zobacz jeszcze raz wyżej - na czerwono opisałem zasadę działania - może teraz będzie jaśniej ? Daj znać.

      Usuń
  10. Dzięki Mirku, po pracy przeanalizuje i będę pytał w razie nie jasności, miłego dnia!;)

    OdpowiedzUsuń
  11. Mirku dalej nie rozumiem, ale przechodzę na forum z pytaniami, bo dodam od razu obrazki jak ja to rozumuje;) pozdrawiam!

    OdpowiedzUsuń
  12. Zamiast 2N7000 można użyć BS170?

    OdpowiedzUsuń
    Odpowiedzi
    1. Nie wiem - trzeba zajrzeć do noty PDF i porównać - ja nie jestem omnibusem i nie pamiętam na pamięć wszystkich not PDF wszystkich elementów elektronicznych na świecie :(

      Usuń
  13. Może się wypowiem co do podzielnika na rezystorach. Mam tak podłączone procesory (5V) z pamięciami równoległymi (3,3V) oraz z przetwornikami audio (2,7V). Działa to na prędkościach rzędu 16MHz. W dodatku działa w dwie strony (z 5 na 2,7 przez podzielnik, a z powrotem sygnał obciążony rezystorem do masy (2,4k do 2,7k dla 2,7V i 1,5k do 4,7k dla 3,3V) wykorzystana właściwość portu procka, tak więc zanim złapiecie się za głowy to może najpierw sprawdźcie w praktyce (urządzenia działają od wielu lat bezawaryjnie i jest ich zamontowanych aktualnie w setkach sztuk - tak więc nieźle). Nie polecam, ale jeśli miejsce ma priorytet nad finezją, to dwa rezystory na linię mają znaczenie.

    OdpowiedzUsuń
    Odpowiedzi
    1. Tak to właśnie jest jak ktoś mówi "a mi to działa" ;) .... no to jak ci działa to stosuj ;) .... Nie zawsze warto patrzeć na wszystkie zagadnienia tylko przez czubek własnego nosa - jak to się mówi. Jak ktoś chce zrobić porządnie to zrobi to tak jak się należy .... na pewno nie dzielniki rezystorowe ... Zamiast dyskutować i teoretyzować weź pan oscyloskop w rękę i porównaj sobie co się dzieje ze zboczami na dzielnikach a jak wyglądają zbocza na bramkach logicznych albo nawet z tymi tranzystorami, wtedy sam zrozumiesz.

      Usuń
    2. Owszem sprawdzałem i sam byłem zdziwiony, ze jest tak dobrze. Może to specyfika układów, które akurat są używane. Na tranzystorach na pewno jest lepiej i na pewno ma to znaczenie na większych częstotliwościach. Pozdrawiam

      Usuń
  14. Nie jest prawdą, że: "1. tranzystor jest cały czas spolaryzowany napięciem dodatnim a więc WCIĄŻ PRZEWODZI". W spoczynku, czyli kiedy po obu stronach panuje 1 logiczna lub jak kto woli napięcie dodatnie, tranzystor jest zatkany, a więc umożliwia separację napięć. Gdyby tranzystor był w tej sytuacji otwarty napięcie wynikowe byłoby gdzieś pomiędzy 3,3V a 5V, a przecież nie o to chodzi, przynajmniej dla strony, która działa na 3,3V, której górny próg napięcia to właśnie owe 3,3V i podobno lepiej go nie przekraczać. ;)

    OdpowiedzUsuń
  15. PCA9509 - lub podobne wydają się być odpowiednimi układami do konwersji

    OdpowiedzUsuń
  16. Czy można użyć układu 74LVC125 dla modułu RFM69CW tak jak dla karty pamieci microSD?

    OdpowiedzUsuń
  17. Chciałem zapytać, czy mógłby ktoś mi tutaj dokładniej wyjaśnić od strony elektrycznej jak to się dzieje, że przy stanie niskim na TX po drugiej stronie tranzystora na RX też pojawia się stan stan niski skoro cały czas jest on podciągnięty do "swojego" napięcia?

    OdpowiedzUsuń
    Odpowiedzi
    1. tranzystor, dioda - prąd nie płynie od napięcia niższego do wyższego

      Usuń
  18. Witam, chciałem zapytać, czy mógłby ktoś mi wytłumaczyć od strony elektrycznej jak to się dzieje, że przy stanie niskim na TX, po drugiej stronie tranzystora na RX też jest stan niski mimo, że jest on cały czas podciągnięty do "swojego" napięcia?

    OdpowiedzUsuń
  19. Witam,

    bardzo przydatny konwerter. Mam pytanie, czy można nim zastąpić bufor 74LVC125 przy dopasowaniu napięć w modułach RFM69? Akurat te moduły są dość wymagające, jeśli chodzi o poziomy napięć, próby z innymi podobnymi rozwiązaniami się nie sprawdziły, ale ten wygląda dość sensownie. Jednak nie mam pewności, czy można go "ożenić" z RFM69.

    OdpowiedzUsuń
  20. Sprawdzone i niestety, ale działa to tylko połowicznie. Przygotowałem dwa moduły RFM69 z takimi konwerterami napięć, dla sprawdzenia jak będzie wyglądała komunikacja odczytywałem zdalnie temperaturę i już na wstępie pojawił się problem, bo odczytane wartości były niepoprawne. Pomiar wynosił np. 20*C a odbiornik odbierał wartość 8*C. W drugim podejściu w odbiorniku pozostawiłem ten sam moduł z takim konwerterem, ale w nadajniku zrobiłem wymianę na moduł RFM69 z konwerterem wykonanym na buforze 74LVC125 i tym razem już było OK. Z tego można wysnuć wniosek, że przy nadawaniu tak wykonany konwerter nie wyrabia się i przesyłane dane są błędne. Czy ktoś ma podobne doświadczenie?

    OdpowiedzUsuń
    Odpowiedzi
    1. Przepraszam ale kolega opowiada TAKIE bzdury że aż strach - no strach ;) No gorszych bzdur to się nie da wymyślić. Pomijam już fakt, że gdyby nawet miał być problem z takim konwerterem - to już opowiadanie bzdur, że zamienia on temperaturę z 20 na 8 ... to jakaś mega FANTASMAGORIA

      Dla twojej wiedzy panie kochany - tego typu konwersję stosujemy wiele razy w naszych projektach dla SPI ...

      Ty zaś nie potrafisz wysnuwać właściwych wniosków bo ja na twoim miejscu szukałbym błędu - tzn gdzie go zrobiłem ... a ty wolisz wymyślać dziwolągi ;)

      Usuń
  21. Taka fantasmagoria wymagać więc będzie dalszej analizy żeby pokonać tego dziwoląga, którego wymyśliłem :) Gdzieś będzie błąd. Dziękuję za odpowiedź na moje bzdury ;)

    OdpowiedzUsuń
    Odpowiedzi
    1. Proponuję podciągnąć linię CS modułu rezystorem 10K do VCC

      Usuń
  22. można to użyć z 12V na 3.3V UART?

    OdpowiedzUsuń