İlk yazıda kısaca MMA7361 İvmeölçer Modulünü tanıtmıştım. Bu yazımda Arduino ve İvmeölçer modülünü kullanarak eğim bilgisini bilgisayara göndereceğiz. İlk önce gerekli bağlantıları yapalım.
- Arduino’yu bilgisayara taktıktan sonra 5V çıkışını ivmeölçerin 5V girişine, GND çıkışını da ivmeölçerin GND’sine bağlıyoruz
- İvmeölçerin SL bacağına 5V veriyoruz, çünkü bu bacak terslenmiş. 5V verdiğimizde uyku modunda OLMAMASINI sağlamış oluyoruz
- İvmeölçlerin X ve Y çıkışlarını Arduino’nun Analog girişlerinden 0 ve 1 nolu pine bağlıyoruz
Gerekli bağlantıları yaptık, şimdi sıra programa geldi. Programın mantığı çok basit, ivmeölçerin X ve Y bacaklarından gelen verileri Analog olarak oku, sonra seri yoldan bilgisayara gönder. Bilgisayardan da Serial Monitor yardımı ile gelen veriyi göster. Seri iletişim hakkında bilginiz yoksa daha önce yazdığım şu yazıya göz gezdirmenizde fayda var. Arduino ile Bilgisayar Arasında USB Yoluyla İletişim Kurmak ve Bilgisayar ile Motor Hızı Kontrol Uygulaması
Aşağıdaki kodları Arduino’muza atıyoruz
int egimX; // X eksenindeki eğim değerini kaydedeceğimiz değişken
int egimY; // Y eksenindeki eğim değerini kaydedeceğimiz değişken
void setup() {
Serial.begin(9600); // Seri iletişim ayarı - iletişimi aktifleştir ve hızını ayarla
}
void loop(){
egimX = analogRead(0); //Analog 0 pininden okuduğun değeri egimX değişkenine kaydet
egimY = analogRead(1); //Analog 1 pininden okuduğun değeri egimY değişkenine kaydet
Serial.print(egimX); //USB yolu ile bilgisayara egimX değerini gönder
Serial.print("\t"); //Bir Tab boşluk bırak
Serial.print(egimY); //USB yolu ile bilgisayara egimY değerini gönder
Serial.print("\t"); //Bir Tab boşluk bırak
Serial.print("\n"); //Yeni satıra geç
}
Kodun derleyicideki görünümü:
İvmeölçer bağlantılarımızı yaptığımıza ve Arduino’ya programı attığımıza eminsek artık gelen Arduino derleyicisi ile birlikte gelen Serial Monitor aracını Arduino’dan gelen analog eğim bilgilerini okumak için kullanabiliriz. Tools -> Serial Monitor komutunu uygulayın yada direkt olarak Ctrl+shift+M tuş kombinasyonunu kullanın. Herşey yolunda gidiyorsa eğer 2 kolon şeklinde akan sayılar görmeliyiz. İvmeölçerinizi oynattıkça ivmeölçerinizin açısına(aslında ivmesine) göre bu değerlerin de değiştiğini göreceksiniz. Masamın üstünde sabit şekilde duran ivmeölçerden gelen veriler şekildeki gibi
X ekseninin değeri yaklaşık olarak 316-317, Y ekseninin ise 349-350. İvmeölçer sabit konumda durduğu sürece okuduğumuz değerler bu değerler civarında olacak. İvmeölçeri X eksenine göre dik konuma getirdiğimde okuduğum değer yaklaşık olarak 156 ve 456 oluyor. Çok güzel, 2 durum arasındaki fark 300 ve bu değeri 2’ye böldüğümüzde çıkan 150’yı 156’ya ekleyip yada 456dan çıkarırsak neredeyse sabit konumdaki değerleri veriyor, yani düzgün bir şekilde ölçüm yapabiliyoruz. Benim kurduğum devre şekildeki gibi, ortalığı biraz toparlasam daha anlaşılır olabilirmiş sanırımi en azından Arduino’nun altındaki boş kabloyu alabilirmişim 🙂
merhabalar verdiğiniz bilgiler için teşekkürler fakat ivme ölçer sensörü ile sadece x y z yönündeki ivmelenmeyi ölçmüyor muyuz açı bilgisini gyro veriyor diye biliyorum
F = mg ‘deki g yer çekimi ivmesi oluyor. (Fnet = kütle * ivme, F=m.a) Serbest düşme yapan cisimler bu ivmeye maruz kalıyor. Arabanızı yokuşa parkettiğinizi ve boşa aldığınızı düşünün. Arabanız ivmelenecek ve Yavaş yavaş yokuştan aşağıya kaymaya başlayacaktır. Eğer yokuşunuz tamamen dik ise, g ivmesi ile kayacaktır(serbest düşme – yerçekimi ivmesi). Eğer eğimli ise, g ivmesinden daha düşük bir değer ile ivmelenecektir.. Dolayısı ile serbest duran cisimler’in açısını ivme değerini okuyarak açısını bulabiliriz. Ancak ivmeölçer ile açı ölçmek, ani harketlerin olduğu durumlarda sağlıklı sonuç vermez. Şöyle ki, yine eğimli bir yokuşta olduğunuzu düşünün ve el freninizi çekmişsiniz, yokuşta duruyorsunuz. Şu anda ivmeölçerden 30 dereceye denk gelen değeri okuduğunuzu. Arabanıza arkadan birisi vurduğunda araba yerinde kalmasına siz rağmen arabanın içinde biraz ileriye doğru savrulacaksınız ve ivmeölçerden okuduğunuz değer değişecek, oysa ki hala 30 derece’lik yokuşta aynı yerde duruyorsunuz. Bu yüzden eğimi değerini okumak için ivmeölçerler daha az tercih ediliyor
click me!
Merhabalar; kod için teşekkürler,güzel çalışmalarınız var takip ediyorum fakat bu ivme ölçer o kadarda hassas ölçmüyor sanırım. Bana yüzdeli hassasiyetli ölçüm lazım.Sonuçu 1000e bölüyorum bu sefer titreşim sıfır çıkıyor. Bana daha hassas titreşim verisi lazım. Nasıl alabilirim acaba? Hatta bunu bilgisayarda grafik olarak çizdirebilirmiyim ?