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