Gyroscope ile ilk uygulama

Başlatan barisertekin, 01 Ağustos 2011, 23:06:44

barisertekin

Merhaba,
3 Eksen bir Gyroscope alıp bundan okuduğum verilere göre herhangi birşey yapmak istiyorum.
Amaç : Gyroscope kullanımını öğrenmek, tecrübe etmek.

  • Basit olarak ne tarz bir uygulama yapabilirim.
  • Bu iş için satın alabileceğim uygun bir gyroscope tavsiye edebilir misiniz?
Bugün Karaköy'de kaç yere sorduysam yok dediler. İnternet üzerinden sipariş vereceğim sanırım.

muhittin_kaplan

http://www.sureelectronics.net/
den almıştım tek eksenli analog çıkışlı
yanlız ivmeölçer ile gyroyu birbirine karıştırmayınız. ayrıca RC modellerde kullanılan HeadLock Gyro ile Bildiğimiz Gyro da biraz farklılık gösterir çalışma açısından

barisertekin

Ben sıradan başladım önce gyro ile basit bir uygulama yapmam gerekiyor.
Sonra Accelerometer ile yapıp sonra ikisini birleştiricem.
Dediğim gibi amaç öğrenmek. Belirli bir sistemde kullanmayacağım.
Hepsini öğrendikten sonra 9 DOF bir sistem oluşturmak istiyorum.
Step by step.

iyildirim

http://www.sparkfun.com/search/results?term=GYRO&what=tutorials

"En üstte gelen acc. &  gyro buying guide"  Gyro ve acc seçme konusunda sie bir fikir verebilir.

Benim genel tercihim digital olanlardan yana..

Analog olanlar da iyi. Ancak her ne kadar çıkış voltajları besleme ile oranlı olmasalar da, ADC ile okurken sizin AVss veya Vref geriliminizle oranlı oluyorlar.
Bir de kaliteli digital acc ve gyrolar kendi içlerinde 16bite kadar bir çözünürlüğe kadar çıkabiliyorlar. Hiçbir pic'de hatta genelleştirirsek  mikrodenetleyicide bu çözünürlükte ADC yok.

Bunun dışında, external ne kadar elemana ihtiyaç duydukları, bant genişlikleri, besleme ve çıkış voltajları (ki işlemcinizle uyumlu olmazsa ikinci bir regülator ve/veya level shifter gibi şeylere ihtiyacınız olabilir. ) ve tabii ki kaç G veya kaç derece/saniye gibi çalışma aralıkları na dikkat edilmeli.

Birde digital olanlar için kullanılan protokol ve hızı önemli. Hepsi I2C veya SPI çalışıyor ama hızı düşük olanlar da var. Örneğin 100KHz I2C çalışan modülle 400KHz lik olana göre okumak için  4kat fazla zaman kaybediliyor. Bu konuda benim tercihim 1MHz+ SPI çalışanlar.

Birde çalışma aralığı konfigüre edilebilenler var. Eğer tam olarak +-1G veya 300derece/sn gibisinden çalışma aralığı belirlemedi iseniz, konfügüre edilebilen modellerle başlamanız daha iyi.

Unutmadan, eğer bunları chip olarak almayı düşünüyorsanız kılıflarına da dikkat edin.  Çok küçükler. Basit bir pcb yapmak bile sizi dert sahibi yapabilir.  Tavsiyem eğer özel bir pcb tasarlamıyorsanız, acc ve gyro'yu breakout modül şeklinde almanız.

Sizin de tecrübe ettiğiniz gibi maalesef TR'de bir mağazaya gidip bunları satın alma şansı yok.
Sparkfun gibi yerlerden alabilirsiniz. Tr'de Sparkfun'ın temsilcisi robit de var. Ancak fiyatlara dikkat edin.

Kargo ücreti ve iki ayda bir, senede max 5 kere gibi şeylerden dolayıda yurtdışı alışverişlerinizde tüm malzemeleriniz belirleyip toplu olarak almaya çalışın.

barisertekin

Verdiğiniz linkte breakout modül olarak 2 adet 3 axis gyroscope var.
http://www.sparkfun.com/categories/183
Ayrıca çok pahalıymış. 50$

Şimdi ben gyro'yu bir düzeneğe monte edip. 4 Köşesine lamba koyacağım ve eğime göre parlaklıklarını değiştireceğim.
Bunu yapmama yarayacak ve daha sonra accelerometer aldığımda onunla birlikte de kullanabileceğim bir gyro gerekiyor.
Linkteki 2 üründe bu işi görür mü? Ve daha ucuzunu bulabilir miyim?

iyildirim

En iyilerden birini seçip çok da pahalıymış denmez. 

Seçtiklerinin her ikiside digital ve kaliteli gyrolar.  ITG3200 kullandım. Gayet iyi. L3G4200 yeni bir ürün. Yakın zamana kadar piyasada bulunmuyordu.

Eğer daha ucuz birşeyler arıyorsanız, analog gyrolara da bakabilirsiniz. Birde hem acc. hemde Gyro olarak çalışan modüller vardı. Yanılmıyorsam ST'nin ve fiyatıda ITG seviyelerinde idi.


Gyro yu bir düzeneğe monte edip 4 köşede ki lamba parlaklığı konusuna gelince.
Bunu bir Gyro ile yapacaksan;
Gyrolar anlık açısal dönüş hızı bilgisini verir. Yani statik durumda bu düzenek 45 derece eğik de olsa hiç bir çıkış alamazsın. Çıkış sadece hareket anında olur.  Bunun için düzenek yer düzlemine paralel iken eksen açılarını sıfırlayıp, sonrasında gyro dan okuduğun sinyalleri sürekli olarak işleyip, 5 ms içinde 15 derece sağa yattım, o halde açısal konumum şu olmalı gibisinden hesap yapıp açısal konumunu sürekli güncellemen gerekli.

Bahsettiğin şeyi bir acc. ile yaptığında da;
Acc. ler hızlanma sırasında ki ivmenin yanısıra doğal olarak yerçekimi ivmesini ölçerler. Yani statik durumda bile yer düzlemine olan açınızı hesaplamak mümkün olur. Düzeneğiniz sabit iken yer ile 45 derece açı yaptığında z ekseninde ve x veya y eksenlerinde sabit 0.7G okursunuz.

Eğer düzeneğiniz sağa-sola, öne-arkaya, aşağı-yukarı hareket etmeyip sadece açısal konum değişikliği yapıyorsa, bu durumda statik durumda bile sadece acc. den okuduğunuz veriyi, örneğin z ve x eksenlerini  arctan2 gibi bir fonkiyondan geçirip direk olarak yer düzlemine olan açınızı hesaplamak mümkün.

Ancak asıl sorunla ileride karşılaşacaksınız. Düzeneğin hem sağa-sola ivmelenerek hareket ettiği, hem de açısal dönmelerin olduğu durumda. Ki buda hem gyro hemde acc.yi birlikte kullanarak çözülecek.

barisertekin

Cevabınız için çok teşekkür ederim. Bir çok şeyi daha iyi idrak etmemi sağladı.

Yani bu parlaklık uygulamasını öylesine ortaya attım. Aslında ilk sorumda gyro ile nasıl bir uygulama yapabilirim diye sormuştum.
Parlaklık accelerometer'e ihtiyaç duyuyorsa onu daha sonra yaparım.
Sırayla öğrenmeye çalıştığımı anlıyorsunuz.  Bunun için bir yol gösterebilirsiniz belki.

Önce gyro ile başla veya önce accelerometer al. Sonra gyro alırsın ve şu uygulama ile başla gibi.
Şu an bu konu üzerinde pek vizyon sahibi olmadığım için nereden başlayacağımı bilemiyorum.

iyildirim

Daha önce de söylediğim gibi önce tam olarak amacınızı belirleyin.
Eğer diğer konularda da bahsettiğiniz gibi bir quadro yapmak istiyorsanız ve bütçe gibi şeylerde önemli ise öncelikle; 

acc. gyro, magnetometre gibi kullanmayı düşündüğünüz tüm parçaları, hatta işlemcinizi vs. belirleyin. Bu sadece kargo ücretini teke düşürmek değil genel uyumluğu sağlamak anlamında da önemli.

Kullanacağınız motorlar, bunları süren ESC ler, bu ESC lerin PWM veya I2C çalıştığı,
Kullanacağınız RC verici-alıcı, nasıl birşeydir. Standartmı dır?.  Alıcının çıkışlarının ne olduğu (ki neredeyse hepsi PWM)  Ayrıca önceki mesajlarınız da kendim yapabilirmiyim gibi şeylerde hatırlıyorum.
PWM girişlerini nasıl okuyacağınız, ESC ler PWM ile sürülüyorsa PWM'i nasıl üreteceğiniz, yapılacak bir sürü hesap kitap işinin yanısıra PWM üretmek için işlemcinin PWM modülü olup olmadığı gibi şeylere göre işlemcinizi ve diğer acc. gyro ESC vs. yi belirleyin.

Öncelikle bütün bunları gözönüne alıp uygun bir işlemci seçmelisiniz.
En az 4 farklı duty de PWM üretebilen bir PWM modülü,
4kanal dan alıcıdan gelen sinyalin PWM uzunluklarını okumak için 4 kanal IC modülü,
Kullanacağınız Gyro, acc. nin analog olup olmadığına göre (ki her ikisininde analog olduğu durumda en az 6kanal)  + voltaj vs. okumaları için extra kanalı olan ADC modülü.

Digital gyro ve acc. için protokole de bağlı olmak şartı ile SPI ve/veya I2C modülleri
Debug vs. amaçlı UART modülü


Yok adım adım öğreneyim derseniz de ilk olarak bir ucuz gyro veya acc kullanarak bir servolu düzenek yapabilirsiniz. Amaç düzeneği hangi açıda tutarsam tutayım servo kolunun dikey kalmasını sağlamak gibi birşey olabilir. Bunu tek veya birden fazla eksen için de yapabilirsiniz .  Yine bu durumda da işlemci gyro, acc. uyumluluğuna dikkat etmelisiniz.

Daha ilerisi içinde acc. ve gyro kullanarak yaptığınız kartı açısal veya eksenel hızlarıda işin içerisine katıp konumu algılama, yani 10cm sola gittim açıda X ekseninde 5, Y ekseninde 15 derece oldu gibi şeylerle uğraşabilirsiniz. yine bu durumda karta ve birbirine kaskat bağlı iki servoyu kontrol ederek servolara bağlı düzlemi yere paralel tutabilirseniz, quadro nuzda büyük ölçüde hazır demektir.

Eğer yanlış hatırlamıyorsam ST'nin LPR5XX, LY5XX gibi analog gyroları vardı. Fiyatları daha makuldü. 7-8USD gibi. Yine ST'nin LIS302 gibi bir kodu olan acc. si makul fiyatlı idi. Analog Device'ın da ucuz gyro ve acc. leri vardı.


barisertekin

#8
Sonuca yaklaşıyoruz :) Seninde ikinci bölümde belirttiğin gibi quadro ile alakası yok.

O zaman şöyle bir uygulama için uygun işlemci ve gyro soruyum;
PIC 16F268A kullanmaktayım. Bu işlemci ile servo sürebilirim zaten. Simülasyonda da sürmüştüm. Sorun yok o zmn.

Ben rf ile kendi yaptığım kumandadan yine kendi yaptığım ana kontrol devresine komut verebiliyorum.
Gyro kumanda üzerinde olacak. Ben gyro'dan aldığım çıkışları rf ile ana kontrol devresine göndericem.

Bu devre de aldığı değerlere göre servoyu sağa sola çevirecek. Kumandayı ne tarafa çevirirsem servo o tarafa dönecek.

Eğer siz bana 3 eksenli en uygun fiyatlı bir gyro linki atabilirseniz hemen satın alayım. Konu çözülsün.

Tagli

IMU'lardan aci verisi okumak cok kolay bir is degil. Saglikli bir okuma icin filtreleme sart. Bunun icin de genelde Kalman filtresi veya DCM algoritmasi kullaniliyor. Ben birkac ay once sparkfun'un 5 DOF IMU'su ile DCM algoritmasini kullanmayi denemistim. Ardupilot kodlarina bakarak C18'de yazdim. Kod calisti ama herhalde birseyleri yanlis yapmis olmaliyim ki motorlar calisip da duzenek titremeye baslayinca aci degerleri sacmaliyordu.
Gökçe Tağlıoğlu

barisertekin

Alıntı yapılan: Tagli - 02 Ağustos 2011, 20:29:11
IMU'lardan aci verisi okumak cok kolay bir is değil. Saglikli bir okuma icin filtreleme sart. Bunun icin de genelde Kalman filtresi veya DCM algoritmasi kullaniliyor. Ben birkac ay once sparkfun'un 5 DOF IMU'su ile DCM algoritmasini kullanmayi denemistim. Ardupilot kodlarina bakarak C18'de yazdim. Kod calisti ama herhalde birseyleri yanlis yapmis olmaliyim ki motorlar calisip da duzenek titremeye baslayinca aci degerleri sacmaliyordu.
Teşekkürler fakat ben IMU değil gyroscope ile ilgileniyorum.

Tagli

IMU denilen şey birden fazla sayıda jiroskop ve ivme ölçeri bir arada üzerinde bulunduran modüldür. Zaten hareketli bir sistem söz konusu olduğunda hem ivme ölçer hem de jiroskop verileri olmadan sağlıklı bir açı bilgisi elde etmek mümkün değildir. Yerinde sabit duran, yani sadece yönelim açısı değişen ancak kendisi hareket etmeyen düzeneklerde sadece ivme ölçer ile açı bilgisi elde edilebilir (merkezkaç kuvvetinin ihmal edilebileceği düşük dönme hızları için).
Gökçe Tağlıoğlu

barisertekin

Söylediğiniz şeylerin farkındayım ama ilk yazıları okumadınız sanırım.
Amaç doğru açıyı bulmak değil gyro kullanımını öğrenmek. Sadece gyro kullanmak.

Gyro ve Accelerometer'ı ayrı ayrı alıp tek başlarına kullanımlarını tecrübe etmek.
Ne bişey uçurmak istiyorum ne başka birşey. Çıkış değerlerini lcd'ye yazıyım yeter diyim artık o zaman.
Yani adamlar ikisini birleştirmiş satıyolar ama nasıl birleştirmişler. Ben ayrı ayrı alıp kendim birleştirmek istiyorum.
Nasıl çalıştığını bilmediğim birşeyi kullanmak düşüncesi beni delirtiyor.  >:(
Fakat, bu kadar mesajdan sonra umudumu kaybetmek üzereyim.

Bu arada pololu.com'da çok uygun fiyatlara buldum.
http://www.pololu.com/catalog/category/80


iyildirim

LPR530 olanlardan kullanmıştım. Analog gyrolar ve sorunsuzca çalışımıştı.
Analog isterseniz LPR5XX (pitch-roll için) , yaw içinde ly5xx veya lpy5xx cinsi gyro alabilirsiniz.

digital istersenizde L3G4200D fiyatı ve 3 eksen olması nedenyle iyi görünüyor. Hem digital hemde 3 eksen için LPR-LY analoglardan daha ucuz.
SPI ve I2C çalışıyormuş.   Üzerinde level shifter olduğu için 3.3V yada 5V işlemci seçme özgürlüğünüzde var. Deneme amaçlı dediğiniz için voltaj kısıtlaması da olmadığından herhangi bir işlemci kullanabilirsiniz. SPI veya I2C'yi hardware modüllerle de,  soft olarak da çalıştırabilirsiniz.

Öte yandan bir gyro nasıl ve nerede kullanılır sorusunun cevabı da yukarıda Tagli'nin dediği gibi bir IMU' in nasıl çalıştığında yatıyor.
Gyro yu  alıp çalıştırmak sadece gyrodan bilgi okumakdan ibaret değil. 3 eksende koordinat dönüşümleri nasıl yapılır gibi konuları incelemeniz gerekecek. Euler, quaternion, rotasyon matrisi gibi ifadeler oldukça sık karşınıza çıkacak.