Picproje Elektronik Sitesi

DİJİTAL & ANALOG ELEKTRONİK => Temel Elektrik/Elektronik => Konuyu başlatan: gumush - 16 Kasım 2015, 17:17:06

Başlık: Eszamanli veri alimi ?
Gönderen: gumush - 16 Kasım 2015, 17:17:06
Merhaba ,

i2c ile baglandigim birden cok sensorden(IMU ve MEMS Mikrofon) gelen verileri toplamak istiyorum. Ancak gelen verilerin olabildigince senkronize olmasini istiyorum. Toplamda 16-24 gibi sensor sayilarindan bu bilgileri almak istiyorum.

Alternatifler



Başlık: Ynt: Eszamanli veri alimi ?
Gönderen: OG - 16 Kasım 2015, 17:26:59
Hocam "gelen verilerin olabildigince senkronize olmasini istiyorum" dan kasıt olabildiğince hızlı demek olsa gerek. Çünkü I2C de aynı anda 1 unite ile iletişim mümkün.

Ayrıca I2C unitelerin data, clock yollarını çok fazla uzatmak mümkün değil.

Alınacak data boyutu ne kadardır bilmiyorum ama her üniteye 1 MCU ve RS485 uzaktan daha hızlı iletişim.
Konu sanki şuna benziyor, https://www.picproje.org/index.php/topic,61976.0.html (https://www.picproje.org/index.php/topic,61976.0.html)
Başlık: Ynt: Eszamanli veri alimi ?
Gönderen: gumush - 16 Kasım 2015, 17:54:05
Yanit icin tesekkur ederim,  aslinda sorun su her sensorden gelen verinin olabildigince ayni ana ait olmasi. Bu durumda temel ozellik hizli okuyabilmek oluyor.

RS485 ikinci kez karsima cikiyor , bu sefer gidip biraz okuyayim. ( Unitelerin vucut uzerinde tasinmasi nedeniyle olabildigince az komponent ve kucuk boyutlu olmasi onemli )

Aslinda bu birazda multitasking gibi bir istek. Bir sensorden analog bir veri geldigini bunun 2000hz'de orneklendigini dusunelim. Bunu yaparken farkli bir sensorden yine ayni sekilde 2000hz'lik bir veriyi nasil okuruz ?

Başlık: Ynt: Eszamanli veri alimi ?
Gönderen: OG - 16 Kasım 2015, 18:02:11
2000Hz de örneklenen veri 0,0005sn (500usn) de bir örneklenen bir veri şeklinde anladım. Bu verinin boyutu nedir, yani iletilecek verinin boyutu nedir?
Başlık: Ynt: Eszamanli veri alimi ?
Gönderen: gumush - 16 Kasım 2015, 18:24:58
Sensor Sayisi x 16bit x 6   ,  bu durumda 16 yada 24 X 16bit X 6
Başlık: Ynt: Eszamanli veri alimi ?
Gönderen: OG - 16 Kasım 2015, 18:30:07
Hocam biraz açmanız gerek, benim anlayışımın kıtlığından.

Ayrıca bu sensorler aynı body uzerindemidir, farklı mı?
Başlık: Ynt: Eszamanli veri alimi ?
Gönderen: Salih - 16 Kasım 2015, 18:32:57
Eğer mümkünse haberleşmesiz direk analog değer olarak ölçün.
Hızlı ölçmek için daha uygun olur.
Başlık: Ynt: Eszamanli veri alimi ?
Gönderen: gumush - 16 Kasım 2015, 18:59:25
Tamamdir , biraz daha detayli anlatayim. Ilk asamada 16 adet IMU'nun verilerini es zamanli olarak almak , unitelerin senk. saglamak icin unitelere bir mic. eklemeyi dusunuyorum. Boylece ses kullanarak uniteleri senkronize edebilecegim. Ancak bunun ne kadar basarili olabilecegini bilmiyorum. Bu nedenle simdilik sadece tasari asamasinda.
Sensorlerin tamami bir kisinin uzerinde olacak , amac farkli noktalara ait verilerin alinmasi.  IMU 'dan gelecek bilgilerin ornekleme hizlari farkli ama 400hz maksimum i2c degeri. Bu durumda magnetometer , accelerometer ve gyroscope'dan gelen bilgileri her eksen icin 16bit olarak alabilirz. Bu durumda 9 x 16bit veri oluyor. Ama almak istedigimiz tek veri bu degil , bazi noktalarda basinc ,bazi noktalarda loadcell'den gelen verileri , bazi noktalarda direnc degisiklikleri ve bazi noktalarda yine i2c ile farkli sensorlerden gelen bilgileri bir noktada toplamak.

Iki temel engel var 
Bunlardan biri unitelerin zamanlarini eslestirmek boylece veriler olabildigince ayni zamana ait olacak.( ses ile senkronize etmek , kablosuz olarak senkronize etmek alternatiflerim arasinda ) 
Bilgilerin aktarilmasi icin en istenen yol kablosuz aktarim olmaz ise vucut uzerinde bir noktaya kablo ile ileterek bu noktadan kablosuz olarak bilgisayara aktarmak , oda olmaz ise vucut uzerinde bir yere verileri sonra islemek uzere kaydetmek.

Başlık: Ynt: Eszamanli veri alimi ?
Gönderen: OG - 16 Kasım 2015, 19:14:36
Sensorler hakkında bilgim olmadığımdan varsayımla gidiyorum,

Sensorler +- içeren 2 hat ile beslenir, her sensorun bir ID si vardır.
Sensorlere senkron olcum için 1 adet IRQ uzanır, hat pullup veya pulldown dır. IRQ hattı takip edilir, LOW (veya H) olduğu anda ölçümler yapılır. Ölçümü başlatma yetkisi herhangi bir sensore verilebilir. O sensor hattı ceker ve bırakır, bıraktığı gibi tüm sensorler ölçme işlemlerini başlatılır. Ölçme bitince ilk ID ye sahip sensor bilgileri gönderir, ilk ID bitirince ikincisi ... sona kadar devam.

Bunları alıp loglayan veya RF ile veya kablo ile dış dünyaya ileten bir unite de yeterli hızda iletir. Mesela 2Mbit hız için 1 byte süresi 5usn dir, 2000Hz (500us) refresh içinde 100 byte gidebilir.
Gibi.

2Mbit hız hem RS485 hem RF üniteler ile sağlanabilir.
Başlık: Ynt: Eszamanli veri alimi ?
Gönderen: Ersin - 16 Kasım 2015, 19:35:19
illa i2c olma şartı yoksa spi kullanabilirsiniz, google da   spi daisy chain   diye aratın.Hem spi da hızlar i2c ye göre daha yuksek olabiliyor.
Başlık: Ynt: Eszamanli veri alimi ?
Gönderen: gumush - 16 Kasım 2015, 20:23:42
i2c olma sarti yok bu nedenle dediginiz gibi spi'da kullanilabilir. Ancak her sensorde ayri mcu olmayacak ise o zaman ana unitede select pini icin sorun olabilir diye dusunmustum.

Gordugum kadariyla sensor uzerinde IRQ yok. Ancak her node icin bir MCU olacaksa IRQ yontemi kullanilabilir. Eger fiziksel baglanti kullanmak durumunda kalirsam bunu kullanabilirim.

Başlık: Ynt: Eszamanli veri alimi ?
Gönderen: tekosis - 17 Kasım 2015, 00:53:27
Her sensore bir mcu bağlanır. Ana mcu hatta oku sinyalini yollar. Tüm mcu lar o anda kendilerine ait sensörün değerlerini okur, hafızasına alır. Bu arada ana mcu önceden belirlenen okuma beklemesi sonunda hatta bilgilerinizi yollayın der, her mcu daha önceden belirlenmiş protokole bağlı olarak kendi bilgilerin kısa surede hatta basar... pardon zaten bahsedilmiş.
Başlık: Ynt: Eszamanli veri alimi ?
Gönderen: sadogan - 17 Kasım 2015, 01:29:45
Canbus da cüzüm olabilir.
Başlık: Ynt: Eszamanli veri alimi ?
Gönderen: Karamel - 17 Kasım 2015, 01:41:27
Gumus hocam. Microcontroller birsey yaparken peripheral unitleri sayesinde baska isler yapabiliyor.

Mesela usart unit i olan bir microcontroller. Islerini yaparken. Bilgi geliyor. Bilgi tamamen alininca interrupt olusuyor. Bunlar microcontrollerin kapaaitesine gore degisiklik gosterebiliyor. 30 un uzerinde interrupt sekli olan microcontrollerlar var(daha fazlada vardir)

Microcontrollerda dma unit denen bir birim varsa o zaman microcontroller tamamen baska isler ile ugrasirken. Peripheral units dma sayesinde kendi kendine verileri alip gonderebiliryor.

Message larinizdan benim aklimda hicbirsey olusmadi. Anladigim kadarila gelen yanitlarda sizin istekelrinizi karsilamadi.

Bu biraz seye benzedi. Ben 4km yolu gitmek istiyorum diyorsunuz. Ucakla git diye yanit geliyor.

Burada kimse suclu degil. Yapilmasi gereken seyi daha detaylica anlatirsaniz. Hocalarim cok daha iyi bir sekilde size yardimci olabilirler.
Başlık: Ynt: Eszamanli veri alimi ?
Gönderen: iyildirim - 17 Kasım 2015, 03:23:50
Bahsedilen sensörler muhtelemelen digital. Kompakt birşey ise de  MPU 9xxx serisi gibi birşey.   
Eğer zaman senkronizasyonu mikrosaniyeler cinsinden isteniyorsa, bunu  sağlamak gerçekten zor.
Sensöre oku dediğiniz zaman, bir süre önce ölçülmüş, bufferındaki hazırda duran veriyi gönderir. Yani sensör bant genişliğinin altına inmek zor.
Ancak veri hazır kesmesi kullanıp, oku dendiği ana göre ne kadar + - offset süresi ile okunduğu bilinebilir.

Bu yetiyorsa 9DOF * 16 bit * 24 sensör, denildiği gibi saniyede 1000 kere okunacaksa 3.5Mbit gibi bir bant genişliği çıkar. Ki bu Raw veri. Protokol vs. fazlalıkları dahil değil.

Bunu bir mcu ya aktarmak sorun olmasa bile PC ye aktarmak da sorun.
Ya bu değerler makul mesela 2Mbit seviyelerine çekilmeli. Yani daha düşük tazeleme hızları kullanılmalı.

Yada aktarım için makul bir yol bulunmalı.
Kablosuz tercihi için ucuz ESP modüller olabilirdi ama bu hızlara yetişemez. NRF modüller de yeterli olmaz.

@Ersin hocamın söylediği şekilde daisy chain bağlantı ile (ki paralel SPI hatlarıda olabilir). Ve sensör SPI olsa bile bu tip bağlantı desteklemeyeceğinden ayrıca bir mcu kullanarak (Ki sensörün SPI olması zorunluluğunu da kaldırır.) bilgiyi bir noktada toplayıp yüksek hızlı bir bağlantı ile (Prof Wi-fi modül veya  USB2 hi-sp destekli UART-TTL. mesela FT2232x) PC ye gönderilmesi bana mantıklı yol gibi geliyor.

Başlık: Ynt: Eszamanli veri alimi ?
Gönderen: gumush - 17 Kasım 2015, 07:54:24
Evet sensorler digital , "Sensöre oku dediğiniz zaman, bir süre önce ölçülmüş, bufferındaki hazırda duran veriyi gönderir. " Bu cok kotuymus , bu durumda buffer ne kadar ise o kadar zaman onceki veriyi alacagiz. Tek iyi yani ayni sensor kullanilirsa bu gecikme hepsi icin gecerli olacak. Ama farkli sensorler eklendiginde ( ornegin analog bir sensor ) o zaman verilerin zamanlari  arasinda fark olacak.

"Ancak veri hazır kesmesi kullanıp" , kullanmayi dusundugum sensorde bu ozellik varmi bakayim.

"Burada kimse suclu değil. Yapilmasi gereken seyi daha detaylica anlatirsaniz. " Haklisiniz , bende donup tekrar baktigimda bazen yazdiklarimi anlayamayabiliyorum. Bu icinde oldugum konuya disaridan bakarak yazmam gereken bir durum aksi halde herkesin ayni konuda calistigi varsayimi ile yazilmis gibi oluyor.

Aslinda on calisma icin yeterince fikir aldim denilebilir. Bundan sonraki asamada bir deneme yapmam gerek bunu tamamladiktan sonra tekrar uzerinde konusulabilir bir hal alacaktir.

Başlık: Ynt: Eszamanli veri alimi ?
Gönderen: yas - 17 Kasım 2015, 09:24:17
Kablolu bağlantı kullanacağını varsayarak spi yöntem için bir öneride bulunmak isterim. Sensörlerden veri istemenin aynı kod ile yapıldığını varsayarsak, hepsi tekbir hat üzerinden seçildikten sonra okuma işlemi başlatılır. Her bir sensörün msio pinideki veri ayrı hatlar üzerinden paralel olarak bir porta girilir ve MCU ya veri alınır. Tabi bu iş için standart spi kütüphaneleri işe yaramayacaktır bu işe özel rutin yada kütüphane oluşturulması gerekecektir.