Układ elektroniczny cyfrowego stopera w symulatorze Paula Falstada
Hej, w tym poście chciałbym omówić budowę najprostszego stopera cyfrowego. Pomysł opracowałem i zbudowałem w symulatorze całkowicie samodzielnie (chociaż układ jest tak banalny, że prawdopodobnie wiele osób mogło już wymyślić go wcześniej). Tak czy inaczej jestem z siebie dumny :).
Zacznijmy od pomysłu, żeby coś zrobić trzeba mieć pomysł. Ja na pomysł tego stopera wpadłem na lekcji elektroniki cyfrowej, kiedy weszliśmy na temat wyświetlaczy 7-segmentowych. Do zbudowania tego układy użyję symulatora Paula Falstada (każdy może z niego skorzystać na tej stronie internetowej.
Program jest dosyć intuicyjny, jego budowę i obsługę opiszę kiedyś w innym poście. Teraz jednak naciśnijmy plik > new blank circuit i zacznijmy budowę naszego urządzenia.
Symulator ten posiada wszystkie elementy które potrzebujemy. Są to jednak elementy bardzo proste. Licznik liczy, dekoder dekoduje, bez zbędnych pinów które posiadamy w prawdziwych układach (jak na przykład dekoder UCY7446).
Dobrym początkiem będzie zaplanowanie w jakiej formie chcemy wyświetlać czas. Ja postawiłem tutaj na minuty - sekundy - milisekundy. Do tego układy wykorzystamy 5 wyświetlaczy 7-segmentowych (2 dla minut, 2 dla sekund oraz 1 dla milisekund).
Wstawmy więc do naszego programu 5 wyświetlaczy. (Znajdziesz je naciskając prawy klawisz myszy, lub pod przyciskiem rysuj > cyfrowe układy > wyświetlacz 7-segmentowy.
Dla naszej wygody, zmieńmy sobie orientację wejść wyświetlacza, by to zrobić naciśnij dwukrotnie na każdy z nich i zaznacz okienko flip x/y.Układ powinien wyglądać tak, teraz powstawiajmy nad każdym z wyświetlaczy dekoder 7-segmentowy. Element ten znajduje się na liście elementów zaraz pod wyświetlaczem.
Z dekoderami zróbmy to samo co z wyświetlaczami, dwukrotne kliknięcie i flip x/y
na ekranie powinieneś widzieć coś takiego.
Teraz pora na podłączenie dekoderów do wyświetlaczy. Tutaj robimy wszystko intuicyjnie, a - a, b - b, ... , f - f, g - g.
Jeżeli symulacja jest uruchomiona, powinieneś zobaczyć na wyświetlaczach liczbę 0, jeżeli nie widzisz nic, naciśnij przycisk start/stop w prawem, górnym rogu ekranu. Jeżeli ekrany pokazują cokolwiek, ale nie jest to 0, prawdopodobnie podłączyłeś coś źle.Omówmy przez chwilę budowę tego dekodera, I3, I2, I1 ,I0 są to wejścia liczby w 4-bitowym kodzie binarnym, na wyjściach abcdefg pojawia się odpowiednia kombinacja sygnałów, podświetlająca diody na wyświetlaczu w kształcie podanej na wejściu cyfry. Jeżeli cyfra podana na wejściu jest większa od 9, wyświetlacz zacznie pokazywać litery możliwe do napisania w wyświetlaczu 7-segmentowym. Utworzymy od tego zabezpieczenie później
Nasz stoper nie będzie działał na tradycyjny kod dwójkowy, Dekodery pracują na kodzie BCD dwójkowo-dziesiętnym. Ten kod działa tak, że każda cyfra z wyrażenia dziesiętnego zapisywana jest oddzielnie w kodzie dwójkowym (na przykład: 19 = 0001 1001 - czyli jedynka i dziewiątka). Dekodery przyjmą i wyświetlą dwójkową liczbę tylko od 0 do 9, dlatego milisekundy będą zapisane na swoich 4 bitach kodu dwójkowego, jedności sekund na swoich bitach, dziesiątki sekund też na innych, swoich bitach, i tak dalej.
Dołączmy więc do każdego dekodera, jego własny licznik 4-bitowy. Znajdziemy go w tej samej zakładce cyfrowe układy, tylko trochę niżej tym razem. Nie podłączajmy ich jednak bezpośrednio do dekodera, tylko ustawmy je trochę wyżej.
Jak widzimy, liczniki mają po 4 wyjścia. Oznacza to że liczą do 15 i zaczynają z powrotem od 0. Problem polega na tym, że możemy podać dekoderowi tylko liczbę od 0 do 9 (bo inaczej wyświetli litery). Możemy łatwo rozwiązać ten problem ograniczając licznik, tworząc z mod16, licznik mod10.
(licznik modN oznacza, że liczy do liczby N-1 i startuje z powrotem od 0)
Do zrobienia tego potrzebujemy bramki logicznej AND, która aktywowana będzie, kiedy licznik będzie chciał podać dekoderowi liczbę 10. Powinniśmy już dawno wiedzieć jak liczyć w kodzie dwójkowym. (jeżeli ktoś się uchował na tyle długo i nie zna kodu dwójkowego, odsyłam do tego filmu z kanału pasja informatyki) Wracając, liczba 10 w kodzie dwójkowym to 1010. Abu ograniczyć licznik, wystarczy jedynie pożyczyć sobie z tej magistrali sygnały które będą tworzyć liczbę dziesięć. U nas jest to Q3 i Q1. Podłączmy te dwa wyjścia licznika do bramki AND, a jej wyjście do wejścia resetującego na naszym liczniku. Bramkę znajdziemy w zakładce "bramki logiczne, wejście i wyjście".
układ powinien wyglądać w sposób następujący. Podłączymy teraz wszystkie wyjścia licznika do wejść dekodera, Q3 do I3 i tak dalej.
Tak powinien wyglądać układ, teraz żeby uzyskać efekt liczenia, musimy podłączyć wyjście tej pierwszej bramki , do zegara drugiego licznika (od prawej strony).
Podłączmy jeszcze wyjście drugiej (od prawej) bramki do wejścia zegarowego trzeciego licznika, tak samo jak zrobiliśmy to wcześniej.
Teraz dla minut musimy zrobić to samo, nie trzeba jednak robić wszystkiego od nowa, ponieważ układ dla minut wyglądał będzie tak samo jak dla sekund, możemy go po prostu skopiować, wkleić i przesunąć.
Tak powinien teraz wyglądać układ, praktycznie skończyliśmy? No jednak nie. Prawdziwy stoper ma przyciski możliwość zatrzymania go. Ja w moim projekcie zastosuję 3 przyciski: start, stop i reset.
Na tym zdjęciu widzimy że zegar ma stan wysoki, licznik nie jest jednak aktywowany z powodu że na drugim wejściu bramki AND nie ma sygnału.
Po uruchomieniu symulacji, lub po prostu podłączeniu bramek w ten sposób, na wyjściach otrzymamy losowe wartości, można temu zapobiec podłączając źródło napięcia przez nisko pojemnościowy kondensator i przez rezystor do masy, jednak chcę tutaj utrzymać nasz obwód w jak najprostszym stanie, dlatego na razie przymknę na to oko.
Już omawiam co tutaj zbudowałem, zacznijmy od stworzenia źródła napięcia, po wstawieniu elementu jest ono domyślnie ustawione na 5V (nie musimy tutaj nic zmieniać, ponieważ większość układów cyfrowych pracuje na napięciu właśnie 5V). Element ten znajdziemy w zakładce "wejścia i źródła", a nazywa się on "źródło napięcia (węzeł). Teraz do każdego z nich dołączmy przycisk, przycisk znajdziemy w zakładce "pasywne elementy".
Po poprawnym podłączeniu, kiedy naciśniemy na symbol przycisku znajdującego się pod napisem "start', układ powinien zacząć liczyć, jeżeli układ liczył już wcześniej, to nic. Tak jak mówiłem wcześniej, pozycja przerzutnika jest losowa.
Tak powinien zachowywać się aktualnie nasz układ. Teraz podłączenie przycisku Restart nie będzie aż takie proste. Pomimo tego że intuicja nakłania do podłączenia tego przycisku do każdego z wejść resetujących liczniki, nie możemy tak zrobić przez to, że aktywuje to także wejście zegarowe następnego licznika, powstaną zwarcia a symulator pokaże błąd "wystąpiła macierz osobliwa". By temu zapobiec wystarczy usunąć przewód łączący reset licznika z jego ogranicznikiem (bramką AND), i wstawić tam bramkę OR. Wtedy będziemy mogli aktywować reset dwoma sygnałami, nie wpływającymi na siebie.
do jednego wejścia każdej z bramek OR podłączamy wyjście bramki AND (tak jak było wcześniej) a do drugiego wejścia możemy teraz podłączyć nasz przycisk restart. Pozmieniałem odrobinę ułożenie przewodów na powyższym obrazku dla przejrzystości i czystości układu. Podłączenie pozostaje takie samo. Ktoś zapyta się pewnie, dlaczego nie użyłem po prostu diod? Takie rozwiązanie na bramkach wydaje mi się lepsze oraz symulator ma tutaj swój słaby punkt. Jeżeli wstawimy diodę do układu cyfrowego, dioda posiada spadek napięcia i opór co zmienia cały projekt w nie układ cyfrowy a analogowy. Powoduje to wiele błędów i problemów, więc w układach strikte cyfrowych postanowiłem unikać diod i zastępować je bramkami OR w taki właśnie sposób.
Komentarze
Prześlij komentarz
śmiało kieruj tutaj wszystkie pytania. Zachowuj się kulturalnie i ludzko.