mcp3553 22 bit adc kullanımı hakkında..

Başlatan mustafa_cmbz, 10 Mart 2013, 19:00:36

ete

Her zaman söylerim simulasyonda çalışan program gerçekte de çalışması gerekir diye.
Çalışmıyor ise iki devrenin farklarına bakman gerekiyor.
Benbir anlam veremedim doğrusu.
Ete

mikro29

Hocam şema ile gerçek devre birebir aynı hiç değişiklik yapmadım

ete

If SON.4 = 1  Then ' 21.BIT = FARK NEGATİF İSE '4194303=0.00000119209V = 0,0011 mV 
    SONUC = 2.5 - (GEN - 1048576 ) * 10 / 2097151
    HSerOut ["-",Dec4 SONUC,"V",13,10]
        Else 
    SONUC = (GEN*10)/ 2097151
    HSerOut [Dec4 SONUC,"V",13,10]
EndIf

Yukarıdaki kod  parçası dikkatimi çekti; SON isimli son byte 8 bitlik bir sayı. Aslında 24 bitlik sayının son byte'ını oluşturuyor.
Bu son byte hakkındaki açıklamaları daha önce vermişdik. Bir hatırlayalım istersen;
- Bit 23 Taşma biti olup Vin<-Vref olduğu zaman  bu bit 1 olmaktadır.  (Bit23 aslında SON.7 bitidir.)

- Bit 22 yine taşma biti olup Vin>Vref olduğu zaman 1 olmaktadır. (Bit22 aslında SON.6 bitidir)

- Bit21 ile Bit0 arasındaki bitler ise 22 bitlik ADC karşılığına denk gelmektedir.  Ama Bit21 aslında sonucun pozitif mi yoksa negatifmi olduğunu belirliyor idi. Bu bit ise SON.5 bitidir. Yani Son.5 biti "1" ise sayı pozitif "0" ise pozitif ise sayı negatif olmaktadır.
Peki sen nasıl kullanmışsın bu durumu ona bakalım. Şu ifade her şeyi açıklıyor  "If SON.4 = 1  Then" sen SON isimli değişknin 4 nolu bitini işaret biti olarak kullanmışsın ki bu yanlış ibana kalırsa If SON.5 = 1  Then şeklinde olmalı. Zira 5 nolu bit işaret bitidir. 4 nolu bit ADC değerinin son bitidir ve işaretle alakası yoktur. Sorun bu olsa gerek.
Tabiiki akla hemen şu soru geliyor Simulasyonda nasıl çalışıyor bu ortada bir simulasyon şeması olmadığı için neyi nasıl yaptığını biz bilemiyoruz. Bence orada da bir hata yapmışsındır sen. Yada ne okuduğunun farkında değilsindir.
Sonuç olarak 21 nolu bit işaret biti olduğuna göre hesaplamada bu biti devre dışı bırakmak gerekir. Pozitif değerde işaret biti 0 olduğu için sonucu etkilemez ama negatif değerde etkiler diye düşünüyorum.
Ete


mikro29

#18
Hocam simülasyon aşağıda, gerçek devrede aynısı. Voltajları voltmetre ile kontrol ediyorum dalgalanma yok. Gerçekte bir şey fark ettim. Ölçülen voltajın üzerine 4560 eklemiş.
Pilin 1.2841V pc de 4561.2817V yazıyor

ete

Sebebini bilmiyorum ama isisde doğru çalışıyor gözüküyor.
Bence yanlış çalışması gerekirdi ama doğru ve bu hata gerçek devrede ortaya çıkıyor bence.
Ne yazıkki Proton da yazılmış program oynayamıyorum. Yeniden PBP ile yazmak gerek.
Üşendim yazmaya boş kalınca deneyeceğim.

Ete

Powered by EzPortal