Arduino i MOSFET

Steruj urządzeniami z użyciem MOSFETu

Wstęp

Przychodzi taki moment, iż użytkownik będzie chciał sterować bardziej prądożernymi urządzeniami z wykorzystaniem Arduino. Wszyscy wiemy, że Arduino możne dać na każdy pin maksymalnie 40mA, jednak zalecane jest 20mA. Dobrze, ale co w przypadku kiedy chcemy sterować np. silnikiem DC?

Wtedy możemy użyć np. tranzystora bipolarnego, jeśli pobór prądu nie będzie zbyt duży, mostka L293D lub MOSFET'u.

Czym jest MOSFET?

W naszym projekcie użyjemy MOSFET STP16NF06L, który posiada kanał typu N. Ale czym jest MOSFET, otóż jest to tranzystor polowy posiadający 3 nóżki, źródło (S), bramkę (G) oraz dren(D). Przepływ prądu następuje pomiędzy źródłem i drenem, przez tzw. kanał, sterowanie tym następuje na skutek zmiany napięcia bramka-źródło. Ponieważ bramka jest izolowana od kanału to nie płynie przez nią żaden prąd – dla prądu stałego oporność wejściowa jest nieskończenie duża. Tranzystory MOS są elementami bardzo szybkimi w porównaniu z tranzystorami bipolarnymi, gdyż zachodzące w nich zjawiska są czysto elektrostatyczne. Głównym czynnikiem zwiększającym czas przełączania jest obecność pojemności bramki, którą trzeba przeładować przy przełączaniu.

MOSFET

Symbol MOSFETu

Podłączenie

Bramkę MOSFETu (G) należy podłączyć do Arduino. Generalnie możemy przyjąć że do źródła (S) podłączamy masę naszego całego układu, a do drenu (D) masę naszego obiektu, którym mamy zamiar sterować (np. żarówki). Dodatkowo warto podłączyć rezystor sprzegający do masy pomiędzy bramkę (G), a źródło (S). Da nam to pewność, że bramka będzie cały czas w stanie niskim kiedy Arduino nie będzie wysyłać stanu wysokiego. Co więcej w przypadku gdyby doszło do uszkodzenia kabla, mamy pewność że na bramce nie będzie stanu nieokreślonego, który mógłby powodać załączanie i wyłączanie naszego układu.

Rezystor podłączony pomiędzy masę, a bramkę

Dla naszego przykładu wykorzystamy silnik DC, którym będziemy sterować. Nasz układ ma za zadanie zwiększać oraz zmniejszać obroty silnika. Podłączamy wszystko zgodnie z poniższym schematem. Dodatkowo możemy podłączyć zewnętrzne źródło zasilania naszego silnika pamiętając, aby masy zasilacza i Arduino połączyć ze sobą.

Schemat układu

Kod

Do projektu skorzystamy z przykładowego kodu znajdującego się w zakładce Examples->Basics->Fade

Wykorzystanie przykładowego kodu

int led = 9;           // przypisanie pinu do zmiennej (dioda led podłączona do pinu 9)
int brightness = 0;    // jak jasno ma świecić dioda
int fadeAmount = 1;    // w ilu krokach ma nastąpić rozjaśnianie/ściemnianie diody

void setup()  {
  // konfiguracja pinu 9 jako wyjście (output):
  pinMode(led, OUTPUT);
}


void loop()  {
  // ustawienie jasności pinu 9:
  analogWrite(led, brightness);

  // zmiana jasności za każdym następnym powtórzeniem pętli:
  brightness = brightness + fadeAmount;

  // odwrócenie kierunku rozjaśniania (czyli ściemnianie) w momencie dojścia do pełnego wypełnienia:
  if (brightness == 0 || brightness == 255) {
    fadeAmount = -fadeAmount ;
  }
  // odczekanie 30 milisekund, aby zobaczyć efekt ściemniania
  delay(30);
}

Na potrzeby animacji, zamieniliśmy silnik DC na diodę LED tak żeby efekt był widoczny.

Działający układ

Czego się nauczyliśmy