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.
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.
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.
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”.
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.
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.
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.
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.
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).
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.
No related posts.