10-23-2011 02:01 PM
Merhaba,
Merak ettiğim konu şu;
Saniye de 2kiloherteze kadar çıkabilecek bir kare dalgayı okumak istiyorum. Saniyede de 4 veri almak istiyorum. DAQ Asistantta "sample to read" ve "rate" hanelerine kaç girmem gerekir? Mantığı nedir?
Benim "rate" den anladığım, buraya yazdığım sayı kadar saniyede okuma gerçekleştiriliyor, ancak "sample to read" olayını tam anlayamadım, yardımcı olabilir misiniz?
Solved! Go to Solution.
10-23-2011 02:10 PM
Merhabalar,
Hız "Rate", Nyquist kriteri ile de bildiğimiz, topladığımız verinin içindeki anlamlı en yüksek frekanslı verinin en az iki katı olmalıdır. Genelde 5-10 katı olarak ya da elinizdeki kartın imkan verdiği ölçüde yüksek hızda toplamanızda sakınca yoktur.
Okunacak veri miktarı "Samples to Read", ise topladığınız verinin en az tam bir periyodunu içerecek uzunlukta olmalıdır. Bu da genelde en az 5-10 kata kadar olursa sakıncası olmaz.
Sorunuza gelince 2kHz lik bir kare dalgayı 5-10-20kHz ile örnekleyebilirsiniz. Saniyede 4 paket alacaksanız örnekleme hızınızın 1/4 ü miktarınca paket boyutu ayarlarsanız istediğiniz şekilde çalışacaktır.
Örnek: 10kHz'e 2.500 örnek
İyi çalışmalar.
10-23-2011 02:28 PM
Cevap için teşekkürler,
Yarın ilk iş olarak deneyeceğim. Bazen increase your buffer size tarzı hatalar verebiliyor.
Peki bunun yanına aynı anda voltaj girişi de okumak istersem, ona girdiğim rate-sampletoread değelerinin counter kanalımdakilerle etkileşimi nasıl olur?
ekteki gibi bir algoritma oluşturmak istesem 1. seçenekteki gibi hem counter hem analog input girişinin aynı loop ta olması mı iyi,
yoksa 2. seçenekteki gibi ayrı ayrı looplarda olması mı iyi?
Bir de contunious sample mı almalıyım, n sample mı, one sample for demand mi?
Bu seferlik son soru olarak da; rate/sample to read oranım 4 se; ve saniyede de 4 veri almak istiyorsam, wait until ms komutunu kullanıp 250ms girmem gerekir mi?
10-23-2011 02:32 PM
yanlış anlamadıysam,
sample to read e 1000 yazarsam, alet her bin veriyi aldıktan sonra bu 1000 verinin ortalaması olan bir değeri bize veriyor
10-23-2011 02:53 PM - edited 10-23-2011 03:02 PM
İlk sorduğunuz sorudan farklı bir noktada sormuşsunuz. Aşağıda açıklama yapıyorum ama ne kadar anlaşılır olur bilemem. Eğer sisteminizin detaylarını verirseniz ona göre cevaplamak daha döğru olacaktır. Kare dalga dediğiniz "encoder" falan mı ve sadece sinyal mi sayacak sınız? Gerilim değerinin frekansı nedir? Gerilim ve sayaç ilişkisi nedir? Sistem sürekli mi çalışacak yoksa anlık veri toplayıp duracak mı? Hangi donanımı kullanıyor sunuz?
---------------------------------------------------------------------------------------------------
Kare dalgayı sayıcı girişine bağlayıp sayacağınızı belirtmemiştiniz. Anlattığınıza bakarak kare dalgayı analog girişe bağlayıp incelemek istediğinizi düşünmüştüm. Öyle değil de amacınız saymaksa anlattıklarımın bu yapacağınızla hiç ilgisi olmadığını belirtmek isterim.
Önceki anlattığıma bağlı olarak devam edersek ve elinizdeki kartın çok işlevli veri toplama kartı "multi funtion DAQ" olduğunu düşünürsek, gerilim olarak okuyacağınız verinin frekansı kare dalgadan küçükse hiç sorun olmadan ikinci kanalı tanıtıp okuyabilirsiniz. İkisi de analog girişten okunacaksa etkileşim olmaz sadece iki boyutlu dizi olarak okuyor olacaksınız diyebilirim. Yalnız veri toplama hızınız kanal sayısına bağlı olarak bölünecektir. Yani iki kanldan topluyorsanız veri toplama hızınız yarıya düşer (multi function DAQ ise).
Kare dalgayı sayıcı girişi ile sayıyorsanız dediğim gibi veri toplama hızı ve örnek miktarı ile işiniz yok. Kare dalgayı sayıcı "counter" girişine bağlayınız. Kartı ayarlayıp çalıştırdığınızda kendisi sinyalleri saymaya başlayacaktır. siz bir döngü içerisinde istediğiniz aralıklarla sayıcının o anki değerini okuyabilirsiniz. Böyle bir durumda sayıcı ile gerilim değerlerini birbirinden ayrı zamanlarda okuyacaksanız ayrı döngülere koyabilirsiniz ama gerilimi ve sayacı aynı anda okuyacaksanız aynı döngüde kullanmanız daha iyi olacaktır.
Gerilim sabit ya da çok düşük hızda değişiyorsa döngüde tek değer alıp 250ms bekleme ekleyebilirsiniz. Yok 10kHz ile örnekleyecekseniz ve 2500 örnek alacaksanız o döngü karta bağlı olarak kendisi 250ms de bir dönecektir, ayrıca 250ms eklemenize gerek kalmaz.
Sistem siz istediğiniz sürece örnek almaya devam edecekse sürekli "continuous" çalıştırmalısınız. Eğer bir süre örnek alıp duracaksa ona göre sınırlı örnek alıp süresini ayarlamak gerekecektir.
---------------------------------------------------------------------------------------------------
Kısacası sisteminiz her ne ise çözüm de ona göre belirlenir.
10-23-2011 03:01 PM
Ben biraz koptum az önce,
Eğer analog inputtan veri alıp tone measurementle onun frekansına geçiş yapıyorsam sizin anlattıklarınızı uygulamam gerekiyor. Programımın birinde öyle yapıyorum. Ve cevabınız çok faydalı oldu.
Diğer bir programımda frekansı counter girişinden okutuyorum. O zaman rate le falan işim yok.
Benim sistemimde 3-5 tane farklı kart var. Ben programımı en hızlı nasıl çalıştırabilirim onun için uğraşıyorumda, sorunun bu sample to read de falan olduğunu düşünüyorum. Ben aynı anda 30 dan fazla(~5 counter + ~25 analog) veri alıyorum. Bazı veriler 5-6 sn ye kadar geç geliyor. Bunları çözersem benden iyisi yok:)
10-23-2011 03:11 PM
Hehee
Cevabı acil yazdım geç saat belki uyumaya gidersiniz diye ondan sonra da 10 kere düzelttim
Kare dalga saymayı elbetteki sayıcı "counter" ile yapınız. Analog verileri ise birbirleri ile ilişkilerine göre kartlara ayırıp hızlarını gerekliliklerine göre belirleyiniz. İlişkili olan verileri de aynı döngüde okumak iyi olacaktır.
Hız ve örnek miktarı ise dediğim gibi sinyalin en yüksek frekansına ve bir tam peryoduna göre belirlenir. Genelde saniyede 2 paket okuyacak şekilde ayarlamak çoğu işlem için yeterli olur.
Burada sisteminizin tümünü çözmemiz pek mümkün olmaz ve açıklayıcı da olmaz. Sisteminizi küçük parçalara ayırıp her birini ayrı ayrı ele alın ve daha sonra bir araya getirin. Küçük parçalarda takıldığınız yer olursa cevaplamak daha kolay olur.
10-24-2011 01:32 AM
Counter kanalından frekans okutmak en doğrusu ancak sensör ile veri toplama arasında uzun mesafe olduğundan kare dalga benim sisteme gelene kadar sinüs oluyor:) ve üzerine epeyce de gürültü aldıktan sonra küçülüyor. bu nedenle analog inputtan alıp tone measurementten okutmak bazen çözüm olabiliyor
10-31-2011 02:09 PM
Kare dalgayı sayıcı kanalından bağlayıp okutmak istediğimde de sample to read ve rate değerlerini girmem gerekiyor.
11-21-2011 04:58 PM
Merhabalar;
Konu biraz fazla yoğun olduğu için sondan ve kolay olan sorudan dalıyorum...
Counter ölçümü uygulamalarında, çoğu durum için 1 Sample On Demand kullanılması yeterli olmaktadır. Bu seçenek seçildiğinde zaten Sample Rate ve Samples to Read seçenekleri aktif olmayacağı için, örnekleme frekansı bir sorun oluşturmayacaktır. Döngünüzün her dönüşünde, o anki Counter değeri programa geri dönecektir.
Kolaylıklar dilerim.
Candan