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.