Arduino MOSFET Kullanımı: IRLZ44N ile 12V LED, Motor ve Pompa
Arduino MOSFET devresi nasıl kurulur? IRLZ44N ile IRF520 farkı, gate ve pull-down direnci, flyback diyot, PWM ile 12V LED şerit, motor ve pompa kodları.
Arduino MOSFET devresi, Arduino'nun yalnızca 20 mA civarında akım verebilen pinleriyle 12 V'luk bir LED şeridi, DC motoru, su pompasını ya da solenoid kilidi, yani amperlerce akım çeken yükleri güvenle açıp kapatmanın en verimli yoludur. MOSFET, gerilimle kontrol edilen bir elektronik anahtardır: gate (kapı) ucuna 5 V uyguladığında drain ile source arasındaki yol neredeyse sıfır dirençli bir kabloya dönüşür, 0 V'ta ise tamamen kesilir. Doğru seçilmiş bir lojik seviye MOSFET, 3 A'lik bir yükü soğutucusuz taşırken yalnızca ılınır.
Bu yazıda MOSFET'in nasıl çalıştığını, neden her MOSFET'in Arduino'ya uymadığını (IRLZ44N ile IRF520 farkı), gate direnci, pull-down direnci ve flyback diyotun görevini, PWM ile hız ve parlaklık ayarını öğreneceksin. 12 V LED şerit, DC motor, pompa ve solenoid için hazır kodlar, ESP32 ve Raspberry Pi Pico örnekleri, ısınma ve soğutucu hesabı ile MOSFET, transistör ve röle karşılaştırma tablosu da yazının devamında.
MOSFET nedir, nasıl çalışır?
MOSFET (Metal Oxide Semiconductor Field Effect Transistor), alan etkili bir transistördür ve üç bacağı vardır: gate (kapı), drain (akaç) ve source (kaynak). Gate, ince bir oksit tabakasıyla geri kalan yapıdan yalıtılmıştır; bu yüzden gate'ten sürekli akım akmaz ve gate küçük bir kondansatör gibi davranır. Gate ile source arasındaki gerilim (VGS) belli bir eşiği aştığında drain ile source arasında iletken bir kanal oluşur ve yükün akımı bu kanaldan geçer. Klasik BJT transistör beyz akımıyla sürülürken MOSFET gerilimle sürülür; Arduino pini yalnızca gate'i şarj ve deşarj ettiği birkaç mikrosaniye boyunca akım verir.
Arduino projelerinde neredeyse her zaman N-kanal MOSFET kullanılır ve yükün eksi tarafına, yani GND tarafına konur; buna alt taraf (low-side) anahtarlama denir. Yükün artı ucu doğrudan harici beslemenin artısına, eksi ucu MOSFET'in drain'ine gider; source ise GND'ye bağlanır. Böylece gate–source gerilimi doğrudan Arduino pininin gerilimine eşit olur. Bir MOSFET'in veri sayfasında bakman gereken değerler şunlardır:
| Parametre | Anlamı | IRLZ44N değeri |
|---|---|---|
| VDS | Drain ile source arasında dayanabileceği en yüksek gerilim; besleme geriliminin en az 1,5–2 katı olmalı | 55 V |
| ID | Sürekli drain akımı; kılıf 25 °C'de tutulursa geçerlidir, pratikte çok daha azını kullanırsın | 47 A (VGS = 10 V) |
| VGS(th) | Kanalın açılmaya başladığı gate gerilimi (yalnızca 250 µA akar); tam açılma gerilimi değildir | 1,0–2,0 V |
| RDS(on) | Tam açıkken drain–source direnci; ısınmayı belirler ve hangi VGS'de ölçüldüğü çok önemlidir | 22 mΩ (10 V), 25 mΩ (5 V), 35 mΩ (4 V) |
| VGS (maks.) | Gate'e uygulanabilecek en yüksek gerilim; aşılırsa oksit tabakası delinir | ±16 V |
| Qg | Gate'i tam açmak için gereken yük; büyüdükçe anahtarlama yavaşlar | 48 nC |
| Gövde diyotu | Source'tan drain'e doğru yapının içinde bulunan diyot; bobinli yükleri korumaz | Var (her güç MOSFET'inde) |
Lojik seviye MOSFET: IRLZ44N, IRF520 ve diğerleri
En sık yapılan hata, VGS(th) değerine bakıp "eşik 4 V, Arduino 5 V veriyor, o hâlde çalışır" demektir. Eşik gerilimi, kanalın yalnızca 250 µA geçirmeye başladığı noktadır; MOSFET'in birkaç amperi düşük dirençle taşıması için gate geriliminin eşiğin epey üstünde olması gerekir. Doğru soru şudur: Veri sayfası RDS(on) değerini hangi VGS'de garanti ediyor? Bu değer 4,5 V ya da 5 V için verilmişse MOSFET 5 V'luk Arduino ile tam açılır ve buna lojik seviye (logic level) MOSFET denir. Değer yalnızca 10 V için verilmişse MOSFET standarttır ve Arduino pini onu ancak yarım açar. International Rectifier'ın (bugün Infineon) adlandırmasında IRL ile başlayan parçalar (IRLZ44N, IRLB8721, IRL540N) lojik seviyedir; IRFZ44N, IRF520 ve IRF540N ise standarttır.
| Model (kılıf) | VDS | Sürekli ID | RDS(on) (ölçüm koşulu) | VGS(th) | Arduino Uno (5 V) | ESP32 / Pico (3,3 V) |
|---|---|---|---|---|---|---|
| IRLZ44N (TO-220) | 55 V | 47 A | 25 mΩ (VGS = 5 V) | 1,0–2,0 V | Çok iyi; 3 A'e kadar soğutucusuz | Tipik olarak 2–3 A'e kadar, garanti yok |
| IRLB8721 (TO-220) | 30 V | 62 A | 16 mΩ (VGS = 4,5 V) | 1,35–2,35 V | Çok iyi | Tipik olarak 2–3 A'e kadar, garanti yok |
| AO3400A (SOT-23, SMD) | 30 V | 5,7 A | 48 mΩ (VGS = 2,5 V) | 0,65–1,45 V | İyi; küçük yükler (≈2 A) | Çok iyi; 2,5 V'ta bile garantili |
| IRFZ44N (TO-220) | 55 V | 49 A | 17,5 mΩ (yalnız VGS = 10 V) | 2,0–4,0 V | Uygun değil, yarım açılır | Kullanma |
| IRF520 ve modülü (TO-220) | 100 V | 9,2 A | 0,27 Ω (yalnız VGS = 10 V) | 2,0–4,0 V | Yalnız ≈1 A'e kadar | Kullanma |
| IRF540N (TO-220) | 100 V | 33 A | 44 mΩ (yalnız VGS = 10 V) | 2,0–4,0 V | Uygun değil, yarım açılır | Kullanma |
Tablodaki ölçüt basittir: Uno, Nano ve Mega gibi 5 V'luk kartlar için RDS(on) değeri 4,5 V ya da 5 V'ta verilmiş bir MOSFET seç. ESP32 ve Pico gibi 3,3 V'luk kartlarda iş biraz daha zordur, çünkü IRLZ44N ve IRLB8721 gibi popüler TO-220 MOSFET'lerin veri sayfaları 3,3 V için değer garanti etmez; bu konuya ESP32 bölümünde döneceğiz. Kılıfa bakarak da seçim yapma: IRLZ44N ile IRFZ44N aynı kılıfta, neredeyse aynı yazıyla gelir ama aradaki tek harf (L) Arduino için her şeyi değiştirir. Bacak sırasını Transistör Bacak Bağlantıları aracından kontrol edebilirsin; TO-220 MOSFET'lerde yazılı yüz sana bakarken soldan sağa gate, drain, source sırası vardır ve metal sırt drain'e bağlıdır.
Arduino MOSFET bağlantısı: gate direnci, pull-down ve ortak GND
Temel devre beş parçadan oluşur: MOSFET, gate direnci, pull-down direnci, bobinli yüklerde flyback diyot ve harici güç kaynağı. Aşağıdaki tablo üç kart için bağlantıyı gösterir; yük örnek olarak 12 V'luk bir LED şerit ya da motordur. Yazıdaki bütün kodlar bu pinleri kullanır.
| Bağlantı | Arduino Uno | ESP32 | Raspberry Pi Pico |
|---|---|---|---|
| Kontrol pini → gate direnci → gate | D9 (PWM), 220 Ω | GPIO 25, 100 Ω | GP15, 100 Ω |
| Gate ile GND arası pull-down | 10 kΩ | 10 kΩ | 10 kΩ |
| Source | GND | GND | GND |
| Drain | Yükün eksi (−) ucu | Yükün eksi (−) ucu | Yükün eksi (−) ucu |
| Yükün artı (+) ucu | 12 V adaptörün artısı | 12 V adaptörün artısı | 12 V adaptörün artısı |
| 12 V adaptörün eksi (−) ucu | Arduino GND (ortak toprak) | ESP32 GND (ortak toprak) | Pico GND (ortak toprak) |
| Önerilen MOSFET | IRLZ44N | IRLZ44N (2–3 A'e kadar) ya da AO3400A | IRLZ44N (2–3 A'e kadar) ya da AO3400A |
Gate direnci (100–220 Ω), gate kapasitesi şarj olurken pinden çekilen anlık akımı sınırlar. IRLZ44N'nin giriş kapasitesi yaklaşık 1700 pF'tır; dirençsiz bağlarsan pin her geçişte bir an için kısa devreye yakın akım verir ve gate hattında çınlama (ringing) oluşur. 220 Ω ile anlık akım en fazla 5 / 220 ≈ 23 mA olur ve gate yine de birkaç mikrosaniyede dolar. Pull-down direnci (10 kΩ) ise Arduino açılırken, resetlenirken ya da kod yüklenirken pin giriş durumundayken gate'in boşta kalmasını önler. Boşta kalan gate parazitle yarım şarj olabilir; MOSFET yarı açık kalıp motoru kendi kendine döndürür ve kısa sürede aşırı ısınır. Pull-down direncini gate direncinin MOSFET tarafına, doğrudan gate ile source arasına koy; böylece kontrol kablosu çıksa bile MOSFET kapalı kalır. İki direnç küçük bir gerilim bölücü oluşturur ama etkisi önemsizdir: gate'e 5 × 10000 / 10220 ≈ 4,89 V ulaşır.
Flyback diyot: motor, pompa ve solenoid için neden şart?

Motor, pompa, solenoid, röle bobini ve fan gibi bobin içeren yükler, akımın aniden kesilmesine karşı koyar. MOSFET kapandığı anda bobindeki manyetik enerji, drain ucunda besleme geriliminin çok üstüne çıkan bir gerilim sıçraması (V = L × di/dt) olarak boşalır. Bu sıçrama MOSFET'in VDS sınırını aşıp onu delebilir ya da parazit üretip Arduino'yu resetleyebilir. Çözüm, yükün iki ucuna ters yönde bir diyot bağlamaktır: katot (çizgili uç) beslemenin artısına, anot drain'e gelir. Normal çalışmada diyot ters kutuplandığı için akım geçirmez; MOSFET kapanınca bobin akımı diyot üzerinden dönerek yavaşça söner. MOSFET'in gövde diyotu bu işi yapmaz, çünkü yükün uçlarına değil source ile drain arasına bağlıdır. Konunun ayrıntıları için Diyot Nedir? yazısına bakabilirsin.
| Yük ve sürme şekli | Önerilen diyot | Neden? |
|---|---|---|
| Solenoid, röle bobini (yalnız aç–kapa) | 1N4007 (1 A, 1000 V) | Yavaş bir diyottur ama seyrek anahtarlamada yeterlidir |
| Küçük pompa ya da motor, PWM ile (1 A'e kadar) | 1N5819 Schottky (1 A, 40 V) | Hızlıdır; PWM'in her periyodunda iletime geçer |
| Büyük motor, PWM ile (1–3 A) | 1N5822 ya da SS34 Schottky (3 A, 40 V) | PWM kapalıyken motor akımının tamamını diyot taşır |
| 12 V LED şerit, ısıtıcı direnç | Gerekmez | Bobin yoktur, gerilim sıçraması oluşmaz |
Adım adım: Arduino ile 12 V LED şerit parlaklık kontrolü
- Malzemeleri hazırla: Arduino Uno, IRLZ44N, 220 Ω ve 10 kΩ direnç, 10 kΩ potansiyometre, 12 V LED şerit ve şeridin akımını karşılayan 12 V adaptör.
- Şeridin akımını hesapla: 60 LED/m'lik 5050 şerit metre başına yaklaşık 14,4 W, yani 12 V'ta 1,2 A çeker. 2 metre 2,4 A eder; adaptörü %20 paylı seç (en az 3 A).
- MOSFET'i yerleştir: IRLZ44N'nin source'unu GND hattına, gate'ini 220 Ω üzerinden D9'a bağla ve gate ile GND arasına 10 kΩ koy.
- Yükü bağla: Şeridin +12V kablosunu adaptörün artısına, eksi kablosunu MOSFET'in drain'ine bağla. Breadboard kontakları yaklaşık 1 A taşır; daha yüksek akımlarda yük kablolarını klemensle ya da lehimle bağla.
- Potansiyometreyi bağla: Dış uçlarını 5V ve GND'ye, orta ucunu A0'a bağla.
- Toprakları birleştir ve dene: Adaptörün eksisini Arduino GND'sine bağla, kodu yükle, ardından adaptörü prize tak.
1// IRLZ44N ile 12 V LED şerit parlaklık kontrolü / 12 V LED strip dimming with an IRLZ44N
2const int STRIP_PIN = 9; // PWM pini, 220 Ω ile gate'e / PWM pin, to the gate via 220 Ω
3const int POT_PIN = A0; // potansiyometre orta ucu / potentiometer wiper
4
5void setup() {
6 pinMode(STRIP_PIN, OUTPUT);
7 digitalWrite(STRIP_PIN, LOW); // açılışta kapalı / off at startup
8 Serial.begin(9600);
9}
10
11void loop() {
12 int pot = analogRead(POT_PIN); // 0–1023
13 float x = pot / 1023.0; // 0.0–1.0
14 int duty = (int)(x * x * 255.0 + 0.5); // basit gama düzeltmesi / simple gamma correction
15 analogWrite(STRIP_PIN, duty); // D9'da 490 Hz PWM / 490 Hz PWM on D9
16 Serial.print("Parlaklik / Brightness: %");
17 Serial.println(duty * 100 / 255);
18 delay(50);
19}analogWrite(), 9 numaralı pinde saniyede yaklaşık 490 kez açılıp kapanan bir PWM sinyali üretir; 0 tamamen kapalı, 255 tamamen açık demektir. Uno'da PWM verebilen pinler 3, 5, 6, 9, 10 ve 11'dir; 5 ve 6 numaralı pinler yaklaşık 980 Hz verir. Göz parlaklığı doğrusal algılamadığı için potansiyometre değerinin karesini almak (basit gama düzeltmesi) düşük parlaklıklarda çok daha yumuşak bir ayar sağlar. PWM'in mantığını PWM Nedir? yazısında ayrıntılı bulabilirsin. Isınmayı da hesaplayalım: 2,4 A'de IRLZ44N'nin harcadığı güç P = I² × RDS(on) = 2,4² × 0,025 ≈ 0,14 W'tır, yani MOSFET elle tutulduğunda ancak ılık gelir. Aynı anda LED şeridin kendisi 28,8 W harcar; MOSFET'teki kayıp toplamın yüzde birinden azdır.
PWM ile DC motor ve pompa hız kontrolü

Motor ve pompa sürmek LED şeritle aynı devreyle yapılır; tek fark, yükün uçlarına flyback diyot eklemen gerektiğidir. Motorların bir de kalkış akımı vardır: duran bir motor ilk anda çalışma akımının 3–8 katını çekebilir. Bu yüzden MOSFET'i ve güç kaynağını motorun kilitlenme (stall) akımına göre seç ve hızı aniden 0'dan 255'e çıkarmak yerine yumuşak kalkış uygula. Mini dalgıç pompalar 3–6 V'ta yaklaşık 0,1–0,3 A, 12 V'luk diyaframlı pompalar ise genellikle 0,5–1 A çeker; ikisi için de IRLZ44N fazlasıyla yeterlidir. Yalnız mini pompayı 12 V adaptöre değil, kendi gerilimindeki (5–6 V) bir kaynağa bağla; MOSFET devresi aynı kalır. Pompa seçimi ve sulama ayrıntıları için Mini Su Pompası yazısına göz at.
1// IRLZ44N ile motor/pompa hız kontrolü ve yumuşak kalkış / Motor or pump speed control with soft start (IRLZ44N)
2const int MOTOR_PIN = 9; // 220 Ω ile gate'e / to the gate via 220 Ω
3const int POT_PIN = A0; // hız ayarı / speed setting
4const int MIN_DUTY = 60; // bunun altında motor yalnızca vızıldar / below this the motor only hums
5
6int current = 0; // şu anki PWM değeri / current PWM value
7
8void setup() {
9 pinMode(MOTOR_PIN, OUTPUT);
10 digitalWrite(MOTOR_PIN, LOW);
11 // TCCR1B = (TCCR1B & 0b11111000) | 0x02; // isteğe bağlı: D9/D10 PWM ≈3,9 kHz / optional: D9/D10 PWM ≈3.9 kHz
12}
13
14void loop() {
15 int target = map(analogRead(POT_PIN), 0, 1023, 0, 255);
16 if (target < MIN_DUTY) target = 0; // çok düşük hızda tamamen durdur / stop completely at very low speed
17
18 if (current < target) current++; // yavaşça hızlan / speed up gently
19 else if (current > target) current--; // yavaşça yavaşla / slow down gently
20
21 analogWrite(MOTOR_PIN, current);
22 delay(8); // 0→255 yaklaşık 2 s / 0→255 takes about 2 s
23}Kod, potansiyometreden okunan hedef hıza her 8 ms'de bir adım yaklaşır; böylece motor 0'dan tam hıza yaklaşık 2 saniyede çıkar ve kalkış akımı güç kaynağını çökertmez. MIN_DUTY, motorun dönmeye başladığı en düşük PWM değeridir; kendi motorunda deneyerek bul. 490 Hz'lik PWM motorda duyulabilir bir vızıltı yaratır. Yorum satırındaki TCCR1B komutu D9 ve D10'un frekansını yaklaşık 3,9 kHz'e çıkarır; Servo kütüphanesi de Timer1'i kullandığı için ikisini birlikte kullanma. Frekansı daha da yükseltmek cazip gelebilir, ama Arduino pini büyük bir MOSFET'in gate'ini her geçişte ancak birkaç mikrosaniyede doldurabildiği için anahtarlama kayıpları frekansla birlikte artar: 20 kHz civarında 2 A'lik bir motor bile MOSFET'te 1 W'tan fazla kayba yol açabilir. Bu frekanslarda TC4427 gibi bir gate sürücü kullanılır.
Solenoid kilit ve kısa süreli yükler
12 V'luk solenoid kapı kilitleri 0,5–1 A çeker ve çoğu sürekli enerjilendirilmek için tasarlanmamıştır; uzun süre açık kalırsa bobin ısınır. Bu yüzden kilidi yalnızca birkaç saniye açık tutan bir kod yazmak gerekir. Solenoid PWM ile değil aç–kapa çalıştığı için flyback diyot olarak 1N4007 yeterlidir. Aşağıdaki örnekte D2'deki butona basınca kilit 3 saniye açılır, sonra buton basılı tutulsa bile kapanır. Kilidi bir RFID kart okuyucu ya da keypad ile tetiklemek için yalnızca if koşulunu değiştirmen yeterli; kilit türleri ve elektrik kesintisindeki davranış için Solenoid Kilit yazısına bak.
1// Butonla 3 saniyelik solenoid kilit açma / Open a solenoid lock for 3 seconds with a button
2const int LOCK_PIN = 9; // 220 Ω ile IRLZ44N gate'ine / to the IRLZ44N gate via 220 Ω
3const int BUTTON_PIN = 2; // buton D2 ile GND arasında / button between D2 and GND
4const unsigned long OPEN_MS = 3000; // kilidin açık kalma süresi / how long the lock stays open
5
6void setup() {
7 pinMode(LOCK_PIN, OUTPUT);
8 digitalWrite(LOCK_PIN, LOW); // kilit kapalı / locked
9 pinMode(BUTTON_PIN, INPUT_PULLUP); // basılınca LOW / LOW when pressed
10}
11
12void loop() {
13 if (digitalRead(BUTTON_PIN) == LOW) {
14 digitalWrite(LOCK_PIN, HIGH); // solenoid çeker, kilit açılır / solenoid pulls in, lock opens
15 delay(OPEN_MS);
16 digitalWrite(LOCK_PIN, LOW); // bobini soğumaya bırak / let the coil cool down
17 while (digitalRead(BUTTON_PIN) == LOW) {} // buton bırakılana kadar bekle / wait until released
18 delay(50); // buton zıplamasını süz / debounce
19 }
20}IRF520 modülü neden 5 V ile yetersiz kalır?
Başlangıç kitlerinde çok yaygın olan IRF520 MOSFET modülü, üzerinde "24 V, 5 A" gibi değerlerle satılan klemensli küçük bir karttır. Kartta MOSFET'in yanında birkaç direnç ve bir sinyal LED'i bulunur; çoğu sürümde flyback diyot yoktur. Sorun MOSFET'in kendisindedir: IRF520 standart bir MOSFET'tir, eşik gerilimi 2–4 V arasındadır ve 0,27 Ω'luk RDS(on) değeri yalnızca VGS = 10 V için garanti edilir. Veri sayfasındaki tipik eğrilere göre 5 V gate geriliminde IRF520 yaklaşık 2 A'de akımı sınırlamaya başlar; eşiği yüksek bir parçada bu sınır 1 A'in altına iner. Bu noktada MOSFET bir anahtar gibi değil, değişken bir direnç gibi davranır.
Bir örnekle bakalım: 12 V'luk, 2 A çeken bir motoru IRF520 modülüyle sürdüğünü düşün. MOSFET üzerinde 1,5 V düşerse harcanan güç P = 1,5 × 2 = 3 W olur. Soğutucusuz TO-220 kılıfın ısıl direnci 62 °C/W olduğu için bu, ortam sıcaklığının yaklaşık 186 °C üstü demektir; MOSFET kısa sürede aşırı ısınıp bozulur, en iyi ihtimalle motor yavaş döner. Modülün etiketindeki 5 A, gate'e 10 V uygulandığında geçerlidir. Modülün uçları ve bağlantısı şöyledir:
| Modül ucu | Bağlantı | Not |
|---|---|---|
| SIG | Arduino PWM pini (ör. D9) | Gate sinyali; 3,3 V kartlarla neredeyse hiç açılmaz |
| VCC | Arduino 5V | Çoğu sürümde devreye bağlı değildir; yük akımı buradan geçmez |
| GND (pin başlığı) | Arduino GND | Ortak toprak için şart |
| VIN ve GND (klemens) | Harici beslemenin + ve − ucu | Yükün güç kaynağı; modül 24 V'a kadar satılır |
| V+ ve V− (klemens) | Yükün + ve − ucu | Motor ve pompada V+ ile V− arasına diyot ekle (katot V+'ya) |
- MOSFET'i değiştir: Modüldeki IRF520'yi söküp yerine aynı bacak sırasına (G-D-S) sahip IRLZ44N lehimle; kart aynen çalışır ama artık 5 V ile tam açılır.
- Lojik seviye modül kullan: AOD4184A (D4184) MOSFET'li hazır modüller 4,5 V'ta en fazla 9,5 mΩ'luk RDS(on) sunar ve 5 V'luk Arduino ile rahat çalışır.
- Gate'i yüksek gerilimle sür: 12 V'tan beslenen TC4427 gibi bir gate sürücü, Arduino'nun 5 V ya da 3,3 V'luk sinyalini gate'te 12 V'a çevirir; IRF520 böylece gerçek kapasitesine ulaşır. Gate gerilimi sınırı aşmasın: IRF520'de ±20 V, IRLZ44N'de ±16 V.
- Küçük yüklerde olduğu gibi kullan: 1 A'in altındaki yüklerde (kısa bir LED şerit, mini pompa) IRF520 modülü 5 V ile kabul edilebilir bir ısınmayla çalışır; MOSFET elle tutulamayacak kadar ısınıyorsa yükü küçült.
ESP32 ve Raspberry Pi Pico ile MOSFET kullanımı (3,3 V)
ESP32 ve Pico'nun pinleri 3,3 V verdiği için MOSFET seçimi daha da önemlidir. IRLZ44N'nin veri sayfası RDS(on) değerini en düşük 4 V için verir; tipik eğrilere göre 3 V civarında da birkaç amperi rahat geçirir, ama eşiği yüksek bir parçada bu garanti değildir. Pratik kural: 3,3 V'luk kartlarda IRLZ44N ya da IRLB8721'i 2–3 A'e kadar kullan, yük çalışırken drain–source gerilimini multimetreyle ölç ve P = VDS × I ile harcanan gücü hesapla; soğutucusuz TO-220 için 1 W'ın altında kal. Daha büyük akımlar için gate'i 5–12 V'a çıkaran bir sürücü, küçük yükler için ise RDS(on) değeri 2,5 V'ta garanti edilen AO3400A kullan. ESP32'de MOSFET için GPIO 25, 26, 27, 32 ya da 33 gibi pinleri seç: GPIO 0, 2, 5, 12 ve 15 açılış (strapping) pinleridir, GPIO 1, 3, 5, 14 ve 15 ise açılışta kısa süre HIGH olabilir ya da PWM verebilir. Bu pinlerde yük açılışta istemeden çalışabilir ya da pull-down direnci kartın açılışını bozabilir.
Aşağıdaki ESP32 kodu, toprak nem sensörü toprağın kuruduğunu söylediğinde MOSFET üzerinden bir pompayı yumuşak kalkışla çalıştırır, 5 saniye sulayıp yumuşakça durdurur. PWM için ESP32 Arduino çekirdeği 3.x'teki ledcAttach() ve ledcWrite() fonksiyonları kullanılır; eski 2.x sürümlerinde bunların yerine ledcSetup() ve ledcAttachPin() vardı ve ledcWrite() pin yerine kanal numarası alıyordu. Koddaki #if satırları kurulu çekirdeğe uygun olanı seçer, böylece kod iki sürümde de derlenir. Gate 3,3 V ve 100 Ω ile sürüldüğü için frekansı 1 kHz'te tuttuk; böylece anahtarlama kayıpları önemsiz kalır. Sensörün kuru ve ıslak değerlerini Toprak Nem Sensörü yazısındaki gibi kendi toprağında ölçüp DRY_LEVEL eşiğini ona göre ayarla.
1// ESP32 + MOSFET ile otomatik sulama pompası / Automatic watering pump with ESP32 + MOSFET
2const int PUMP_PIN = 25; // 100 Ω ile gate'e, gate–GND 10 kΩ / to the gate via 100 Ω, 10 kΩ gate–GND
3const int SOIL_PIN = 34; // toprak nem sensörü, ADC1 / soil moisture sensor, ADC1
4const int DRY_LEVEL = 2800; // üstü kuru sayılır, kalibre et / above this counts as dry, calibrate
5const unsigned long WATER_MS = 5000; // sulama süresi / watering time
6
7void pumpWrite(int duty) { // 0–255 PWM, iki çekirdek sürümünde / on both core versions
8#if ESP_ARDUINO_VERSION_MAJOR >= 3
9 ledcWrite(PUMP_PIN, duty); // 3.x: pin numarasıyla / 3.x: by pin number
10#else
11 ledcWrite(0, duty); // 2.x: kanal 0 ile / 2.x: by channel 0
12#endif
13}
14
15void pumpRamp(int from, int to) { // yumuşak hız değişimi / smooth speed change
16 int step = (to > from) ? 5 : -5;
17 for (int d = from; d != to; d += step) {
18 pumpWrite(d);
19 delay(20);
20 }
21 pumpWrite(to);
22}
23
24void setup() {
25 Serial.begin(115200);
26#if ESP_ARDUINO_VERSION_MAJOR >= 3
27 ledcAttach(PUMP_PIN, 1000, 8); // 1 kHz, 8 bit (0–255); çekirdek 3.x / core 3.x
28#else
29 ledcSetup(0, 1000, 8); // çekirdek 2.x: kanal 0 / core 2.x: channel 0
30 ledcAttachPin(PUMP_PIN, 0);
31#endif
32 pumpWrite(0); // pompa kapalı / pump off
33}
34
35void loop() {
36 int soil = analogRead(SOIL_PIN); // 0–4095
37 Serial.printf("Toprak / Soil: %d\n", soil);
38 if (soil > DRY_LEVEL) {
39 pumpRamp(0, 255); // yaklaşık 1 s'de tam hıza / full speed in about 1 s
40 delay(WATER_MS);
41 pumpRamp(255, 0); // yumuşakça dur / stop gently
42 delay(60000); // suyun toprağa yayılmasını bekle / let the water soak in
43 }
44 delay(1000);
45}Raspberry Pi Pico'da MicroPython ile PWM üretmek için machine.PWM sınıfı yeterlidir; duty_u16() 0 ile 65535 arasında bir değer alır. Aşağıdaki kod, GP15'teki MOSFET üzerinden 12 V'luk bir LED şeride yumuşak bir "nefes" efekti verir. Arduino örneğindeki gibi değerin karesi alınarak basit bir gama düzeltmesi yapılır; böylece karanlıktan aydınlığa geçiş göze doğal görünür. Pico'nun pinleri de 3,3 V verdiği için ESP32 için söylediğimiz MOSFET kuralları burada da geçerlidir.
1# Pico + MOSFET ile 12 V LED şerit nefes efekti / 12 V LED strip breathing effect with Pico + MOSFET
2from machine import Pin, PWM
3import time
4
5strip = PWM(Pin(15)) # 100 Ω ile gate'e, gate–GND 10 kΩ / to the gate via 100 Ω, 10 kΩ gate–GND
6strip.freq(1000) # 1 kHz: titreme görünmez / 1 kHz: no visible flicker
7
8def set_level(x): # x: 0.0–1.0
9 strip.duty_u16(int(x * x * 65535)) # basit gama düzeltmesi / simple gamma correction
10
11while True:
12 for i in range(101): # yavaşça aydınlan / fade in
13 set_level(i / 100)
14 time.sleep_ms(20)
15 for i in range(100, -1, -1): # yavaşça sön / fade out
16 set_level(i / 100)
17 time.sleep_ms(20)
18 time.sleep_ms(500)Isınma, güç hesabı ve soğutucu seçimi
Tam açık bir MOSFET'in ısısı tek bir formülle bulunur: P = I² × RDS(on). Burada iki noktaya dikkat etmelisin. Birincisi, RDS(on) sıcaklıkla artar; IRLZ44N'de 100 °C'de 25 °C'deki değerin yaklaşık 1,5 katıdır, bu yüzden hesapta 25 mΩ yerine 38 mΩ kullanmak daha gerçekçidir. İkincisi, kılıfın ısıyı havaya aktarma yeteneği sınırlıdır: soğutucusuz TO-220 için ısıl direnç (RθJA) 62 °C/W'tır, yani her 1 W yonga sıcaklığını ortamın 62 °C üstüne çıkarır. Aşağıdaki tablo, IRLZ44N'nin 5 V gate geriliminde ve soğutucusuz kullanımda nasıl ısındığını gösterir:
| Yük akımı | Harcanan güç (38 mΩ ile) | Sıcaklık artışı (soğutucusuz) | Öneri |
|---|---|---|---|
| 1 A | 0,04 W | ≈ 2 °C | Soğutucu gerekmez |
| 3 A | 0,34 W | ≈ 21 °C | Soğutucu gerekmez, ılık |
| 5 A | 0,95 W | ≈ 59 °C | Sınırda; küçük bir soğutucu tak |
| 8 A | 2,4 W | ≈ 150 °C | Soğutucu şart |
| 10 A | 3,8 W | ≈ 236 °C | Kanatlı soğutucu ve termal macun şart |
Soğutucu hesabı da aynı mantıkla yapılır: Tj = Tortam + P × (RθJC + RθCS + RθSA). 10 A'de 3,8 W harcanıyorsa ve yonga sıcaklığını 30 °C'lik bir odada 100 °C'de tutmak istiyorsan toplam ısıl direnç (100 − 30) / 3,8 ≈ 18 °C/W'ı geçmemelidir. IRLZ44N'nin yonga–kılıf direnci 1,4 °C/W, termal macunlu temas yaklaşık 0,5 °C/W olduğundan soğutucunun kendisi en fazla 16 °C/W olmalıdır; bu, küçük ama kanatçıklı bir TO-220 soğutucuya karşılık gelir. MOSFET'in metal sırtı drain'e bağlıdır; birden fazla MOSFET'i aynı soğutucuya takacaksan araya mika ya da silikon yalıtkan ped ve plastik vida burcu koy. Isınmanın PWM'den gelen ikinci kaynağı ise anahtarlama kaybıdır; 490 Hz'te önemsizdir ama frekans yükseldikçe artar.
MOSFET, transistör ve röle karşılaştırması
| Özellik | Lojik seviye MOSFET (IRLZ44N) | BJT transistör (2N2222A / TIP120) | Röle (5 V modül) |
|---|---|---|---|
| Nasıl kontrol edilir? | Gerilimle; gate'ten sürekli akım akmaz | Akımla; beyz akımı sürekli akar (2–10 mA) | Bobin akımıyla (≈70 mA); modüldeki transistör sürer |
| Açıkken kayıp | I² × RDS(on): 3 A'de ≈ 0,2–0,3 W | VCE(sat) × I: TIP120'de 3 A'de 2 V'a kadar, ≈ 6 W | Kontaklarda neredeyse sıfır |
| Akım kapasitesi | Onlarca amper (soğutucuyla) | 2N2222A 0,6 A, TIP120 5 A | Genellikle 10 A (kontak sınırı) |
| PWM ile hız ve parlaklık | Evet, kHz seviyesinde | Evet | Hayır, yalnız aç–kapa |
| AC / 220 V | Hayır, yalnız DC | Hayır, yalnız DC | Evet, galvanik yalıtım sağlar |
| Ses ve ömür | Sessiz, aşınmaz | Sessiz, aşınmaz | Tıklar; kontak ömrü yaklaşık 100.000 anahtarlama |
| En uygun kullanım | LED şerit, motor, pompa, solenoid (1–10 A DC) | Küçük yükler (1 A'e kadar), röle bobini, buzzer | Lamba, priz, AC cihazlar |
Kısaca: Bir DC yükü hızlı, sessiz ve PWM ile kontrol etmek istiyorsan MOSFET; 220 V şebekeye bağlı bir lambayı ya da prizi açıp kapatacaksan röle modülü kullan. Birkaç yüz miliamperlik küçük yükler için ucuz bir BJT de iş görür; beyz direnci hesabını Transistör Nedir? yazısında bulabilirsin. Aynı motoru iki yöne döndürmen gerekiyorsa tek MOSFET yetmez, dört anahtarlı bir H köprüsü gerekir; bunun için L298N motor sürücü ya da MOSFET'li bir H köprüsü modülü kullan.
MOSFET ile proje fikirleri
- Otomatik dolap ya da merdiven ışığı: PIR sensörü hareket algılayınca 12 V LED şeridi PWM ile yumuşakça yak, bir süre sonra söndür.
- Gün batımı lambası: LDR ile ortam karardıkça şeridin parlaklığını kademeli olarak artır.
- Akıllı fan: DHT11 ile ölçtüğün sıcaklık arttıkça 12 V bilgisayar fanının hızını yükselt.
- Otomatik bitki sulama: Toprak nem sensörü ve MOSFET'le sürülen bir pompayla saksıları kendi kendine sula; her pompa için ayrı MOSFET kullan.
- Kartlı kapı kilidi: RFID RC522 doğru kartı okuyunca 12 V solenoid kilidi 3 saniye aç.
- Akıllı sera: Fanı, pompayı ve ısıtıcıyı ayrı MOSFET'lerle yöneten bir akıllı sera kur.
Sık yapılan hatalar ve çözümleri
| Belirti | Olası neden | Çözüm |
|---|---|---|
| Yük hiç çalışmıyor | Ortak GND yok ya da G-D-S sırası yanlış | Adaptörün eksisini Arduino GND'sine bağla, bacak sırasını kontrol et |
| Yük sürekli çalışıyor, kapanmıyor | Drain ile source ters bağlı (gövde diyotu iletimde) ya da MOSFET delinmiş | Bağlantıyı düzelt; drain–source arası iki yönde kısa devre ölçülüyorsa MOSFET'i değiştir |
| MOSFET çok ısınıyor, yük zayıf çalışıyor | Standart MOSFET (IRF520, IRFZ44N) 5 V ya da 3,3 V ile yarı açık | IRLZ44N gibi lojik seviye bir MOSFET ya da gate sürücü kullan |
| Açılışta ya da kod yüklenirken motor kendi kendine dönüyor | Gate boşta, pull-down direnci yok | Gate ile GND arasına 10 kΩ koy |
| Motor durunca Arduino resetleniyor | Flyback diyot yok ya da motor ve Arduino aynı zayıf beslemeyi paylaşıyor | Motora ters paralel Schottky diyot ekle, motoru ayrı bir beslemeden çalıştır |
| PWM'de motor yüksek sesle vızıldıyor | 490 Hz PWM frekansı duyulabilir aralıkta | Frekansı 3,9 kHz'e çıkar; 20 kHz üstü için gate sürücü kullan |
| N-kanal MOSFET'i artı tarafa koyunca yük zayıf çalışıyor | Source yükle birlikte yükselir, VGS düşer | N-kanalı GND tarafında kullan; artı tarafı anahtarlamak için P-kanal MOSFET ve NPN sürücü kullan |
MOSFET, Arduino'yu gerçek dünyadaki güçlü yüklere bağlamanın en temiz yoludur: doğru seçilmiş lojik seviye bir parça, bir gate direnci, bir pull-down ve bobinli yüklerde bir diyotla LED şeritten pompaya kadar her DC yükü sessizce ve verimli şekilde kontrol edersin. BlueGrays uygulamasında PWM ile LED soldurma, potansiyometreyle parlaklık ayarı, akıllı sulama istasyonu ve akıllı aydınlatma gibi projeleri adım adım devre şemaları ve kodlarıyla bulabilir, burada öğrendiğin MOSFET devresini hemen bir projeye dönüştürebilirsin.
Sıkça sorulan sorular
Arduino ile hangi MOSFET kullanılmalı?
5 V'luk Arduino Uno, Nano ve Mega için RDS(on) değeri 4,5 V ya da 5 V'ta garanti edilen lojik seviye bir N-kanal MOSFET seç. En yaygını IRLZ44N'dir: 55 V'a dayanır ve 5 V gate geriliminde yalnızca 25 mΩ dirence sahiptir. IRLB8721 de iyi bir seçenektir; IRFZ44N, IRF520 ve IRF540N gibi standart MOSFET'ler ise tam açılmak için 10 V ister.
IRF520 modülü Arduino ile çalışır mı?
Çalışır ama sınırlı kalır. IRF520 standart bir MOSFET'tir ve 5 V gate geriliminde tipik olarak 2 A civarında akımı sınırlamaya başlar, bu yüzden 1 A'in üstündeki yüklerde hızla ısınır. Küçük yükler için yeterlidir; daha fazlası için modüldeki MOSFET'i IRLZ44N ile değiştir ya da lojik seviye bir modül kullan.
MOSFET gate direnci kaç ohm olmalı?
Arduino ile 100–220 Ω arası bir gate direnci uygundur; 220 Ω, 5 V'ta pinden çekilen anlık akımı yaklaşık 23 mA ile sınırlar. Ayrıca gate ile GND arasına 10 kΩ'luk bir pull-down direnci koy; bu direnç açılışta ve kod yüklenirken MOSFET'in kendi kendine açılmasını önler.
MOSFET ile 220 V kontrol edilebilir mi?
Arduino projelerinde MOSFET'i yalnızca DC yükler için kullan. Şebekenin 220 V AC gerilimi tek bir N-kanal MOSFET ile güvenle anahtarlanamaz ve böyle bir devre yalıtımsız olduğu için tehlikelidir. 220 V'luk lamba ya da priz için röle modülü, katı hal rölesi (SSR) ya da optokuplörlü triyak devresi kullan.
ESP32 ile MOSFET nasıl sürülür?
ESP32'nin pinleri 3,3 V verdiği için düşük gate geriliminde iyi açılan bir MOSFET seç. IRLZ44N tipik olarak 2–3 A'e kadar 3,3 V ile iyi çalışır; küçük yüklerde 2,5 V'ta garantili AO3400A, büyük akımlarda gate'i 12 V'a çıkaran bir sürücü daha güvenlidir. PWM için ledcAttach() ve ledcWrite() kullan, GPIO 25, 26, 27, 32 ya da 33 gibi açılışta sinyal üretmeyen pinleri seç.
MOSFET neden ısınır?
Tam açık bir MOSFET'in ısısı P = I² × RDS(on) ile bulunur; IRLZ44N 3 A'de yalnızca 0,2–0,3 W harcar. MOSFET çok ısınıyorsa genellikle gate gerilimi yetersizdir ve MOSFET yarı açık kalmıştır; standart MOSFET kullanmak, 3,3 V kartla sürmek ve çok yüksek PWM frekansı en sık sebeplerdir. Soğutucusuz bir TO-220'de 1 W'ın üstüne çıkıyorsan soğutucu kullan.
Bu yazıdan sonra yapabileceğin projeler
Tüm projeleri gör
Ldr İle Gece Lambası
Hava karardığında kendiliğinden yanan, sabah olunca sönen küçük bir gece lambası. Işık sensörü odadaki aydınlığı ölçer; Arduino ortam yeterince karanlıksa LED'i yakar, aydınlanınca söndürür. Sokak lam

ESP32 PWM ile LED Soldurma (Fade)
LED'in parlaklığını yumuşak şekilde 0'dan max'a, max'tan 0'a değiştirme. Arduino'daki gibi analogWrite() ile PWM kontrolü yapıyoruz — ESP32 Arduino Core 3.0+ ile aynı syntax sorunsuz çalışır. Pin tanımı + pinMode + analogWrite yeterli.

ESP32 Potansiyometre ile LED Parlaklık (Analog → PWM)
Bu projede bir potansiyometre ile LED parlaklığını analog olarak kontrol ediyoruz. ESP32'nin ADC pini potansiyometreden gelen 0-3.3V gerilimi okur, ardından bu değer PWM (Pulse Width Modulation) sinyaline çevrilerek LED'e gönderilir. Böylece potansiyometreyi çevirdikçe LED kademeli olarak parlar ve söner. Arduino Core 3.0+ ile analogWrite() doğrudan kullanılabilir; ESP32-S2/S3'te ADC çözünürlüğü 12-bit'e sabitlenir.

Raspberry Pi Pico PWM ile LED Fade (Nefes Efekti)
LED artık sadece yanıp sönmüyor — nefes alıyor! Raspberry Pi Pico'nun PWM (Pulse Width Modulation — darbe genişlik modülasyonu) özelliğiyle LED'in parlaklığı yavaş yavaş artar, sonra yavaş yavaş azalır. Uyku modundaki MacBook ışığı gibi sakin bir "nefes" efekti. Öğrenme: machine.PWM sınıfı (pini PWM çıkışına çevirme), duty_u16() (0–65535 arası 16-bit parlaklık değeri), PWM frekansı (freq(1000) — saniyede 1000 kez aç-kapa, göz titremeyi görmez), range() ile adım adım döngü

Akıllı Sulama İstasyonu
Tatile gidince çiçeklerin kurumasın diye kendi kendine sulayan bir bahçıvan. Toprak nem sensörü toprağın ne kadar ıslak olduğunu ölçer; toprak kuruyunca Arduino su pompasını birkaç saniye çalıştırır v

ESP32 Akıllı Aydınlatma (PIR + LDR + Röle + OLED)
ESP32, PIR hareket sensörü, LDR ışık sensörü ve röle modülü ile evinin koridorunu, tuvaletini veya kilerini akıllı aydınlatmaya dönüştürüyoruz. Klasik "karanlıkta hareket algılanınca ışık yansın" senaryosunu inşa ediyoruz — ortam aydınlıksa hareket olsa bile ışık yanmaz, böylece gündüz gereksiz yere yanmaz ve enerji tasarrufu sağlanır. Işık 30 saniye yanık kalır; hareket devam ederse timer otomatik sıfırlanır ve süre uzar. SSD1306 OLED ekranda büyük fontlarla durum (AÇIK / GÜNDÜZ / BEKLE), geri

Akıllı Merdiven ve Koridor Aydınlatması
Merdivene ya da koridora adım attığında ışıklar senin gittiğin yönde, basamak basamak yanar. Girişte ve çıkışta birer mesafe sensörü vardır; hangisinin önünden geçersen sekiz LED o uçtan başlayarak ya
Diğer yazılar
BlueGrays uygulaması
Bu devreyi telefonunda adım adım kur
Devre şeması, kod ve parça listesi tek ekranda. 200'den fazla Arduino, ESP32 ve Pico projesi seni bekliyor.
Telefonunla tara
Kamerayı koda tut; telefonunun uygulama mağazası açılır.
ya da mağazada aç

