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.


 Tak prezentuje się licznik w programie Paula Falstada. Tak jak mówiłem, jest to najprostszy element, spełniający po prostu swoją funkcję, w tym akurat przypadku przy zboczu dodatnim sygnału zegarowego, licznik przeskoczy o jedną liczbę w górę. W przypadku podania sygnału na wejście R (resetujące) licznik jest "zerowany" i wyjścia licznika pokazują 0. Licznik wtedy liczy od nowa. 

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.

Oczywiście dla przejrzystości układu, lepiej sobie obrócić wszystkie te liczniki poziomo, w sposób taki sam jak resztę elementów wcześniej.

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.


możemy sobie sprawdzić jego działanie, podłączając do wejścia zegarowego licznika, zegar z zakładki "wejścia i źródła".
Zegara jednak jeszcze nie potrzebujemy, tak więc usuńmy go, albo zaznaczając element i naciskając delete na klawiaturze, albo naciskając prawym przyciskiem myszy na element i wybranie usuń. 

Zróbmy taki sam "ogranicznik" z bramki AND dla jedności sekund.


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).



Właśnie w taki sposób. Teraz, dzięki temu połączeniu, kiedy pierwszy wyświetlacz dojdzie do cyfry 9, następny pokaże 1, tworząc efekt liczby 10, 11, 12, 13

Działa to w następujący sposób. 
teraz w trzecim liczniku od strony prawej, nie możemy zastosować tego samego ogranicznika, ponieważ ten licznik odpowiada za dziesiątki sekund a minuta ma przecież 60 sekund! Musimy w takim razie przerobić ten licznik mod16 na licznik mod6. Czyli w przypadku liczby 6 na wyjściach licznika, zresetować go. Zrobimy to tak samo jak poprzedni ogranicznik, wykorzystując do tego bramkę AND, tym razem tylko podłączając je do innych wyjść. Liczba 6 w kodzie binarnym to 0110, podłączmy więc wejścia bramki do Q2 i Q1 licznika. Potem podłączmy wszystko do dekodera, tak jak wcześniej.

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ąć. 

zaznaczać elementy możemy przeciągając myszą oraz trzymając wciśnięty klawisz SHIFT. Przesuwać elementy możemy także za pomocą myszy z wciśniętym SHIFTEM. A przesuwać węzły (tak jak ja zrobiłem to pod koniec filmiku) możemy za pomocą przeciągania myszą i wciśniętego klawisza CTRL.
Swobodne budowanie układów zajmuje trochę wprawy i czasu, jednak po chwili pracy z tym programem szybko można się przyzwyczaić


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.
Aby zablokować sygnał zegara przed dotarciem do pierwszego licznika, użyję bramki AND, nie ważne czy zegar ma stan niski czy wysoki, sygnał nie przejdzie dalej bez podania stanu wysokiego na drugie wejście bramki. 


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. 
Teraz potrzebujemy pewnego elementu, który pozwoli nam na włączanie lub wyłączanie sygnału krótkimi i jednorazowymi skokami napięcia (czyli wciśnięciami przycisku). Elementem pozwalającym nam na to jest przerzutnik RS. Ponieważ niestety program Paula Falstada nie posiada przerzutnika RS tylko D i JK to zbuduję go samemu. 
Do zbudowania tego przerzutnika wystarczą nam dwie bramki NOR podłączone tak jak jest pokazane powyżej, zbudujmy więc ten sam układ nad naszym stoperem.

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.
Patrząc na ilustrację powyżej, podłączmy drugie wejście bramki do wyjścia Q naszego przerzutnika. 
Teraz powstawiamy przyciski:

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". 
Napięcie wychodzi z naszego źródła i jest zatrzymywane przez nasz przycisk, po wciśnięciu go, dwa przewody są zwierane i napięcie przechodzi dalej.
Dla przejrzystości obwodu dodałem tam napisy. Napis można znaleźć w zakładce "wyjścia i napisy".
Teraz chcemy żeby przycisk start, faktycznie włączał uruchamiał nam stoper, aby to zrobić należy podłączyć przycisk pod napisem start do wejścia S naszego przerzutnika, wróć się z powrotem do ilustracji z przerzutnikiem, by sprawdzić który to przewód.

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.
Teraz zróbmy to samo z przyciskiem stop i podłączmy go do wejścia R naszego własno robionego przerzutnika.


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.

skończony układ powinien wyglądać tak, przycisk reset powinien wyzerować minuty, sekundy i milisekundy a start i stop kontrolować pracą stopera zgodnie z ich przeznaczeniem. Jeżeli wszystko działa poprawnie. Gratulacje! Właśnie zbudowałeś swój własny stoper cyfrowy. Nie jest to układ idealny i jest dość uproszczony, jednak działa i jest idealnym projektem do nauki elektroniki cyfrowej. 
wyjście !Q przerzutnika pozostawiamy niepodłączone, nie potrzebujemy go. 
po dwukrotnym naciśnięciu na zegar, wyświetli nam się okienko, gdzie możemy ustawić żądaną częstotliwość. W prawdziwym układzie użylibyśmy 10Hz, ponieważ sekunda ma 10 milisekund. Ciężko jest znaleźć taki zegar na 10Hz dlatego można użyć zegara z wyższą częstotliwością i zastosować dzielnik częstotliwości z przerzutnika JK albo nawet i licznika. Dla zabawy w symulatorze polecam jednak ustawić sobie zegar na o wiele wyższe wartości ponieważ domyślnie jeden krok symulatora trwa 5 MIKROSEKUND! Przez to względnie szybkie dla ludzkiego oka częstotliwości jak 10Hz, będą bardzo wolne w symulatorze.

Dla leniwych, tutaj jest link do gotowego układu. Zawsze lepiej jest robić rzeczy samemu, według mnie nauka w sposób doświadczalny jest najbardziej skuteczna i daje najlepsze efekty.

Mam nadzieję, że zainspirowałem kogoś swoim układem lub nauczyłeś się czegoś nowego dziś drogi czytelniku. Jeżeli zauważysz jakiś błąd, niedociągnięcie - śmiało pisz w komentarzach tego posta. Włożyłem w ten tekst bardzo dużo pracy i wolnego czasu więc chętnie usłyszę jakąś opinię, zachęcam także bardzo do udostępnienia tej pracy komuś kto interesuje się elektroniką. Nie jestem profesjonalistą, ale elektronika to moja paska i chętnie dziele się swoją wiedzą z innymi jak i uczę się od bardziej zaawansowanych. 

Bardzo dziękuję za uwagę i do zobaczenia w innych postach!






Komentarze

Popularne posty z tego bloga

Naprawa Yamaha stagepass 300 - cinch złamany w gnieździe

Układy scalone w module Siemens LOGO! DM8 230R

Inżynieria wsteczna panelu przycisków ze śmietnika