Haberler:

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

Ana Menü

Pic ile ADC "yardım"

Başlatan peace_lovingg, 13 Mayıs 2006, 23:21:28

peace_lovingg

Merhaba arkadaslar,benim bir ısı ölçer yapmam gerek.Sensör   olarak pt100 kullanmayı düşünüyorum.Elimde op-ampla 1derecede 10mV'luk değişimi sağlayacak devre var fakat şu adc konusunda eksiğim çok.Dönüşüm için pici kullanmak istiyorum.
     Öncelikle adcin sonucundaki değerin ısı değerine dönüşümü için formülü nasıl hesaplıyacağım? 350-400 V'ta kadar ölçmem gerek.Sanırım işin en zor yanı bu.

ete

Bu konuda sana yardım ederim. Bunun için öncelikle aşağıdaki hususları belirlememiz gerekecek;

1. Maksimum ölçülecek sıcaklık ne olacak.
2. Bu max. sıcaklık derecesinde opamp çıkışı kaç volt verecek.
3. Sıcaklık değişiminde opamp linear bir çıkış verecekmi?
4. 300 - 400 V a kadar ölçecek demek le neyi kast ediyorsun. Yoksa bunlar 300 - 400 derece midir?.

Devre şemasınıda burada vermen mümkünmü. Sistemi topluca görmek ve girişler çıkışları izlemek açısından.

Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

peace_lovingg

Hocam öncelikle ilgilendiğin için çok sağol.

sorularınızın cevapları ise söyle,

1.Max. sıcaklık 300 ila 400 c derece olacagını tahmin ediyorum.(Bu cvp aynı zamanda 4. sorunun da cvbı oluyor sanırım.)
2.Opamp devresinin çıkışı max. 5 volt olacak.Ama 400 derece        400*10 mV'tan 4 volt oluyor.
3.Opamp devresi linear olarak çıkış veriyor.devrenin bende orcad capture çizimi var isterseniz yollayabilirim.

Sistem daha tam olarak hazır diil.şu adc konusunu halledebılırsem büyük ölçüde sorun kalmayacak.Benim amacım adcden sıcaklıgı okuyup 7 segment displaylere yazmak.

Hazırlamış oldugunuz ders notlarınıda inceledım.gerçekten çok yararlı oldu fakat şu formül konusunu notlardan çözemedim açıkcası.

Yardımlarınız için şimdiden teşekkürler.

Klein

Alıntı yapılan: "ete"
Sıcaklık değişiminde opamp linear bir çıkış verecekmi?
Ete
Alıntı yapılan: "peace_lovingg"
3.Opamp devresi linear olarak çıkış veriyor.devrenin bende orcad capture
çizimi var isterseniz yollayabilirim.
peace_lovingg

Opamp Linear çıkış verir ama Pt100'ün linearizasyon hatalarını gözden kaçırmayın derim.

peace_lovingg

Hatırlatman için çok sağol Klein pt100'un pdflerini inceledim toleransı çok küçük göz ardı edebilirim.

ete

Benim bildiğim PT100 ler 1200 dereceye kadar çalışabiliyor. Hepsi bu sıcaklığa ulaşabilirmi bilmiyorum. Her neyse şimdi ufak bir hesap yapar isek;
Opamp çıkış voltajı maksimum 5 volta çıkacak ise bu teorik olarak 500 dereceye tekabül edecek demektir. Bu durumda her nekadar sen çıkmasanda sistemimizi buna göre kuracağız. Bu durumda benim varsayımlarım;

-Bir kanaldan ADC okunacak.
- Okunan değer 0-500 derece arasına tekabül edecek.
- 10 bit ADC kullanacağız.
- max okuma değerimiz 1023 olacak ve bu 500 dereceye tekabül edecek.

BU varsayımlar üzerinden bana düşen kısmı halledeceğim. Tamamlanma devre şemasını gördükten sonra olacak.

Bu arada PT100 opamp devresini ayrıca denedinmi. Gerçekten 0-5 volt çıkışı alabilecekmisin?. Çünki daha önce PT 100 lerin linearite konusunda sorunları olduğunu duymuş idim. Klein arkadaş doğru söylüyor. Bu yüzden opamp çıkışı linear mı diye sormuş idim. Çünki PT 100 ile ilgili bazı devrelerde lineariteyi sağlamak için devreye bazı ilaveler yapılıyor hatırladığım kadarı ile. Her neyse orası senin sorunun.

Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

peace_lovingg

Hocam opamp devresini daha önce kurmuş ve denemiştim çalışıyor.Opamp Çıkışında herhangibir sorun yaşamayacağımıza eminim.
Opamp Devre şemasını direnç degerleri tam olarak buldugum zaman verecegim.
Biraz evvel söyle bi formül denedim ama dogrulundan tam olarak emin değilim;
main:
adcin 0 ,adc
cont: if adcon0.2=1 then cont
derece=(adc*49)/100
'PAUSE 500
lcdout $fe,1
lcdout "isi=" ,#adc,"derece=",#derece

pause 100
goto main
end

Bunu proteusda denedim.Birde siz incelerseniz çok sevinirim.

Board üzerinde kurmak için bi kaç devre elemanına ihtiyacım var.şimdi onları temin etmek için forumdan ayrılıyorum. (umarım açık bi parçacı bulabilirim)

ete

Aslında formül çok basit.
Şöyle olabilir,

adcin 0 ,adc
cont: if adcon0.2=1 then cont
ISI=(adc */ 125)
lcdout $fe,2
lcdout "ADC=" ,#adc," ISI=",#ISI

pause 100
goto main
end


Yukarıdaki formül şunu ifade eder. Okunan ADC değerini 125 ile çarpıp 256 ya böl. Diyelimki okunacak voltaj 2,5 volt yani 2500 mv bunun ADC karşılığı 512 dir. O halde 512 * 125 /256 = 250 çıkar. Derece 250 derece demektir. Zaten maksimumum değerimiz 5 volt da 500 derece idi yarısında 250 derece çıkmış olur. Ana formülümüz budur.
Ancak iş onunla bitmiyor. Mümkün olan en sık okumanın yapılması ve ekrandaki görüntününde mümkün olduğunca kıpırdamadan kalması gerek. Genellikle ısı okumalarında ADC her okumada bir öncekine göre +- bir - iki farklı değerler okur. Formül bunu dereceye çevirince sıcaklık her seferinde veya bir iki okumada bir farklı sıcaklıklar hesaplar ve buna bağlı olarakda ekran sık sık değişir.  Örneğin derece 200 ler civarında iken bir 201 bir 200 bir 202 gibi sürekli değer değiştirir. Tabiiki bu olay isis de olmuyor. Okuma hep sabit olduğu için. İşte bu kırpışmaları mümkün olduğunca minimuma indirmek lazım. Araya paus (gecikme) koyularak bu bir nebze aşılabilir. Ancak bu seferde okumalar arasında gecikme olur ve buda ADC farklılığını artırır. Linearite için sık okuyup ekrana vermede bir taktik uygulamak ve gerekirsede okunan değerlerin bir ortalamasını alıp onu ekrana vermek gerekir.
Bir iki alternatif yazacağım. Hangisini beğenirsen onu kullanırsın. Beğenirsin derken deneyip görmekte yarar var. Neticeye göre birisini beğenebilirsin sanırım.

Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

Klein

Arkadaşlar PT100 malesef linear değil.  Eğer ürününüz çok profesyonel olsun istiyorsanız malesef çözüm biraz daha karmaşık. PT100 sıcaklık çevirimi için Callendar-Van dusen denklemini kullanmanız gerekiyor. formülleri  Google dan "Callendar van dusen" anahtar kelimesi ile aratırsanız bulabilirsiniz.

ftsahin

Ete hocam okunan değerin stabilite sorunu oduğu gibi bir de bunu  tarama modunda 7 segment displayde gösterme durumu var. Rakam 3 digit olacağı için hızlı çalışan bir tarama rutini yazmak gerekir. Bu da pek kolay olmayacak gibi gözüküyor.

ete

Display işi çok zor değil. Tavsiyem latch (kilit)li bir display sürücüsü kullanrak yapmanız. Bu 4511 olabileceği gibi 74HC595 de olabilir. Bu şekilde olur ise multipleks display sürerken yaşayacağınız zaman sorununu yaşamazsınız.

Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

peace_lovingg

Arkadaslar ilginiz için gercekten çok sağolun özellikle ETE Hocam.
Ben projemde sürekli olarak displaylerde ısıyı göstermeyecegim.Sadece baslangıcta displaylerde ısıtıcının durması gereken ısıyı ayarlayacagım ve displaylerde o gözükecek adc hesaplaması pic'in içinde gerceklesecek.Kesinlikle ısı displaylerde görünmeyecek.Bu yüzden taramada sanırım sorun yasamam.
      Ete hocam adc hesaplamasında notlarınızdaki gibi bir for-next döngüsünü kullanmamımı tavsiye edersiniz.Hocam söylediğim gibi adc sonucunda buldugum degeri sadece bir ısıtıcının çalıştırılmasında veya durdurulmasında kullanıcam.herhangibir sekilde displaylerde göstermeyecegim.Aslında devre bir termostat gibi çalışacak.

Erol YILMAZ

Donanim olarak gurultuyu engellemek icin onlemler alindiktan sonra ( daha turkcesi uygun RC ler :) ) bir de 64 okumanin ortalamasi alinir ve ardindan da IIR filtre uygularsaniz FLUKE olcu aleti gibi olur.

Tadindan da yenmez. Benden soylemesi...

Klein

Alıntı yapılan: "Erol"Donanim olarak gurultuyu engellemek icin onlemler alindiktan sonra ( daha turkcesi uygun RC ler :) ) bir de 64 okumanin ortalamasi alinir ve ardindan da IIR filtre uygularsaniz FLUKE olcu aleti gibi olur.

Tadindan da yenmez. Benden soylemesi...

kararlı okuma konusunda haklısın. Ama konu doğru değer olunca , malesef. Ayrıca iyi bir software filtre ile ortalamaya da gerek yok.
tabi bu işin sadece yazılım kısmı. Bir de donanım kısmı var.
Referans gerilimi , PT100 kablo kayıpları , kablodaki stabilizasyon sorunları vs... İyi bir referans diyoduna ihtiyaç var. PT100 kompanzasyonu için de 3 kablolu kullanmakta fayda görüyorum.Ve yine tekrar ediyorum. Callendar-Van Dusen denklemi , yada bir linearizasyon tablosu kullanmadığınız sürece doğru değeri okuyamazsınız.

Erol YILMAZ

Klein hocam bunların hepsi tabii ki  bir zincirin halkaları gibi.
Hepsi ayrı bir itina istiyor. Bu işe sevgiyle yaklaşmak lazım.
Çünkü parametreler az değil.
Ayrıca Excitation akımının oluşturduğu sıcaklık farkını da hesaba katmakta fayda var. Düşük yaparsak okuması güçleşiyor. Fazla yaparsak ısınma artıyor.  Analog Devices 200 uA de karar kılmış. Tabi adamların ADC leri hassas.

Bu konunun problemleriyle uğraşmaktan keyif alıyorum.
Termokupl, lineerleştirme, NIST... gözümde tütüyor bunlar.
TC7650 opampım bile hazır ama :(

@peace_lovingg
RTD -> 10mV çevrim devren çok özel değilse bizimle paylaşırmısın ?


Kolay gelsin...