avatar_elektro77

Isıs simülasyonda Adc hatası

Başlatan elektro77, 25 Mart 2023, 23:03:44

elektro77

Kaynak kodları olmayan ve gerçek devrede sorunsuz çalıştığı söylenen hazır gelmiş bir hex kodunda proteus simülasyonu sırasında binlerce aşağıdaki adc hatasını alıyorum sebebini ne olabilir? Mcu Pic16F877A. Tüm adc kanallarına pot bağlı.
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

ete

Malum adc ölçme işlemi içerideki bir kondansatörün şarj edilişi ile yapılıyor. Kondansatörün tam olarak şarj olabilmesi için her işlemcide kendine has bir şarj zamanı var buna ACQUISITION TIME deniliyor. Data sheet'e bakıp bu işlemci için ne süre hesaplanmış görmen ve o süreyi aşağıdaki komuta vermen lazım.
DEFINE ADC_SAMPLEUS 20 '....... ADC sampling time (uSec)
16F877 için sampling time 19,72us hesaplanmış bu data sheet 114 cü sayfada veriliyor. O halde bu komuta en azından 20 değerini girmen lazım.
Birde iki okuma arasına biraz gecikme eklersen de fena olmaz.

Ete

elektro77

#2
Tahmin etmiştim sorunun bu olduğunu Gerçekte bu devrenin bu hex kodu ile çalışması ne anlama geliyor peki hocam. Kullanıyorlar bu devreyi bu şekilde.
Birde Kaynak kodları bende değil. Bende sadece hex kodu var.
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

ete

Bu hatayı isis tespit ediyor. Sanırım iki komut arası zamanı hesaplayarak buluyor.
İşlemci bu hesabı yapmaz. Hata da vermez. ADC ölçümü içerdeki kondansatörün tam dolup sonra deşarj edilme süresine bakılarak yapılıyor. Kondansatörü 19,72us yerine 11us doldurup ölçüm yaptırsan işlemci itiraz etmez ama ölçtüğü değerler eksik çıkabilir.

Ete

elektro77

#4
Alıntı yapılan: ete - 26 Mart 2023, 08:23:57Bu hatayı isis tespit ediyor. Sanırım iki komut arası zamanı hesaplayarak buluyor.
İşlemci bu hesabı yapmaz. Hata da vermez. ADC ölçümü içerdeki kondansatörün tam dolup sonra deşarj edilme süresine bakılarak yapılıyor. Kondansatörü 19,72us yerine 11us doldurup ölçüm yaptırsan işlemci itiraz etmez ama ölçtüğü değerler eksik çıkabilir.

Ete

Bu durum tasarımcı tarafından bilinçli olarak kulanılmış olabilir mi? Kondansatörü tam şarj etmeden kullanmak. Bir şeyi avantaja çevirmiş olma ihitmali var mıdır? Osc frekansı 4 MHz ve her adc girişinden gndye 1mF kapasitör konulmuş.
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

onurinci

isis'te Debug sekmesinden işlemciyi bul ADC sekmesini kapat,bu durumda devre çalışır ,ama tutmayan süre uyarısı kalkar..

Powered by EzPortal