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.

Symbol tranzystora bipolarnego typu NPN

Symbol tranzystora bipolarnego typu NPN

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:

Tranzystor NPN - idea wykorzystania

Tranzystor NPN - idea wykorzystania

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.

Przykład wykorzystania 4 diód do przekroczenia 40 mA obciążenia

Przykład wykorzystania 4 diód do przekroczenia 40 mA obciążenia

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:

MPS2222A - opis wyprowadzeń

MPS2222A - opis wyprowadzeń

  1. emiter
  2. baza
  3. 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ą):

Fizyczne podłączenie układu

Fizyczne podłączenie układu

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

Fizyczna realizacja - ujęcie pierwsze

Fizyczna realizacja - ujęcie pierwsze

Fizyczna realizacja - ujęcie drugie

Fizyczna realizacja - ujęcie drugie

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

15 thoughts on “Gdy prądu brakuje

  1. r

    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!

    Odpowiedz
    1. netmaniac Autor wpisu

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

      Odpowiedz
  2. kml

    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!

    Odpowiedz
  3. utak3r

    Jak wyliczyć prąd do wysterowania przekaźnika (np. do świetlówki w akwarium)? A może jakoś inaczej należy to rozwiązać?

    Odpowiedz
  4. netmaniac Autor wpisu

    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ć…

    Odpowiedz
  5. pinkeen

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

    Odpowiedz
  6. netmaniac Autor wpisu

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

    Odpowiedz
  7. Marcin

    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

    Odpowiedz
  8. Mchl

    Przy bazie tranzystora, żeby tranzystor w odpowiednim zakresie działał (nasycenia).
    Przy diodach, żeby diod nie poniszczyć.

    Odpowiedz
  9. Matek

    Czy wystarczy mi wyjście pwm z arduino + 2N2222 aby sterować małym silniczkiem wibracyjnym 2,5V (140mA)?

    Odpowiedz
  10. marek

    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 ?

    Odpowiedz
  11. padre

    “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ę?

    Odpowiedz

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

This site uses Akismet to reduce spam. Learn how your comment data is processed.