ivme sensörü ile adc ölçümü

Başlatan vulture, 18 Haziran 2017, 18:21:56

vulture

analog ivme sensörünün bir bacağından 1 sn içinde oluşan dalgaları adc ile nasıl ölçebilirim? yardımcı olur musunuz?

ziyaretci

Şimdi nereden anlatmaya başlayalım?

  - İstenilen çözünürlük tespit edilir.
  - ADC çevrimin yapılacağı entegre araştırması yapılır.
  - PIC ile yapılacaksa gerekli konfigürasyonlar yapılır.
  - Entegre ile yapılacaksa iletişim protokolü ayarları yapılır.
  - Okunan verilerin kayıt edileceği bellek ayarlanır. 1 saniye boyunca bayağı veri ölçüleceğinden(donanıma göre değişir) harici ram bellek kullanmanız gerekebilir. Veya direkt olarak bilgisayara göndermek isteyebilirsiniz.
  - Bilgisayara gönderilip işlenecekse yine sizin ölçmek istediğiniz verilerin istediğiniz çözünürlüğü sekteye uğratmamasına göre iletişim protokolü ve hızı belirlemeniz lazım.
  - Gelen veya okunan veriler işlenir.

   Tahmin ediyorum ki yardım etmek isteyen picproje.org ailesi şunları merak ediyordur?

  ** Ne kadar kod bilgisi var?
  ** Ne kadar donanım bilgisi var?
  ** Hiç ADC uygulaması yapmış mı?
  ** Yukarıdakilerin hepsi var da örnek kod mu istiyor?
  ** Yoksa bizim mi yapmamızı bekliyor?
  ** İlgili sensörü okumaya çalışmışta okuyamamış mı?
 
   Lütfen yanlış anlamayın, ucu açık bir istekte benim bunlar kafama takılıyor. Çünkü bir başlangıç notası bulmak istiyorum.

vulture

@erkantr67 daha açık yazayım isterseniz. Amacım pic ve adxl335 sensörüyle yapılacak bir elektronik devre sayesinde devrenin konulduğu yerde kaç defa vurulduğunu hesaplamak. mesela devreyi bir kapıya monte ettiniz kapıya kaç defa tıkladıysanız o kadar led yansın en basitinden. önce her tıklanmada oluşan dalga sayısını 1sn içerisinde ölçmeye çalıştım fakat olmadı.

Ayrıca öncellikle verdiğiniz cevap için teşekkür ederim. Merak ettiğiniz kısımlarla ilgili olarak da pic kodlamada kendimi geliştirmek istiyorum. İyi olmasa da donanım bilgisine sahibim. Adc uygulamaları yaptım. örnek kod var mıdır ve projenin algoritması size göre nasıldır bunlar üzerinden yardımcı olursanız sevinirim.

ziyaretci

#3
Öncelikle ivme sensörünün çalışma prensibini anlatan Barış Samancı'nın paylaşımını inceleyelim. Gerçekten güzel bir anlatım. Daha önce bu sensör ile ilgili çalışma yapmamama rağmen kafamda bir şeyler şekillendi.

http://www.barissamanci.net/Makale/26/accelerometer-gyroscope-imu-nedir/

Bu da ADLX335 datasheet.(https://www.sparkfun.com/datasheets/Components/SMD/adxl335.pdf)

ADLX335 için datasheette 3 V besleme geriliminde ortalama 1.5V g zero değeri ölçülmüş. Barış Samancı'nın örneğindeki 3.3 V beslemesini VDD/2 olarak belirtmişti. O örnek üzerinden gidebiliriz. İlgili sayfadaki bahsedilen hassasiyet değeri ADLX335 datasheet dosyasındaki grafiklerde verilmiş(sayfa 8). ADLX335 için yaklaşık olarak 0,303V/g. İlgili bağlantıdan sensörün çalışma prensibini anladıktan sonra sizin sensörü kullanmak istediğiniz alana yönelik algoritmaya geçelim.




Sizin kullanmak istediğiniz alana yönelik ilgili sensörden gelen tek bir eksen bilgisi işinizi görecektir. Tabi ilgili eksen, net sonuçlar için kuvvet uygulanan doğrultuda seçilmelidir.

Sensörün stabil halde 510 dijital bilgisini verdiğini varsayalım. Bizim bir de stabil durumdaki salınımlar için +-10 toleransımız olsun. Gelen sinyal 500'den küçük veya 520'den büyük olduğunda sayacımız hazır halde olsun. Her seferinde stabil bölgeden geçerken değişkeni sadece bir arttırsın. Öncelikle bu algoritma ile tek bir vuruşun frekansını tespit edelim. Gelen sinyalin bilgisi stabil durumdan çıkar çıkmaz 2 saniyelik timer'ı aktif edin. Timer sonunda ilgili salınım sayısını ekrana basın.  Diyelim ki kapıya tek tıklamada ölçülen değer, stabil hale gelinceye kadar 1000 defa stabil noktasından geçsin. Yani 1000/2=500Hz,  1/500Hz = 2ms periyot(1 alternans 1ms).

Vuruşun frekansını tespit ettikten sonra sıra geliyor timer ayarına bir alternansın tepe noktası 0.5ms. Yani biz 0.5ms'lik timer kurarsak ve her kesme sonunda ölçülen sinyalin değerinin bizim stabil alanda olup olmadığını kontrol edersek. Otomatik olarak her tıklamada herhangi bir değişkene bilgi yükleyebiliriz.

1) Vuruşun frekansı tespit edilir.
2) Bulunan frekans/4 değerince timer birimi ayarlanır.
3) Anlık(döngüsel) olarak ölçülen sinyal stabil alandan çıkar çıkmaz timer birimi başlatılır.
4) Her timer kesmesinde ölçülen değerin stabil alanda olup olmadığı kontrol edilir.
5) Eğer stabil alanda ise timer birimi yeniden başlatmak üzere ayarlanarak durdurulur. Tıklamayı algılama değişkeni bir arttırılır.
6) Eğer stabil alanda değil ise 4 numaralı maddeden devam edilir.

20MHz ile çalışan bir PIC ile bu algoritmayı deneyin, duruma göre 40 veya 48MHz'de de deneyebilirsiniz. Aklıma böyle bir şey geldi umarım gözden bir şey kaçırmamışımdır.
-----------
Düzenleme:
Stabil alandan çıkarken ilk timer değeri 0.5ms sonraki timer değerleri 1ms olacak. Nedeni ise ilk alternansın tepe değerine ulaşmak 0.5ms sürecek eğer sonraki timer 'ı da 0.5 ms olarak ayarlarsak, stabil alanda kıyaslama yapmış olacağız. Bu da yanlış sonuç verecek. İlk 0.5 ms ayarından sonra 1'er ms timer kurarsak tepeden tepeye değerleri kontrol etmiş olacağız.

vulture

@erkantr67 ilginiz için çok teşekkür ederim. Bu bilgileri denedikten sonra size geri dönüş yapacağım mutlaka. Saygılarımla..

berat23

aslında bu tip hareket algılama uygulamaları bir örüntü tanıma problemi. meseleye algılanacak durumu tanımaktan başlamak lazım, yoksa adc accelerometer kısmı kolay, 1khz ile ivmeyi örnekle, sonra hareketi tanı şeklinde bakılabilir konuya.

hareketi anlamlandırmak asıl mesele. diyelim kapıdaki ivmeden kapanmayı algılayacaksınız. bunu basitçe ivme bir süre bir eşiğin üzerindeyse algıla gibi yaparsanız kapıya biri vurduğunda da kapanma algılarsınız. burada öğrenebilen ve tanıyabilen bir yapı kullanmalısınız ki bu durum birkaç mesajda anlatılabilinecek bir durum değil.

sifirzero

konu dışı biraz ama bu sensörleri nasıl yapıyorlar bizde kendimiz. yapamazmıyız
sifirzero.blogspot.com [email]sifirrzero@gmail.com[/email] iman hem nurdur hem kuvvettir

ghistmanzero

Alıntı yapılan: serkancetin - 02 Kasım 2017, 21:25:33
konu dışı biraz ama bu sensörleri nasıl yapıyorlar bizde kendimiz. yapamazmıyız
https://www.youtube.com/watch?v=i2U49usFo10

bu kanal benım favorım. herşeyi çok yalın şekilde anlatıyor. çalışma prensibini de çok iyi anlatıyor ama bence türkiyede bu tür chipleri yapmak o kadar kolay değil.

LukeSkywalker

Bence mikrofon kullanmak daha mantikli bu is icin.

yesilu

piezo kullanılır, kapıya yapıştırılarak... (hiç kullanmadım ama ivme sensörünün kapının vibrasyonunu algılayabileceğini zannetmem)

erpay

İvme sensörü bu iş için kullanılır ama yazılım kısmı biraz yorabilir.