Skocz do zawartości

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


Komentator

Pomocna odpowiedź

Poparz na tabelę prawdy tej bramki a wszystko się wyjaśni. Jeśli do jednego z wejść podłączysz na stałe jedynkę, to na wyjściu dostaniesz stałą jedynkę, bo:

COKOLWIEK .OR. 1 → 1

Podłączając stałe zero masz jednak:

COKOLWIEK .OR. 0 → COKOLWIEK

czyli sukces 🙂

Trochę inaczej na to patrząc wychodzi, że taka bramka może służyć np. do blokowania przepływu sygnałów aktywnych w stanie niskim. Jeżeli do jednego jej wejścia podłączysz np. czujnik z wyjściem open collector (hallotron? komparator? przycisk?) podciągnięty opornikiem pullup do plusa a do drugiego wejścia jakiś sygnał logiczny, to zapodając stan wysoki blokujesz "przepływ zer" z czujnika i na wyjściu dostajesz stałą jedynkę jakby nic na wejściu sygnałowym się nie działo. I odwrotnie, podając zero odblokowujesz czujnik i może on teraz wysyłać swój sygnał gdzieś dalej.

Dokładnie odwrotnie jest z AND, przemyśl to.

A tak na marginesie: 4 wejściowa bramka OR nie ma "trzech par wejść" ani nawet czterech par. Ma zgodnie z nazwą cztery wejścia po prostu. Wyrażaj się jaśniej albo zapodawaj schemat, to zastępuje setki słów. Jak rozumiem mówisz o jednej bramce 2-wejściowej, a reszta to jakieś inne, zupełnie niezależne bramki, także 2-wejsciowe OR, czy tak?

EDIT: Dobra, zajarzyłem. Dla Ciebie "poczwórna bramka OR" to po prostu scalak zawierający cztery dwuwejściowe bramki OR i mówimy w tym przypadku o jednej z tych bramek 🙂

Link do komentarza
Share on other sites

Brawo ty 😅 , dobrze zaskoczyłeś, ale nie odpowiedziałeś na moje pytania...

Scalak (poczwórna bramka OR 😋):

https://botland.com.pl/uklady-logiczne/7285-uklad-logiczny-4xor-cd4071be.html?search_query=bramka+or&results=20

do nóżek: 1,2,5,6,8,9 mam podpięte wejścia(ew.5V), 3,4,10 to wyjścia z ww. trzech bramek,
ale do wejść 12 i 13 mam podpięty przewód tylko do 12, wyjscie z tej bramki na 11 nóżkę.

Czy 13 muszę podpinać do masy?

Nie mam podpięte nic do 13 bo nie potrzebuję 4 bramek tylko trzy, a czwarta bramka będzie po prostu puszczać ew. sygnał dalej....

Czy 13 muszę podpinać do masy?

Pytam bo w kursie techniki cyfrowej jest napisane, że niewykorzystane wejścia należy podciągnąć do masy... tylko nie wiem czy to się dotyczy także pojedynczej niewykorzystanej nóżki wejścia, czy podciągamy do masy tylko jak są obie nie wykorzystane....

Wiem, to tylko chwila lutowania i będzie podłączone, wtedy na pewno będzie dobrze, ale chcę wiedzieć czy to konieczne w przypadku jednej nóżki 😃

Link do komentarza
Share on other sites

poczwórna bramka OR
Spójrz na schemat tego scalaka:

img2.JPG

a teraz spójrz na ten:

NV_0607_Marston_Figure21.jpg

Mam wrażenie, że mylisz "4 bramki OR" z "bramką z 4 wejściami".

(tak, wiem, złamałem regulamin nie wrzucając fotek na serwer. Na szybko z pracy zajrzałem)

Link do komentarza
Share on other sites

Marooned ja mam tą z pierwszego obrazka, nawet nie wiedziałem, że są też takie jak na drugim... a szkoda po potrzebowałem, więc zrobiłem kaskadowo jedna za drugą.... :->

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

"..potrzebowałem, więc zrobiłem kaskadowo jedna za drugą"

Nie znam Twojego układu i potrzeb, ale w prostych aplikacjach do sumowania sygnałów wystarczą zwykłe diodki. Na 95% nie musiałeś do tego kupować żadnych scalaków.

Link do komentarza
Share on other sites

Marek ja wiem, że jak do tej 13 podepnę minus to będzie działać, jak nie podepnę to też będzie, ale pytam bo w kursie techniki cyfrowej jest napisane, że niewykorzystane wejścia należy podciągnąć do masy... tylko nie wiem czy to się dotyczy także pojedynczej niewykorzystanej nóżki wejścia, czy podciągamy do masy tylko jak są obie nie wykorzystane....

Wiem, to tylko chwila lutowania i będzie podłączone, wtedy na pewno będzie dobrze, ale chcę wiedzieć czy to konieczne w przypadku jednej nóżki 😃

Scalak zastosowałem bo tego mnie nauczyli na kursie Forbota :->, a o sumowaniu sygnałów diodą nic nie było... 😅

Link do komentarza
Share on other sites

Zapamiętaj: żadne wejście cyfrowe nie może zostać niepodłączone, bo skazujesz się na przypadkowe działanie układu. Jeśli gdzieś dalej ten sygnał jest używany, natura zrobi wszystko by wykorzystać tę szansę przeciwko Tobie: wiszące wejście układu CMOS możesz traktować jako stan zero.. lub jeden 😐

W przypadku mikrokontrolera niewykorzystane piny portów możesz zrobić wyjściami lub włączyć im oporniki podciągające (pullup) do Vcc i to załatwia sprawę. W przypadku prostych układów logicznych takich jak rodzina 4xxx lub 74HCxxx nie masz takich możliwości i dlatego zawsze musisz explicite zapodać jakiś stan logiczny. Nie ma reguły czy ma to być zero (podłączenie do GND) czy jeden (do Vcc), bo nie wiadomo co danemu scalakowi pasuje.

Gdy masz wolne wejście bramki OR, to żeby jej nie zablokować musisz podać zero, ale w przypadku bramki AND już musi to być jedynka. Możesz też skorzystać z własności:

A .OR. A → A

i zewrzeć oba wejścia podając na nie ten sam sygnał. W przypadku bramki AND też to działa:

A .AND. A → A

Czy to jakoś rozwiązuje Twoje wątpliwości?

Link do komentarza
Share on other sites

Tak oczywiście, dziękuję chłopaki, tyle chciałem wiedzieć.

"i zewrzeć oba wejścia podając na nie ten sam sygnał", na to nie wpadłem 😳 dzięki.

Co do wolnych pinów w mikrokontrolerach, czy to znaczy, że np. wszystkie niewykorzystane piny w arduino powinienem ustawić w HIGH?

Link do komentarza
Share on other sites

Domyślnie po starcie procesora wszystkie piny są wejściami bez włączonych podciągów - czyli najgorszy możliwy przypadek. Najprościej włączyć im rezystory ustalające stan wysoki (INPUT_PULLUP) korzystając z funkcji pinMode() - jedna linijka kodu na pin. Możesz też zrobić piny wyjściami i wpisać im coś konkretnego, choć wartość ta nie ma znaczenia. Zanim jednak to zrobisz spojrzyj na schemat tego konkretnego Arduino, bo robienie pinu wyjściem może być niedobrym pomysłem gdy ktoś przysyła do niego sygnał z zewnątrz. Np. niezależnie od tego czy używasz portu szeregowego (Serial) czy nie, do pinu RXD doprowadzony jest sygnał z konwertera USB/UART. Zrobienie tego wyjściem spowoduje konflikt. Zwykle do jakiegoś pinu masz też podpiętą na stałe diodkę LED. Wysłanie tam stałej jedynki spowoduje, że będzie świecić bez sensu marnując prąd. W bardziej rozbudowanych płytkach bazowych lub na shieldach możesz mieć coś na SPI (WiFi, moduł RF, pamięć FLASH, kartę SD), na I2C lub po prostu na pinach - trzeba uważać z wyjściami.

Wiszące w powietrzu wejścia mikrokontrolera nie są bolesne jeśli program z nich nie korzysta, ale powodują zwiększony pobór prądu i generują trochę zakłóceń w zasilaniu scalaka. Ustalanie stanów jest dobrą praktyką a w przypadku aplikacji czułych na pobór mocy (np. zasilanie z baterii pastylkowej) - wręcz koniecznością.

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

Marek trochę mi dałeś do myślenia tymi postami. Dopytam więc:

Tak jak pisałem mam te scalaki:

https://botland.com.pl/uklady-logiczne/7285-uklad-logiczny-4xor-cd4071be.html?search_query=bramka+or&results=20

wyjście z bramki idzie do arduino, a pierwsze wejście np.pierwszej bramki podpinam do włącznika ściennego, a drugie wejście pierwszej bramki do radiówki która działa tak jak włącznik ścienny, zwiera ze sobą dwa przewody. I teraz: jako "zasilanie" włącznika i kanału radiówki podaję 5V z przetwornicy, po wciśnięciu włącznika(lub włączeniu radiówki) 5V leci przez włącznik do wejścia bramki OR, i wtedy ona ma stan wysoki, ale teraz moje pytanie:

co w sytuacji kiedy włącznik nie jest wciśnięty(włączony), wtedy do bramki OR nie dopływa 5V, czy wtedy należy zapewnić jej masę na tych wejściach?

Link do komentarza
Share on other sites

Oczywiście, jeśli stanem aktywnym podawanym z przełącznika jest 1 logiczna, to na wejściu bramki musisz mieć opornik do masy zapewniający stan 0.

Bramki pomagają, gdy wyjść źródeł sygnałów nie możesz łączyć razem, gdy np. są to inne bramki. Mając jednak czyste styki (przekaźniki, wyłączniki ręczne itp) możesz robić taką logikę bezpośrednio:

a. W wersji "prostej" oba zestyki z jednej strony podpinasz do +5V a z drugiej do wejścia Arduino. Tam spawasz opornik 10k do masy i masz sumowanie. Zwarcie dowolnego styku powoduje podanie jedynki.

b. W wersji "odwrotnej" oba zestyki podłączasz z jednej strony do masy a z drugiej do wejścia Arduino, gdzie włączasz INPUT_PULLUP oszczędzając na fizycznym oporniku. Zwarcie któregokolwiek (może być ich przecież więcej) styku powoduje podanie zera.

Co fajniejsze procesory mają możliwość włączania sobie na wejściach oporników ciągnących do plusa lub do masy i wtedy wszystko jedno jak zestyk podłączasz. W AVRach masz tylko pullup'y więc staraj się tak projektować, by styki stały na masie i podawały stan niski. Wysoki to procesor umie sobie zrobić sam.

Gdybyś ten sam myk (pkt. a. i b.) zrobił z połączeniem szeregowym styków, miałbyś AND. Wtedy wszystkie styki musiałyby być zwarte by zapodać stan aktywny do Arduino.

Stykom nie przeszkadza łączenie szeregowe lub równoległe więc możesz robić całkiem skomplikowane funkcje logiczne. Na tej zasadzie do niedawna jeszcze działała cała automatyka przemysłowa. No aż ktoś wpadł na pomysł zrobienia PLC, ale nawet i tam wciąż jeszcze jest używany język programowania wprost pochodzący od "drabinek" styków całych szaf przekaźników.

Link do komentarza
Share on other sites

Właśnie moje dotychczasowe doświadczenia opierały się na takich "szafach przekaźników", nawet jedną miałem w domu..., teraz zmieniam na cyfrową🙂.

Co do mas na wejściach to okazuje się, że je mam podpięte zgodnie ze schematem z kursu:

Nawet jest w kursie pięknie napisane co one robią: "Rezystor 10kΩ ustawia na wejściu stan logicznego 0 (gdy przycisk jest puszczony)." 😳

Tak to jest jak się uczy czegoś nowego, nie wiadomo na co zwrócić szczególną uwagę, wychodzi na to, że w kursach Forbota każde słowo jest ważne 😅

Proszę jak ładnie zrobiłem, tylko nie wiedziałem po co....

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.