Gerilim Bölücü Nedir? Formül, Direnç Seçimi ve Arduino ile Ölçüm
Gerilim bölücü nedir? Vout = Vin × R2 / (R1 + R2) formülü, direnç seçimi, yük etkisi, Arduino ile 12 V ölçme, 5 V'u 3,3 V'a indirme, LDR ve NTC okuma.
Gerilim bölücü, seri bağlı iki dirençle bir gerilimi daha küçük ve hesaplanabilir bir gerilime indiren en basit devredir. Çıkış gerilimi Vout = Vin × R2 / (R1 + R2) formülüyle bulunur: R1 kaynağa, R2 toprağa (GND) bağlıdır ve çıkış ikisinin birleştiği orta noktadan alınır. Örneğin 10 kΩ'luk iki direnç 12 V'u tam yarıya, 6 V'a böler. Arduino ile 12 V'luk bir aküyü ölçmekten 5 V'luk bir sensör sinyalini ESP32'nin 3,3 V'luk pinine uygun hale getirmeye, LDR ve NTC gibi sensörleri okumaya kadar sayısız devrenin temelinde bu iki direnç vardır.
Bu yazıda formülün nereden geldiğini, direnç değerlerini nasıl seçeceğini ve bölücüye bir şey bağladığında çıkışın neden düştüğünü (yük etkisi) gerçek sayılarla göreceksin. Ardından Arduino Uno, ESP32 ve Raspberry Pi Pico ile pil ve akü gerilimi ölçen kodları adım adım kuracak, 5 V'u 3,3 V'a indirmek için doğru direnç çiftlerini seçecek ve LDR ile NTC'yi bölücüyle okuyacağız. Son olarak gerilim bölücünün neden asla bir güç kaynağı yerine kullanılmaması gerektiğini açıklayacağız.

Gerilim bölücü nedir, nasıl çalışır?
Gerilim bölücünün formülü doğrudan Ohm kanunundan çıkar. Kaynakla toprak arasına seri bağlanan R1 ve R2'den aynı akım geçer: I = Vin / (R1 + R2). R2'nin üzerindeki gerilim, yani çıkış, bu akımla R2'nin çarpımıdır: Vout = I × R2 = Vin × R2 / (R1 + R2). Kısacası kaynak gerilimi dirençler arasında değerleriyle orantılı olarak paylaşılır; büyük direncin üzerine büyük pay düşer. Çıkış her zaman girişten küçüktür, çünkü R2 / (R1 + R2) oranı 1'den küçüktür. Seri devrelerde gerilimin nasıl paylaşıldığını seri ve paralel direnç hesaplama yazısında daha ayrıntılı bulabilirsin.
| Hesaplanan | Formül | Örnek (Vin = 12 V, R1 = 22 kΩ, R2 = 10 kΩ) |
|---|---|---|
| Çıkış gerilimi | Vout = Vin × R2 / (R1 + R2) | 12 × 10 / 32 = 3,75 V |
| Bölme oranı | k = R2 / (R1 + R2) | 10 / 32 = 0,3125 |
| Çıkıştan girişi bulmak | Vin = Vout × (R1 + R2) / R2 | 3,75 × 3,2 = 12 V |
| İstenen orana göre R1 | R1 = R2 × (Vin / Vout − 1) | 10 kΩ × (12 / 3,75 − 1) = 22 kΩ |
| Bölücü akımı | I = Vin / (R1 + R2) | 12 / 32 kΩ = 0,375 mA |
| Toplam güç | P = Vin² / (R1 + R2) | 144 / 32 kΩ = 4,5 mW |
| Çıkış direnci (Thevenin) | Rth = R1 × R2 / (R1 + R2) | 22 × 10 / 32 = 6,875 kΩ |
Ters yönden de düşünebilirsin: 12 V'u 3,3 V'a indirmek istiyorsan ve R2 olarak 10 kΩ seçtiysen R1 = 10 × (12 / 3,3 − 1) ≈ 26,4 kΩ çıkar. Bu değer piyasada olmadığı için bir üstteki standart değer olan 27 kΩ'u seçersin; çıkış 12 × 10 / 37 ≈ 3,24 V olur. R1'i yukarı yuvarlamak çıkışı biraz düşürür, bu da pin için güvenli taraftır. Bir potansiyometre de aslında ayarlanabilir bir gerilim bölücüdür: orta ucu, direnç yolunu R1 ve R2 olarak ikiye ayırır. Hesabı elle yapmak istemezsen gerilim bölücü hesaplayıcısı giriş gerilimine ve dirençlere göre çıkışı anında verir. Elektronikte gerilim bölücüyü en çok şu işlerde görürsün:
- Yüksek gerilim ölçmek: 12 V'luk bir akü ya da 7,4 V'luk bir lityum paket gibi kaynakları analog girişin ölçebileceği aralığa indirmek.
- Seviye düşürmek: 5 V'luk bir sinyali ESP32 ve Raspberry Pi Pico'nun 3,3 V'luk girişlerine uygun hale getirmek.
- Direnci değişen sensörleri okumak: LDR, NTC, esneme (flex) sensörü ve kuvvet sensörü (FSR) gibi elemanların direnç değişimini gerilime çevirmek.
- Tek pinden birçok buton okumak: Farklı dirençlerle kurulan bir direnç merdiveni her butona farklı bir gerilim verir ve beş butonu tek bir analog pinde toplar.
- Regülatör geri beslemesi: LM317 ve ayarlı LM2596 gibi regülatörler çıkış gerilimini bir bölücüyle ölçerek sabit tutar; LM317'de Vout = 1,25 × (1 + R2 / R1) olur.
- Referans gerilimi üretmek: Op-amp devrelerinde besleme geriliminin yarısını referans olarak üretmek.
Direnç değerleri nasıl seçilir?
Formül yalnızca oranla ilgilenir: 1 kΩ + 1 kΩ ile 100 kΩ + 100 kΩ aynı oranda, yani tam yarı yarıya böler. Ama pratikte mutlak değerler de önemlidir. Küçük dirençler bölücüden fazla akım geçirir; bu akım boşa harcanan enerjidir ve pilli projelerde pili gereksiz yere tüketir. Büyük dirençler ise çok az akım çeker, fakat çıkışları zayıf olur: bağlanan bir yük ya da analog girişin içindeki örnekleme kondansatörü çıkış gerilimini kolayca bozar, kablolardan gelen gürültü de daha kolay işler. Doğru seçim bu iki uç arasında bir dengedir:
| Toplam direnç (R1 + R2) | 12 V'ta akım | Artısı | Eksisi | Tipik kullanım |
|---|---|---|---|---|
| 100 Ω – 1 kΩ | 12–120 mA | Yükten neredeyse etkilenmez, çok hızlıdır | Isınır, fazla akım harcar | Ölçüm devrelerinde neredeyse hiç |
| 1 kΩ – 30 kΩ | 0,4–12 mA | ADC için ideal çıkış direnci, hızlı sinyallere uygun | Pilli projede sürekli akım | 5 V → 3,3 V sinyal dönüştürme, Arduino ile ölçüm |
| 30 kΩ – 300 kΩ | 40–400 µA | Pil dostu, ısınma yok | Analog girişe 100 nF kondansatör gerekebilir | Pil ve akü izleme |
| 1 MΩ ve üzeri | 12 µA'den az | Neredeyse hiç akım çekmez | Gürültüye açık, ADC doğru okuyamaz, multimetre bile yükler | Yalnızca op-amp tamponla |
- En yüksek giriş gerilimini belirle. 12 V'luk bir kurşun asit akü şarj olurken 14,4 V'a çıkabilir; ölçeceğin gerilimin en kötü durumunu al ve üstüne %10 pay ekle.
- Pinin kabul ettiği en yüksek gerilimi belirle. Arduino Uno'da 5 V, ESP32 ve Pico'da 3,3 V; güvenli hedef olarak Uno'da yaklaşık 4,5 V, ESP32'de 2,5 V, Pico'da 3,0 V seç.
- Oranı hesapla: k = hedef çıkış / en yüksek giriş. Örneğin 4,5 / 14,4 ≈ 0,31.
- R2'yi seç (çoğu durumda 10 kΩ iyi bir başlangıçtır) ve R1'i R1 = R2 × (1 / k − 1) ile bul. Sonucu standart direnç değerleri arasından bir üst değere yuvarla.
- Akımı ve gücü kontrol et: I = Vin / (R1 + R2) ve P = Vin² / (R1 + R2). Pilli projelerde akımı mikroamper düzeyinde tutmaya çalış.
- Çıkış direncini kontrol et: R1 × R2 / (R1 + R2), Arduino Uno için 10 kΩ'un altında olmalı; değilse analog pin ile GND arasına 100 nF kondansatör ekle.
- Gerçek oranı koda yaz: Seçtiğin standart değerlerle oranı yeniden hesapla, devreyi kurduktan sonra multimetreyle ölçüp kalibre et.
Yük etkisi: Bölücüye bir şey bağlarsan ne olur?
Formül, çıkıştan hiç akım çekilmediğini varsayar. Çıkışa bir yük bağladığın anda bu yük R2'ye paralel hale gelir, alt koldaki eşdeğer direnç küçülür ve çıkış gerilimi düşer. Bunu hesaplamanın kolay yolu bölücüyü Thevenin eşdeğeri olarak düşünmektir: bölücü, yük yokken ölçtüğün gerilime (Vth) ve Rth = R1 × R2 / (R1 + R2) iç direncine sahip bir kaynak gibi davranır. RL yükü bağlandığında çıkış Vth × RL / (Rth + RL) olur. Aşağıdaki tabloda 10 V'luk bir kaynağı 10 kΩ + 10 kΩ ile böldüğümüzü (Vth = 5 V, Rth = 5 kΩ) ve çıkışa farklı yükler bağladığımızı görüyorsun:
| Çıkıştaki yük (RL) | Çıkış gerilimi | Hata |
|---|---|---|
| Yük yok | 5,00 V | %0 |
| 1 MΩ | 4,98 V | %0,5 |
| 100 kΩ | 4,76 V | %4,8 |
| 10 kΩ | 3,33 V | %33 |
| 1 kΩ | 0,83 V | %83 |
Pratik kural şu: yükün direnci bölücünün çıkış direncinin (Rth) en az 100 katı olursa hata %1'in altında kalır. Yük daha küçükse ya dirençleri küçültürsün ya da araya bir op-amp gerilim izleyici (tampon) koyarsın. Mikrodenetleyicinin analog girişi kendisi çok yüksek dirençlidir, ama içinde her ölçümde şarj edilen küçük bir örnekleme kondansatörü vardır (ATmega328P'de yaklaşık 14 pF). Veri sayfası bu yüzden kaynağın çıkış direncinin yaklaşık 10 kΩ ya da daha düşük olmasını önerir. Daha büyük dirençli bir bölücü kullanıyorsan analog pin ile GND arasına 100 nF'lık bir kondansatör ekle: kondansatör, örnekleme anında gereken yükü hazır tutar. Birden fazla analog pini sırayla okuyorsan her pinde ilk okumayı atmak da kanal değişiminden kalan hatayı temizler.
Gerilim bölücü neden güç kaynağı olarak kullanılmaz?
Yeni başlayanların en sık düştüğü tuzak, 12 V'luk bir adaptörden iki dirençle 5 V elde edip Arduino'yu ya da bir modülü bununla beslemeye çalışmaktır. Kâğıt üzerinde 7 kΩ ve 5 kΩ'luk bir bölücü 12 V'tan tam 5 V verir, ama yalnızca çıkıştan akım çekilmezken. 50 mA çeken bir kart yaklaşık 100 Ω'luk bir yük gibi davranır; 5 kΩ'luk R2'ye paralel bağlandığında alt kol 98 Ω'a iner ve çıkış 0,17 V'a çöker. Dirençleri 70 Ω ve 50 Ω'a küçültürsen bu kez devre hiçbir şey bağlı değilken bile 100 mA çeker ve 1,2 W ısı üretir; yük bağlandığında çıkış yine 3,9 V'a düşer ve kartın çektiği akım her değiştiğinde (Wi-Fi, servo, röle) gerilim de oynar. Üstelik yük çıkarıldığında gerilim yeniden yükselir ve hassas parçalar zarar görebilir.
Arduino ile 12 V akü ve pil gerilimi ölçme
Arduino Uno'nun analog girişleri en fazla 5 V okuyabilir; 12 V'luk bir aküyü doğrudan bağlamak pini yakar. Çözüm 22 kΩ (R1) ve 10 kΩ'luk (R2) bir bölücüdür: oran 0,3125 olduğundan 14,4 V'luk şarj gerilimi pine 4,5 V olarak ulaşır ve devre en fazla 16 V'a kadar ölçebilir. Bölücü 12 V'ta yalnızca 0,375 mA çeker, 6,9 kΩ'luk çıkış direnci de önerilen 10 kΩ sınırının altındadır. 10 bitlik ADC her adımda yaklaşık 4,9 mV ayırt eder; bölücüyle bu, girişte yaklaşık 15,6 mV'luk bir çözünürlüğe karşılık gelir. ESP32 ve Pico 3,3 V ile çalıştığı için onlarda daha büyük bir R1 (56 kΩ) kullanıyoruz:
| Bağlantı | Arduino Uno | ESP32 | Raspberry Pi Pico |
|---|---|---|---|
| R1 (üst direnç) | 22 kΩ | 56 kΩ | 56 kΩ |
| R2 (alt direnç) | 10 kΩ | 10 kΩ | 10 kΩ |
| R1'in üst ucu | Kaynağın artısı (+12 V) | Kaynağın artısı (+12 V) | Kaynağın artısı (+12 V) |
| Orta nokta (R1–R2) | A0 | GPIO 34 (ADC1) | GP26 (ADC0, pin 31) |
| R2'nin alt ucu ve kaynağın eksisi | GND | GND | GND (ör. pin 38) |
| 14,4 V'ta pindeki gerilim | 4,50 V | 2,18 V | 2,18 V |
| Ölçülebilen en yüksek giriş | 16 V | Yaklaşık 16 V (doğru ölçüm bölgesi) | Yaklaşık 21 V |
1// 12 V akü gerilimini gerilim bölücüyle ölçme / Measuring a 12 V battery with a voltage divider
2// Kaynak + -> 22k (R1) -> A0 -> 10k (R2) -> GND / Source + -> 22k (R1) -> A0 -> 10k (R2) -> GND
3// Kaynağın eksisi Arduino GND'sine bağlı / Source minus is tied to the Arduino GND
4const int VIN_PIN = A0;
5const float VREF = 5.0; // 5V pininde ölçtüğün gerilim / voltage you measured on the 5V pin
6const float R1 = 22000.0; // üst direnç (ohm) / top resistor (ohms)
7const float R2 = 10000.0; // alt direnç (ohm) / bottom resistor (ohms)
8const float CAL = 1.000; // kalibrasyon: gerçek / okunan / calibration: real / measured
9const float LOW_V = 11.8; // düşük akü eşiği (V) / low battery threshold (V)
10
11float readInputVoltage() {
12 analogRead(VIN_PIN); // ilk okumayı at / discard the first reading
13 long sum = 0;
14 for (int i = 0; i < 16; i++) { // 16 ölçümün ortalaması / average of 16 readings
15 sum += analogRead(VIN_PIN);
16 delay(2);
17 }
18 float vPin = (sum / 16.0) * VREF / 1024.0; // pindeki gerilim / voltage at the pin
19 return vPin * (R1 + R2) / R2 * CAL; // bölücüden önceki gerilim / voltage before the divider
20}
21
22void setup() {
23 Serial.begin(9600);
24 pinMode(LED_BUILTIN, OUTPUT);
25}
26
27void loop() {
28 float v = readInputVoltage();
29 Serial.print(F("Giris / Input: "));
30 Serial.print(v, 2);
31 Serial.println(F(" V"));
32 digitalWrite(LED_BUILTIN, v < LOW_V ? HIGH : LOW); // akü zayıfsa LED yanar / LED on when the battery is low
33 delay(1000);
34}Kod, ADC'nin örnekleme kondansatörü otursun diye ilk okumayı atar, ardından 16 ölçümün ortalamasını alarak gürültüyü azaltır. Okunan sayı önce pindeki gerilime çevrilir (ATmega328P'nin veri sayfasına göre ADC = Vin × 1024 / Vref olduğu için 1024'e bölüyoruz), sonra (R1 + R2) / R2 = 3,2 ile çarpılarak bölücüden önceki gerilim bulunur. En büyük hata kaynağı Vref'tir: USB'den beslenen bir Uno'nun 5V pini çoğu zaman 4,7–5,1 V arasındadır. Bu yüzden 5V pinini multimetreyle ölçüp VREF'e yaz; ardından akünün gerçek gerilimini multimetreyle ölç, Serial Monitor'deki değerle karşılaştır ve CAL = gerçek / okunan katsayısını koda gir. Bu tek adım Vref ve direnç toleransı hatalarını birlikte düzeltir. Bölücüyü cihazın açma/kapama anahtarından sonra bağlarsan cihaz kapalıyken akım çekmez; 0,375 mA günde yaklaşık 9 mAh eder, bu bir otomobil aküsü için önemsizdir ama küçük bir pilde hissedilir. Farklı kaynaklar için uygun direnç çiftleri şöyle:
| Ölçülecek kaynak | Gerilim aralığı | Arduino Uno (5 V): R1 + R2 | ESP32 / Pico (3,3 V): R1 + R2 |
|---|---|---|---|
| Tek hücre Li-ion / LiPo (1S) | 3,0–4,2 V | Bölücü gerekmez (4,2 V < 5 V) | 100 kΩ + 100 kΩ → en fazla 2,10 V |
| 2S Li-ion paket | 6,0–8,4 V | 10 kΩ + 10 kΩ → en fazla 4,20 V | 100 kΩ + 33 kΩ → en fazla 2,08 V |
| 3S LiPo paket | 9,0–12,6 V | 22 kΩ + 10 kΩ → en fazla 3,94 V | 56 kΩ + 10 kΩ → en fazla 1,91 V |
| 12 V kurşun asit akü | 10,5–14,4 V | 22 kΩ + 10 kΩ → en fazla 4,50 V | 56 kΩ + 10 kΩ → en fazla 2,18 V |
| 24 V sistem | 21–29 V | 56 kΩ + 10 kΩ → en fazla 4,39 V | 120 kΩ + 10 kΩ → en fazla 2,23 V |
ESP32 ile gerilim ölçme
ESP32'de ADC 12 bittir (0–4095), ama iki önemli farkı vardır. Birincisi, Wi-Fi açıkken ADC2 pinleri okunamaz; bölücüyü mutlaka ADC1'e ait GPIO 32–39'dan birine bağla (GPIO 34–39 yalnızca giriş olarak çalışır ve bu iş için idealdir). İkincisi, ADC uçlarda doğrusal değildir: Espressif, varsayılan 11 dB zayıflatmada en doğru ölçüm aralığı olarak yaklaşık 150–2450 mV'u önerir. Pin 3,1 V civarına kadar bir değer gösterse de bu bölgede hata büyür. Bu yüzden 56 kΩ + 10 kΩ'luk bölücüyü seçtik: 14,4 V pine 2,18 V olarak ulaşır ve doğru bölgede kalır. Ham analogRead() yerine, yongaya üretimde yazılan kalibrasyon verisini kullanarak doğrudan milivolt döndüren analogReadMilliVolts() fonksiyonunu kullanıyoruz:
1// ESP32: 56k + 10k bölücüyle 12 V ölçme / ESP32: measuring 12 V with a 56k + 10k divider
2const int VIN_PIN = 34; // ADC1_CH6, Wi-Fi açıkken de çalışır / ADC1_CH6, works with Wi-Fi on
3const float R1 = 56000.0; // üst direnç (ohm) / top resistor (ohms)
4const float R2 = 10000.0; // alt direnç (ohm) / bottom resistor (ohms)
5const float CAL = 1.000; // multimetreyle ayarla / tune with a multimeter
6
7void setup() {
8 Serial.begin(115200);
9 analogReadResolution(12); // 0-4095 (varsayılan / default)
10}
11
12void loop() {
13 uint32_t mv = 0;
14 for (int i = 0; i < 32; i++) {
15 mv += analogReadMilliVolts(VIN_PIN); // kalibre edilmiş milivolt / calibrated millivolts
16 }
17 float vPin = mv / 32.0 / 1000.0; // pindeki gerilim (V) / voltage at the pin (V)
18 float vIn = vPin * (R1 + R2) / R2 * CAL; // bölücüden önceki gerilim / voltage before the divider
19 Serial.printf("Pin: %.3f V Giris / Input: %.2f V\n", vPin, vIn);
20 delay(1000);
21}Raspberry Pi Pico ile gerilim ölçme (MicroPython)
Raspberry Pi Pico'da analog girişler GP26, GP27 ve GP28'dir (ADC0–ADC2). MicroPython'daki read_u16() fonksiyonu 12 bitlik ölçümü 0–65535 aralığına ölçekler; referans ise kartın 3,3 V'undan gelen ADC_VREF'tir. Pico'nun ADC'si 3,3 V'a kadar ölçebildiği için 56 kΩ + 10 kΩ ile yaklaşık 21 V'a kadar çıkabilirsin. İlginç bir ayrıntı: Pico'nun kendisi de bir gerilim bölücü kullanır. Kart üzerindeki bölücü VSYS besleme gerilimini üçe böler ve GP29'a (ADC3) bağlar; ADC(29) ile okuduğun gerilimi 3 ile çarparak kartın besleme gerilimini görebilirsin (Pico W'de GP29 kablosuz yongayla paylaşıldığı için bu yöntem doğrudan çalışmaz).
1from machine import ADC
2import time
3
4adc = ADC(26) # GP26 = ADC0 (pin 31)
5VREF = 3.3 # ADC_VREF; multimetreyle ölçüp düzelt / measure and correct with a multimeter
6R1 = 56000 # üst direnç (ohm) / top resistor (ohms)
7R2 = 10000 # alt direnç (ohm) / bottom resistor (ohms)
8CAL = 1.000 # kalibrasyon katsayısı / calibration factor
9
10
11def read_input_voltage(samples=32):
12 total = 0
13 for _ in range(samples):
14 total += adc.read_u16() # 0-65535
15 v_pin = total / samples * VREF / 65535 # pindeki gerilim / voltage at the pin
16 return v_pin * (R1 + R2) / R2 * CAL # bölücüden önceki gerilim / voltage before the divider
17
18
19while True:
20 v_in = read_input_voltage()
21 print("Giris / Input: {:.2f} V".format(v_in))
22 time.sleep(1)5 V sinyali 3,3 V'a indirme (ESP32 ve Pico için)
ESP32 ve Pico'nun pinleri 5 V'a dayanıklı değildir. HC-SR04'ün ECHO çıkışı, bir Arduino Uno'nun TX pini ya da 5 V ile beslenen bir modülün dijital çıkışı bu kartlara doğrudan bağlanırsa girişteki koruma diyotları zorlanır ve pin zamanla bozulabilir. Tek yönlü sinyallerde en ucuz çözüm bir gerilim bölücüdür. Hedef, 3,3 V'u aşmayan ama kartın HIGH olarak algılayacağı kadar yüksek bir gerilimdir: ESP32, besleme geriliminin %75'ini (yaklaşık 2,5 V), Pico'daki RP2040 ise 2,0 V'u HIGH için alt sınır kabul eder. Bu yüzden 3,0–3,3 V arası bir çıkış iki kart için de rahat bir paydır. HC-SR04 mesafe sensörü yazısında ECHO pinini 3,3 V'luk kartlara bağlarken önerilen yöntem de budur.
| R1 (sinyal tarafı) | R2 (GND tarafı) | 5 V girişte çıkış | Çıkış direnci | Değerlendirme |
|---|---|---|---|---|
| 1 kΩ | 2 kΩ (iki 1 kΩ seri) | 3,33 V | 667 Ω | Klasik seçim; hızlı sinyallere de uygun |
| 1,2 kΩ | 2,2 kΩ | 3,24 V | 776 Ω | Standart E12 değerleriyle 3,3 V'un hemen altı |
| 10 kΩ | 20 kΩ | 3,33 V | 6,7 kΩ | Az akım çeker; UART ve HC-SR04 için yeterli |
| 2,2 kΩ | 3,3 kΩ | 3,00 V | 1,3 kΩ | En güvenli pay; iki kart da HIGH olarak okur |
| 4,7 kΩ | 10 kΩ | 3,40 V | 3,2 kΩ | Sınırda; 5 V hattı 5,25 V'a çıkarsa 3,57 V olur, önerilmez |
Bölücü, pinin kendi kapasitansıyla birlikte küçük bir RC filtre oluşturur. 10 kΩ + 20 kΩ'luk bölücünün 6,7 kΩ'luk çıkış direnci, pin ve breadboard'un yaklaşık 15 pF'lık kapasitansıyla 100 ns civarında bir zaman sabiti verir; 115200 baud'luk bir UART (bit süresi 8,7 µs) bundan etkilenmez, ama birkaç MHz'lik SPI sinyallerinin kenarları yuvarlanır. Hızlı hatlarda 1 kΩ + 2 kΩ'u tercih et. Bölücünün yalnızca tek yönde, yüksek gerilimden alçak gerilime doğru çalıştığını da unutma. Ters yönde çoğu zaman bir şey yapman gerekmez: Arduino Uno 3,0 V'un üstünü HIGH sayar, bu yüzden ESP32'nin 3,3 V'luk çıkışını küçük bir payla da olsa okuyabilir. I2C gibi iki yönlü hatlarda ise bölücü işe yaramaz; orada MOSFET'li bir lojik seviye dönüştürücü kullanılır.
LDR ve NTC'yi gerilim bölücüyle okumak

Mikrodenetleyiciler direnci doğrudan ölçemez, yalnızca gerilim ölçer. LDR ve NTC gibi direnci değişen sensörleri bir sabit dirençle seri bağlayıp gerilim bölücü kurduğunda, direnç değişimi orta noktada gerilim değişimine dönüşür. Sabit direncin değeri ölçümün hassasiyetini belirler. En büyük gerilim farkını almak için sabit direnç, sensörün ölçmek istediğin aralıktaki en küçük ve en büyük dirençlerinin geometrik ortalaması olmalıdır: R = √(Rmin × Rmax). Örneğin aydınlıkta 1 kΩ, loş ortamda 100 kΩ olan bir LDR için √(1 k × 100 k) = 10 kΩ çıkar. 5 V'ta 10 kΩ ile çıkış 4,09 V'luk bir aralıkta değişirken 1 kΩ ya da 100 kΩ ile bu aralık 2,45 V'a iner. Başlangıç setlerindeki 10 kΩ'un sebebi budur. Bir avantaj daha var: hem bölücü hem ADC aynı 5 V'tan beslendiği için hesaplanan direnç besleme geriliminden bağımsızdır (oransal ölçüm); bu yüzden aşağıdaki kodda Vref değerine bile gerek yoktur.
1// LDR ve NTC'yi gerilim bölücüyle okuma / Reading an LDR and an NTC with voltage dividers
2// A0: 5V -> LDR -> A0 -> 10k -> GND
3// A1: 5V -> 10k -> A1 -> NTC 10k (B = 3950) -> GND
4const float R_FIXED = 10000.0; // sabit dirençler (ohm) / fixed resistors (ohms)
5const float R0 = 10000.0; // NTC'nin 25 °C direnci / NTC resistance at 25 °C
6const float BETA = 3950.0; // NTC B katsayısı / NTC beta coefficient
7const float T0 = 298.15; // 25 °C kelvin cinsinden / 25 °C in kelvin
8
9void setup() {
10 Serial.begin(9600);
11}
12
13void loop() {
14 analogRead(A0); // kanal değişti, ilk okumayı at / channel changed, discard first reading
15 int ldrRaw = analogRead(A0);
16 analogRead(A1);
17 int ntcRaw = analogRead(A1);
18 if (ldrRaw < 1) ldrRaw = 1; // sıfıra bölmeyi önle / avoid division by zero
19
20 // Oransal ölçüm: besleme gerilimi hesaptan düşer / ratiometric: the supply voltage cancels out
21 float rLdr = R_FIXED * (1024.0 / ldrRaw - 1.0);
22 float rNtc = R_FIXED * ntcRaw / (1024.0 - ntcRaw);
23 float tempC = 1.0 / (1.0 / T0 + log(rNtc / R0) / BETA) - 273.15; // Beta denklemi / Beta equation
24
25 Serial.print(F("LDR: "));
26 Serial.print(rLdr / 1000.0, 1);
27 Serial.print(F(" kOhm NTC: "));
28 Serial.print(rNtc / 1000.0, 2);
29 Serial.print(F(" kOhm "));
30 Serial.print(tempC, 1);
31 Serial.println(F(" C"));
32 delay(1000);
33}Kodda LDR üstte olduğu için ışık arttıkça okunan değer de artar; LDR'nin direnci R = 10 kΩ × (1024 / ADC − 1) ile bulunur. NTC ise altta durur ve sıcaklık arttıkça direnci, dolayısıyla okunan gerilim düşer. 25 °C'de 10 kΩ olan ve B katsayısı 3950 olan yaygın NTC'ler için sıcaklık Beta denklemiyle hesaplanır: 1 / T = 1 / T0 + ln(R / R0) / B (sıcaklıklar kelvin cinsinden). Sabit direnç NTC'nin 25 °C'deki direnciyle aynı seçildiği için oda sıcaklığında çıkış besleme geriliminin tam yarısıdır ve hassasiyet en yüksek bu bölgededir. Geniş bir sıcaklık aralığında daha yüksek doğruluk için Steinhart-Hart denklemini ve NTC'nin kendi kendini ısıtmasını NTC termistör yazısında ele alıyoruz.
Gerilim bölücü ile proje fikirleri
- Akü izleme ve düşük pil alarmı: Karavan ya da güneş enerjisi sistemindeki aküyü izle, gerilim 11,8 V'un altına inince buzzer çalsın; pilli projelerde besleme seçenekleri için Arduino'yu pille çalıştırma yazısına bak.
- Dijital voltmetre: Ölçtüğün gerilimi LCD ya da OLED ekranda göster; adımlar Arduino voltmetre yapımı yazısında.
- Otomatik gece lambası: LDR'li bir bölücüyle ortam kararınca LED'leri ya da bir röleyi devreye al.
- Güneş takip sistemi: İki LDR bölücüsünün gerilimlerini karşılaştırarak paneli ışığa çevir (güneş takip sistemi).
- Tek pinde beş buton: Farklı dirençlerden bir merdiven kur, hangi butona basıldığını analog değerden anla (buton bağlantısı).
- Termostat: NTC bölücüsüyle sıcaklığı ölç, belirlediğin sıcaklıkta fanı ya da ısıtıcıyı bir röleyle aç.
Sık yapılan hatalar ve çözümleri
| Belirti | Olası sebep | Çözüm |
|---|---|---|
| Değerler anlamsız ve sürekli oynuyor | Kaynağın eksisi Arduino'nun GND'sine bağlı değil | Ortak GND bağla |
| Pindeki gerilim beklenenden çok yüksek | R1 ile R2 yer değiştirmiş | Büyük direnç kaynak tarafında (üstte) olmalı; bağlamadan önce multimetreyle ölç |
| Ölçüm gerçek değerden %5–10 farklı | %5 toleranslı dirençler ya da Vref 5,00 V değil | %1 metal film direnç kullan, kodda VREF ve CAL ile kalibre et |
| Modül bağlanınca çıkış düşüyor | Yük etkisi: yük R2'ye paralel | Yükü Rth'nin en az 100 katı yap, dirençleri küçült ya da op-amp tampon kullan |
| Yüksek dirençli bölücüde değer kayıyor | ADC'nin örnekleme kondansatörü dolamıyor | Pine 100 nF kondansatör ekle, ilk okumayı at |
| ESP32'de Wi-Fi açılınca okuma çalışmıyor | Bölücü bir ADC2 pinine bağlı | GPIO 32–39 (ADC1) kullan |
| Pil, cihaz kapalıyken de boşalıyor | Bölücü pilden sürekli akım çekiyor | Bölücüyü anahtardan sonra bağla, yüksek değerli dirençler seç |
| Bölücüden beslenen modül çalışmıyor | Bölücü bir güç kaynağı değildir | 7805, AMS1117 ya da LM2596 gibi bir regülatör kullan |
| I2C hattı bölücüyle çalışmıyor | Bölücü tek yönlüdür, I2C iki yönlüdür | MOSFET'li lojik seviye dönüştürücü kullan |
Gerilim bölücü yalnızca iki direnç ve tek bir formülden ibarettir, ama ölçüm yapan hemen her projenin bir yerinde karşına çıkar. Oranı formülle, mutlak değerleri akım ile çıkış direnci arasındaki dengeyle seçer, yük etkisini hesaba katar ve sonucu multimetreyle kalibre edersen güvenilir ölçümler alırsın. Analog okumanın arka planını ADC nedir? yazısında okuyabilirsin. BlueGrays uygulamasında LDR ile ışık şiddeti okuma, LDR'li gece lambası, LCD ekranlı dijital voltmetre, NTC ile sıcaklık ölçümü ve ESP32 ile HC-SR04 mesafe ölçer gibi projeleri devre şemaları ve kodlarıyla adım adım bulabilirsin.
Sıkça sorulan sorular
Gerilim bölücü formülü nedir?
Çıkış gerilimi Vout = Vin × R2 / (R1 + R2) ile hesaplanır; R1 kaynak tarafındaki, R2 toprak tarafındaki dirençtir. Örneğin 9 V'u 10 kΩ ve 10 kΩ ile bölersen 4,5 V elde edersin. Formül yalnızca çıkıştan akım çekilmediğinde tam doğrudur.
Gerilim bölücü ile 12 V 5 V'a düşürülür mü?
Ölçüm ya da sinyal için evet: 22 kΩ ve 10 kΩ ile 12 V'u 3,75 V'a indirip Arduino'nun analog girişiyle okuyabilirsin. Bir kartı ya da modülü beslemek için hayır; yük akım çektiği anda çıkış gerilimi çöker. Besleme için 7805 gibi bir regülatör ya da LM2596 gibi bir buck dönüştürücü kullan.
5 V'u 3,3 V'a düşürmek için hangi dirençler kullanılır?
En yaygın çift sinyal tarafında 1 kΩ, GND tarafında 2 kΩ'dur ve 5 V'u 3,33 V'a indirir. Aynı oranı 10 kΩ ve 20 kΩ ile de elde edebilirsin, ama hızlı sinyallerde küçük değerler daha iyidir. Elinde 2 kΩ yoksa 2,2 kΩ ve 3,3 kΩ ile 3,0 V elde edersin; ESP32 ve Pico bunu yine HIGH olarak okur.
Gerilim bölücüde direnç değerleri nasıl seçilir?
Önce en yüksek giriş gerilimine ve pinin sınırına göre oranı belirle, sonra R2'yi (genellikle 10 kΩ) seçip R1'i hesapla. Toplam direnç küçükse bölücü fazla akım harcar, çok büyükse yük etkisi ve ADC hatası artar. Arduino'da çıkış direncinin 10 kΩ'un altında olması, pilli projelerde ise toplam direncin 100 kΩ civarında olması iyi bir denge sağlar.
Arduino ile 12 V nasıl ölçülür?
Akünün artısını 22 kΩ üzerinden A0'a, A0'ı 10 kΩ üzerinden GND'ye, akünün eksisini de Arduino'nun GND'sine bağla. Kodda analogRead() değerini 5 / 1024 ile çarparak pindeki gerilimi, bunu da 3,2 ile çarparak akü gerilimini bul. Bu bölücüyle 16 V'a kadar güvenle ölçebilirsin.
Gerilim bölücü pili boşaltır mı?
Evet, bölücü sürekli I = Vin / (R1 + R2) kadar akım çeker. 32 kΩ'luk bir bölücü 12 V'ta 0,375 mA, yani günde yaklaşık 9 mAh harcar; bu otomobil aküsü için önemsiz, küçük bir pil için önemlidir. Pilli projelerde 100 kΩ civarında dirençler ve analog pine 100 nF kondansatör kullan ya da bölücüyü cihazın anahtarından sonra bağla.
Bu yazıdan sonra yapabileceğin projeler
Tüm projeleri gör
Ldr İle Işık Şiddeti Okuma
Odanın ne kadar aydınlık olduğunu sayıyla görmek ister misin? Işığa duyarlı küçük bir parça olan LDR ortam ışığını ölçer ve Arduino bu değeri yarım saniyede bir bilgisayar ekranına yazar. Elinle üstün

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 LDR Modülü ile Işık Şiddeti Okuma
LDR modülünün ham ADC değerini ve karanlık/aydınlık referanslarına göre hesaplanan göreli ışık yüzdesini Serial Monitor'da gerçek zamanlı izleme. Bu yüzde lux ölçümü değildir. Modülün kalibrasyon mantığını öğretir. Proje 10'un öncesinde yapılması ideal; çünkü eşik değerini belirlemek için kullanılır.

LCD Ekran ile Dijital Voltmetre
Pilin ya da adaptörün ne kadar gerilim verdiğini kendi yaptığın ölçü aletiyle öğren. İki dirençten oluşan bir bölücü yüksek gerilimi kartın okuyabileceği seviyeye indirir, Arduino da gerçek değeri hes

NTC ve 2x16 Lcd Ekran İle Sıcaklık Ölçümü
Ortamın sıcaklığını küçük bir boncuk gibi görünen sensörle ölç. NTC adlı bu parça ısındıkça elektriği daha kolay geçirir; Arduino bu değişimi okuyup bir formülle santigrat dereceye çevirir ve iki satı

ESP32 LDR ile Gece Lambası
Karanlıkta LED'in otomatik yandığı, aydınlıkta söndüğü gece lambası. LDR Sensör Modülünün D0 (digital out) pini kullanılır — modülün üzerindeki küçük potansiyometre ile karanlık eşiği ayarlanır, modül kendisi HIGH/LOW çıkış üretir. ESP32 sadece digitalRead() ile bu sinyali okur, kod çok basit.

ESP32 HC-SR04 Ultrasonik Mesafe Ölçer
HC-SR04 ultrasonik sensör, gönderdiği ses dalgasının nesneye çarpıp geri dönme süresini (Time of Flight) ölçerek mesafe hesaplar. Bu projede ESP32 ile TRIG pinine 10 mikrosaniyelik darbe gönderip, ECHO pininden gelen yankı süresini pulseIn() ile okuyacağız. Hesaplanan mesafeyi cm cinsinden 16x2 I2C LCD'de göstereceğiz. HC-SR04 5V çalıştığı için ECHO pinine gerilim bölücü zorunludur — aksi halde ESP32'nin 3.3V GPIO'su zarar görür.

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

