gyro analog çıkışı ne anlama geliyor ?

koray692

Üye
Katılım
3 Tem 2010
Mesajlar
49
Puanları
1
Yaş
34
merhaba ben bir proje üzerinde çalışıyorum analog gyro dan aldığım bilgileri pic te işleyip servolara göndermek istiyorum ancak gelen bilgi nasıl olur onu tahmin edemiyorum(algoritmayı yazamadım bundan dolayı) yani gyro yu sağ tarafa doğru yatırdığımızda artı bir voltaj gelecek sola yatırdığımızda eksi voltaj mı gelicek yada nasıl bir sistemi var??
 
Gyro sadece hereket olduğu anda bir voltaj verir. Voltaj verir derken de; gyroların hareketsiz durumda verdikleri sabit bir gerilim var. Örneğin 1.5 V bir yöne hareket olduğunda 2 volt diğer yöne aynı şekilde bir hareket olduğunda 1V gibi bir gerilim görülür.
Gyroyu sabit olarak bir yöne eğik tutmak herhangi bir açısal dönme olmadığından bir gerilim değişikliği yaratmaz.

Gyronun datasheetinde bahsettiğim ortalama voltajın ve x derece/sn dönüş için ne kadar gerilim farkı olacağı bilgisi vardır.
ADC ile sürekli okuma yapıp, ne kadar döndüğünü hesaplayıp o anki konumu hiç kesintisiz hesaplamak gerekir.
 
ben eğik durduğu sürece voltaj veriyor diye biliyordum. şimdi uçağın konumunu sabit tutmak için ne yapabilirim...modeli mpu-6050
 
ben eğik durduğu sürece voltaj veriyor diye biliyordum. şimdi uçağın konumunu sabit tutmak için ne yapabilirim...modeli mpu-6050

MPU6050 sadece gyro değil. İvmeölçer de içeriyor. Artı üzerinde bu bilgiyi işleyebilecek quaternion çıkış verebilen bir işlemci de var.
MPU6050 I2C ile çalışıyor. SPI çıkışlı olan MPU6000 ile çalışmıştım. Bu sensör + işlemci güzel. Drift hataları az. Doğru kodlanırsa 0.1 dereceden daha iyi sonuçlar alınabilir.
Ama özellikle üzerindeki işlemciyi ile ilgili dökümantasyon konusunda sıkıntılı diye biliyorum. Raw veri okumanın ise herhangi bir zorluğu yok. Datasheet yeterli.

Bunu model uçak için kullanacaksan ya üzerindeki işlemciyi programlaman yada raw accelerometer-gyro çıkışlarını okuyup hesap-kitap işlemlerini dışarıda yapman gerekir.
Nette çeşitli örnekler bulabilirsin ama kendi projene uyarlamak için bile Mikroişlemci programlama, kinematik, analitik geometri gibi konularda bilgi sahibi olman gerekir.
Birde ek olarak manyetik bir pusula da kullanmak gerekli.
 
Elektrik-Elektronik müh. 2. sınıf öğrencisiym bilgim var biraz her ne kadar sayısal sistemler dersinden kalmış olsamda.... manyetik pusulayı duymamıştım daha önce. ben biraz hesap kitap yapayım ...üstündeki işlemciyi kullanmak pic i kullanmaktan dahamı kolay? kullanmak istersek nasıl kullanabilirm elinizde döküman varmı bu konularda? ben pic kullanırım diye düşünmüştüm daha kolay olackasa üsütndeki işlemciyi kullanayım.
 
MPU6000 üzerindeki işlemci sadece quaternion matrisi verir. Ve kısıtlı dökümandan dolayı kullanımı daha zor.

Bu işlemciyi kullansanda kullanmasan da ayrıca bir mikrokontroller kullanman gerekir.
Tavsiyem bir mikro ile mpu6000 den raw veriyi okuyup hesaplamayı kendin yapman yönünde.
Bir rotasyon matrisi oluşturup sürekli güncelleme yapacaksın. Nette mpu6000 ile yapılmış örnekler var. Invensence'in kendi sitesinde de (kayıt olmayı gerektiriyordu.) Sparkfun gibi sitelerde de örnek çalışmalar bulabilirsin. Starlino gibi sitelere de bak. Özellikle DCM konusuna.
Konu hakkında biraz çalışırsan aynı dilden konuşabilir, takıldığın-zorlandığın yerlerde anlaşabiliriz.
 
rotasyonel matrise(Rotation matrix - Wikipedia, the free encyclopedia) e baktım x' y' için açılar gerekiyor onları nasıl alıcaz çok bişey anlamdım açıkcası sırasıyla ve daha ayrıntılı yazarsanız çok sevinirim. mesela 20 derecelik bir değişim olduğunu farzedelim 1 sn içinde bunun katalogta bir voltaj karşılığı var bu voltaj karşılığından belirliyoruz pic üzerinde sonra tam tersi yani -20 derece olması için servo motorlara gerekli pulse u verdiriyoruz ancak ne zamana kadar vereceğini hesaplattırmak biraz sıkıntı gibi...kafam karıştı benim biraz...
 
Ölçme hesaplama işlemleri saniyede 50-100- 500 kez olabilir. Ne kadar fazla olursa o kadar iyi. Tabii bu kullandığın gyro, acc. in band genişliği ile de sınırlı.
Gyro dan 20 derece/sn lik bir bilgi aldığında bu en son ölçümünden sonra olan olay. Diyelimki saniyede 100 ölçüm yapıyorsun. Saniyede 20 derecelik bir sapma yapacak hızda döndüğüne göre 1/100 saniyede ne kadar dönmüş olabilirim hesabı sürekli olarak yapılıp eğim bulunacak.
Bu eğimi düzeltmek için ne kadar süre ve/veya ne şiddette motorlara güç vereceğin ise hesap kadar deneme yanılma da.
Bunun için de PID kullanabilirsin. Deneyerek uygun katsayıları bulacaksın. Tabii katsayılar için frame, motor, pervane vs. ye göre aracını modelleyip hesap da yapabilirsin tabii. :D

Hesap yöntemi ise genelde söyle.
Bir hava aracından bahsettiğimiz için statik bir şey yok. MPU6000 üzerinde hem gyro hemde acc. var. Ve bu ikisi birlikte kullanılıyor. Statik durumda yerçekimi ivmesinin 3 eksene ne kadar etki ettiğini ivmeölçer ile ölçüp eğimi hesaplamak kolay. Ancak dinamik ortamda yerçekimi ivmesinin yanı sıra aracın hareketli olmasından kaynaklanan ivmeler de var.
Bunun için dinamik ortamda gyro yu eğimi hesaplamak için ivmeölçeri de ne kadar sağa-sola, aşağı-yukarı hareket ettiğimizi ölçmek için kullanıyoruz. Gyro ile eğim nasıl hesaplanırın mantığını yukarıda yazmıştım. Buna göre eğim artık bilindiğine bu eğimde her eksene ne kadar yerçekimi ivmesi etki edecek hesaplanabilir. Her bir eksende hesaplanan yerçekimi ivmelerini ivmeölçer den her bir eksen de okuduğumuz ivmelerden çıkartırsak geriye eksenlerde ki saf ivme kalacak. Yani sadece aracın hareketinden kaynaklanan ivmeler. Buna göre şu kadar zamanda bu kadar ivme olursa dan hız, şu zamanda bu hız dan yol ve aracın konumu çıkar. Yani bir integral hızı ikincisi yolu verecek. Küçük zaman aralıklarında hesaplanan hız ve yol toplanacak. Buna göre aracın olması gereken konumla fark hesaplanıp motorlara gereken komut gönderilir. Bu işlem sürekli yapıldığında olması istenen konuma geldiğimizde sistem zaten motorlara ona göre komuta edecek. Motor yönlendirmeleri için PID olmazsa olmaz. Katsayıları iyi ayarlarsan ne sağır olur ne de agresif.

Bütün bu hesapları lineer cebir kullanılarak yapıldığında ortaya rotasyon matrisi çıkıyor. DCM (direction cosine matrix) denen yöntemi iyi incele. Ha bu arada illa da bu şekilde yapmak zorunda da değilsin.

Rotasyon matrisi oluştururken dikkat edilecek nokta her bir eksende ki rotasyon sırasına uygun oluşturulması gerekliliği. Matrisin satırları yeryüzeyine göre vektörleri gösterirken sütünları araca göre vektörleri gösterecek. Eksenlerin sıralanışı ile de rotasyon işleminin sıralanması uyumlu olmalı.
Sözle anlatılabilecek genel mantığı bu şekilde. Matematiği için de;
A Guide To using IMU (Accelerometer and Gyroscope Devices) in Embedded Applications. « Starlino Electronics bu daha çok gyro, acc. nasıl kullanılır. DCM kullanmadan nasıl hesaplarım konusu. Yukarıda lafla anlatmaya çalıştığım kısım.
http://gentlenav.googlecode.com/files/rotation_matrix.jpg rotasyon matrisi

http://gentlenav.googlecode.com/files/DCMDraft2.pdf Bu döküman DCM ile hesabı sonuna kadar anlatıyor. Sitelerinde hazirladıkları kit için örnek bir proje de var. İstersen bu proje üzerine kendi kartını, MPU6000'i monte edebilirsin.
Rotation Matrix -- from Wolfram MathWorld
DCM Tutorial ? An Introduction to Orientation Kinematics « Starlino Electronics


DCM kullanan, kullanmayan bir sürü örnek proje var. Hesap kitap kısmını halledersen MPU6000 ile ilgili kısımda yardımım olabilir. dsPIC veya ARM kodlamada da takıldığın yerlerde.

MPU6000 kullanan hazır board henüz görmedim ama illa MPU6000 kullanıcam demezsen üzerine kodunu yazabileceğin hazır IMU kitlerine bir bak derim. Baskılı devre vs. işlerinden yırtarsın. Aslında hazır alıp kullanılabilecek çok sayıda kit var.
Örnek olarak gentlenav-matrixpilot uygulamasının hazır kiti var.
Hafızam yanıltmıyorsa RAZOR'un MPU6000 li bir uygulaması da olacaktı. Bunlar için sparkfun'a bakabilirsin. Örnek kod vs için de iyi bir kaynaktır.
Ne kullanayım diye sorduğuna göre henüz işlemci vs. de seçmemişsin.
Önerim 16 bit dsp veya 32 lik işlemciler olur. 16 bitlik dsPIC, TI MSP veya 32bit ARM işlemcileri öneririm. Özellikle fpu dan dolayı STM32F4.. Uygun fiyatlı bir kiti de var.
Kolay gelsin.
 

Forum istatistikleri

Konular
129,848
Mesajlar
930,740
Kullanıcılar
452,705
Son üye
Payidarx

Yeni konular

Geri
Üst