C de formül yazma yardım !

Başlatan Kaanx, 29 Mayıs 2014, 10:01:06

Klein

//MQ-131 Ozone Sensor Read  
   float Vc=5.0*analogRead(Ozone_sensor_pin)/1024;
  Rs=(float)(5.0/Vc-1)*Rl;

Diğer kısımlarda hata olup olmadığını bilmiyorum. İncelemedim. ama bu kısım doğruluğu etkiler.
 
5.0 olarak gösterdiğiniz değer 5V 1024 ADC çözünürlüğü sanırım.
Meslek hayatık boyunca , bir kere bile   (referans / çözünürlük * adc_değeri) formülüne değerleri bu şekilde girip doğru sonucu alamadım.
çok istedim ama olmadı.

formüle 5.0 şeklinde bir değer girmek için doğruluk sınıfı çoook yüksek bir referans kullanmanız gerek.
ADC'den gelen değeri bbu şekilde doğrudan girebilmek için, sensör çıkışının çook yüksek doğrulukta olması gerek. Datasheetten gördüğüm kadarıyla doğruluk %2 , ölçüm doğruluğu %5

Doğru sonucu almak için yapmanız gereken şey; kalibrasyon.
Önce hiç ozon olmayan bir ortamda ADC değerini okuyup,  Offset değerini bulacaksınız. Sonra sensörün ölçebildiği en yüksek ozon miktarına mümkün olduğunca yaklaşıp ,  kalibreli bir ozon sensöründen okuduğunuz değeri ve sizin ADCden okuduğunuz değeri alıp bunu span olarak belirleyeceksiniz, sonra da, linearizasyon gerektiriyorsa, linearizasyon yapacaksınız.

Diğer ksımları incelemediğim için, başka hatalar var mı bilmiyorum. Ama bu dediklerimi apmadığınız sürece, diğer hataları düzeltseniz bile asla doğru sonucu alamazsınız.

Gökhan BEKEN

Alıntı yapılan: Klein - 03 Haziran 2014, 12:16:34
5.0 olarak gösterdiğiniz değer 5V 1024 ADC çözünürlüğü sanırım.
Meslek hayatık boyunca , bir kere bile   (referans / çözünürlük * adc_değeri) formülüne değerleri bu şekilde girip doğru sonucu alamadım.
çok istedim ama olmadı.
Hocam ADC'yi voltaj olarak göstermek için
(referans / çözünürlük * adc_değeri)
yerine hangi metodu tavsiye edersiniz?
Özel mesaj okumuyorum, lütfen göndermeyin.

Klein

mesajın altında anlattım. Hiç bir zaman oraya girilen değerler tutmaz.
5.0 dediniz ama referansınız gerekten 5.000V değildir,  R1=1000 dersiniz ama hiç bir zaman o direncin değeri 1000 değildir.
Ancak her cihaz için bu değerleri tek tek ölçer ve formüle girerseniz, o zaman tutar.

Gökhan BEKEN

Yani önce hangi aralıklarda, hangi ADC değerleri alıyorum ona bakıp geniş bir liste yapacağız.
MCU ile ölçüm yaparken bu liste ile karşılaştıracağız, kabaca hangi aralıktaysa o iki değer arasında olduğuna kanıt getireceğiz.
Sonra bir formülle, orantı kurup gerçek değere daha(oldukça) yakın bir sonuç göstereceğiz.
Sonucun gerçekliğe olan yakınlığı ilk yaptığımız listenin büyüklüğü ile doğru orantılı.

Doğru anlamış mıyım?
Özel mesaj okumuyorum, lütfen göndermeyin.

Kaanx

Alıntı yapılan: Klein - 03 Haziran 2014, 12:16:34
//MQ-131 Ozone Sensor Read  
   float Vc=5.0*analogRead(Ozone_sensor_pin)/1024;
  Rs=(float)(5.0/Vc-1)*Rl;

Diğer kısımlarda hata olup olmadığını bilmiyorum. İncelemedim. ama bu kısım doğruluğu etkiler.
 
5.0 olarak gösterdiğiniz değer 5V 1024 ADC çözünürlüğü sanırım.
Meslek hayatık boyunca , bir kere bile   (referans / çözünürlük * adc_değeri) formülüne değerleri bu şekilde girip doğru sonucu alamadım.
çok istedim ama olmadı.

formüle 5.0 şeklinde bir değer girmek için doğruluk sınıfı çoook yüksek bir referans kullanmanız gerek.
ADC'den gelen değeri bbu şekilde doğrudan girebilmek için, sensör çıkışının çook yüksek doğrulukta olması gerek. Datasheetten gördüğüm kadarıyla doğruluk %2 , ölçüm doğruluğu %5

Doğru sonucu almak için yapmanız gereken şey; kalibrasyon.
Önce hiç ozon olmayan bir ortamda ADC değerini okuyup,  Offset değerini bulacaksınız. Sonra sensörün ölçebildiği en yüksek ozon miktarına mümkün olduğunca yaklaşıp ,  kalibreli bir ozon sensöründen okuduğunuz değeri ve sizin ADCden okuduğunuz değeri alıp bunu span olarak belirleyeceksiniz, sonra da, linearizasyon gerektiriyorsa, linearizasyon yapacaksınız.

Diğer ksımları incelemediğim için, başka hatalar var mı bilmiyorum. Ama bu dediklerimi apmadığınız sürece, diğer hataları düzeltseniz bile asla doğru sonucu alamazsınız.

Hocam dediğinizi anladım zaten ben ölçüm yaptıgımda avometre ile kodun söylediği arasında 0.5v akdar bir fark oluyor. http://www.sensorsportal.com/DOWNLOADS/MQ131.pdf bu datasheete göre 1. sayfanın altıdna formüller var bizde ona göre yazmıs bulunmaktayız. diğer referans bir örnek te burada http://www.iitk.ac.in/dord/power/documents/projects/aqms-phase1.pdf bu linke olayı daha iyi anlatıyor. Olay benim parametrelerde sanırsam. Yani NŞA  da oda kşullarında  ozon değeri 30- 50 ppb arası falan diyorlar ben bunu referans aldım. Söyle bir durumda var mesela ben buradan VC yi ekrana bastırdıgımda 5.0 hiç olmuyor mak 3.7 falan kalıyor başlangıc değeri olarak da 1.5 volt falan oluyor.

Birde özellikle dedğiniz yerde bir hata yok sanırım ben mi göremedim. Oradaki ADC den okuyup voltaj hesaplatma işlemi dogru değil mi her ne kadar tam değer vermemiş olsada :) 

Klein

#20
Hata hesaplamada değil. 
Ama şuna da dikkat et. Linear olmayan sistemlerin kalibrasyonundaki küçük farklar , sonuç üzerinde çok büyük farklara neden olabilir. Atmosferdeki ozon oranını tahmini olarak  aldığınızı da düşünüp , hata payına bunu da eklersek, sonu hiç tahmin etmediğin bir yere gidebilir.
Belki de hesaplamaların , formüllerin doğru , ancak buradaki  kayıklıkların toplamı + inear olmayan sistem faktörü birleşince böyle oluyor.

Edit : Ama yine de başka bir yerlerde hata olup olmadığını iyi araştır.  Sonra aleti kalibre edeceğim diye günlerce uğraştıktan sonra , hata başka yerde çıkarsa, kulaklarım çınlasın istemem :)

Kaanx

haklısınız hocam sanırm bende değerlerimi buna göre değiştirmeliyim mesela ben ortamda ki ozon değerini 150 ppb ile 500 ppb arasında tutmaya calısıyordum bunu 75 e 300 gibi değer aralıgıdna ceksem mantıklı olucak . Sizce ?


Klein

Ortamdaki ozon değeri hakkında hiç fikrim yok. ne desem boş. 
Önerim şu olur.  Eğer bu bir hobi projesiyse,  çok dert etmeye gerek yok.  üç aşağı beş yukarı  tutuyorsa, amacına ulaşmıştır. Ama ticari projeyse, ve kullanılacağı yerde doğruluk önemliyse, bu iş tahminle olmaz. Muhakkak kalibreli bir cihaz temin edip , referanslarınızı buna göre düzeltmeniz gerekir.

Kaanx

Ticari olucak hocam. Sorunda su dediğinizi gibi bir cihaza denk gelmedim dhaa önce o yuzden referans değerlerine göre gidiyoruz sürekli. Ozon değerlerini ölçen cihazlar ile ilgili fikriniz var mı ?

Klein


Kaanx

Teşekkürler hocam yardımlarınız için. :)