Sterowanie silnikiem DC za pomocą tranzystora

Jak podłączyć oraz wysterować silnik DC przy użyciu tranzystora i Arduino.

Wstęp

Tranzystor 2N2222

Jednym ze sposobów wysterowania małego silnika DC jest użycie tranzystora. Silnik zużywa więcej mocy niż może dać wyjście cyfrowe z Arduino. Jeśli jednak znajdzie się ktoś odważny, kto podłączy silnik bezpośrednio do Arduino to ma sporą szansę na uszkodzenie Atmegi (wyjątkiem są małe silniczki o małym poborze prądu, w tym tekście zajmiemy się ich większymi odpowiednikami). Dlatego dobrym pomysłem jest użycie tranzystora PN2222 jako przełącznika zużywającego mniej prądu z wyjścia cyfrowego w celu wysterowania bardziej prądożernego silnika.

Schemat

Schemat podłączenia tranzystora i silnika DC do Arduino

Do zbudowania naszego układu będziemy potrzebowali następujących części:

Tranzystor posiada trzy wyprowadzenia. Większość elektryczności płynie z kolektora (C) do emitera (E), ale tylko wtedy kiedy mniejsza część przepływa przez bazę (B). Ta mniejsza część jest dostarczana z Arduino przez wyjście cyfrowe.

Działanie tranzystora

Pin D3 Arduino jest połączony poprzez rezystor z bazą. Podobnie jak przy użyciu diód LED, rezystor ma za zadanie ograniczyć prąd płynący przez tranzystor od bazy. Pomiędzy silnik jest wpięta dioda, której zadaniem jest przepływ elektryczności tylko i wyłącznie w jednym kierunku. Kiedy wyłączymy zasilanie, możemy uzyskać ujemne “piki”, które mogą uszkodzić tranzystor bądź nasze Arduino. Właśnie w celu wyeliminowania tych “pików” używamy diody wpiętej pomiędzy kable silnika.

Do sterowania silnikiem użyjemy prostego kodu, którego zadaniem będzie ustawienie takiej prędkości jaką podamy w Serial monitorze.

int motorPin = 3;

void setup()
{
pinMode(motorPin, OUTPUT);
Serial.begin(9600);
while (! Serial);
Serial.println("Speed 0 to 255");
}


void loop()
{
if (Serial.available())
{
  int speed = Serial.parseInt();
  if (speed >= 0 && speed <= 255)
  {
    analogWrite(motorPin, speed);
  }
}
}

Powyższy kod ma za zadanie zwiększanie, bądź zmniejszanie obrotów silnika w zależności od tego jaką wartość wpiszemy. Pamiętajmy, że możemy wpisać wartość z zakresu 0-255. Komenda Serial.parseInt() odczytuje liczbę całkowitą typu int i zapisuje ją w programie jako “speed”. Jeśli wpiszemy liczbę większą od 255 to program nic nie zrobi, ponieważ jest to liczba powyżej naszego zadeklarowanego przedziału. Oczywiście zamiast silnika możemy użyć też diody LED i tym sposobem możemy zrobić sobie prosty regulator oświetlenia.

Układ gotowy do testów

Podsumowanie

Jak widać sterowanie silnikiem DC możemy rozwiązać na dwa sposoby. Możemy użyć układu L293D (jeśli planujemy wykorzystanie silnika o większym zapotrzebowaniu na prąd) lub tranzystora NPN (w tym przypadku 2N2222).

Zachęcamy każdego do modyfikowania kodu według własnych potrzeb. Jeśli nie macie pod ręką silnika, do testów możecie użyć także diody LED.

Odnośniki

Czego się nauczyliśmy