Declare ADIN_STIME 50 nasıl çalışır ?

Başlatan pcb, 07 Şubat 2008, 09:09:19

pcb

Declare ADIN_STIME  50
ayarından anladığım, bir analog okumayı yapmak için pic de bulunan bir iç kondansatörün şarj edilmesi için tanınan süredir 50 mikrosn. Ard arda
A = ADIN    0
DELAYUS   1
A = ADIN    0
gibi bir okuma yaptırdığımızda  1mikrosn lik gecikmeye ile de iç kondansatörün tamamen boşaltılması için gerekli bir süre olduğunu belirtiliyor diğer okumaya geçildiğinde ise   ADIN_STIME devreye girip kondansatör için belirlediğimiz 50 mikrosn. gecikme uygulayarak iç kondasatörü mü dolduruyor ?  Yani her okumadan önce  ADIN_STIME süresine mi bakılıyor
ADIN_STIME    10 yaparsak ne olur ? kondansatör gerekli zamanı bularak şarj olmaz ve hatalı okumaya mı başlar ?

Maxim

Helpinde tam olarak şu yazıyor ,
çevirebildiğim kadarı ile .

İç kapasitörün tam olarak şarj olmasını bekler ve sonra örnek alır .
Bu değer, 0 ile 65535 us arasında olabilir .
Eğer değer çok küçükse çözünürlük azalır .
Eğer çok yüksekse çevrim hızı kötüleşir .

Bu değer genelde 50 ile 100 arasında seçilir ,
50-100 arası değerler, çevrim hızını çok kaybetmeden ideal şarj süresi sağlayan değerlere denk gelir .

Fakat en doğru değeri kullanıcı kendisi deneyerek bulmalıdır .
Eğer programa bu satır yazılmaz ise otomatik olarak 50 kabul edilir .


yani doğru anlamışsın ,
eğer süreyi 10 yaparsan ,resolution düşecekmiş ama genede açık kapı bırakıyor adamlar ,dene diye .

pcb

Pic e kaç mikrosn aralıklarla doğru ölçüm yaptırmak pek de mümkün görünmüyor,  bu zamanlamayı siz çok düşürseniz bile pic istediği gibi zamanlamayı kendi değiştirmiyor ama 10 mikrosn gibi bir sürede de kondansatörü şarj edip doğru okuma yapmıyor, bu süreyi daha da uzatıyor, istenilen sıklık ve doğruluk da okuma yok, sadece ilk okuma çok doğru.
Acaba daha hızlı ölçüm yaptırmak için ayrıca bir ADC mi kullanmak gerekli, MAX vs gibi çeviricileri hiç kullanmadım. Ayrıca bir ADC entegre kullanmanın mantığı bu mudur ?

Maxim

Alıntı yapılan: "pcb"Pic e kaç mikrosn aralıklarla doğru ölçüm yaptırmak pek de mümkün görünmüyor,  bu zamanlamayı siz çok düşürseniz bile pic istediği gibi zamanlamayı kendi değiştirmiyor ama 10 mikrosn gibi bir sürede de kondansatörü şarj edip doğru okuma yapmıyor, bu süreyi daha da uzatıyor, istenilen sıklık ve doğruluk da okuma yok, sadece ilk okuma çok doğru.
Acaba daha hızlı ölçüm yaptırmak için ayrıca bir ADC mi kullanmak gerekli, MAX vs gibi çeviricileri hiç kullanmadım. Ayrıca bir ADC entegre kullanmanın mantığı bu mudur ?

biraz daha detay verebilirmisin?
yani picin kendi 10 bitlik adc si verimli çalışmıyormu diyorsun ?

pcb

demek istediğim şu 8 bitlik ADC için,
Declare ADIN_STIME  10 olarak ayarlıyorsunuz
delayus   1

ayarladığınızda ard arda ortalama 10 mikrosn de bir okuma yaparsa 1ms de 100 okuma yapabiliyor ama okuma hassasiyeti 19,6 mv dan daha yukarı çıkıyor.
Declare ADIN_STIME  50 olduğunda 1ms de ancak doğru 20 okuma gerçekleşebilir

10 bit lik ADC için okuma daki çözünürlük artıyor ama okuma sıklığını sınırlayan kondansatör dolma-boşalma süresi, bu sürenin pek değişmediğini düşünüyorum.

Maxim

Alıntı yapılan: "pcb"demek istediğim şu 8 bitlik ADC için,
Declare ADIN_STIME  10 olarak ayarlıyorsunuz
delayus   1

ayarladığınızda ard arda ortalama 10 mikrosn de bir okuma yaparsa 1ms de 100 okuma yapabiliyor ama okuma hassasiyeti 19,6 mv dan daha yukarı çıkıyor.
Declare ADIN_STIME  50 olduğunda 1ms de ancak doğru 20 okuma gerçekleşebilir

10 bit lik ADC için okuma daki çözünürlük artıyor ama okuma sıklığını sınırlayan kondansatör dolma-boşalma süresi, bu sürenin pek değişmediğini düşünüyorum.

1ms de 20 okuma azmı yani ?  8O

aslında kararlılığı arttırmak için analog okumada peş peşe örnekler alıp hepsinin ortalamasını hesaplamak en iyisi .
yani 100 kere adc okuma yaparak bu 100 okumanın ortalaması en doğru sonuç fakat bu sefer okuma hızımız yavaşlıyor .

pcb

böyle bir süre için tabiki az değil, 10 bit okuma da çok değişken, 10 okuma da 1,  aritmetik ortalama alınıp daha kararlı değerler elde etmek mümkün.