ADC Çözünürlüğü Hesaplama
- Seviye sayısı
- —
- ADC kodu
- —
- Karşılık gelen gerilim
- —
- İdeal SNR
- —
Kullanılan formüller
LSB = Vref / 2N · Kod = ⌊Vgiriş / LSB⌋ · SNR = 6,02·N + 1,76 dB
Kısa cevap ADC çözünürlüğü nasıl hesaplanır?
ADC'nin bir adımı (LSB) referans geriliminin 2 üzeri bit sayısına bölümüdür: LSB = V_ref / 2^N. 10 bit ve 5 V referansta bir adım 4,88 mV, 12 bit ve 3,3 V referansta 0,81 mV'tur. Bir gerilimin ADC kodu V_giriş / LSB ile, koddan gerilim ise kod × LSB ile bulunur.
Bir analog-dijital dönüştürücü (ADC), giriş gerilimini referans gerilimine göre belirli sayıda seviyeye böler ve bir sayıya çevirir. Arduino'nun analogRead() ile döndürdüğü 0 – 1023 arası sayı ya da ESP32'nin 0 – 4095 arası değeri budur. Araç bit sayısı ve referans gerilimiyle bir adımın (LSB) kaç volt olduğunu, belirli bir girişin hangi koda karşılık geldiğini ve tersini, ideal sinyal-gürültü oranını hesaplar; girişte gerilim bölücü varsa gerçek devredeki çözünürlüğü de gösterir.
Formüller
LSB = Vref / 2N. 10 bit ve 5 V için bir adım 4,88 mV, 12 bit ve 3,3 V için 0,81 mV'tur. Kod, ⌊Vgiriş / LSB⌋ ile bulunur ve 0 ile 2N − 1 arasında kalır. Bazı kaynaklar bölen olarak 2N − 1 kullanır; aradaki fark bir LSB'den küçüktür ve pratikte ölçüm hatalarının altında kalır. İdeal bir ADC'nin sinyal-gürültü oranı 6,02·N + 1,76 dB'dir.
Gerçek dünyada çözünürlük
- Referans doğruluğu: Ölçüm, referans gerilimi kadar doğrudur. Besleme gerilimini referans alan bir ADC, besleme %2 saparsa her ölçümü %2 hatalı okur.
- Gürültü: ESP32 gibi ADC'lerde son 2 – 3 bit gürültüdür. Birkaç ölçümün ortalamasını almak etkin çözünürlüğü artırır.
- Doğrusallık: ESP32 ADC'si özellikle 0 V ve üst sınır yakınında doğrusal değildir; kalibrasyon API'si veya harici ADC kullanılabilir.
- Kaynak empedansı: Yüksek dirençli bir gerilim bölücü, örnekleme kondansatörünü zamanında dolduramaz. Gerilim bölücü aracında çıkış direncini kontrol edin.
Çalışılmış örnek
12 V'luk bir aküyü 12 bit, 3,3 V referanslı bir ADC ile 1/4 oranlı bölücü üzerinden ölçelim. ADC'de bir LSB 0,81 mV'tur; akü tarafında bu 3,2 mV'a karşılık gelir. 12,6 V, ADC girişinde 3,15 V ve yaklaşık 3909 koduna denk gelir. Akünün şarj durumunu anlamak için bu çözünürlük fazlasıyla yeterlidir.
Sıkça sorulan sorular
analogRead() değerini volta nasıl çeviririm?
V = kod × Vref / 2N. Arduino Uno için V = kod × 5 / 1024. Araçta "Kod → gerilim" modunu kullanabilirsiniz.
Bit sayısını artırmak ölçümü daha doğru yapar mı?
Çözünürlüğü artırır, doğruluğu değil. Doğruluk referansa, gürültüye ve kalibrasyona bağlıdır. 16 bitlik bir ADC kötü bir referansla 10 bitlik iyi bir ADC'den daha doğru olmayabilir.
Aşırı örnekleme (oversampling) nedir?
4n ölçümün ortalaması alınarak çözünürlüğe n bit eklenir; bunun çalışması için sinyalde en az 1 LSB kadar gürültü bulunmalıdır.
Direnç, kondansatör ve diğer komponentler için ürünlerimize göz atın.
Mikrodenetleyici ve Sensörler