Birden fazla noktadan veri alma ve matematiksel işlemler..
  • Merhabalar.
    Kısaca projemden bahsedeyim;
    30cm lik bir probe vasıtasıyla toprak nemi ölçmek için iletkenler kullanacağım.

    /////
    1. int moistureSensor = 0;
    2. int moisture_val;


    3. void setup() {
    4. Serial.begin(9600);
    }

    5. void loop() {
    6. moisture_val = analogRead(moistureSensor); / 0 nolu analog pine ve GND'ye iki iletken bağlı.
    7. Serial.print(" ");
    8. Serial.println( moisture_val );


    9. delay(1000);
    }

    /////

    Şimdilik bu kodlarla iki iletken toprak içindeyken eletkrik akımını alıyorum.. 1023 üzerinden sn. başına okuma yaptırıyorum. Nem içeriğine göre artış gösteriyor tabi ki..


    - Asıl projede 30cm boyunda plastik bir boru kullanacağım. Boruyu toprağa sokarak nem tayini yapmayı düşünüyorum.
    Boru üzerinde her 6cm ye 1 iletken bilezik koymak suretiyle 7 bilezik kullanacağım.
    Seri monitörden almak istediğim değerler ise şu şekilde;

    ** bir bileziğin 120sn boyunca, her sn.de bir önceki değerlerle ortalamasını alması.. 120.snde 120 değerin ortalaması.
    ** kendim belirleyeceğim 3 bileziğin ayrı ayrı bulunan 120.sn sonundaki değerlerinin ortalaması.


    şu anki programda ekrana sn.de 1 veri olarak yansıyor. ama ben 7 bilezik için ayrı ayrı;


    1.bilezik.tsüre ort=xxx, 2.bilezik.tsüre ort=yyy, 3.bilezik.tsüre ort=zzz, 3ünün ort=xyz

    3.bilezik.tsüre ort=zzz, 4. bilezik.tsüre ort=aaa, 5.bilezik.tsüre ort=bbb, 3ünün ort=zab

    5.bilezik.tsüre ort=bbb, 6.bilezik.tsüre ort=ccc, 7.bilezik.tsüre ort=ddd, 3ünün ort=bcd


    şeklinde veri görmek istiyorum.



    "her bir bilezik arası 5cm bu arada..

    **Şuan 1 bilezik kullandığımı farz edin. Çünkü sanada analog 0 pinin kullanıyorum. geriye 6 pin kalıyor. toplam 6 pin var zaten.. onu da digital pinlerden birini analog olarak kullanıcam artık..


    Bu kodu yazıp hazır bana verin bana sadece bilezikleri takmak kalsın demiyorum, yanlış anlamayın:)

    Daha yeni başladım arduino'ya ve kod yazmaya.. Bu bölüme kafam basmadı, en azından nasıl bir yol izleyeceğimi,
    hangi konular üzerinde çalışmam gerektiğini de söyleseniz çok yardımınız dokunacak..
  • Analog pinler dijital olarak kullanılabilir ama dijital pinler analog olarak kullanılamıyor. Eğer illa 7 bilezik okuman gerekiyorsa başka bir Arduino modeli kullanman (Mega gibi) ya da Analog mux kullanman gerekebilir.

    Zaman işlemleri için de millis() fonksiyonunu kullanabilirsin.
    Ortalama işlemleri için de sonuçları 120'lik dizilerde tutabilirsin.
  • Kitabınızdan çalışıyorum zaten :) mills() üzerine yoğunlaşayım biraz o zaman.
    Yalnız mux olayını pek anlamadım.. Mux, dijital pini analoğa dönüştürücü müdür yoksa analog üzerinden çoğaltıcı mı ?
  • Ayrıca, mux bağlantıları ve kodları için bir örnek/referans gösterebilir misiniz? Mux'ı bağlayınca yazılacak kodda da değişiklik yapılması gerekiyor sanırım.. yoksa aynen analog pinden okuma yapar gibi mi yazıyoruz kodu ?

    değişken tanımlarken muxtan gelen analogu ne diye okutmamız lazım?
    int sensor7 = (extra analog'a gelen digital pinin numarası) mı ?
  • Coşkun Mux çıkışı 0-1 verir, ADC yaptırmaz. Ama çoklu dijital girişleri kontrol etmek için iyi bir yoldur. Yani bu proje için uygun olmayabilir.

    Hasan bence çözmen gereken asıl problemin o kadar datayı yönetecek işlemci kapasitesi... 120 saniye boyunca her saniyede bir, işlemci ADC yapacak, ADC çıkış verisini okuyacak, okuduğu veriyi yazacak, bir önceki veriyi okuyacak sonra son ikisinin ortalamasını alacak, ortalamanın sonucunu da bir sonraki ortalamada kullanmak için kaydedecek . Bu işlemlerin de 7 tanesini aynı anda yapacak?

  • Evet Ahmet Bey.. Ortalama değerler gerekiyor ama şöyle bir durum var; 120. sn'ye gelirken, değerlerin stabilitesi daha erken zamanlarda sağlanabiliyor. Mesela 20.sn'de de ben 120 değerin ortalamasını aldım. Eğer işlemci kapasitesi 120 okumaya yetmeyecekse 20.sndeki veriler ortalaması üzerinden ben işlem yaptırırım..

    Ayrıca yaptıracağım tek işlem ortalama aldırmak değil, daha kesin sonuç veren bir nem ölçme tekniğinin verilerini benim iletkenlerin değerleriyle kalibre etmek..

    Bu tekniğe gravimetrik yöntem deniliyor.

    Şöyle ki;

    0-10cm derinlikteki iletkenlik değerleri ( /1023); (5sn ölçüm yapalım)

    1. 600
    2. 603
    3. 602
    4. 600
    5. 602



    0-10cm 'deki gerçek nem değeri (gravimetrik yöntemle)

    % 36



    **Yukarıdaki 5 değerin ortalaması %36lık dilime denk gelecek..
    Ben başka bir ölçümde eğer yukarıdaki değerlerin ortalamasını alırsam cihaz bana %36 sayısını gösterecek..

    Tabi bunun gibi belki 100-150 tane gravimetrik ölçüm yapıp if, if else komutlarıyla % değerleri atayacağım..


    Bu kadar ayrıntılı ve uzun soluklu bir iş, çünkü akademik çalışmada kullanacağım bunu..

    Ziraat Mühendisiyim bu arada:)



    Analog pin olayını halletmek için de mux yapıyorsa böyle birşey alıp öğreneceğim artık başka çare yok.. Olmazsa da arduino mega ellerimden öper:)
  • Hasan Hocam,

    Anladım, doğru değer için 120 adet data beklemem gerekmiyor, 20. veride de 120.deki değeri almam mümkün diyorsunuz. Dolayısıyla 20 işlem yaptırsam da olur diyorsunuz.

    Problem, yaptıracağınız işlemlerin ne kadar süreceği değil, aynı anda yaptırdığınız işlemler... 120 saniyeyi 20 saniyeye düşürseniz de yine 7 tane aynı işlemi yapacaksınız. Şöyle bir çözüm geliştirebilirsiniz bunun için; her bileziğin işlemi 20 saniye sürer, sonraki bileziğin işlerimlerini önceki bilezik bittiğinde başlatırsınız. 140 saniyede 7 tanesinin de sonuçlarını alırsınız.

    Mux olayına gelince; bu projede sizin içinize yaramaz. 8 girişli bir mux'un 2 çıkışı vardır. 2^n=8 den 3 tane de seçme girişi vardır. Çıkışları 0-1 verirler, sizin işinize yaramaz.
  • Anladım Ahmet Bey, dediğiniz yöntem daha mantıklı. Tek tek okutup 140 sn sonunda bütün değerleri alsam daha sağlıklı olur sanırım.
    Extra pin işi için de mega alınacak artık..

    Çok teşekkür ederim verdiğiniz bilgiler için. Projem biter ve sağlıklı sonuç alırsam ayrıntılarıyla burda yayınlarım. Tekrar çok sağolun.
  • Rica ederim, iyi çalışmalar.
  • @Ahmet benim bahsettiğim analog mux'tu...
  • Coşkun Bey,

    http://www.robitshop.com/Mux-Shield,PR-605.html

    Robitshop'taki mux shield işimi görür mü peki ? Extra analog ve digital çıkıştan bahsediyor ama.. UNO'ya entegre edip extra analog çıkış alabilir miyim bu shield'la ?
  • Bunun üzerinde analog mux var sanırım. Ama fiyata bakılırsa Arduino Mega almak daha mantıklı gibi duruyor...

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Login with Facebook
Açık kaynak kültürü gereği, çözdüğünüz problemlerin çözümlerini paylaşmayı lütfen unutmayın.