sobota, 18 września 2010

Druga postać cyfrówki

Poszperałem, pomyślałem i nawet coś wymyśliłem.
W poprzednim rozwiązaniu nie podobał mi się nadmiar tranzystorów jaki się klarował w tym projekcie, więc poszukałem czegoś bardziej scalonego. Znalazłem układ ULN2803, który zawiera w sobie 8 par typu Darlington z wyjściami typu otwarty kolektor. Co to oznacza? A no to, że każdy taki pojedynczy układ scalony zastąpi mi 8 tranzystorów. Na wejście wystarczy podać jakiś maluteńki prąd żeby na wyjściu umożliwić przepływ dużego, odciążając wyjścia układu Atmega co w poprzednim rozwiązaniu powodowało przygasanie diod przy zbyt dużym obciążeniu.
Drugim problemem do rozwiązania było zwiększenie ilości kolumn z diodami, bo w poprzednim rozwiązaniu mogło ich być jedynie 8. Teraz postanowiłem użyć 4 bitowego demultipleksera zwanego też dekoderem 4 do 16. Zamienia on 4 bitowy sygnał wejściowy w kodzie BCD na dziesiętny kod wybierając jedno wyjście spośród 16. Do tego celu wybrałem układ 74HC154. Oto schematyczny rysunek poprawionego rozwiązania.


A więc po zakupieniu wszystkich potrzebnych układów jak zwykle wpierw przystąpiłem do symulacji mojego rozwiązania na uniwersalnej płytce. I znowu zonk i kilka kolejnych błędów i problemów.
Po pierwsze. Przy wyborze układu dekodera nie dopatrzyłem się, iż wybrany przeze mnie układ 74HC154 ma zanegowane wyjścia. Co to oznacza, a no to, że zamiast wybierać 1 spośród 16 wyjść poprzez ustawienie na nim stanu wysokiego (czyli +5V, a reszta 0V), on ma wszystkie wyjścia w stanie wysokim a jedynie to jedno wybrane w stanie niskim. Totalna porażka. Co prawa mógł bym na wyjściu dekodera zastosować negatory np. z układu 7404, z tym że w każdym takim układzie jest tylko 6 negatorów co oznacza, że musiał bym dołączać kolejne 3 układy tylko dlatego że wybrałem zły scalak na początku.
A więc poszukałem innego układu i kupiłem tym razem układ CD4514, który realizuje tą samą operację co poprzedni tylko już bez negacji wyjść.
Drugi problem jaki się trafił w tym schemacie to fakt, że układy ULN2803 mają wyjścia typu otwarty kolektor więc nie nadają się po obu stronach matrycy, tylko po jednej. Spróbuje to wyjaśnić na przykładowym rysunku.
Na rysunku a) pokazana jest bardzo ogólna zasada działania tranzystora NPN z dołączoną diodą. Jak na wejściu B (baza) nie ma żadnego napięcia i nie płynie prąd to tranzystor jest zatkany czyli nie ma przewodzenia z kolektora C do emitera E. Jeśli na bazie pojawi się choćby malutki prąd, tranzystor zaczyna przewodzić w stronę od kolektora do emitera co spowoduje zapalenie się diody dołączonej do kolektora. Musimy pamiętać iż prąd zawsze płynie z miejsca o wyższym potencjale do punktu i potencjale niższym (potocznie z plusa do minusa). Teraz na rysunku b) przedstawiłem wycinek układu ULN2803 żeby pokazać co oznacza że ma wyjścia typu otwarty kolektor i w czym jest problem. Jest to rysunek poglądowy więc proszę się nie czepiac o szczegóły :). Końcówka kolektora tranzystora jest wystawiona jako wyjście układu. Stąd jeśli na wejście damy stan wysoki to na wyjściu NIE pojawi się wzmocniony stan wysoki, tylko tak naprawdę wyjście to umożliwi spływ prądu do układu tyle że ze zwiększonym potencjałem niż prąd na wejściu. Problemu nie ma dopóki nie zastosujemy w naszym układzie takich scalaków po obu stronach diody którą chcemy zapalić, bo prąd nie ma skąd spłynąć a tylko dokąd. I to jest właśnie ten problem o którym mówiłem.
Układy ULN2803 upraszczają budowę całego układu z tym że nie można ich zastosować po obu stronach matrycy jak to sobie wymyśliłem na początku. Zastosuje tutaj więc jednak zwykłe tranzystory na wyjściu z dekodera.

Teraz pokrótce jak działa sam dekoder. A więc bierze on kod BCD czyli kod zero jedynkowy na wejściach i zamienia go na kod dziesiętny. Czyli przykładowo ustawienie na wejściach stanu 0001 ustawi wyjście nr 1, kod 0010 wyjście 2, kod 0011 wyjście 3, kod 0100 wyjście 4. Te 4 wejścia umożliwiają 16 różnych kombinacji stanów wyjść bo kod 0000 ustawia wyjście nr 0 (wyjścia numerowane są od 0 do 15, w sumie razem 16).
Ogólna idea wyświetlania obrazu na takiej matrycy jest taka, iż:
  • ustawiamy poprzez port D na dekoderze wybranie pierwszej linii
  • portami B i C ustawiamy które diody w danej kolumnie mają się zaświecić.
  • czekamy jakiś krótki czas np 1 ms aby diody zdążył sobie chwilkę poświecić
  • gasimy wszystkie diody na porcie B i C i zmieniamy kolumnę na następną
  • operacje te powtarzamy aż dojdziemy do końca wyświetlacza
  • na koniec zaczynamy wszystko od nowa
Robiąc to bardzo szybko oko ludzkie nie dostrzega migotania tylko ładny stały obraz.

W końcu po wszystkich pomyślnych testach mogę przejść do projektowania samego obwodu i płytki drukowanej.
Ale to już w następnym poście.

2 komentarze: