#54 mBlock MPU6050 İvme ve Gyro Sensörü Çalıştırma
mBlock 5 serisi ile Arduino uygulamalarına devam ediyoruz. Bu yazımızda mBlock MPU6050 İvme ve Gyro Sensörü Çalıştırma Devresi’ ni anlatacağız. mBlock programında MPU6050 6 eksenli ivme ve gyro sensörünü mBlock içerisinde kodlayarak nasıl çalıştığını göreceğiz. Bunun için kendi hazırladığımız uzantıyı kullanacağız.
mBlock programı blok kısmı, devre montaj şeması, devre kurulumu detaylı anlatım ve devre çalışma videosu şu şekildedir.
Arduino’ da kullanabileceğimiz üç eksenli ivmeölçer + üç eksenli jiroskop, toplamda 6 eksenli ivme ve gyro modülü özellikleri nelerdir? Hangi pinler kullanılır? Kullanıldığı alanlar nelerdir? MPU6050 devreye nasıl bağlanır? gibi konularda bilgi almak ilgili yazımıza aşağıdaki linkten bakabilirsiniz.
https://egitim.ahmetcandemir.com.tr/mpu6050-ivme-ve-gyro-sensoru-nedir-nasil-calisir/
MBLOCK İLE MPU6050 SENSÖRÜNÜ ÇALIŞTIRALIM!
MBLOCK PROGRAMI BLOK ŞEMASI:
mBlock programında üstteki blok diyagramını kullanarak devremizin blok kısmını tasarlayabiliriz. Blok diyagramında kendi tasarladığımız uzantıyı kullanacağız.
mBlock programında Uzantılar ‘a tıklayarak açılan sayfada arama kısmına MPU6050 yazdığınız takdirde kendi hazırladığımız MPU6050 Gyro Sensor uzantısı gelecektir. Bu uzantıyı mBlock içerisine ekleyerek bu uzantı içerisindeki blokları kullanabilirsiniz.
mBlock Canlı Mod ile sensörün durumunu sahne üzerindeki değişkenlerden görebiliriz. Ayrıca sahnedeki pandaya bağlantı durumunu da (başarılı veya başarısız şeklinde) söyletebiliriz. Bunun için yukarıdaki blok şemasını Aygıtlar sekmesinde iken oluşturalım. Aygıtlar sahnesinde ax, ay,az, gx, gy,gz değişkenlerinden aldığımız değerleri yükleme modu iletisi blokları ile kukla sahnesine gönderiyoruz. Kukla sahnesinde ise aygıtlar sahnesinden gelen değerleri yükleme modu mesajı ile Panda üzerindeki değişken göstergelerinden okuyoruz.
Aşağıdaki blok şemasını Kuklalar sahnesinde oluşturalım.
Daha sonra Aygıtlar sahnesine gelerek kodları Arduino kartına gönderip kukla üzerinden gelen veriyi Panda üzerinde okuyabiliriz.
Blok şemasında ax, ay,az, gx, gy,gz isimli bir değişkenler tanımladık. Değişken nasıl tanımlanır? öğrenmek istiyorsanız aşağıdaki bağlantıyı tıklayıp inceleyebilirsiniz.
https://egitim.ahmetcandemir.com.tr/mblock-dersleri-13-mblock-degisken-olusturma/
Kod Açıklamaları:
İvme (ax, ay, az) → G kuvveti cinsinden
Jiroskop (gx, gy, gz) → Açı değişim hızı (°/s cinsinden) seri porta aktarır.
İvme Verileri (ax, ay, az)
Bunlar, MPU6050’in içindeki ivmeölçer (accelerometer) tarafından ölçülür.
ax – X eksenindeki ivme – Ham değer (LSB)
ay – Y eksenindeki ivme – Ham değer
az – Z eksenindeki ivme (yerçekimi yönü) – Ham değer
Bu değerler, cismin hangi yönde ne kadar hızlandığını gösterir.
Örneğin: Cihaz hareketsiz yere düz konmuşken az değeri yaklaşık 16384 (1g) civarında olur (±2g ayarında). MPU6050, ±2g, ±4g, ±8g, ±16g gibi farklı “ölçüm aralıklarında” çalışabilir.
Eğer sensörün ivmeölçer hassasiyeti ±2g değilse, yani daha yüksek (örneğin ±4g veya ±8g) olarak ayarlanmışsa, maksimum çıkış değeri daha fazla olur. Maksimum değer ±4g de ±32,768 olur. Seri porttan bu değerleri görebiliriz.
Jiroskop Verileri (gx, gy, gz)
Bunlar, MPU6050’in içindeki jiroskop (gyroscope) tarafından ölçülür.
gx – X ekseni etrafındaki dönüş hızı – Ham değer (LSB)
gy – Y ekseni etrafındaki dönüş hızı – Ham değer
gz – Z ekseni etrafındaki dönüş hızı – Ham değer
Bu değerler, cihazın hangi eksen etrafında ne kadar dönmekte olduğunu gösterir.
Örneğin: Bir eksende döndürdüğünde o eksene ait g değeri değişir. Jiroskop minimum değeri: -32,768, Jiroskop maksimum değeri: +32,767 olabilir.
MPU6050 sensörü varsayılan olarak sensör verilerini ham (raw) LSB (least significant bit) olarak verir.
Bu değerleri gerçek birimlere çevirmek istersek şu dönüşümler gerekir:
İvme (g cinsinden) için:
ivmeX = ax / 16384.0; // ±2g ayarında
Jiroskop (derece/saniye olarak) için:
gyroX = gx / 131.0; // ±250°/s ayarında
Örnek olarak değişkenler üzerinde eğer şöyle değerler görünüyorsa:
Ivme: 1000 -2000 16384 | Jiroskop: 50 -10 200
• Cihaz sabit duruyor ama X ve Y eksenlerinde hafif eğilmiş.
• az ≈ 16384 olduğu için aşağı (yerçekimi yönü) kuvveti normal.
• gx, gy, gz değerleri düşük olduğu için sensöre bağlı cihaz dönmüyor (ya da çok yavaş dönüyor).
DEVRENİN ÇALIŞMASI:
Arduino’ya kodları gönderdiğimizde MPU6050 yi sağa sola, öne arkaya, aşağı yukarı (ax, ay, az, gx, gy, gz) koordinatlarında hareket ettirdiğimizde, sahne üzerinde yer alan değişkenler üzerinde sensörden aldığımız ham verileri görebilir ve verilerin harekete göre değiştiğini de gözlemleyebiliriz.
DEVRE MONTAJ ŞEMASI:
DEVRE KURULUMU:
Malzemeler:
Arduino Uno
Deney Tahtası (Breadboard)
1 adet ivme ve gyro modülü (MPU6050)
2 adet SG90 Servo Motor
12 adet iki ucu erkek jumper kablo
MPU6050 modülü, deney tahtası (breadboard) üzerine yerleştirilir. Modülün VCC pini, Arduino +5V pinine bağlanır. Modülün GND pini, Arduino GND pinine bağlanır. Modülün SCL pini, Arduino’nun SCL pinine, modülün SDA pini, Arduino’nun SDA pinine bağlanır ve devre tamamlanır.
mBlock MPU6050 İvme ve Gyro Sensörü Çalıştırma
Devre hakkında yorumlarınızı aşağıdaki yorum kısmına yazabilirsiniz. Youtube kanalımızda devremizin kurulumunu izleyebilirsiniz. Ayrıca kanalımızda mBlock ve Arduino ile ilgili ders videoları bulabileceksiniz. Youtube kanalıma abone olmayı da unutmayınız.
https://www.youtube.com/@candemirahmet
Yorum Yap