Co jakiś czas natrafiam na pytanie „Czy można połączyć ze sobą wyjście (wejście) układu pracującego w logice 3,3 V z wejściem (wyjściem) układu pracującego w logice 5 V?”. Jak to w inżynierii (i nie tylko) bywa odpowiedź brzmi: „To zależy”. W tym artykule spróbujemy usystematyzować sobie trochę wiedzę na ten temat i sprawdzić jakie mamy możliwości „pożenienia” ze sobą układów cyfrowych pracujących z różnymi napięciami zasilania.

Czy można podłączyć wyjście układu z niskim napięciem do wejścia układu z wyższym?

Pierwsza, dobra wiadomość jest taka, że w takiej konfiguracji nie musimy się bać, że zniszczymy jeden z układów. Podłączając np. wyjście układu pracującego w logice 3,3 V do wejścia układu pracującego w logice 5 V nie będziemy dołączać do tego drugiego żadnych napięć spoza przewidzianego dla niego zakresu pracy. Odpowiedź na pytanie czy całość będzie pracowała poprawnie jest jednak trochę bardziej złożona.

Dołączanie wyjścia układu pracującego w logice 3,3 V do wejścia układu z logiką 5 V.

To co musisz sprawdzić to jaki jest tzw. próg przełączania układu wejściowego czyli przy jakim poziomie napięć stan logiczny na wejściu jest traktowany jako wysoki, a przy jakim niski. W „standardowych” układach CMOS jest to zwykle napięcie bliskie połowy napięć zasilania. Szczegółowe informacje można znaleźć w notach katalogowych układów. Zerknijmy np. do noty układu 74HC03, czyli zestawu czterech dwuwejściowych bramek NAND. Oznaczenie HC oznacza rodzinę bramek pracujących w standardzie CMOS. Z noty katalogowej wynika, że przy zasilaniu napięciem 4,5 V bramka będzie interpretować wszystkie sygnały o napięciu powyżej 3,15 V jako stan wysoki, a sygnały o napięciach poniżej 1,35 V jako niski. Może więc ona bez problemu być wysterowana wyjściem o poziomach napięć 0 i 3,3 V.

Fragment noty katalogowej układu 74HC03. Widać na niej, że przy zasilaniu układu napięciem 4,5 V napięcia powyżej 3,15 V są zawsze interpretowane jako stan wysoki, a napięcia poniżej 1,35 V - jako niski.

Podobnie, jeżeli zerkniemy na notę katalogową mikrokontrolera ATmega328P (używanego np. w płytkach Arduino Uno) to zobaczymy tam, że producent gwarantuje interpretację napięć wejściowych jako stanu wysokiego od wartości 0,6 napięcia zasilania, czyli 3 V przy zasilaniu 5 V. Możemy więc sterować wejście tego mikrokontrolera z wyjścia układu 3,3 V. Z drugiej strony układ pracujący np. z poziomami napięć 0 i 1,8 V nie da już rady wygenerować stanu wysokiego dla wejścia mikrokontrolera.

Podsumowując: sterowanie wejść układu o wyższym poziomie napięć przez układ o niższym poziomie jest możliwe pod warunkiem, że zapewnimy wymagany minimalny poziom napięcia dla danej konstrukcji wejścia.

Fragment noty katalogowej mikrokontrolera ATmega328P pokazujący poziomy napięć logicznych.

Czy można podłączyć wyjście układu z wyższym napięciem do wejścia układu z niższym?

Tutaj odpowiedź jest zdecydowanie bardziej skomplikowana. Jako przykład niech posłuży nam mikrokontroler STM32F411RE zasilany napięciem 3,3 V. W nocie katalogowej tego układu znajdziemy informację, że jego piny dzielą się na dwa rodzaje: TC (standard 3,3 V) i FT (5 V tolerant), a dozwolone maksymalne napięcia wejściowe dla tych pinów to 5,5 V (lub napięcie zasilania powiększone o 4 V – zależy, która wartość będzie mniejsza). Nasuwa się od razu pytanie – skoro można dołączać napięcie 5,5 V do pinów oznaczonych jako TC to czemu piny FT są specjalnie oznaczone jako „5 V tolerant”.

Dołączanie wyjścia układu pracującego w logice 5 V do wejścia układu z logiką 3,3 V.
Fragment noty katalogowej mikrokontrolera STM32F411RE. Zwróć uwagę na opisy różnych rodzajów pinów I/O.

Otóż piny oznaczone jako FT nie posiadają na wejściu układu diody zabezpieczającej przed zbyt wysokim napięciem. Tego typu diody wbudowuje się często w wejścia układów cyfrowych. Są one umieszczone między wejściem a szynami zasilania („plusem” i „masą”) tak, że w trakcie normalnej pracy układu są one spolaryzowane zaporowo. Termin „normalna praca” oznacza w tym przypadku, że napięcie na wejściu ma wartość pomiędzy zerem a dodatnim napięciem zasilającym.

Pojawienie się na wejściu napięcia niższego niż -0,5 V albo wyższego niż 0,5 V od napięcia zasilania układu powoduje, że jedna z diod zaczyna przewodzić prąd. Przepływ tego prądu przez wewnętrzną rezystancję źródła napięcia wejściowego powoduje jego spadek i chroni układ przed zniszczeniem.

Budowa pinów I/O typu TC w mikrokontrolerach STM32. Zwróć uwagę na diodę umieszczoną między pinem I/O a napięciem zasilania (VDD).
Budowa pinów I/O typu FT w mikrokontrolerach STM32. Zwróć uwagę na brak diody umieszczonej między pinem I/O a napięciem zasilania (VDD).

Problem polega na tym, że o ile układu nie zniszczy nadmiarowe napięcie, to może go zniszczyć zbyt duży prąd płynący przez diody zabezpieczające. Maksymalna dopuszczalna wartość tego prądu jest zwykle oznaczana w notach katalogowych jako „injection current” lub „clamping current”. Np. dla mikrokontrolera STM32F411RE jest to wartość 5 mA, a dla ATmega328P – 1 mA.

Fragment noty katalogowej mikrokontrolera ATmega328P. Prąd płynący przez diody zabezpieczające piny IO nie może przekroczyć wartości podanych jako "injection current".

Co to oznacza w praktyce? Otóż możemy podłączyć wyjście układu cyfrowego pracującego z poziomem wysokim 5 V do wejścia TC mikrokontrolera STM32F411RE ale poprzez rezystor ograniczający prąd. Obliczmy wartość tego rezystora. Napięcie na nim będzie wynosić mniej więcej 5 V – 3,8 V = 1,2 V. Wartość 3,8 V to napięcie przy którym zacznie przewodzić „górna” dioda przełączająca zakładając, że napięcie zasilania mikrokontrolera to 3,3 V. Żeby ograniczyć prąd do 5 mA potrzebny jest więc rezystor o rezystancji co najmniej 240 omów. Oczywiście nie chcemy stosować też rezystora dużo większego, gdyż spowoduje to obniżenie szybkości działania układu.

Jeżeli „odbiornik” sygnału cyfrowego nie ma wbudowanych diod zabezpieczających, możemy zastosować również dzielnik rezystancyjny, który zamieni napięcie 5 V na 3,3 V.

Rezystor ograniczający prąd płynący przez diody zabezpieczające gdy napięcie wejściowe przekracza napięcie zasilania układu.

Konwertery poziomów logicznych

Innym rozwiązaniem są tranzystorowe konwertery poziomów logicznych. Prosty układ tego typu można zbudować przy pomocy jednego tranzystora bipolarnego i dwóch rezystorów, tak jak na rysunku poniżej. Rezystor R1 ogranicza prąd bazy tranzystora do wartości dopuszczalnej dla układu wyjściowego (zwykle rzędu 20 mA). Zastosowanie tranzystora bipolarnego pozwala uzyskać przełączania już przy poziomie napięć na wyjściu „nadajnika” rzędu 0,7 V. Rezystancja R2 jest kompromisem między poborem prądu, a szybkością działania układu.

Prosty konwerter z odwracaniem poziomów logicznych.

Ten prosty układ ma jednak kilka wad. Pierwsza to wspomniany już pobór prądu. Druga – ograniczona przez rezystancję R2 szybkość przełączania układu ze stanu niskiego (przy włączonym tranzystorze) do wysokiego (przy wyłączonym tranzystorze). Ponieważ tranzystor nie przewodzi to pojemność wejściowa „odbiornika” może być przeładowana tylko przez rezystor R2, co wydłuża ten proces.

Trzecia wada to inwersja stanu logicznego na wyjściu. Gdy na wyjściu „nadajnika” panuje stan wysoki tranzystor przewodzi i zwiera swój kolektor prawie do potencjału masy. Gdy na wyjściu „nadajnika” pojawi się stan niski tranzystor się wyłączy, a napięcie na kolektorze będzie podciągnięte przez rezystor R2 do dodatniego napięcia zasilania. Widzimy więc efekt inwersji poziomów logicznych. Może to być problem szczególnie w sytuacji gdy układ ma służyć np. do transmisji przez UART gdzie wymagana jest określona polaryzacja sygnału. 

Lepszym rozwiązaniem jest układ z rysunku poniżej. Można go zbudować z elementów dyskretnych albo użyć w wersji scalonej (np. układ MAX3394E).

Wykorzystanie prostego konwertera poziomów logicznych. Układ jest w stanie zarówno obniżać jak i podwyższać napięcie w stanie wysokim.
Wykorzystanie scalonego konwertera poziomów logicznych MAX3394E.

Podsumowanie

Ten krótki artykuł nie wyczerpuje do końca tematu konwersji poziomów logicznych ale powinien wystarczyć do realizacji wielu projektów. Jak widzisz z problemem „niedopasowania” napięć pracy obu układów można sobie poradzić, ale wymaga to pewnego zrozumienia tego jak działają układy cyfrowe.

Maciej Kraszewski

Maciej Kraszewski

Inżynier, menedżer R&D i nauczyciel akademicki. Uwielbiam zajmować się tworzeniem nowych technologii, zdobywaniem nowej wiedzy i dzieleniem się swoim doświadczeniem z innymi. Specjalizuję się w zagadnieniach przetwarzania obrazu i widzenia maszynowego.
Szukasz dobrych materiałów o projektowaniu elektroniki?

Załóż darmowe konto na naszej platformie i odbierz pakiet materiałów edukacyjnych.

Zakładając konto zgadzasz się na przesyłanie Ci treści marketingowych przez IT20 sp. z o.o. zgodnie z dostępną na stronie Polityką Prywatności. Możesz wycofać zgodę w każdej chwili.

Dodaj komentarz

Szukasz dobrych materiałów o projektowaniu elektroniki?

Załóż darmowe konto na naszej platformie i odbierz pakiet materiałów edukacyjnych.

Zakładając konto zgadzasz się na przesyłanie Ci treści marketingowych przez IT20 sp. z o.o. zgodnie z dostępną na stronie Polityką Prywatności. Możesz wycofać zgodę w każdej chwili.

Zaprojektuj PCB

Jak przejść od zera do projektowania profesjonalnych obwodów drukowanych?

Programowanie w języku C

Jak przejść od napisania pierwszego programu komputerowego do wykorzystania zaawansowanych metod programowania?

Projektowanie układów elektronicznych

Jak działają i jak projektować poprawnie działające układy elektroniczne?
Zapisz się na listę mailową i odbierz swoje bonusy!

Więcej treści na temat elektroniki i robotyki, darmowe e-booki i dostęp do minikursów on-line. Otrzymasz to wszystko zapisując się na naszą listę mailową.