Jak odwrócić sygnał cyfrowy

29

Potrzebuję sposobu na odwrócenie sygnału cyfrowego, tj. Jeśli wejście jest wysokie, chcę, aby wyjście było niskie, a jeśli wejście jest niskie, chcę, aby wyjście było wysokie.

Myślę, że można to osiągnąć za pomocą jednego tranzystora PNP, ale chciałem to tutaj sprawdzić. Napięcia, z którymi mam do czynienia, są mniejsze niż 5 V.

Matt Ruwe
źródło
Szczegółowe podejście do falownika BJT: EE 307 Sekcja 2 Projekt MoHAT - „Celem tej strony jest przypomnienie osobom zainteresowanym podstawowymi działaniami falownika BJT”.
Peter Mortensen

Odpowiedzi:

34

Lub, skoro i tak mówisz o sygnałach cyfrowych, korzystasz z falownika .

wprowadź opis zdjęcia tutaj

Ajest wejście (dla bram z większej liczby wejść, które będą A, B, Citp) Yjest wyjściem. Jeśli nie komplikuje to zbytnio twojego schematu, umieść symbol z wejściem po lewej stronie.

NXP ma falowniki z pojedynczą bramą . Tylko cztery połączenia: zasilacz, masa, wejście i wyjście.

Można to jednak zrobić za pomocą tranzystora i dwóch rezystorów. To prosty schemat, ale wciąż musisz wykonać kilka prostych obliczeń. Będziesz miał dokładnie takie same połączenia jak z falownikiem.
BTW, opcja PNP jest opcją, ale częściej używana będzie nazwa NPN.

edytuj (ponownie komentarz)

wprowadź opis zdjęcia tutaj

Jeśli sygnał wejściowy jest wysoki, prąd przepłynie przez R2 i złącze tranzystora baza-emiter (baza, a nie bramka). Prąd ten zostanie wzmocniony, a prąd kolektora przez R1 spowoduje spadek napięcia, tak że moc wyjściowa będzie niska. Wejście wysokie, wyjście niskie.
Jeśli sygnał wejściowy jest niski, nie będzie prądu bazowego ani prądu kolektora. Brak prądu przez R1 oznacza brak spadku napięcia, więc wyjście będzie miało wartość + V. Wejście niskie, wyjście wysokie.

To już prowadzi nieco dalej, ale jak powiedziałem w komentarzu do sandun, wyjście jest wysoce asymetryczne. Jeśli wyjście jest podłączone do kondensatora, wysoki poziom wyjściowy oznaczałby, że kondensator jest ładowany przez R1, co spowoduje nachylenie wykładnicze ze stałą czasową R1C. Kiedy moc wyjściowa spada, kondensator zostanie rozładowany przez znacznie niższy opór, a nachylenie będzie znacznie bardziej strome. Nie dostaniesz tej różnicy z bramkami CMOS, które mają symetryczne możliwości źródła / ujścia.

Wejście wersji tranzystora będzie również pobierać (mały) prąd, gdy jest wysoki. Wersja CMOS będzie miała niewielki prąd upływowy zarówno przy wysokim, jak i niskim.

Ogólnie zintegrowana bramka logiczna jest zwycięzcą.

stevenvh
źródło
Z pewnością mogę się tutaj pomylić, ale NPN włącza się, gdy zasilanie jest dostarczane do bramki, a PNP wyłącza się, gdy zasilanie jest dostarczane. Sensowne jest użycie NPN do wzmocnienia sygnału, ale nie spowodowałoby to odwrócenia sygnału. Myśli?
Matt Ruwe,
2
Bramy są przeznaczone dla MOSFET, a nie BJT. NFET włączają się, a PFET wyłączają. Ale musisz upewnić się, że źródło jest poprawnie podłączone. NPN i PNP są BJT i ​​wymagają trochę więcej matematyki, aby upewnić się, że działają poprawnie
ajs410 18.04.18
jeśli chodzi o NXP, masz bardzo mały pokój wolności. Istnieją ograniczenia, takie jak czas, wejście wentylatora, wyjście wentylatora, marginesy szumów wejściowych, usterki itp. W takim przypadku zastosowanie tranzystora jest więcej niż łatwe. Tylko dlatego, że nie jesteś zamknięty tymi ograniczeniami.
Standard Sandun,
@Matt - zredagowałem moją odpowiedź.
stevenvh,
1
@sandundhammika, Jeśli zbudujesz własny, nadal masz ograniczenia dotyczące fan-out i marginesu hałasu (fan-in nie ma tutaj zastosowania). Ale musisz sam obliczyć, jakie są te ograniczenia. Jeśli korzystasz z gotowej bramki, możesz po prostu przeczytać arkusz danych, aby się dowiedzieć. Co więcej, zużycie energii (inne typowe ograniczenie systemowe) prawdopodobnie będzie znacznie lepsze w przypadku gotowych produktów.
Photon
24

Tak, można to osiągnąć za pomocą jednego tranzystora i rezystora, ale istnieją układy zaprojektowane specjalnie do odwracania sygnałów cyfrowych. Co dziwne, nazywane są falownikami . Sprawdź na przykład 74HC04. To daje sześć oddzielnych falowników w jednym 14-pinowym pakiecie. Istnieją również pojedyncze falowniki (i inne małe bramki logiczne) dostępne w małych pakietach SOT-23, czyli w tym samym pakiecie, w które wchodzą poszczególne tranzystory.

Nie ma powodu, aby próbować stworzyć własny falownik, ale tak, jest to możliwe.

Dodano w odpowiedzi na komentarz:

Jak powiedziałem, pojedynczy bipolarny tranzystor może być wykorzystany jako podstawa prostego falownika. Potrzebny jest przynajmniej tranzystor i rezystor podstawowy. Dla kompletności dodam również rezystor obciążenia wyjściowego, który należy założyć, że jest potrzebny, chyba że wiesz, co zostanie podłączone do wyjścia zapewni niezbędne obciążenie. W szczególności w tranzystorze PNP nie ma nic magicznego. Równie dobrze można użyć NPN. Oto, jak każdy z nich zostanie użyty:

Zauważ, że każde ma 4 połączenia: zasilanie, masa, wejście i wyjście. Różnica między nimi polega na tym, w którym kierunku ładuje on sygnał wejściowy, i w którym kierunek jest aktywnie napędzany w porównaniu z pasywnie ciągniętym przez obciążenie. Jeśli nie przejmujesz się tymi problemami, oba obwody są funkcjonalnie równoważne.

Jest to jednak łatwiejsze:

Jest również szybszy, wymaga mniejszej mocy stanu ustalonego, ma wyższą impedancję imputancji i jest mniejszy. Ma te same cztery połączenia, co powyższe falowniki. Pojedyncze bramki tego typu są dostępne w pakietach SOT-23, czyli w tym samym pakiecie, w które wchodzą pojedyncze tranzystory. Wymaga to tylko jednej części zewnętrznej, zaślepki obejścia. Nie potrzebuje rezystora obciążenia, ponieważ jego wyjście aktywnie napędza w obie strony.

Naprawdę, w przypadku ogólnego odwracania sygnałów cyfrowych, tworzenie własnego falownika jest głupie w normalnych zastosowaniach.

Poza tematem dotyczącym schematu:

Skrypt to tak naprawdę tylko trzy linie. Oto cały plik:

@echo wyłączone
rem
rem MAKE_SCHEM_GIF
rem
rem Tworzy ładnie odfiltrowany schematyczny plik GIF z surowego wyjścia Eagle
rem /temp/a.tif. Wynikowy plik GIF będzie /temp/b.gif i tak będzie
rem skala szarości.
rem
image_filter /temp/a.tif /temp/b.img -shrink 5
image_copy /temp/b.img /temp/b.gif -form -gray
image_disp /temp/b.gif -zoom 1 -dev medium

Jest to bardzo konkretny, jednorazowy skrypt, ale działa wystarczająco dobrze do tego celu. W Eagle eksportuję schemat do pliku obrazu \ temp \ a.tif, uruchom skrypt, który tworzy \ temp \ b.gif. Ustawienie Eagle dla eksportu obrazów to 600 DPI i tryb monochromatyczny. Naprawdę, to wszystko. Prawdopodobnie brzmi to bardziej skomplikowane niż jest.

Olin Lathrop
źródło
1
@MattRuwe „wystarczy”, ale punkt Olin jest taki, że dedykowany układ poradziłby sobie lepiej (czas narastania i opadania byłby bardziej symetryczny). PNP może „podciągnąć” się do Vdd, ale potrzebujesz czegoś, aby ściągnąć go z powrotem w dół, gdy PNP pozwala na pływanie wyjścia. To „coś” stworzy asymetrię w czasie narastania / opadania, w oparciu o jej impedancję.
ajs410,
Gotcha, ma sens
Matt Ruwe,
1
Dlaczego twój schemat wygląda ładniej niż mój? :-)
stevenvh
4
@stevenvh: Musi być, bo jestem po prostu lepszy. Poważnie jednak używam Orła i uważam. Po narysowaniu w programie Eagle eksportuję schemat w rozdzielczości 600 DPI do pliku obrazu, a następnie uruchamiam skrypt, który filtruje go i zmniejsza 5-krotnie i zapisuje wynik do pliku GIF w skali szarości. To sprawia, że ​​wynik jest rozsądny rozmiar bez artefaktów pikseli. To sprawia, że ​​linie są nieco rozmyte, co jest kompromisem za brak aliasingu i widocznej pikselizacji.
Olin Lathrop,
1
@abdullah: Zobacz dodatek do odpowiedzi.
Olin Lathrop,
8

Oto niektóre wartości rezystorów, które działają dla sygnałów CMOS:

Znalazłem ten wątek, ponieważ chciałem podłączyć starszy „LCD Digital Backpack” do Arduino. Arduino wysyła pozytywne sygnały szeregowe, a cyfrowy plecak potrzebuje sygnałów odwróconych. Nowsza wersja kontrolera LCD ma odwróconą / nieodwróconą zworkę, ale moja nie. Podobnie możliwe jest generowanie odwróconych sygnałów szeregowych za pomocą oprogramowania, ale wymaga to uruchomienia niestandardowej biblioteki. Chciałem użyć standardowych Serial.writepoleceń.

Początkowo podłączyłem jeden z 4 przekaźników NOR w poczwórnej bramce NOR 4001 CMOS jako falownik, ale to zajmuje dużo miejsca na mojej płycie, a ponieważ powinieneś związać wszystkie nieużywane wejścia z uziemieniem, wiąże się to z dużą ilością okablowanie. (Myślę, że musiałem podłączyć wszystkie oprócz 3 z 14 pinów w pakiecie; wszystko oprócz wyjść na 3 nieużywanych NOR-ach).

Chciałem prostszego rozwiązania. Użyłem obwodu zapewnionego przez @stevenvh.

Link tutaj:

wprowadź opis zdjęcia tutaj

Mam do czynienia z logiką CMOS 5 V przy 9600 bodów, więc impedancja wejściowa jest bardzo wysoka / prąd jest bardzo niski. Ponieważ przełączam tylko na 9600 bodów, nie sądzę, że asymetryczne zachowanie falownika tranzystorowego bardzo mnie boli.

Stwierdziłem, że rezystor 100K na wejściu (R2 na schemacie Stevenvha) działał, i użyłem rezystora 3,3k jako rezystora podciągającego w R1. Na podstawie moich obliczeń (I = V / R, 5/3300) ta konfiguracja pobiera <= 1,5 mA w stanie WŁĄCZENIA (nieco mniej z powodu wewnętrznej rezystancji tranzystora.) Mogę podłączyć garnek i zobaczyć, jak duży Rezystor mogę uciec z nadal mieć LCD odbiera sygnał.

Duncan C.
źródło
4

Oto jak to zrobić w sposób CMOS:

schematyczny

symulacja tego obwodu - Schemat utworzony za pomocą CircuitLab

Napięcie szyny zasilającej może być tak wysokie, jak chcesz, o ile jest niższe niż napięcie przebicia bramy.

Maxthon Chan
źródło