Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

pic18f6723 ve ADC kullanımı

Başlatan f15eagle, 05 Haziran 2014, 21:56:25

f15eagle

Herkese merhaba,
12 bit adc'si için hevesle 18f6723 aldım harici elemanla uğraşmamak için. Fakat adc konusunda önemli bir sıkıntı yaşıyorum.
Analog girişte işaret olmadığı halde 400mv - 500mV  arası bir değer ölçüyor. Analog kısım ile olan bağlantısını kestim. Boşta da aynı değer gelmeye başladı.
Osiloskopla ölçtüğümde analog çıkış pinlerinde 40ms periyotlu kare dalga gibi bir işaret var.

Çizim ve programı kontrol ederken fark ettim ki AVdd pinini boş bırakmışım. Bundan dolayı bu işaret olabilir mi ?

Kodlarım,

ayar kısmı
  
   #include <18F6723.h>
   #device adc=12

  #FUSES H4, NOWDT, NOBROWNOUT , NOLVP, PUT
  #use delay(oscillator=8000000, clock=32000000)
---
     setup_adc_ports(ALL_ANALOG);               // tüm analog kanallar açık
     setup_adc(adc_clock_div_4);


ölçüm kısmı,
void analog_oku()
{

   for(j=0;j<kanalsayisi;j++)
      {
         set_adc_channel(j); 
         delay_us(5);
         bufbilgi=read_adc();
         karsilastir(bufbilgi);
      }

}
----
void karsilastir(unsigned int16 yeni)
{
   if(yeni >= veri[j]) veri[j] = yeni;
   if(j==3) veri_yolla();  
}


ölçtüğüm değer bir öncekisinde büyük ise veri gönderiyorm. Başka analog işlemim yok. A portunda da sadece ilk 4 kanal kullanılıyor diğerleri boşta.
eve geldiğim için deneme fırsatım olmadı acaba
#define VREF_VDD              tanımını kullansam çıkıştaki voltajı önler mi ? tavsiyede bulunursanız sevinirim. teşekkürler

hasankara

Avdd Avss, adc modül besleme pinleri. referans gerilim konusu daha farklı. pic32mx440f128h da avss ile gnd arasında entegre boştayken 3-4 ohm direnç gözükürken avdd pini ile vdd arasında bi bağlantı bulunmuyordu. içerdeki adc modülün çalışması için bir şekilde modülün beslenmesi gerekir, bu içeriden veya dışarıdan olabilir. avdd i besleyerek denemeler yapabilirsin.

f15eagle

hasan bey cevap için teşekkür ederim. avdd pinini bağlamadığımı konuyu açarken fark ettim. yarın hemen bu pinde 5V bağlayıp deneme yapacağım.
Fakat aklıma takıldı, adc 400-500mV ekleyip doğru ölçüm yapıyor, beslemesi olmadan nasıl çalışıyo ki ?

hasankara

Bu sorunun cevabını belki sen deneyerek daha sağlıklı verebilirsin aklıma olabilecek bazı komplo teorileri geliyor. mesela, sonuçta giriş dirençleri çok yüksek olan bu adc modüller beslenmemiş olsa da çevreden çok rahat etkilenebilir gibi. her adc devresi aynı mantıkla çalışacak diye bir kural da olmadığı için kullandığın denetleyicide ki adc modülü için pek bir şey söyleyemiyorum. eğer tespit doğru ise sonuçta sen olağan dışı kullanmaya çalışmış sayılırsın. adamlarda bunu düşünmemiş (düşünmeye ihtiyaç duymamış) olabilir . adc beslenmediğinde adc değerlerini içer de 0 layalım ne olur ne olmaz da dememiş olabilirler, gibi...

selimkoc

Girişe pull-down direnç bağlayıp denediniz mi?

f15eagle

AVdd ye 5V verince problem çözüldü. Analog kısımdaki beslemem simertrik 12Vdu 5v olmayınca demekki direk bağlamadım sonrada unuttum.
Şimdi çok hassas şekilde 12bit ölçüm yapabiliyorum. güzel pic.
Öneri ve yardımlarınız için teşekkürler.