Haberler:

Eposta uyarılarını yanıtlamayınız ( ! ) https://bit.ly/2J7yi0d

Ana Menü

ADC ve reset sorunu

Başlatan Aquas2004, 29 Ocak 2008, 10:43:18

Aquas2004

Arkadaşlar merhaba,

Çıkışı 120 mV ile 4370 mV arasında değişen çıkışı olan bir opamp dizim var.  Bu çıkışı 16f877 adc girişine veriyorum. Sistem ilk başlarda sorunsuz çalışırken şu an yeni çıkan bir sorun ile karşı karşıyayım.  Bu sorunu reset bacağını grounda bir süreliğine çekerek aşabiliyorum. Sorun devreye ilk elektrik verdiğimde adc den okunan değerlerin normalde okumam gereken değerlerin 1/10 u olarak gelmesi. Reset attığım anda sağdaki eksik 1ler basamağı yerine geliyor ve hesaplamalar normal oluyor. Pic yazılımının o kısmına hiç dokunmadığım halde nasıl olduğunu bulamadım. programı sadece adc yapacak şekilde revize ettim. Lcd rutinleri dışında ek bir şey kalmadı ama yine aynı sorun devam ediyor. Bu konuda bir yorumu olan var mı?

Erol YILMAZ

1. Port ayarlarının düzgünce ADC olarak yapıldığından emin olun.
2. Porta girilen gerilimin düzgün olduğunu skopta izleyin.
3. REF gerilimini olması gerektiği yerden verdiğinizden emin olun.
4. ADC yi düzgün okuduğunuzdan emin olun.

Eğer bunlar düzgün de halen çalışmıyorsa o PIC i ayaklarından vurun. :D

elmaalma

Alıntı yapılan: "Aquas2004"Sorun devreye ilk elektrik verdiğimde adc den okunan değerlerin normalde okumam gereken değerlerin 1/10 u olarak gelmesi.
Devreye enerji uygulandığında, ilk ADC okumaya başlamak için gereği kadar gecikme verdiğinizde de aynı sorun oluyor mu?

Aquas2004

Devre daha önce sorunsuz çalışıyordu. Şimdi de bir kere mclr den reset uyguladıktan sonra gene düzgün olarak çalışmaya devam ediyor. Resetten sonra kesinlikle okuduğum değerlerde bir sorun olmuyor. 100 sampling alıp 1000 e bölüp tekrar 100 le carpıp son basamağı 0 lıyorum. reset atılana kadar mesela 1790 okumam gereken değeri 179 okuyorum. Resetten sonra 1790 olarak okunuyor.  Bu olayı da düşünürek mainin başında 2 saniye (8xDelayMs(250)) beklettim, birşey değişmedi. elimde 2 pic vardı ikisi de aynı sorunu yaşattı. :) Olmadı taze pic alıp bir deneyeceğim. Satır satır gerçek-devre debugına henüz vakit bulamadım. Oversampling türü şeyleri devre dışı bırakıp da deneyeceğim. Sanırım picler bu kadar denemeye dayanamadı! :)

gallavi

Referans voltaj ayarlarında bi sorun olabilir.
DemirHan=gallavi;

Erol YILMAZ

Anlattığınız şeyler yazılım hatasını andırıyor.
Cast operatörlerinde bir yanlışlık yapmış olabilirsiniz.

Aquas2004

Hımm. Bozuk casting mclr resetinden sonra doğru sonucu vermeye nasıl başlayabilir onu canlandıramadım. Adc ve matematiksel işlem kısımları hiç değişmedi ve zaten çok basit. Tam sayı kısımları unsigned int diğer kısımlar float. İşlem içlerine her bir değişkeni bit sayısı aynı olsun diye casting ile sokuyorum. Zaten dediğim gibi kodda o anlamda bir syntax yanlışı olsa reset sonucu da aynı yanlış sonucu verirdi gibi geliyor. Evde sıfırdan bir adc devresini farklı breadboardda bir deneyeceğim. Bir de farklı PortA bacağı kullanacağım. Şu an kullandığım bacak iç elemanlarında bir sorun olma ihtimaline karşın. Mclr resetinin yarattığı efekti programsal olarak yapabilmenin yoluna bakıcam aynı zamanda. Gerekirse mclr 'yi persistent değişken ve bir port çıkışı ile ground'a çekme yolu da olabilir hiç bir şey olmazsa.

Aquas2004

Yol gösteren arkadaşlara teşekkür ederim. Çözümü konfigürasyon bitlerinde buldum. PWRTE yi enable yaptım. Debug'ı disabled. 2 pic birden çalışmaya başladı. Main içindeki 2-3 saniyelik bekletmeler bu sorunu çözmeye yardımcı olmadı. Bunun yerine PWRTE/OST bekletmesi sorunu çözdü gibi gözüküyor. Buna benzer sorun yaşayabileceklere çözüm olur umarım. Tekrar teşekkür ederim.

Aquas2004

arkadaslar yeni bir sorunla karşınızdayım. :) lm4040-50 5 volt referans entegresi ile adc cevirimindeki sorunları aşma çabam sonuçsuz kaldı.

ADCON1 PCFG  1110 olduğunda VDD ve VSS referans oluyor bildiğiniz gibi. Bu modda akım çekmediğim sürece sorunum yok. PCFG 0101 yaptığımda AN3 VRef+, VSS VRef- oluyor. Sorun şu ki 4.99 V olarak ölçtüğüm lm4040 gerilimini AN3 'e uygulayayım ya da uygulamayayım ve AN0 daki gerilim ne olursa olsun 10 bit okunan deger 4999 oluyor. AN3 e 5 volt da versem, şaseye de bağlasam sonuç değişmiyor. PCFG yi 1110 olarak ayarlayıp AN2 yi şaseye bağladığımda da sonuç değişmedi. 2 ayrı picle deneme yapıyorum.   PCFG 1110 olduğunda ise ölçme doğru yapılıyor. Sorun ne olabilir?

Aquas2004

The ADCON1 and TRIS registers control the operation
of the A/D port pins. The port pins that are desired as
analog inputs must have their corresponding TRIS bits
set (input). If the TRIS bit is cleared (output), the digital
output level (VOH or VOL) will be converted.

pardon arkadaslar... TRIS ile PCFG nin uyumlu olması gerektiğini gözden kaçırmışım.

ahmet2004

Yazılımında hata var?

Aquas2004

Ahmet bey, PCFG 1110 olduğunda  ölçme doğru yapılmıyor olsa bakacağım şey hesaplama kısmı olurdu. Sorun gene yazılımda ama a/d hesaplanması kısmında değil port önayarlarında. İlginiz için teşekkür ederim.

Erol YILMAZ

Analog okuma yapan bir koddan esinlenmeniz gerektiğini düşünüyorum.
Herşeyi tek tek yanlış yaptıktan sonra doğrusunu yapacaksınız aksi halde :D

Aquas2004

Erol bey, acelem yok. :)  amatör olarak uğraşıyorum.  Bu şekilde kafama  çaka çaka öğreniyorum :) yoksa kafamı vura vura mı desem bilmiyorum.

Erol YILMAZ

Uzun bir yol seçmişsiniz. Bu yolculuk çoğu insanı yıpratabilir.
Datasheeti açıp en azından registerları gözden geçirmek daha hızlı yol almanızı sağlar.