Wzmacniacz tranzystorowy na wyjściu

Bezpośrednio z nóżki procesora można sterować tylko urządzenia mające bardzo mały pobór mocy. Np. już próba zapalenia diody świecącej z pełną jasnością może przeciążyć wyjście procesora. Ponadto wiele urządzeń pracuje z wyższymi napięciami. Gdy chcemy sterować czymś co potrzebuje niezbyt dużą moc, ale większą niż możliwiści procesora to najprostszym rozwiązaniem jest użycie wzmacniacza (przełącznika) na tranzystorze NPN. Tranzystor NPN ma trzy końcówki (nóżki): bazę, emiter i kolektor. Przy nie podłączonej bazie podanie napięcia między kolektorem i emiterem (plus na kolektor) powoduje przepływ znikomo małego prądu. W zasadzie można powiedzieć że pomiędzy kolektorem a emiterem nie płynie prąd. Podając niezbyt duże napięcie dodatnie między bazą a emiterem (plus na bazę) powodujemy że między kolektorem a emiterem może płynąć prąd. Dokładniej, przy napięciach niższych niż 0.6 V przez bazę płynie bardzo mały prąd. Przy podwyższaniu napięcia prąd bazy rośnie bardzo szybko. Gdybyśmy bazę bezpośrednio podłączyli do źródła napięcia to mógłby popłynąć zbyt duży prąd. W praktyce zawsze używa się jakiś element ograniczający prąd płynący przez bazę. Prąd płynący przez kolektor rośnie wraz z prądem płynącym przez bazę przy tym jest wielokrotnie większy (rzędu 100 razy). Tak więc puszczając niewielki prąd między bazą a emiterem powodujemy przepływ znacznie większego prądu między emiterem a kolektorem (oczywiście zakładam to że między emiterem a kolektorem jest podane napięcie).

Najprostszy wzmacniacz składa się z tranzystora i opornika. Emiter tranzystora łączymy z masą. Jedna końcówka opornika służy jako wejście (z nóżki procesora), drugą łączymy z bazą tranzystora. Kolektor służy jako wyjście. Dokładniej, obciążenie włączamy między dodatnie napięcie zasilające a kolektor. Istotne jest to że napięcie zasilające obciążenie może być wyższe niż napięcie otrzymane z procesora, ograniczeniem jest tu jak duże napięcie może wytrzymać tranzystor.

W ćwiczeniu jako obciążenie użyjemy dwie zielone diody świecące połączone w szereg i opornik ograniczający prąd płynący przez diody. Pojedyncza dioda potrzebuje powyżej 1.8V do pracy, dwie diody potrzebują więcej niż 3.6V, co nie pozwala na bezpośrednie sterowanie z procesora zasilanego 3.3V. Jednakże zasilając diody z 5V możemy je sterować poprzez tranzystor. Ćwiczenie polega na zbudowaniu układu na płytce stykowej i wypróbowaniu go z wybraną płytką uruchomieniową. Dokumentacja tranzystora C945, zawiera kolejność wyprowadzeń. Uwaga: W praktyce często tranzystory używa się do sterownia przekaźnikami czy silniczkami. Jednakże wtedy trzeba dodać diodę (lub inny elementy) aby zabezpieczyć tranzystor przed przepięciami podczas wyłączania obciążenia. Uwaga2: Wyżej używamy tranzystor NPN, bo typowo układy są zasilane napięciami dodatnimi względem masy. Przy zasilaniu napięciami ujemnymi należałoby użyć tranzystor PNP. Uwaga3: Wyżej zakładamy że obciążenie może być stale podłączone do dodatniej linii zasilania, zaś druga linia podłaczona do kolektora albo widzi duży opór, albo przez kolektor jest podłączana do masy. Przy tym na tranzystorze jest spadek napięcia (typowo pomiędzy 0.1V a 1.5V) toteż druga linia obciążenia jest na potencjale nieco wyższym niż masa. Niekiedy to nie jest akceptowalne i chcemy by jedna linia obciążenia była stale połączona z masą a druga podłączana do zasilania. To wymaga dwu tranzystorów, jeden NPN and drugi PNP.

Wzmazniacz z MOSFET-em

Przy sterowaniu obciążeniem większej mocy tranzystory bipolarne sprawiają kłopot z powodu relatywnie dużego prądu potrzebnego do sterowania takiego tranzystora i z powodu strat mocy. Lepszym rozwiązaniem może być użycie tranzystora polowego MOS z kanałem typu n, np. IRLZ34N. Tranzystor polowy jest sterowany napięciem między bramką a źródłem. Bramka ma bardzo duży opór, tak że prąd płynący przez bramkę jest znikomo mały. Przy zerowym napięciu między bramką a źródłem trazystor MOS reprezentuje duży opór między drenem a źródłem. Przy podaniu na bramkę napięcia większego od tzw. napięcia progowego trazystor zaczyna przewodzić, coraz bardziej ze wzrostem napięcia. Niektóre typy tranzystorów MOS mają dość duże napięcie progowe. Tranzystor IRLZ34N na stosunkowo niskie napięcie progowe i przy podaniu napięcia 3V już całkiem dobrze przewodzi. Dzięki temu można go bezpośrednio sterować z procesora i bez dodatkowego chłodzenia (radiatora) używać go do przełączania prądu rzędu 2A przy napięciu do 55V. Aby w pełni wykorzystać możliwości tranzystora należałoby dodać radiator (do rzędu 6A) i podać wyższe napięcie na bramkę (do rzędu 15A przy 10V na bramce). Tranzystor ma zintegrowaną diodę która normalnie jest spolaryzowana zaporowo a przewodzi przy odwrotnym włączeniu napięcia między drenem a źródłem. Ćwiczenie polega na wypróbowaniu tranzystora, należy użyć go do włączania diody świecącej. Źródło (z dolutowanym białym kabelkiem) łączymy z masą, bramkę (niebieski kabelek) łączymy z jednym w wyjść procesora. Zasilanie podajemy na jedną końcówkę diody, drugą przez opornik łączymy z drenem. Uwaga: Koniecznie użyć opornik ograniczający prąd. Próba podłączenia samej diody może doprowdzić do sporych uszkodzeń. Komantarz: Podobnie jak w przypadku tranzystora NPN gdy używamy tranzystora MOS z kanałem typu n to jedna końcówka obciążenia jest stale podłączona do plusa zasilania, a tranzystor łączy drugą końcówkę obciążenia z masą. Niekiedy chcemy by jedna końcówka obciążenia była stale połączona z masą. Wtedy należałoby użyć tranzystor z kanałem typu p i drugi tranzystor (polowy z kanałem n albo bipolarny NPN) aby go właściwie wysterować.

Przekaźnik

Niekiedy lepszym rozwiązaniem od stosowania tranzystorów jest użycie przekaźnika. Dokładniej, zwykle procesor steruje tranzystorem NPN małej mocy który z kolei steruje przekaźnikiem. Przy sterowaniu przekaźnikiem trzeba uważać bo gdy wyłączamy prąd płynący przez cewkę przekaźnika indukuje się w niej spore napięcie które może uszkodzić tranzystor sterujący przekaźnikiem. Mianowicie, indukowane napięcie jest proporcjonalne do pochodnej natężenia prądu płynącego przez cewkę i próba nagłego zmniejszenia prądu (gdy wyłączamy sterujący tranzystor) prowadzi do dużej wartości bezwzględnej pochodnej, czyli indukuje się spore napięcie. Teoretycznie to napięcie mogłoby być nieskończone, ale w praktyce przy dużym napięciu prąd znajdzie sobie drogę przepływu (być może niszcząc elementy) co ogranicza wartość pochodnej. Aby zapobiec takim problemom zwykle równolegle z przekaźnikiem włącza się diodę która nomalnie jest spolaryzowana zaporowo, ale daje drogę przepływu dla wyindukowanego prądu w trakcie wyłączania przekaźnika co ogranicza indukowane napięcie do nieszkodliwych wartości. Do dyspozycji mamy moduły z przekaźnikem i dodatkowymi elementami: tranzystorem sterującym, diodą zabezpieczającą i diodą świecącą sygnalizującą włączenie przekaźnika. Ćwiczanie polega na wypróbowaniu modułu przekaźnika. Wysterować przekaźnik z procesora, zmierzyć opór włączonego przekaźnika.

Drgania zestyków

Przy odczycie danych z przycisków czy mechanicznych przełączników problemem może być drganie zestyków. Mianowicie, przez pewien czas (rzędu mikrosekund do milisekund) kontakt jest na przemian otwierany i zamykany aż wreszcie ustali się stan stabilny (otwarty lub zamknięty). Jeśli program ma reagować na zmianę stanu to pierwsza zmiana jest "rzeczywista", ale przez krótki czas następne zmiany mogą wynikać z drgania zestyków. Prostą metodą eliminacji wpływu drgań zestyków jest ignorowanie zmian przez ustalony czas (np. 10 ms) po wykryciu pierwszej zmiany. Inną metodą jest wielokrotny odczyt stanu zestyku i uznanie stanu za stabilny dopiero kiedy szereg kolejnych odczytów da taki sam wynik. Jeszcze inny sposób działa dla wyłączników mających dwa kontakty takie że jeden jest zwierany gdy drugi jest rozwierany i odwrotnie. Wtedy po wykryciu zwarcia na kontakcie pierwszym czekamy na zwarcie na kontakcie drugim, po zwarciu na drugim czekamy na pierwszy. To są metody programowe. Można też użyć dodatkowy sprzęt. W najprostszym przypadku równolegle do zestyku umieszczamy kondenstor, tak że zwarty zestyk rozładowuje kondensator. Kondensator jest ładowany przez opornik o ile zestyk jest rozwarty. Gdy kondensator się naładuje to na wejsciu mamy 1. Po zwarciu zestykiem do masy mamy 0. Krótkotrwałe rozwarcia podczas drgania nie wystarczają do naładowania kondensatora i na wejściu jest 0. Dopiero długotrwałe rozwarcie daje 1. Ćwiczenie polega na tym by spróbować wykryć drgania zestyków. W ciasnej pętli program ma czytać stan zestyku. Po wykryciu zwarcia ma odmierzać czas do pierwszego rozwarcia, a następnie wysłać wynik przez port szeregowy do PC. Potem odczekać i ponownie badać zestyk.

Dodatkowe wyjścia

Procesory mają ograniczoną ilość nóżek. Procesor z większą ilością nóżek może być zbyt kosztowny lub kłopotliwy w zastosowaniu (np. procesorów mających większą ilość nóżek zwykle nie da się włożyć w płytkę stykową). Czasami wyjścia są potrzebne w większej odległości od procesora i po prostu nie chcemy prowadzić tyle linii. Najprostszą metodą powiększania ilości dostępnych linii wyjściowych jest użycie rejestru przesuwającego. Rejestr przesuwający to zestaw komórek pamięci połączonych ze sobą tak że wyjście komórki n jest połączone z wejściem komórki n + 1. Wejście pierwszej komórki jest wejściem całego układu. Dla naszych celów potrzebny jest rejestr taki że można na raz odczytać wyjścia wszystkich komórek. Wtedy podając na linii wejściowej odpowiednie bity i impulsy zegarowe moża wypełnić rejestr przesuwający dowolną wartością używając tylko dwu linii, tzn. danych wejściowych i zegara. W najprostszym rejestrze przesuwającym w trakcie wprowadzania do niego wartości wejściowej na wyjściu pojawiają się stany przejściowe które mogą być niepożądane. Lepszy rejestr ma dodatkowy bufor wyjścia, linie wyjściowe są sterowane z bufora i nie zmieniają się podczas wypełniania rejestru. Dopiero po wypełnieniu rejestru wartość kopiuje się do bufora. Dokładniej, potrzebujemy trzecią linię, zmiana z 0 na 1 na tej linii powoduje skopiowanie wartości z rejestru przesuwającego do bufora wyjściowego. Odpowiednim układem jest 74HC595. Oprócz potrzebnych nam sygnałów ma on dwa dodatkowe wejścia: SCLR które zeruje rejestr przesuwający i G które decyduje czy wyjście równoległe jest aktywne czy odłączone (w stanie dużej impedancji). G musimy podłączyć do masy, zaś SCLR do zasilania. Linie SI (wejście), SCK (zegar rejestru przesuwającego) i RCK (sygnał wpisywania danych z rejestru przesuwającego do bufora) podłączamy do procesora. Wyjścia QA do QH podłączamy przez oporniki 220 Ohm do diod świecących. Wyjście QH' zostawiamy nie podłączone (można je użyć do połączenia kilku układów 74HC595 w szereg). Ćwiczenie polega na tym by podłaczyć układ do procesora i wypróbować go, np. rotując jakiś wzorzec bitowy i obserwując wynik na diodach świecących. Uwaga: Podobną funkcję może spełniać układ HCF4094, ale HCF4094 ma mniejszą szybkość i trudniej z niego sterować diodami świecącymi (nie da się z niego pobrać tyle prądu co z 74HC595). Uwaga2: Są bardziej zaawansowane układy spełniające podobne funkcje, ale kosztują one drożej i steruje się nimi w bardziej skomplikowany sposób.

Dodatkowe wejścia

Podobnie jak z liniami wyjściowymi niekiedy potrzebujemy więcej linii wejściowych. Najprostszym sposobem powiększenia dostępnej ilości linii jest użycie rejestru przesuwającego z wpisywaniem równoległym. W takim rejestrze komórki rejestru mają wyprowadzone na zewnątrz dodatkowe wejścia. Dane do rejestru wpisujemy podając impuls na specjalną linię. Po wpisaniu do rejestru dane przesuwamy podające impulsy zegarowe. W trakcie przesuwania pojawiają się one w postaci szeregowej na wyjściu ostatniej komórki rejestru. Odpowiednim układem jest np. HEF4021. Do procesora podłaczamy linię PL i CP (dla procesora są to wyjścia) i Q7 (dla procesora to wejście). Gdy procesor poda 1 na linię PL to rejestr zapamiętuje dane z wejścia równoległego. Zmiana CP z 0 na 1 przesuwa dane (kolejny bit pojawia się na wyjściu Q7). Układ HEF4021 ma dodatkowe wejście DS które można użyć do połączenia kilku takich układów w szereg (nam wystarczy podłączenie do masy lub do zasilania). Uwaga: Nieużywane wyjścia układu HEF4021 można pozostawić niepodłączone. Wejścia muszą być do czegoś podłączone, inaczej będą łapać zakłócenia co może powodować problemy.

Dodatkowe wejście/wyjście 2

Zamiast używać rejestry przesuwające dodatkowe wejścia/wyjścia można uzyskać przy pomocy specjalnego układu ekspandera wejścia/wyjścia, np MCP23017. Ten układ pozwala na sterowanie 16 dodatkowych wejść/wyjść poprzez magistralę I2C.

Układ MCP23017 można zamontować na płytce stykowej. Do nóżki 10 podłączamy masę a do nożki 9 zasilanie. Pomiędzy zasilanie a masę trzeba dać kondensator filtrujący zasilanie (np 68nF). Trzeba jeszcze podłączyć interfejs I2C (linie 12 i 13). Linie I2C potrzebują oporników "podciągających": oporniki 1.8 kOhm łączymy między te linie a zasilanie.

Środowska Energia i Arduino zawierają biblioteki do obsługi I2C, co daje podstawę do komunikacji. Instrukcja układu MCP23017 zawiera zestaw poleceń. Są też w sieci gotowe przykłady użycia tego układu.

Optoizolacja

Dość często zachodzi potrzeba izolacji elektrycznej między urządzeniami. Izolacja ogranicza wpływ zakłóceń, może też być wymagana ze względów bezpieczeństwa. Popularną metodą przesyłania sygnałów między izolowanymi elektrycznie urządzeniami jest użycie transoptorów (czyli optoizolacja). Transoptor zawiera diodę świecącą która przekształca sygnał elektryczny na światło i fototranzystor który przekształca światło z powrotem na sygnał elektryczny. Pomiędzy diodą świecącą a fototranzystorem umieszcza się materiał przezroczysty ale nie przewodzący prądu. Najprostszy obwód z transoptorem podłącza do diody święcącej w transoptorze sygnał poprzez opornik (tzn, wejście jest na jedną końcówkę opornika, druga końcówka opornika jest podłączona do diody świecącej, druga końcówka diody jest podłączona do masy). W obwodzie wyjściowym, pomiędzy emiterem fototranzystora a masą podłącza się drugi opornik. Kolektor fototranzystora podłącza się do zasilania. Sygnał wyjściowy pobiera się z emitera fototranzystora. Taki układ powiela sygnał z wejścia na wyjście. Zamiant dawać opornik w emiterze fototranzystora można go dać między zasilaniem a kolektorem i pobierać sygnał z kolektora. Wtedy sygnał jest negowany. Przykładem transoptora jest PS2501. Ćwiczenie polega na wypróbowaniu transoptora (zmontować obwód na płytce stykowej). Proszę spróbować transmisję szeregową (UART) przez transoptor. Transoptor PS2501 ma ograniczoną szybkość, więc transmisja z dużą szybkością nie będzie działać. Można by też spróbować transmisji SPI, ale to wymaga więcej linii czyli też więcej transoptorów.