Gdy prądu brakuje
Prędzej czy później w eksperymentach z Arduino będziemy chcieli wysterować jakieś urządzenie, które do pracy potrzebuje więcej niż 40 mA, które może zapewnić cyfrowe wyjście z Arduino. Może to być przekaźnik, żaróweczka czy inne bardziej zachłanne urządzenie.
Co zrobić?
Pozostaje skorzystać z tranzystora jako elementu wzmacniającego. Techniki analogowe, to jest temat rzeka, na którym się na dodatek nie znam :) (każdy kto ze mną studiował wie co mam na myśli :) ), tutaj postaram się przekazać parę informacji, które mogą pozwolić na sterowanie urządzeniami o większym poborze prądu. Niniejszy przykład bazuje na materiałach wchodzących w skład Arduino Starter Kit dostępnego na Nettigo.pl.
Co musisz wiedzieć o tranzystorach.
Rodzaje – ze względu na ich budowę. Podstawowe dwie grupy to bipolarne i unipolarne. My teraz zajmiemy się bipolarnymi. Bipolarne mają dwie podgrupy – tranzystory NPN i PNP. Różnica jest w tym jak poukładany w środku jest materiał półprzewodnikowy, a na zewnątrz różnią się tym jak należy polaryzować poszczególne wyprowadzenie i jak płynie prąd.
Wydaje mi się, że prostszym do zastosowania w przypadku gdy chcemy wysterować z Arduino jest NPN i takim się teraz zajmiemy – bo tranzystor NPN sterujemy napięciem dodatnim a takie Arduino oferuje na swoim wyjściu cyfrowym.
Tranzystory bipolarne mogą pracować w różnych układach i każdy z nich może mieć różne zastosowanie. My potrzebujmy aby mały prąd z wyjścia cyfrowego Arduino włączał i wyłączał przepływ znacznie większego prądu przez tranzystor (gwoli ścisłości układ w jakim będziemy podłączać tranzystor nazywany jest kluczem tranzystorowym).
W tym układzie tranzystor jest przełączany między dwoma stanami: nasycenia i zatkania.
- stan zatkania: napięcie UBE jest zbyt małe, aby złącze baza-emiter zaczęło przewodzić. W rezultacie żaden prąd nie płynie przez kolektor tranzystora.
- stan nasycenia: do bazy wpływa tak duży prąd, że zależność IC=hFE*IB nie może być spełniona. Wtedy napięcie UCE spada niemal do zera.
W praktyce prąd kolektora w stanie nasycenia jest ograniczony jedynie obciążeniem, czyli tym, co podłączymy pomiędzy kolektor a zasilanie. Ograniczeniem jest też wydajność zasilacza, którego używamy. Należy również uważać, żeby nie przekroczyć maksymalnego dozwolonego prądu kolektora, który dla obecnie dodawanego do Starter Kitu tranzystora MPS2222A wynosi 600mA.
Jak to wygląda w praktyce?
Zanim zaczniemy szkicować układ – zasady polaryzacji tranzystora NPN tak aby pracował jako przełącznik będą spełnione gdy:
- emiter podłączymy do masy
- na bazę podamy napięcie dodatnie (przełącznik przewodzi) lub 0 (przełącznik jest rozwarty)
- do kolektora podłączymy przez obciążenie zasilanie
Czyli:
Gdy zewrzemy przełącznik S1 (odpowiada to ustawieniu wyjścia cyfrowego Arduino w stanie wysokim), do bazy tranzystora zaczyna płynąć prąd. Musi on być na tyle duży, żeby tranzystor wszedł w stan nasycenia, czyli napięcie UCE spadło poniżej UCE(sat) (napięcie nasycenia kolektor-emiter). Według karty katalogowej, wartość UCE(sat) zależy od prądów IC oraz IB i można ją przyjąć mniej więcej jako 0.3V.
W skład Arduino Starter Kit nie wchodzi żaden element, który sam z siebie mógłby służyć jako odbiornik prądu większego niż 40 mA. Ale możemy połączyć równolegle kilka diód LED aby przekroczyć ten próg i zademonstrować całość zagadnienia w praktyce.
Oszacujmy prąd płynący przez jedną diodę – napięcie odkładające się między kolektorem a emiterem w stanie nasycenia to w przybliżeniu 0V. Na diodzie czerwonej odkłada się mniej więcej 1.8V czyli na rezystor zostaje 5-1.8 = 3.2. Przy rezystorach R2-R5 280 ohm prąd przez nie płynący powinien być 3.2/280 = 11.42 mA. Przy 4 diodach powinno to dać nam około 45 mA.
Zanim podłączymy tranzystor musimy wiedzieć która nóżka jest która:
- emiter
- baza
- kolektor
Fizyczne podłączenie elementów zilustrowane we Fritzingu (przyznam szczerze – tym razem nie da się tego łatwo rozczytać – zdjęcia będą chyba lepszą ilustracją):
I dwa zdjęcia (w lewej części płytki stykowej jest zmontowany inny układ, więc to co widać poniżej rzędu 25 na płytce nie ma żadnego związku z układem tutaj opisywanym):
Uwaga montażowa – obcięte nóżki rezystorów nadają się doskonale do robienia krótkich zworek na płytce stykowej – na zdjęciu widać je bardzo wyraźnie.
Dla kompletu – bill of materials wygenerowany z Fritzinga (wszystkie potrzebne elementy wchodzą w skład Arduino Starter Kit od Nettigo):
Fritzing Bill of Materials Sketch: tranzistor.fz Date: Mon Dec 14 10:30:33 2009 Arduino Arduino Diecimila Breadboard1 Generic Breadboard LED1 Red LED - 5mm LED2 Red LED - 5mm LED3 Red LED - 5mm LED4 Red LED - 5mm Q1 NPN-Transistor R1 220Ω Resistor R2 220Ω Resistor R3 220Ω Resistor R4 220Ω Resistor R5 220Ω Resistor Shopping List Quantity Part 5 220Ω Resistor 1 Arduino Diecimila 1 Generic Bajillion Hole Breadboard 1 NPN-Transistor 4 Red LED
Oczywiście rezystory 220Ω to rezystory dodawane w Arduino Starter Kit do diód LED i mogą mieć inne wartości – z przedziału 200Ω do 280Ω. Niezależnie od wartości niniejszy układ będzie działał.
Szkic do Arduino to klasyczny przykład Blink:
/* * Blink * * The basic Arduino example. Turns on an LED on for one second, * then off for one second, and so on... We use pin 13 because, * depending on your Arduino board, it has either a built-in LED * or a built-in resistor so that you need only an LED. * * http://www.arduino.cc/en/Tutorial/Blink */ int ledPin = 02; // LED connected to digital pin 13 void setup() // run once, when the sketch starts { pinMode(ledPin, OUTPUT); // sets the digital pin as output } void loop() // run over and over again { digitalWrite(ledPin, HIGH); // sets the LED on delay(4000); // waits for a second digitalWrite(ledPin, LOW); // sets the LED off delay(2000); // waits for a second }
Jeszcze na koniec jakie wartości zostały uzyskane w rzeczywistym układzie? Dla rezystorów 280Ω:
- napięcie zasilania – 4.96V
- napięcie na tranzystorze w stanie aktywnym UCE 0.03 V
- napięcie na diodach LED podczas świecenia – od 1.86 do 1.93 V
- prąd płynący przez diody (już nie mierząc rzeczywistej rezystancji R2-R5, bo każdy z nich może mieć rozrzut +-5%) – od 10.7 mA do 10.9 mA
Jako ćwiczenie domowe – można zmienić pin użyty do sterowania tranzystorem na któryś obsługujący PWM i zamiast używać digitalWrite
użyć pętli z analogWrite
i sterować jasnością świecenie diód. Film ilustrujący działanie takiego podłączenia:
Driving over 40mA of current – PWM version from Starter Kit on Vimeo.
Dziś przydługawy wpis, ale musiałem zmieścić tutaj trochę teorii. Bardzo się starałem, aby nie wprowadzić tutaj nieścisłości, ale przyznaje się, że technika analogowa nie jest moją mocną stroną :)) Jeżeli widzisz w tym tekście jakieś niedokładności – proszę daj mi znać, postaram się uściślić.
Dzięki opisaniu poszczególnych elementów ze starter-kitu można sobie łatwo przyswoić podstawy. Jedyne czego mi brakowało do tej pory to przykład z bramką logiczną ale znalazłem go na arduino.cc w playgrounds.
Jakość wpisów b. dobra, co najważniejsze są ciekawe, trzymaj tak dalej!
Dzięki, taka jest właśnie myśl przewodnia za Arduino Starter Kitem – żeby móc poznać różne zagadnienia z tej dziedziny.
Co do rejestru przesuwnego, tak jak najbardziej przykład tutaj też się pojawi :)
Już od dawna zbierałem się, żeby przyswoić sobie dokładniej zasadę działania tranzystora i zrobić taki wpis. Tu mam wszystko na tacy i w bardzo przystępnej formie. Dobra robota!
Ile w tym przypadku wyniesie napięcie Uce ? I jak je policzyć?
Jak wyliczyć prąd do wysterowania przekaźnika (np. do świetlówki w akwarium)? A może jakoś inaczej należy to rozwiązać?
Pytanie jest o to jaki prąd jest potrzebny z Arduino do przekaźnika czy o prąd zasilający świetlówkę (z przekaźnika)?
Jeżeli to pierwsze to prąd pobierany przez przekaźnik to powinien to być parametr przekaźnika – szukać w datasheet’cie.
Jeżeli o prąd świetlówki to w stanie pracy zawsze można z mocy i napięcia zasilającego policzyć – MOC/NAPIĘCIE czyli świetlówka 20W zasilana z 24V potrzebuje około 0.83 A. Ale to w trakcie pracy – podczas startu to może nie obowiązywać…
Mam jedno pytanie. Otóż pisze Pan, że maksymalnie możemy przepuścić przez taki tranzystor 600mA. Nie jestem pewien czy to prawda. Sprawdziłem notę katalogową i owszem maksymalny prąd pomiędzy kolektorem a emiterem to 600mA natomiast ten tranzystor może rozproszyć 625mW przy 25 st. C. Np. 625mW / 3V =~ 200mA czyli o ile się nie mylę to 600mA tylko przy napięciu około 1V bo inaczej tranzystor nam się przepali chyba, że go schłodzimy jakoś? Czy się nie mylę? Można by dodać, że za pomocą takiego układu nie wysterujemy łatwo odbiorników ze wspólną katodą, bo sterujemy „minusem” – czy PNP się do tego nada? Oczywiście mogę się mylić bo nie jestem biegły w elektronice. Ogólnie dobra robota, dziękuje i tak trzymać. :)
Co ja mogę powiedzieć :) mam problemy z analogówką. Czy te informacje w tym artykule są poprawne? Robiłem rozeznanie i starałem się opisać to do czego doszedłem. Mam nadzieję, że nie odbiega to znacznie od prawdy.
Tyle disklajmera ;)
Co do maksymalnych prądów z tytułu mocy – napięcie w takim układzie na Uce jest znacznie mniejsze. Jest tutaj zapisane 0.03V, teraz nie mam pod ręką takiego ukłądu (chyba będę musiał przetestować jeszcze raz) ale mogło to być 0.3V. Nawet jeśli tak to to powinien dać radę z tego tytułu.
Ale podkreślam – analogowe techniki to nie jest moja mocna strona :)
Witam,
Trochę z innej beczki:
mam aparat który ma możliwość podłączenia elektronicznego wężyka spustowego – najprościej ujmując jest to zwykły przełącznik :
włączony = zdjęcie ;
wyłączony = brak zdjęcia;
jak podłączyć do tego tranzystor, tak aby można było sterować migawkę wyjściem cyfrowym arduino ?
Aparat działa na 7.4 v
po co te rezystory?
Przy bazie tranzystora, żeby tranzystor w odpowiednim zakresie działał (nasycenia).
Przy diodach, żeby diod nie poniszczyć.
Czy wystarczy mi wyjście pwm z arduino + 2N2222 aby sterować małym silniczkiem wibracyjnym 2,5V (140mA)?
@Matek
Tak, powinno działać
W miejsce led podłączyłem miernik. Napięcie zmienia się w zakresie 4,52V – 4,16V. Podłączony silnik kątowy Pololu 4,5V/80mA kręci się nie zmieniając prędkości zauważalnie. Za pomocą tego schematu nie posteruje silnikiem ?
„W praktyce prąd kolektora w stanie nasycenia jest ograniczony jedynie obciążeniem, czyli tym, co podłączymy pomiędzy kolektor a zasilanie.”
Czy to znaczy, że zamiast 4 równoległych diód możemy spokojnie podłączyć jedną? Opór zastępczy takiego obciążenia będzie większy niż w załączonym przykładzie, więc powinien też popłynąć mniejszy prąd do kolektora. Czy mam rację?