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.
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.
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ą.
Kod
Do projektu skorzystamy z przykładowego kodu znajdującego się w zakładce Examples->Basics->Fade
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.
Czego się nauczyliśmy
- czym jest MOSFET
- jak podłączyć MOSFET
- jak praktycznie wykorzystać MOSFET z użyciem Arduino