Skocz do zawartości

Technika cyfrowa - #3 - układy CMOS z bramkami


Komentator

Pomocna odpowiedź

Super, ale w tym konkretnym przypadku by zapalić LED bramka w ogóle nie jest potrzebna. Wystarczyło połączyć równolegle oba styki i doprowadzić tą drogą 5V do R3. Odpadają też wtedy wszystkie oporniki do masy. No chyba, że przyświecał Ci zbożny cel edukacyjny i bardzo chciałeś mieć bramkę CMOS. To teraz pomyśl jak ją zrobić z tranzystorów? Z diod?

Link do komentarza
Share on other sites

Dokładnie, zgadłeś 🤣 . Chciałem się nauczyć i koniecznie mieć bramkę CMOS.

Dotychczas miałem właśnie tak, analogowo, jakie to brzydkie słowo 😋 .

Ale taka bramka to super sprawa, np. mam sygnał (5V) z krańcówki bramy garażowej. Żeby ją prawidłowo podłączyć do arduino musiałbym przez nią puszczać masę zamiast 5v, a w arduino ustawić wejście na pull-up. Ale jeśli już mam do krańcówki pociągnięte 5v, to musiałbym także pociągnąć do niej masę, i w zależności od stanu krańcówka wysyła to albo to. ALe jeśli wyjście z krańcówki pociągnę do bramki, to już masę mam na bramce(przez rezystor), i nie muszę jej ciągnąć(masy) do krańcówki i z powrotem....

Link do komentarza
Share on other sites

SOYER, skoro jesteś przy edukacji, proponowałbym jeszcze dwa tematy. Pierwszy to drgania styków (tak wiem, to nuda).

Jednak używając bramek robisz sporą krzywdę procesorkowi - jego wejścia mają najczęściej wbudowane przerzutniki schmitta, który zapewnia na wejściu histerezę i eliminuje chociaż część zakłóceń. Dając prostą bramkę bez takiego wejścia zapewniasz procesorowi mnóstwo impulsów, które mogą sprawiać problemy.

Druga sprawa to indukcyjność przełącznika. Oczywiście nie jest ogromna, ale może warto jakoś zabezpieczyć wejścia bramek? Podłączanie większych przełączników lub długich przewodów bezpośrednio do wejść CMOS to przepis na kłopoty.

Link do komentarza
Share on other sites

Elvis, czyli powinienem jeszcze na wejściu bramek zastosować przerzutniki Shmitta? Nie wiem co to... służy do eliminacji drgań? Cały czas pracujemy na arduino MEGA 2560....

A co do drugiej części Twojego posta, o indukcyjności przełączników też nic nie wiem. O co chodzi?

Co do długości przewodów to od przetwornicy 5V idzie przez 15m do krańcówki(skrętka) i tyle samo wraca do bramki i potem 30 cm do arduino...

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Nie, nie musisz - ale powinieneś wiedzieć co się dzieje i jak działa, w końcu to edukacja 😉

Przerzutnik wprowadza histerezę, też warto doczytać co to takiego. Jeśli piszesz bardzo prosty program, nie obsługujesz przerwań itd. to pewnie nie będziesz nawet widział różnicy. Zachęcam tylko do doczytania o tych tematach, żeby jeśli w pewnym momencie pojawią się problemy, chociaż wiedzieć dlaczego.

Natomiast moim zdaniem powinieneś przemyśleć jakąś postać ochrony wejścia bramki. Może z tą indukcyjnością trochę przesadzam, ale i tak zakłócenia mogą czasem się pojawiać - chociażby od ładunków elektrostatycznych, czy wyładowań atmosferycznych. Układy CMOS bardzo nie lubią zakłóceń na wejściach.

Link do komentarza
Share on other sites

Witam,

Pracuję na układzie UCY7400 czyli 4xNAND. Mam problem z podłączeniem przycisków zmieniających stany logiczne na wejściu. Używam jednej bramki i podłączyłem przyciski w sposób wskazany w kursie, czyli pomiędzy VCC a rezystor, który idzie do GND. Sygnał do bramki idzie z pomiędzy przycisku i rezystora wg poniższego rysunku.

 7400-1.thumb.png.6526b8646a83d965092d4cb104dc3f34.png 

Gdy przycisk jest naciśnięty na wejściu bramki jest sygnał wysoki. Ale gdy przycisk jest puszczony na wejściu bramki nie ma zera tylko jest 1,6V a to chyba jest za wysokie napięcie i bramka  cały czas widzi sygnał wysoki. Skąd takie napięcie? Dlaczego po wciśnięciu przycisku nie pojawia się na wejściu 0? Podłączenie odwrotne przycisków daje prawidłowy efekt działania bramki (czyli takie jak poniżej).

7400-2.thumb.png.216bb3460e94e598b6759cfd40b6fe95.png

Jednak wolałbym, żeby wciśnięcie przycisku dawało 1 a puszczenie 0. W jaki sposób to zrobić? 

Link do komentarza
Share on other sites

Najlepiej gdybyś zajrzał do jakiegoś dokumentu opisującego strukturę wewnętrzną takiej bramki, np tu:

http://www.nutsvolts.com/magazine/article/understanding_digital_logic_ics_part_2

To nie jest żadna magia tylko kilka tranzystorów. Układy TTL serii bipolarnych, czyli takie jak Twój 7400, ale także 74S00, 74LS00, 74AS00 itd (ale już nie 74HC00/74HCT00) były tak skonstruowane, że wiszące w powietrzu wejście "samo sobie" dostarczało jedynkę. Na schemacie na pewno zauważysz, że wejściowy tranzystor wieloemiterowy bramki NAND możesz potraktować jak trzy diody. Od plusa zasilania do bazy masz tam opornik a potem złącze BE - po jednym do każdego wejścia. Gdy podłączysz woltomierz do takiego pinu, widzisz poziom zasilania pomniejszony o niewielki spadek na oporniku i 0.7V na diodzie. Podłączenie wejścia do plusa niczego nie zmienia i dopiero zwarcie do masy (podanie mocnego stanu niskiego) powoduje przepływ prądu przez złącze BE.

Żeby w takim układzie zrobić jedynkę z przełącznika, musiałbyś najpierw zrobić zero opornikiem pull-down, czyli dać do masy np. 220 omów "pokonujące" opornik wewnętrzny ciągnący do plusa. Generalnie projektując układy z bramek bipolarnych TTL zakładasz, że stanami nieaktywnymi sa jedynki a wszelkie przełączniki, tranzystory itp ciągną do masy. Popatrz na bardziej zaawansowane układy tych rodzin: liczniki, rejestry itp. Większość wejść (np. trybu pracy, resetu, ale nie zegarów) czy wyjść (przeniesienia, parzystości) są aktywne w stanach niskich. Zauważ też, że poziomy logiczne układów TTL nie są symetrycznie rozmieszczone wokół połowy zasilania, tylko mocno przesunięte w dół. Zero musi być niższe niż 0.8V a do jedynki wystarczy coś ok. 2.4V przy Vcc=5V. Dzięki takiej charakterystyce wejścia można było zostawić tak marny stopień wyjściowy: jeśli zmierzysz woltimierzem co Twoja bramka daje na wyjściu to przekonasz się, że co prawda stan niski jest bardzo bliki 0V, ale stan wysoki ledwo dociąga do 3V nawet bez LEDa. Dlatego też zwykle obciążenia bipolarnych układów TTL włącza się od wyjścia do plusa.Wtedy co prawda diodka LED świeci w stanie zero, ale scalak tak się nie męczy. Porównaj prądy wyjściowe jakimi możesz obciążyć wyjście w stanie zero (kilkanaście mA) i w stanie jeden (kilka mA). Jest to zupełnie inaczej niż w typowych rodzinach bramek serii unipolarnych (74HC/HCT/LVC/LCX) lub nowoczesnych procesorów.

  • Pomogłeś! 1
Link do komentarza
Share on other sites

MAREK1707: Bardzo dziękuję za wyczerpującą odpowiedź 🙂 I za bardzo ciekawy artykuł. Wiedziałem że w tych układach stan nieustalony (tzn. niepodłączone wejście raczej) jest przyjmowany jako jedynka ale nie sądziłem, że jest taki mały zakres napięcia dla stanu niskiego. Spróbuję zmienić opornik. Ale chyba trzeba będzie zastosować za przyciskiem konwerter - czy to pomoże (czyli z zera zrobię 1)? Czy układy z serii 74xx można stosować w takim razie z tymi z serii CD40xx w jednym układzie logicznym? Czy jednak lepiej ich nie mieszać?

Link do komentarza
Share on other sites

Marek1707 - naprawdę pięknie opowiadasz - można by słuchać i słuchać 🙂  I jak jasno wszystko przedstawione!

Rzeczywiście chciałem się pobawić na starych układach znalezionych na strychu. Traktowałem to jako drugi etap - po robieniu bramek z tranzystorów. Cieszę się że przez to przeszedłem, bo nie lubię używać czegoś, czego nie rozumiem całkowicie. Teraz pora wejść na level 3 w takim razie i TTL zostawić za sobą (aczkolwiek fajne to jest doświadczenie samemu zbudować parę bramek z tranzystorów - i daje mega pojęcie i miniaturyzacji układów, gdy wiem co tak naprawdę jest w środku. Twój wykład mocno posunął mnie do przodu, także czytam wszystko co podesłałeś zabieram się za bardziej świadome stosowanie logiki.

1 godzinę temu, marek1707 napisał:

Zauważ, że w drugą stronę interfejs CMOS -> TTL działa dużo lepiej. Wyjście scalaka 74HCxxx zasilanego z 5V daje porządne 0V i dobre 5V więc dobrze nadaje się do sterowania wejść starych rodzin bipolarnych. Niestety tylko pojedynczych wejść - nie można do wyjścia 74HC00 podłączyć wielu bramek 7400. Pomyśl dlaczego.

Czy chodzi o to że 7400 jest bardziej prądożerny i podłączenie kilku bramek pociągnąłby zbyt duży prąd?

  • Lubię! 1
Link do komentarza
Share on other sites

Bramki bipolarne pracują na prądach. Ponieważ wejście takiej bramki ma złącze BE tranzystora i (dalej) opornik do plusa, w stanie wysokim praktycznie nie pobiera prądu, no może jakieś kilkadziesiąt uA wpływa do układu. Natomiast gdy będziesz chciał zapodać zero logiczne, wejście 7400 staje się źródłem prądu wypływającego. I to całkiem sporego. O ile pamiętam było to coś w okolicy 1.6mA przy kilkuset mV na wejściu. Szczegóły warto sprawdzić w danych katalogowych konkretnej rodziny. Np tutaj:

http://www.ti.com/lit/ds/sdls025d/sdls025d.pdf

masz trzy w jednym: podstawowy 7400, wersję LS i S. Prądy wypływające z ich wejść do tego czegoś co próbuje zrobić zero logiczne wynoszą odpowiednio: -1.6mA, -0.1mA i -2mA. Za to prądy wpływające do wejścia mają mniej więcej 20-50uA już od okolic 2.4V i powyżej. Tak więc wejście serii bipolarnej nie stanowi problemu gdy chcesz na nim zrobić jedynkę - to w zasadzie umie sobie zrobić samo, ale gdy chcesz wymusić stan zero, musisz pochłonąć te mA prądu wypływającego do masy. W tym kontekście seria LS ze swoim 0.1mA wydaje się bardzo smakowita, prawda?

Gdy przyjrzysz się z kolei danym katalogowym typowego 74HC(T) to zobaczysz, że na wyjściu masz gwarantowane poniżej 0.4V przy prądzie wpływającym do tego wyjścia na poziomie 4mA. To bez problemu da radę zrobić poprawne zero logiczne nawet przy podłączeniu dwóch-trzech bramek serii standardowej TTL.

Za to gdy weźmiesz się za 4000, to tam robi się na wyjściu 0.4V (przy Vcc=5V) gdy pompujesz w nie z zewnątrz już tylko 0.4mA. Przy 1.6mA wypływającym ze standardowej bramki 7400 dostaniesz już ok. 1.3V co zupełnie dyskwalifikuje takie połączenie. Za to użycie serii 74LS z prądem 100uA zadziała :-)

https://www.ti.com/lit/ds/symlink/cd4011b.pdf

BTW: Robienie bramek na tranzystorach jest proste, czego tam nie zrozumiałeś? Nawet podstawową bramkę NAND możesz odtworzyć prawie 1:1 przez zamianę tranzystora wieloemiterowego na trzy diody. A próbowałeś coś zrobić w technice DTL lub na samych diodach? To też jest dość fajne a takie połączenia nawet dzisiaj stosuje się w celu prostego sumowania sygnałów logicznych szczególnie gdy potrzebna jest prosta funkcja np. OR lub AND.

Link do komentarza
Share on other sites

Tak, robiłem TTL i DTL. Wszystko było jasne ale kilka połączonych bramek, to już niezła jazda była.  Fajnie, jak się to zrobi samemu a nie tylko patrzy na rysunki, bo niekoniecznie to, co się wydaje na pierwszy rzut oka będzie działać przy różnych kombinacjach. Teraz rozumiem, co jest w środku tych układów scalonych i można iść dalej. Wzięło mnie tak po przeczytaniu "Innowatorów" Isaacsona - szczerze polecam - czyli jak to wszystko się zaczęło - po kolei, od maszyn różnicowych aż do tranzystorów i układów scalonych. Aż się człowiekowi chce samemu spróbować:)

Link do komentarza
Share on other sites

Dobrze napisane książki mogą zdziałać cuda. A co w takim razie teraz planujesz? Coś większego na układach logicznych (wspomniałem o paru pomysłach), coś czysto analogowego (też ciekawa działka) czy jednak wejście w mikrokontrolery i konformistyczny spływ z prądem Arduino?

Link do komentarza
Share on other sites

Dotychczas bawiłem się Arduino ale teraz chciałbym zamiast programować mikrokontroler - zrobić wszystko bez niego. Na razie na tapecie jest system do podlewania ogrodu z obsługą 3 zbiorników na wodę (uzupełniania ich w zależności od różnych warunków) i tą obsługę chcę zrobić bez uC. Na razie system korzysta z czujników wilgotności i deszczu, ale w nowej wersji ma jeszcze mieć łączność z siecią i będzie sprawdzał pogodę.

Link do komentarza
Share on other sites

Cześć!

Mam pytanie może dziwne, ale mnie to ciekawi. `dlaczego na wyjściu bramek do leda na jest rezystor 3k3?

edit:

i jeszcze jedno. dlaczego nie podciąga się do masy wejścia bramki podłączonej do wyjścia innej bramki? Po prostu wystarczy, że jest na nim 0?

Edytowano przez adamCz
Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.