GYRO sorunu ?

Başlatan iruraz, 14 Ağustos 2011, 22:50:25

iruraz

Herkese merhaba,

Elimde iki eksende (x ve z) çalışan bir gyro (LPY530AL) var. Gyro'nun x4 yükseltilmiş ve yükseltilmemiş sinyallerin verildiği toplam 4 çıkışı var. Sensörü z ekseninde çevirdiğimde değişimler düzgün bir şekilde olurken x ekseninde çevirdiğimde ise pek bir değişim olmuyor. Çeşitli kombinasyonlar denesem de x ekseninden bir türlü düzgün veri elde edemedim. Arduino-Uno kitini kullanıyorum. Sensördeki Vref 'e 3.3V  ya da 5V bağlasam veya boş bıraksam sonuç değişmiyor. Aşağıda porttan aldığım verileri koydum. Bu verileri elde ederken sensörü x ve z eksenleri etrafında çevirdim. z ekseni etrafında rasgele sağa sola çevirdiğim de ortaya çıkan değerler :
Alıntı Yap
258  -------------------->gyro sabit
265  -------------------->hareket başlıyor
275
276
281
280
246
221
199
194
200
211
239
278
317
x ekseni etrafında rasgele sağa sola çevirdiğimde ortaya çıkan değerler :
Alıntı Yap
5  -------------------->gyro sabit
5  -------------------->hareket başlıyor
5
5
4
5
5
6
6
Bu değeleri sensörün x4 yükseltilmiş çıkışlarından elde ettim. Bu arada sensörün yükseltilmemiş çıkışlarını bağladığım zaman ve eksenler etrafında yukarıda anlattığım gibi sağa sola hareket ettirdiğim zaman da şu değeler ortaya çıkıyor. z ekseninde :
Alıntı Yap
250  -------------------->gyro sabit
250 
249  -------------------->hareket başlıyor
250
247
244
239
234
242
264
x ekseninde :
Alıntı Yap
248  -------------------->gyro sabit
249  -------------------->hareket başlıyor
249
248
249
249
249
248
Bu veriler doğrudan sensörden gelen değerlerdir. Anlamadığım bir noktada x4 çıkışında x ekseni için büyük bir fark olurken z ekseninde neden böyle bir şey olmuyor? İlgilenenlere şimdiden teşekkür ederim.

iyildirim

#1
Bu gyro yu kullanmıştım. lpy değil de lpr -pitch-roll- olanını.  Herhangi bir sorunu yoktu.

Gyroyu 3.3V ile beslemelisiniz.
X4 çıkışları  300 deg/sec,  x1 çıkışları da 1200 deg/sec çıkış verir.

Yanlış hatırlamıyorsam 1.25 V' a yakın bir referans Voltajı, orta nokta vardı. Yani 0 deg/sec için 1.25 V civarında bir gerilim ölçülmeli. Bu gerilim besleme ile ratiomterik değil. Datasheet de tam değeri vardı.

Referans voltajı çıkış olup 1.25 V civarında bir gerilimi var.  3.3 veya 5V veremezsiniz. Yaptı iseniz chipin  zarar görme ihtimali var.

Okumaları doğru yapmak için sadece x1 veya x4 çıkışları değil referans voltajını da okuyup farkına bakın.  Gyronun ne kadar döndüğü çıkış ile refVoltajın farkına göre hesaplanmalı.

Gyroyu hareket ettirirken eksene kendi çevresinde 1 saniyede 1 tur attrırsanız x4 çıkışdan dönüş yönüne göre 0.25 veya 2.25V gibi bir gerilim almanız gerekli.

Hareketsizken okunan 250 civarı değerler 5V ref. li 10bitlik  ADC için doğru görünüyor.

X ekseninin X4 çıkışda bu kadar düşük değerler vermesi normal değil.  Büyük ihtimalle x1 çıkışı tekrar chip içerisindeki opampa verirken bir hata var. unutulmuş bağlantı,
soğuk lehim vs. Yada x4 çıkışı işlemciye taşırken bir bağlantı hatası var.

Doğru çalıştığında x4 veya x1 tüm çıkışlarda sensör hareketsizken 1.25V- ADC de 250 gibi bir değer görmeniz lazım.

iruraz

@iyildirim öncelikle teşekkür ederim. Dediğiniz gibi gyro'yu 3.3V ile besliyorum. Sensördeki lehimleri kontrol ettim bir sorun yok. Vref 'i de karta bağlayarak x4 çıkışından değerleri okuttum. Sensör sabitken çıkan değerler :
Alıntı Yap
Vref   x     z
250   5   250
250   4   250
250   5   250
250   5   250
250   5   250
250   5   250
250   5   250
z ekseninde çevirdiğimde çıkan değerler :
Alıntı Yap
Vref   x     z
249   5   166
250   5   130
250   5   178
250   5   251
251   5   324
250   5   338
250   5   237
Sensörü x ekseninde çevirdiğimde değerler gene 4 ya da 6 oluyor. Sensördeki lehimleri kontrol ettim. Vref için yaptığım saçma bağlantılara rağmen Vref ve z değerleri beklendiği gibi çıkıyor bu durumda çipe bir zarar gelmemiştir diye düşünüyorum. Bu arada katalogdaki Vref değeri 1.23V . Sensördeki sorunu tam olarak nasıl tespit edebilirm ?

iyildirim

Önceki mesajda verdiğiniz X ve Z eksenleri için x1 değerler normal görünüyor. Vref de normal. Yani sensör işlevini yerine getiriyor.

Görünen tek sorun, X ekseninde X4 çıkışın çok düşük olması. Datasheet'e bakarsanız 8 sayfada bağlantı şeması var. x1 çıkışlar filtrelendikten sonra tekrar chip içindeki x4 güçlendiren opampa giriyor. x4 çıkışın düşük olmasının sadece bir kaç nedeni olabilir.

Birincisi X ekseninin x4 çıkışı ile ADC kanalınız arasında bağlantı sorunu olması. Voltmetre ile Chipin 6 nolu bacağını chip hareketsizken ölçtüğünüzde burada 1.25V luk referans gerilim görülmeli. Gerilimi görebiliyorsanız ADC girişini de kontrol edin. Orada da gerlim varsa sorun yazılımda. X4 için hatalı bir kanalı okuyor olabilirsiniz.
Gerilimler ilgili yerlerde görülmüyorsa bağlantıları kontrol edin.

Bir diğer ihtimal de X ekseni x1 çıkışı ile chipin 5 nolu bacağı arasında bağlantı sorunu olması. Ki bu ancak 5 nolu bacak ölçülerek anlaşılabilr. Ancak chip QFN kılıfda olduğundan bunu ölçmek imkansıza yakın. Eğer bu chip için bordu kendiniz hazırladıysanız burada soğuk lehim ihtimali olabilir. Hazır olarak düzgün br yerden breakout board şeklinde aldıysanız sanırım test edilmiştir.   
Diğer yerlerde sorun yoksa x4 çıkışında gerilim yok ise yapabileceğiniz sıcak hava veya çok ince uçlu havya ile 5 nolu bacağın lehimlendiğini garantilemek.
Bir diğer seçenek de bu şekilde bırakıp x1 çıkışları kullanmak, ille de x4 isterim derseniz 4 gibi güçlendirme katsayısı olan invert etmeyen şeklinde bağlı extra bir opamp kullanmak.

Benim oyum yazılımda hata olduğu veya hatalı bir kanal okunduğuna.





iruraz

Daha önce de söylediğim gibi Arduino-Uno kit kullanıyorum. Yazılım olarak çok basit bir hali sadece analog kanallardan gelen veriyi okuma ve ekrana yazma var. Kod şöyle:
int x, z, Vref;

void setup(){
  Serial.begin(9600);     
}

void loop() {
  x = analogRead(2);          
  z = analogRead(1);
  Vref=analogRead(0);  
   
  Serial.print(Vref);
  Serial.print(" ");
  Serial.print(x);
  Serial.print(" ");
  Serial.println(z);
 
  delay(100); 
}
Bu yüzden yazılım olarak bir hatası olduğunu zannetmiyorum. Okuduğu kanalları gene kontrol ettim ama bir bağlantı problemi yoktu. Şu an için multimetrem yok bu yüzden ölçümleri daha sonra yapmak durumundayım.
Kullandığım gyro breakout board şeklinde. Üzerindeki çipte  Y530AH yazıyor; ama arattığımda bu çiple ilgili hiçbir katalog bulamadım. Kullandığım gyro spurkfun'dan bu yüzden katalog olarak olarak LPY530AL kataloğundan yararlandım. Bağlantılar sensörün üzerinde yazdığından bir bağlantı hatası da söz konusu değil.
Sensörün yükseltilmemiş çıkışından aldığım x değerleri gene problemli  x4 çıkışından daha büyük çıkıyor. Ve x ekseni etrafında hareket ettirdiğimde gene değişim görülmüyor. x ekseninde hareket ettirdiğimde x1 çıkışı:
Alıntı Yap249
250
249
249
249
249
249
Voltaj ölçümlerini yaptıktan sonra durumu size gene bildiririm.

iyildirim

LY530 da var. Sadece Z eksenini -yaw- ölçüyor. LPR ile LY'i birlikte kullanmıştım. 
Bu breakout board'un linkini verebilirmisin.

Eğer chipde P harfi silinmemişse sensör LY530 ise bu tek eksende sadece Z de ölçüm yapıyor anlamına gelir. İşin ilginç tarafı x1 çıkışta X ekseninde çıkış görülmesi.

Sparkfun'a   baktım. LPY ve LY breakout boardların şematikleri aynı verilmiş. Resimler de karışık. Y530 da devre tam dizili görünüyor. PY530 da ise PCB aynı ama eksik malzeme var. Ama eksiklik hem Z hemde X ekseninde. Sanırım PY olan board da opsiyonel olan yüksek geçiren filtre kullanılmamış. 

Bu durumda, dediğiniz gibi Y530 yazan bir bir chip varsa ve P harfinin sonradan silinmemiş olduğuna eminseniz elinizdeki sensör ile sadece yaw değişimleri ölçülebilir. En azından datasheete göre böyle. Kafa karıştıran nokta X ekseninde x1 de normal değerler görülmesi.  Sanırım ayrı bir chip üretmek yerine mems sensörleri aynı, ama bir kanalda opamp koymadan yada pine bağlantısını yapmadan yeni ürün çıkarmışlar.

Anlamak için şöyle yapalım. breakout bordu pinler solda ve sağda dizili olacak şekilde tutup, pinler sürekli aşağı yukarı olacak şekilde yani pitch hareketi yapacak şekilde çevirin.  Bu durumda iken X eksenin de x1 veya x4 çıkışlarda hareketle uyumlu değerler görülmeli. Hızlıca bir yöne çevirirken değerler artıyorsa diğer yönde azalmalı.
Bu yaparken z ekseninde yaw hareketi yapmamaya dikkat edin.

Bu şekilde X ekseninde hareketle uyumlu değerler görebiliyorsanız en azından x1 modda sensörü X ekseni için de kullanabilirsiniz.

Aldığınız, daha doğrusu sipariş ettiğiniz ürünün lpy olduğuna eminseniz, sparkfun'a dönün. Sipariş geçmişinden de görebilirsiniz.


iruraz

@iyildirim haklıymışsınız sadece z ekseninde ölçüm yapıyor. Dediğiniz gibi aynı kartta farklı bir sensör oluşturmuşlar. Sparkfun 'da Y530AH göremeyince LPY530 'a atladım, ama beni yanıltan kart oldu. Yanlışım için kusuruma bakmayın lütfen. Vakit kaybına sebep oldum. Tekrar çok teşekkür ederim.

iyildirim

#7
X ekseni x1 çıkışlarından sensör hareketsizken 250 gibi değerler okumada hata varmı. ? 

en başta söylediğiniz,  x1 çıkışlarından aldığınız değerlerde hata yoksa, bu şekilde x eksenini de kullanabilirsiniz. Hassas  olsun isterseniz de extra bir opamp ile sağlamak mümkün.

Asıl merak ettiğim, ly ile lpy arasında x1 çıkışları arasında fark olup olmadığı.

Board' u değiştiremezseniz de chip olarak lpy-lpr gibi birşey alıp elinizdeki borda monte etmek de çözüm. daha ucuza gelir. Yanlış hatırlamıyorsam sadece chip'in 7-8 usd gibi bir fiyatı vardı. bordlusu 25-30 gibiydi.   Ben chip olarak almıştım.

Sparkfun'ın breakout boardları gereğinden fazla pahalı.


iruraz

Bu sefer sadece x1 ve x4 çıkışlarını okuttum. Sensör sabitken ve pitch hareketi yaptırdığımda oluşan değerler şöyle :
Alıntı Yap
x1      x4
249      5     
249      5     
249      5     
249      5     
249      5     
250      5     
249      5     
249      5     
249      5     
249      5     
250      5     
249      5     
249      5     
250      4     
249      6     
249      5     
249      5     
249      6     
249      5     
249      5     
250      5     
Evet bu karta müdahale etmem benim için zor olur çünkü şu an için gerekli ekipman yok. Bunu 3 eksenli ivme sensörüyle kullanacağım. Eğer ilerleyen zamanda 2 ya da 3 eksenli bir gyroya ihtiyaç olursa gene size danışırım. İlginiz için tekrar teşekkür ederim.

iyildirim

Evet X ekseninde hareket yok.  Görünen sadece Vref.
Bu  sensörü yaw olarak kullanabilirsiniz. İleride LPR -pitch,roll- bir sensör edinirseniz 6DOF tamamlanmış olur.