Direnç ölçme

Başlatan Mucit23, 25 Aralık 2012, 21:36:15

mozkan87

https://www.picproje.org/index.php/topic,39480.0.html
Linkteki projede sizin dediğinize benzer birşey yaptım ama benim istemde direnç 70-250 ohm arası değişiyordu. Ben lm334 ile 1 mA akım geçirdim opamp ile uygun şekilde yükselttim ve adc ile okudum. Dosyayı indirip incelerseniz poweropamp.dsn dosyasına bakabilirsiniz.
Ben sizin yerinizde olsam ölçecek olduğunuz direncin GND ile bağlantısı olan araya 50 ohm direnç bağlarım bu sayede 50-150 ohm arası bir değeriniz olur ve opamp lm358 ile çalışabilir hale gelirsiniz.

Klein

0-100R aralığında 10 bit ölçüm yaptığınızdan bahsetmişsiniz. Ancak verdiğiniz öçüm sonuçları noktadan sonra 2 hane.  yani tam skalada 10000 birim.  Aradaki mesajlarda atladığım bir şey mi var?

Ayrıca sabit akım kullanmadığınızda oluşan linearizasyon sorunu çok basit bir matematik hesapla aşılabilir.

Mucit23

Hocam 10bitin bana verdiği bütün çözünürlüğü kullanmaya çalışıyorum. Yani extra bir işlem yapmıyorum. ADC den okuduğum gelirimi direk akıma bölerek direnci hesaplıyorum. Elde ettiğim değer direk ekrandaki oluyor. Acaba sizin dediğinize göre dahamı hassas ölçmem gerekiyor (virgülden sonra 3 hane vs..)

Klein

#18
Hayır. Aksine daha düşük.  10 bit 1024 eder. tam skala değerin 100 olduğuna göre, edebileceğin en yüksek doğruluk  noktadan sonra 1 hanedir. Noktadan sonra 1 haneyi doğru gösterebiliyorsan  tamamadır.

mesaj birleştirme:: 26 Aralık 2012, 16:28:31

Ekleme:

Bu tip işlerde hesaplama yaparken, sabit değerler kullanmak pek doğru bir yaklaşım değildir.  Malzemelerdeki toleranslar , sıcaklık değişimleri gibi etkenler sonucun değişmesine neden olur.  Ancak kullandığınız elemanlar çok yüksek doğruluk sınıfında ise, bu tür bir hesaplama yöntemi kullanabilirsiniz.
ADC'den aldığınız değeri akıma bölmüşsünüz.  Bu hesapla doğru sonuç elde etmek için , akım bilgisini aldığınız  ölçü aletinin binde birden daha yüksek doğruluğa sahip olması gerekir.  1mA sabit akım basıyorsanız , bunu lçtüğünüz ampermetrenin noktadan sonra 3 haneyi hatasız göstermesi gerekir.

Mucit23

Belliki yaptığım hataların bir çoğuda kullandığım yöntemden kaynaklanıyor

Klein; Aynı donanımla doğru br sonuç elde etmek için hangi yöntemi uygulamalıyım. Akım bilgisi zaten sabit. Bunudamı işlemciye geri bildirmem gerekir.

Klein

Sabit değerler kullanmamaman gerek. Her cihazı kalibre etmen gerek. Eğer kalibre etmeyeyim diyorsan , %0,1 toleranslı komponentler kullanman gerekir ki  %1 metal film dirençleri bile bazen bulmakta zorlandığımız düşünüldüğünde, hayal olur.

Kalibrasyon için  ya kalibratör kullanacaksın ,ya bir kaç direnci seri paralel bağlayarak tam 100.0 Ohm direnç elde edeceksin. Burada dikkat edeceğin enönemli şey , kalibrasyonu hep aynı sıcaklıkta yapmak.

Gelelim kalibrasyon ve hesaplamalara.
Sabit akım kullandığın için linearizasyon sorunun yok.  Basit bir oranlama işini görür.

Cihazın uçlarını kısadevre ettin. ADC'den aldığın değeri offset ismiyle kaydettin.
Ucuna 100.0R bağladın, bu değeri de  span olarak kaydettin.
100.0 R bağladığında ekranda görmek istediğin değer 100.0 olduğuna göre  bu değere de gain diyelim.
100R bağladığında ekranda 300 görmek istiyorsan gain değerin 300 olacaktır. 

hesaplama şu:
((ADC değeri - Offset) / (Span-Offset))*Gain


Bu hesaplama linear sistem için. Eğer sabit akım yerine gerilim bölücü kullanırsan , hesaplama değişir.

Maxim

klein hocam
gerilim bölücülü olan hesabıda verebilirmisin?
teşekkürler

Klein

Önce Gerilim bölücülerden birinin değerinin bilinmesi durumunda,diğer direncin değerinin nasıl bulunacağını anlatayım. Sonra da bu değereri bilmemize gerek kalmadan nasıl hesaplayabileceğimize geçelim.

Bir bölücü devrede direnç değerini bulmak için akımı , gerilimi ve dirençlerden birinin değerini bilmemiz gerekli.

Diyelim ki:
bölücüye uyguladığımız gerilim 5V.  Bölücü direncimiz 10R diğer direncimizin değeri belirsiz.

Gerilim bölücü çıkışındakigerilim bize ölçeceğimiz direncin uçlarında düşen gerilimi verecektir. Toplam gerilimi bildiğimize göre, kalanı da diğer direncimiz üzerinde düşmüş demektir. Direnç değerini de bildiğimize göre geçen akımı kolayca hesaplayabiliriz.
ADC çözünürlüğümüz 10 bit = 1024
VIn =5V
R1  = 10R
R2  =x
Vout = 3V

R2 direncimiz üzerinde  3V düştüğüne göre, R1 direncimiz üzerinde 2V düşmüştür.
Buradan akımı hesaplayalım. 

I= E/R = 2/10 = 0.2A   

Bölücümüzden geçen akım 2.5A olduğuna göre  R2 direncimizin değeri = E/I = 3/0.2 = 15R

ADC ile ölçüm yaparken  (Referans voltajı (5V) / 1024)* ADC değeri  yaparsak ADC uçlarındaki gerilimi buluruz. Gerilimi bulduktan sonra da yukarıdaki gbibi direncihesaplayabiliriz.

R2 değeri = Ölçülen/((referans - Ölçülen)/R1 değeri) = 3/((5-3)/10) = 3/(2/10) = 3/0.2 = 15R

Önceki mesajlarda, bu tür hesaplamalar için doğrudan gerilim , direnç gibi değerlerin girilmesinin doğru olmadığından , kalibrasyon ile bu değerlerin karşılıklarının bulunmasının doğru olacağından bahsetmiştik. 

Bunu nasıl yapacağımızdan bahsedelim.

Doğrudan değerler kullanmak yerine ADC'den aldığımız değerleri kullanacağız. Diyelim ki referansımız 5V. Bu durumda ADC girişine 5V verirsek ADC değeri 1023 olur (bölüm kolaylığı nedeniyle 1024 diyalim) .  Referansımızda bir değişme meydana gelirse bile, değerimiz asla değişmez. Ben gerilimi 5V değil de 1024V kabul edersem, diğer değerlerim de buna orantılı olarak değişir , ancak oran hep sabit kalacağı için sonucum gerçekte değişmez.


Önce kalibrasyon prosödürünü uygulamamız gerekecek. Yöntem aynen  önceki mesajda bahsettiğim gibi. (offseti 0 kabulettim) 100.0R direnci devreye takıyoruz.  Bu direnç için okuduğumuz değeri span olarak kaydediyoruz.
adrange = ADC çözünürlüğümüz. 10Bit için 1023 alıyoruz.
 
resist_val=(((adrange/(adrange-adval))*span)-span);
Bu hesapladığımız değer gerçek direnç değerimiz değil. Ancak direncin katı olarak değişen linear değerimiz.

Resist = resist_val/(span/gain)

Bu formülü nasıl buldığumuzu biraz daha detaylı olarak daha sonra anlatacağım.

Bu hesaplama, gerilim bölücü referans voltajımıza bağlı ise geçerli. 
Eğer gerilim bölücüreferanstan faklı bir kaynağa bağlı ise, nasıl  bir ölçüm yapacağımızı da yarın anlatırım. 

ipek

http://www8.plala.or.jp/InHisTime/page177.html

bende bu çekik gözlü dostumuzun projesini yaptım çalışmadı ,illaki şemasındaki opamp'ı istedi zar zor bir tane temin ettim baktımki kusursuz çalışıyor. ama galiba senin işini görmez en fazla 1.8 ohm ölçüyor fakat topoloji işe yarar
not R1 ile R5 'i   % 01 tolerans 15ppm Yaego kullandım uçları birleştirip 25 dakika bekledim sapma oranı yok denecek kadar az ,fakat TL431 beni deli etti biraz ısınsın sapıtıyor buraya ciddi bir şey bulursam harika olacak..
not = ekrana çıkan ohm sembolu isiste çıkıyor fakat hakiki devrede çıkmıyor ,buraya abuk subuk çice bir şey cıkıyor,piyasa LCD leri çin malı olduğundanmıdır nedir HD44780 karakter setine sadık değiller..

Mucit23

#24
Yahu bizim burada atladığımız bir konu var.


photo sharing

Buna Benzer bir ölçüm mantığı kullandım. Board üzerine kurdum herşeyi kalibrasyon felan yaptım. Güzelde ölçüyorum. Opampı ise simetrik besledim.

Ama Farzedelim  ölçülecek direnç yani yukarıdaki R3 bağlanmadı...

Dolayısıyla sadece opamın giriş empedansı kalır orda. Bununda çok yüksek bir değer olduğunu düşünürsek opampın + ucunda max gelirimi görüyorum. Dolayısıyla direnç yokken çıkış gelirimide max oluyor.

Bu sorun nasıl aşılır.

Birde ADC değerim çok titrek. Bir filtreme işlemi uygulamalıyım. Bunu nasıl yapayım

kantirici

@mucit link açılmıyor.

Mucit23

Alıntı yapılan: kantirici - 30 Aralık 2012, 10:06:09
@mucit link açılmıyor.
Yanlış link vermişim.  ;D

İyi kalibre edilince güzel çalışıyor.

Ben bu sistemi bi sensörü okumak için kullanmıştım. Sensörün Bağlanmama, kopukluk sensör arızası gibi durumlarda opampın + girişinde olabilecek en yüksek voltaj oluşuyor. Besleme voltajına yakın bir değer. Dolayısıyla opamp verebileceği en yüksek voltajı çıkışa veriyor. Bi ara ADC girişinde 9 volt gördüm.  :D

Tatmin edici bir sonuç aldım ama gerçekten iyi kalibre edilmesi gerekiyor. Üstelik Dirençlerin hepsi Kesinlikle  en az %1 toleranslı olması gerekir. Ben istediğim değerlere yakın dirençleri bir kart üzerinde sökerek denedim. Hepside 0805 Smd direnç bu yüzden malzemelerin çoğunu SMD kullandım.

Fakat pek iyi bir yöntem olmadı. Direnç yokken Opamp çıkışı Max. oluyor

Maxim

titreme için bir çözüm önereyimmi ?
opamp çıkışına 100nf koymuşsun ama o pek bir işe yaramıyordur
çünkü opamp çıkış empedansı zaten düşüktür

opamp çıkışına bir tane 10k seri direnç koy
yani opamp ile 100nf arasında
o zaman 100nf işe yarayacaktır

Mucit23

Alıntı yapılan: Maxim - 30 Aralık 2012, 11:28:40
titreme için bir çözüm önereyimmi ?
opamp çıkışına 100nf koymuşsun ama o pek bir işe yaramıyordur
çünkü opamp çıkış empedansı zaten düşüktür

opamp çıkışına bir tane 10k seri direnç koy
yani opamp ile 100nf arasında
o zaman 100nf işe yarayacaktır

Önerin için Sağol.

Yazılısal olarak hallettim. 500 defa örnek alıp aldığım bu örneklerin aritmetik ortalamasını aldım. Şimdi sıkıntı kalmadı.

Klein

Opamp Çıkışındaki kapsitör , çıkışta çok ciddi dalgalanmaya neden olabilir. Özellikle LM358 çıkışa doğrudan kapasite atmaya pek uygun değil. Kapasiteyi sökersen daha düzgün çıkış alabilirsin.