Duyuru

Çöküş
Henüz duyuru yok

A0 doğru değeri ölçmüyor. 0V veya 3.3V olması gereken değerleri göstermiyor

Çöküş
X
 
  • Filtrele
  • Zaman
  • Göster
Hepsini Sil
yeni mesajlar

  • A0 doğru değeri ölçmüyor. 0V veya 3.3V olması gereken değerleri göstermiyor

    Merhaba,

    Deneyap Mini' de yeniyim. Günlerdir anlamlandıramadığım bir problem ile uğraşıyorum. Belki başkaları da benzer problem yaşıyordur diyerek cevabınızı rica ederim.

    A0' dan gelen analog değerleri okumaya çalışıyorum. Potansiyometre ile sağ sol yaparak ve bacaklarda ki gerilimi (V) ölçerek, mini' de bulunan 13 bitlik ADC' nin 0-8191 arası değerleri hangi voltajlarda verdiğini ölçüyorum. Kartım USB ile bilgisayara bağlı. Bilgisayara güç kablosu takılı. Buna göre:
    - İster 5V ile ister 3.3V ile potansiyometreyi destekleyeyim A0 bacağında ki gerelim 2.65V olduğunda ADC değeri 8191 ile üst sınıra gelmiş oluyor. Yani dokümanlarda bahsedildiği gibi mini A0 pini 0-3.3V arasında değil, 0-2.65V arası değer dönüyor.
    - Bunun yanı sıra A0' ı GND' ye bağladığımda bazen rasgele 0-20 arasında değerler gelirken, bazen kabloyu takıp çıkardığımda istikrarlı 0 elde ediyorum. Ama maalesef düzensiz.
    - Son olarak LM35DZ sıcaklık sensörünün orta bacağına (yani ölçen bacağa) taktığımda (multimetre ile ölçülen voltaj 290mV iken), ADC->mV dönüşüm formülü bambaşka sonuç dönüyor. Örnek projelerden birisinde dönüşüm formülü ADC*3.3/8191 iken; https://deneyapkart.org/proje-213.html projesinde dönüşüm formülü (temp=(ADC/14.46)*500/1024;//Kaç 10mV). (Burada ki 14,46 değeri nereden geliyor, 1024 nereden geliyor bilmiyorum. Çünkü dokümana göre mini 13bit ADC) şu ana değin doğruya en yakın sonucu verdi.
    - Bu arada bazen LM35DZ' nin orta bacağından kabloyu çıkarıp GND' ye çıkardığımızda ADC değeri gene uzun süre rasgele oluyor. Ancak üç beş sefer kablo değiştirirsem, mini' yi reset edersem düzeliyor gibi.

    Uzun lafın kısası, A0 (ADC) pek düzgün ölçüm yapmıyor gibi. Birisi bu davranışlara mantıklı bir açıklamada bulunursa memnun olurum.

    Teşekkürler.

    Kod:
    Kod:
    void loop()
    {
       uint16_t ADC;
       float temp=0.0; 
       ADC = analogRead(LM35); // Read Temperature
       //temp = (ADC * 3300) / 8191; // DENEYAP MİNİ Kart için Mini Voltaj donusumu yapildi. 13 bitlik bir ADC olduğundan dolayı 8192 adımı var.
       temp=(ADC/14.46)*500/1024;//Kaç 10mV olduğunu ölçüyoruz.
       Serial.printf("ADC:%d, Temp:%.2f", ADC, temp);
       Serial.println();
       delay(100);
       yield();
    }


  • #2
    Merhaba,
    Güncelleme yapalım. Sıfır bir mini (DYM) kart ile denediğimde potansiyometre ile istikrarlı bir şekilde A0 üzerinde sıfır değerini görebiliyorum. Demek ki yukarıda bahsettiğim problem; ya A0 pininin bir sebepten bozulması sebebiyle; ya da diğer komponentler sebebiyle A0 pininde gürültü olması yüzünden oldu. Yalnız halen maks değeri olması gerektiği gibi 3.3V' de değil; 2.95V' de görüyorum. Buradan çıkardığım sonuç Mini (veya ESP-S2)' nin analog ölçümleri hassas değil. Sanırım hassas analog ölçüm için başka komponentler kullanmak (ADS1115 gibi) daha doğru olur. Beni düzeltmek isteyen varsa sevinirim.

    Yorum Yap


    • #3
      Merhabalar,

      Değerlendirmeniz üzerine analog okuma yapılabilen pinlerin tamamını test ettik. 0-3.3V gerilim aralığında yapılan ölçümlerde yaklaşık 2,65V değerinden sonra 8191 (13 bit çözünürlük ayarlıysa) değerini alıyoruz. Şimdilik analog okumalarda ölçüm için endekslemeyi 0-2,65V aralığında yapabilirsiniz.
      Bir gelişme olduğunda sizi tekrar bilgiendireceğiz.

      İyi çalışmalar.

      Yorum Yap

      Hazırlanıyor...
      X