Arduino ve MPU6050 sensörünü kullanan Deprem Dedektörü: Deprem dedektörü, deprem şoklarını algılayan bir cihazdır. Araştırmaya göre bir yılda yaklaşık 800.000 deprem meydana gelir ve bu kadar çok can ölür ve binaları tahrip eder. Projemiz, deprem nedeniyle oluşan kaybın üstesinden gelmek için küçük bir çabadır. Bu dedektör, küçük şokları algılayabilir ve güvenli bir yere tahliye etmeniz için sizi uyarabilir. Bu dedektörün en önemli bileşeni daha sonra konuşacağımız MPU 6050 modülüdür. Arduino bu dedektörün beynidir, mesaj göstermek için LCD, gösterge olarak Led ve zil kullanılır.
Arduino kullanarak Blok Diyagram Deprem Dedektörü
Gerekli Bileşenler
ArduinoUno: Ucuz olduğu için Arduino Uno kullandık ve iki analog pime ve sekiz dijital pime ihtiyacımız olduğundan bu proje için mükemmel uyuyor. Programlaması kolaydır ve programı saklamak için hafıza kaybı vardır.
MPU6050: MPU6050, 6 Eksenli İvmeölçer ve jiroskoptur. Genellikle bir hareket takip cihazıdır. Aynı zamanda sıcaklığı ölçebilir. Daha az güç tüketir ve fiyatı çok ucuzdur.
İşte bazı MPU6050 özellikleri
Jiroskop çalışma akımı: 3.6mA.
İvmeölçer normal çalışma akımı: 500µA.
Bekleme akımı: 5µA.
Çalışma voltajları 2,37v ila 3,46v arasındadır
Geliştirilmiş düşük frekanslı gürültü performansı.
Dijital çıkışlı sıcaklık sensörü.
MPU6050 modülünün pin açıklaması:
Vcc: Bu pime 3.3 besleme gerilimi.
GND: Bu pin toprağa bağlı.
SCL: I 2 C Seri Saat Pimi.
SDA: I 2 C Seri Veri Pimi.
XDA: I 2 C Harici bir sensör için Ana Veri pini.
XCL: I 2 C Harici bir sensör için Ana Saat pimi.
AD0: I 2 C Slave Adresi LSB.
INT: Dijital çıkış pinini kes.
16 × 2 LCD : LCD, alfasayısal karakterleri göstermek için kullanılır. Toplam 16 pimi vardır. LCD'nin kontrastını ayarlamak için üçüncü pim ile bir 10K ohm potansiyometre bağlanır. Ayrıca bir arka ışık LED'i içerir. Bu projede kullandığımız LCD 16 × 2 dir, yani 16 karakteri iki satırda görüntüleyebiliriz. Bu projede şokların tespit edilip edilmediğini göstermek için LCD kullanılmaktadır.
Led : Deprem şoklarının algılandığını ve kırmızı rengin de tehlikeyi temsil ettiğini belirtmek için kırmızı bir led kullanılır.
Buzzer: Bir zil, deprem şoklarının algılandığı kişilere alarm veren yüksek bir ses üretir.
Direnç ve bazı jumper kabloları
Arduino kullanan Deprem Dedektörünün Devre Şeması
Deprem Dedektörünün Arduino blok şemasını kullanarak çalışması
Arduino her şeyden önce MPU 6050'yi başlatır. Uyku modunu ve modülden bir saat sinyalini kontrol edin ve ardından değerleri okumaya başlayın. Kontrol ettiği kodda maksimum ve minimum değerler belirtilir, değerin istenilen değerden büyük veya küçük olup olmadığı daha sonra sesli uyarıyı çalıştırır, led ve LCD'de “*** Deprem ***” mesajını gösterir. Değerler normalse hiçbir şey yapmaz.
Arduino ile Deprem Dedektörünün Uygulanması
Arduino kullanan Deprem Dedektörü için Seri Plotter
Sayfalarımı ziyaret ettiğiniz için teşekkür ederim.Bu sitede mevcut olan içerikler kendi oluşturduğum projeler yazı,resim ve videolardan oluşmaktadır.İçerik oluşturmak çok uzun sürdüğü için bazı projelerde yurtdışı kaynaklardan faydalandım.Buradaki amacım ticari değildir.Kaynağı belli olan ve bizim kaynağına ulaşabildiğimiz materyal (yazı, fotoğraf, resim, video v.b.) için ilgili konularda fotoğraflarda logo varsa v.b. not olarak gösterilecektir.Sitemizde yayınlanan tüm içerik, bizim tarafımızdan ve internet üzerinden youtube, facebook ve blog gibi paylaşıma sunulmuş kaynak sitelerden alındığı için, sitemiz yasal yükümlülüğe tabi tutulamaz. Sitemizde telif haklarının size ait olduğu bir içerik varsa ve bunu kaldırmamızı isterseniz, iletişim sayfamızdan bizimle iletişime geçtiğiniz takdirde içerik yayından kaldırılacaktır.Bu konu ve modüller ile uğraşarak, ileride çok güzel makine ve elektronik aletler yapabilirsiniz.
Çocukken hatırlayın, bilim fuarındaki jiroskoplar tuhaf şekillerde hareket ettikleri ve hatta yer çekimine meydan okur gibi göründükleri için bizi her zaman büyüledi. Özel nitelikleri, onları küçük RC Helikopterlerden uzay mekiğindeki gelişmiş navigasyon sistemine kadar her şeyde son derece önemli kılıyor.
Biliyor musun?
Rus Mir uzay istasyonu, güneş yönünü korumak için 11 jiroskop kullandı. Hubble Uzay Teleskobu, gözlemler sırasında teleskobun doğru doğrultuyu korumasına yardımcı olan altı navigasyon jirosuna sahiptir.
Son yıllarda, bazı kurnaz mühendisler başarılı bir şekilde mikro işlenmiş jiroskoplar yaptılar. Bu MEMS (mikroelektromekanik sistem) jiroskopları, hareket tanıma, gelişmiş oyun, artırılmış gerçeklik, panoramik fotoğraf çekimi, araç navigasyonu, fitness izleme ve daha fazlası gibi tamamen yeni bir dizi yenilikçi uygulamanın yolunu açtı.Hiç şüphe yok ki jiroskop ve ivmeölçer kendi yöntemleriyle harika. Ancak bunları birleştirdiğimizde, bir nesnenin yönelimi hakkında çok doğru bilgiler elde edebiliriz. MPU6050 burada devreye giriyor. MPU6050, hem bir jiroskop hem de ivmeölçere sahip olup, bunu kullanarak üç eksenin tümü boyunca dönüşü, yerçekimine bağlı statik ivmeyi ve ayrıca hareket, şok veya titreşim nedeniyle dinamik ivmeyi ölçebiliriz.MPU6050'yi Arduino projemizde kullanmadan önce, ivmeölçerlerin ve jiroskopların gerçekten nasıl çalıştığını görmek güzel olurdu.
İvmeölçer Nasıl Çalışır?
İvmeölçerlerin nasıl çalıştığını bilmek için, genellikle bir 3B küp içinde bir top hayal etmek yararlıdır.
Diyelim ki, küp her şeyin ağırlıksız olduğu uzayda, top basitçe küpün ortasında yüzecek.Şimdi her duvarın belirli bir ekseni temsil ettiğini düşünelim.
Aniden kutuyu taşımak, hızlanma 1 g (tek bir G-kuvveti 1 g / yerçekimi ivmesi 9.8 m eşdeğerdir s sol 2 ), bir Biz kuvvetinin ölçülmesi durumunda bilyeli geçerli olduğu topu duvar X vuracak şüphe X duvarına X ekseninde 1g çıktı değeri alabiliriz.
Bakalım o küpü Dünya'ya koyarsak ne olacak. Top basitçe Z duvarına düşecek ve aşağıdaki resimde gösterildiği gibi 1g'lik bir kuvvet uygulayacaktır:
Bu durumda kutu hareket etmiyor ancak yine de Z ekseninde 1g okuması alıyoruz. Bunun nedeni, yerçekimi kuvvetinin topu 1g kuvveti ile aşağı doğru çekmesidir.
İvme ölçer, eğim algılama uygulamalarında yerçekiminin statik ivmesini ve ayrıca hareket, şok veya titreşimden kaynaklanan dinamik ivmeyi ölçer.
MEMS İvme Ölçer Nasıl Çalışır?
MEMS (Mikro Elektro Mekanik Sistemler) ivmeölçer, silikon bir plaka üzerine inşa edilmiş mikro işlenmiş bir yapıdan oluşur.
Bu yapı polisilikon yaylar ile askıya alınmıştır. Belirli eksene ivme uygulandığında yapının sapmasına izin verir.
Sapma nedeniyle, sabit plakalar ve asılı yapıya takılan plakalar arasındaki kapasite değişir. Kapasitanstaki bu değişiklik, o eksendeki ivme ile orantılıdır.
Sensör, kapasitanstaki bu değişikliği işler ve bunu bir analog çıkış voltajına dönüştürür.
Jiroskop Nasıl Çalışır?
İvmeölçerler doğrusal ivmeyi ölçerken, MEMS jiroskopları açısal dönüşü ölçer. Bunu yapmak için Coriolis Etkisi olarak bilinen şeyin ürettiği gücü ölçerler .
Coriolis etkisi
Coriolis Etkisi bize, bir kütlenin (m) belirli bir yönde (v) hızıyla hareket ettiğinde ve bir dış açısal oran (Ω) uygulandığında (Kırmızı ok); Coriolis Etkisi, kütlenin dikey olarak yer değiştirmesine neden olan bir kuvvet (Sarı ok) üretir. Bu yer değiştirmenin değeri, uygulanan açısal hız ile doğrudan ilişkilidir.
Şimdi, sürekli olarak zıt yönlerde hareket etmeleri için sürekli salınım hareketinde tutulan iki kütlenin olduğunu varsayalım. Açısal hız uygulandığında, her kütle üzerindeki Coriolis etkisi de zıt yönlerdedir, bu da aralarındaki kapasitansta bir değişikliğe neden olur; bu değişiklik hissedilir.
MEMS Jiroskopu Nasıl Çalışır?
MEMS sensörü, coriolis etkisine tepki verecek şekilde sürekli salınımlı bir hareket halinde tutulan bir dayanıklı kütleden (4 parça M1, M2, M3 ve M4 içerir) oluşur. Yatay düzlemde aynı anda içe ve dışa doğru hareket ederler.
Yapıyı döndürmeye başladığımızda, hareketli dayanıklı kütleye etki eden Coriolis kuvveti, titreşimin yönünü yataydan dikeye değiştirir.
Açısal dönüşün hangi eksene uygulandığına bağlı olarak üç mod vardır.
Rulo Modu:
Koriyolis etkisi nedeniyle X ekseni boyunca açısal bir hız uygulandığında, M1 ve M3 düzlemden yukarı ve aşağı hareket edecektir. Bu, yuvarlanma açısının değişmesine neden olur, dolayısıyla buna Dönme Modu denir.
Adım Modu:
Y ekseni boyunca açısal bir oran uygulandığında, M2 ve M4 yukarı ve aşağı hareket edecektir. Bu, eğim açısının değişmesine neden olur, dolayısıyla Pitch Modu olarak adlandırılır.
Yaw Modu:
Z ekseni boyunca bir açısal oran uygulandığında, M2 ve M4 aynı yatay düzlemde zıt yönlerde hareket edecektir. Bu, yalpalama açısının değişmesine neden olur ve buna Yalpalama Modu denir.
Koriolis etkisi tespit edildiğinde, tahrik eden kütlenin sürekli hareketi, algılama yapısı tarafından alınan ve ardından bir voltaj sinyaline dönüştürülen bir kapasitans değişikliğine (∆C) neden olacaktır.
Bilginiz olsun diye, 3 eksenli bir dijital jiroskopun MEMS yapısının kalıbı budur. ST Microelectronics'ten kesilmiş L3GD20HTR MEMS jiroskopunun görüntüsünü paylaştığı için Adam McCombs'a teşekkürler.
MPU6050 Modül Donanımına Genel Bakış
Modülün merkezinde, 3 eksenli bir jiroskop, 3 eksenli ivmeölçer ve bir Dijital Hareket İşlemcisini (DMP) bir araya getiren düşük güçlü, ucuz 6 eksenli MotionTracking çipi, tümü küçük 4 mm x 4 mm'lik bir pakette bulunur.
Üç eksen boyunca açısal momentumu veya dönüşü, yerçekimine bağlı statik ivmeyi ve ayrıca hareket, şok veya titreşimden kaynaklanan dinamik ivmeyi ölçebilir.
Modül, yerleşik bir LD3985 3.3V regülatör ile birlikte gelir, böylece onu Arduino gibi bir 5V mantık mikrodenetleyici ile endişelenmeden kullanabilirsiniz.
MPU6050, ölçümler sırasında 3.6mA'dan daha az ve boşta iken yalnızca 5μA tüketir. Bu düşük güç tüketimi, pille çalışan cihazlarda uygulamaya izin verir.
Ek olarak, modülde, modüle güç verildiğinde yanan bir güç LED'i vardır.
İvme Ölçümü
MPU6050, programlanabilir dört tam ölçek aralığı ± 2g, ± 4g, ± 8g ve ± 16g olan çip üzeri ivmeölçeri kullanarak ivmeyi ölçebilir.
MPU6050, aynı anda hareketin 3 eksenini (X, Y ve Z ekseni boyunca) örnekleyen üç 16 bit analogdan dijitale dönüştürücüye sahiptir.
Rotasyon Ölçümü
MPU6050, ± 250 ° / sn, ± 500 ° / sn, ± 1000 ° / sn ve ± 2000 ° / sn'lik dört programlanabilir tam ölçek aralığına sahip çip üstü jiroskopunu kullanarak açısal dönüşü ölçebilir.
MPU6050, eşzamanlı olarak 3 dönme eksenini (X, Y ve Z ekseni etrafında) örnekleyen üç adet 16 bit analogdan dijitale dönüştürücüye sahiptir. Örnekleme hızı, saniyede 3,9 ila 8000 örnek arasında ayarlanabilir.
Sıcaklık Ölçümü
MPU6050, -40 ila 85 ° C aralığındaki sıcaklığı ± 1 ° C hassasiyetle ölçebilen yerleşik bir sıcaklık sensörü içerir.
Bu sıcaklık ölçümünün silikon kalıbın kendisi için olduğunu ve ortam sıcaklığından olmadığını unutmayın. Bu tür ölçümler genellikle ivmeölçer ve jiroskopun kalibrasyonunu dengelemek veya mutlak sıcaklıkları ölçmek yerine sıcaklık değişikliklerini tespit etmek için kullanılır.
I2C Arayüzü
Modül, Arduino ile iletişim için I2C arayüzünü kullanır. İki ayrı I2C adresini destekler: 0x68 HEX ve 0x69 HEX . Bu, iki MPU6050'nin aynı veri yolunda kullanılmasına veya veri yolundaki başka bir cihazla adres çakışmalarını önlemeye izin verir.
ADO pini, modülün I2C adresini belirler. Bu pim yerleşik bir 4.7K aşağı çekme direncine sahiptir. Bu nedenle ADO pimi bağlanmamış ayrılırken, varsayılan I2C adresi 0x68 olan HEX ve 3.3V bağladığınızda, çizgi YÜKSEK çekilir ve I2C adresi 0x69 olur HEX .
Harici Sensör Ekleme
Doğruluk düzeyini daha da artırmak için MPU6050 modülü, harici sensörleri bağlamak için bir özellik sağlar. Bu harici sensörler, ana I2C veri yolundan tamamen bağımsız olan ikinci bir I2C veri yolu (XDA ve XCL) aracılığıyla MPU6050'ye bağlanır.
Bu harici bağlantı genellikle manyetik alanları üç eksende ölçebilen bir manyetometre bağlamak için kullanılır. MPU6050, ivmeölçer ve jiroskop için üçer adet olmak üzere 6 Serbestlik Derecesine (DOF) sahiptir. Bir manyetometre eklemek sensöre fazladan üç DOF ekleyerek onu 9 DOF yapar.
MPU6050 Modül Bağlantıları
MPU6050 modülünün pin açıklamaları aşağıdaki gibidir:
VCCmodül için güç kaynağıdır. Arduino'nun 5V çıkışına bağlayın.
GND Arduino'nun zeminine bağlanmalıdır.
SCLbir I2C Clock pinidir. Bu, Bus Master cihazı tarafından sağlanan bir zamanlama sinyalidir. Arduino'daki SCL pinine bağlayın.
SDAbir I2C Veri pinidir. Bu hat hem gönderme hem de alma için kullanılır. Arduino'daki SDA pinine bağlayın.
XDAharici I2C veri hattıdır. Harici I2C veri yolu, harici sensörleri bağlamak içindir.
XCL harici I2C saat hattıdır.
AD0MPU6050 modülünün dahili I2C adresini değiştirmenize olanak sağlar. Modül başka bir I2C cihazıyla çakışıyorsa veya aynı I2C veriyolunda iki MPU6050 kullanmak istiyorsanız kullanılabilir. ADO pimi bağlanmamış bırakın, varsayılan I2C adresi 0x68 olan HEX ve 3.3V bağladığınızda, I2C adresi 0x69 olur HEX .
INTKesinti Çıkışıdır. MPU6050, hareket algılama, kaydırma, yakınlaştırma, kaydırma, dokunma algılama ve sarsıntı algılamada kesintiyi artıracak şekilde programlanabilir.
Arduino ile Kablolama MPU6050 Modülü
Bağlantılar oldukça basit. VCC pinini Arduino'daki 5V çıkışına bağlayarak başlayın ve GND'yi toprağa bağlayın.
Şimdi I2C iletişimi için kullanılan pinlerde kaldık. Her Arduino Board'un uygun şekilde bağlanması gereken farklı I2C pinlerine sahip olduğunu unutmayın. R3 düzenine sahip Arduino kartlarında, SDA (veri hattı) ve SCL (saat hattı), AREF pinine yakın pin başlıkları üzerindedir. A5 (SCL) ve A4 (SDA) olarak da bilinirler.
Farklı bir Arduino kartı kullanıyorsanız, lütfen aşağıdaki tabloya bakın.
SCL
SDA
Arduino Uno
A5
A4
Arduino Nano
A5
A4
Arduino Mega
21
20
Leonardo / Mikro
3
2
Aşağıdaki şema, her şeyi nasıl bağlayacağınızı gösterir.
Kütüphane Kurulumu
MPU6050 modülünün kurulması ve çalıştırılması nispeten kolaydır ve cihazın ham veri çıkışını yakalar. Bununla birlikte, verileri anlamlı bir şeye dönüştürmek daha zordur, ancak cihazı kullanmak için bazı kitaplıklar mevcuttur.
Kitaplığı kurmak için Sketch> Dahil Et> Kitaplıkları Yönet'e gidin … Kitaplık Yöneticisinin kitaplıklar dizinini indirmesini ve kurulu kitaplıkların listesini güncellemesini bekleyin.
Aramanızı 'mpu6050' yazarak filtreleyin . Birkaç giriş olmalı. Arayın Adafruit MPU6050 Kütüphanesi tarafından Adafruit . Bu girişe tıklayın ve ardından Yükle'yi seçin.
Arduino Kodu - İvme Ölçer, Jiroskop ve Sıcaklık Verilerini Okuma
Her şeyi bağladığınızda aşağıdaki çizimi çalıştırmayı deneyin. MPU6050 modülünden doğrusal ivmeyi, açısal dönüşü ve sıcaklığı nasıl okuyacağınız konusunda size eksiksiz bir anlayış verecektir ve daha pratik deneyler ve projeler için temel oluşturabilir.
#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>
#include <Wire.h>
Adafruit_MPU6050 mpu;
voidsetup(void) {
Serial.begin(115200);
// Try to initialize!if (!mpu.begin()) {
Serial.println("Failed to find MPU6050 chip");
while (1) {
delay(10);
}
}
Serial.println("MPU6050 Found!");
// set accelerometer range to +-8G
mpu.setAccelerometerRange(MPU6050_RANGE_8_G);
// set gyro range to +- 500 deg/s
mpu.setGyroRange(MPU6050_RANGE_500_DEG);
// set filter bandwidth to 21 Hz
mpu.setFilterBandwidth(MPU6050_BAND_21_HZ);
delay(100);
}
voidloop() {
/* Get new sensor events with the readings */
sensors_event_t a, g, temp;
mpu.getEvent(&a, &g, &temp);
/* Print out the values */
Serial.print("Acceleration X: ");
Serial.print(a.acceleration.x);
Serial.print(", Y: ");
Serial.print(a.acceleration.y);
Serial.print(", Z: ");
Serial.print(a.acceleration.z);
Serial.println(" m/s^2");
Serial.print("Rotation X: ");
Serial.print(g.gyro.x);
Serial.print(", Y: ");
Serial.print(g.gyro.y);
Serial.print(", Z: ");
Serial.print(g.gyro.z);
Serial.println(" rad/s");
Serial.print("Temperature: ");
Serial.print(temp.temperature);
Serial.println(" degC");
Serial.println("");
delay(500);
}
Çizimi denemek için seri monitörünüzü 115200 baud hıza ayarlamanız gerektiğini unutmayın. MPU6050'den çok fazla veri geri gönderildiği için, onu görüntülemek için bu daha yüksek hıza ihtiyaç duyar.
Doğrusal hızlanma, açısal dönüş ve sıcaklık değerlerini gösteren sayısız veri göreceksiniz. Sensörünüzü hareket ettirmeyi deneyin ve verilerin nasıl değiştiğine dikkat edin.
Kod Açıklaması:
İlk adım, gerekli tüm Arduino kitaplıklarını dahil etmektir. Daha önce belirtildiği gibi, Adafruit_MPU6050 kitaplığı MPU6050'nin donanım işlevlerini ve Adafruit_Sensor kitaplığını birleşik sensör soyutlama katmanını uygular. Arduino IDE'ye önceden yüklenmiş olarak gelen Wire kütüphanesini de eklemeniz gerekecektir. Bu kütüphane, I2C cihazlarıyla iletişim kurmamızı sağlar.
Ardından, ilgili işlevlere erişebilmemiz için Adafruit_MPU6050 sınıfının yeni bir örneği oluşturulur.
Adafruit_MPU6050 mpu;
Kodun kurulum bölümünde öncelikle PC ile seri haberleşmeyi başlatıp begin()fonksiyonu çağırıyoruz . begin()Çip İD doğru olup olmadığını fonksiyon I2C arayüzü ve kontroller başlatır. Ardından, yumuşak sıfırlama kullanarak çipi sıfırlar ve uyandıktan sonra kalibrasyon için sensör için bekler.
Serial.begin(115200);
// Try to initialize!if (!mpu.begin()) {
Serial.println("Failed to find MPU6050 chip");
while (1) {
delay(10);
}
}
Oluşturduğunuz cihaz nesnesini kullanmadan önce, kullanmak istediğiniz hassasiyet aralığı ile onu başlatmalısınız. Aşağıda, MPU6050'nin ölçüm aralığını ayarlayan üç işlev bulunmaktadır.
setAccelerometerRange ( mpu6050_accel_range_t )
setAccelerometerRange()Fonksiyon ivmeölçer aralığını belirler. 'SetAccelerometerRange' için izin verilen değerler şunlardır:
MPU6050_RANGE_2_G - ± 2g aralığı için (varsayılan)
MPU6050_RANGE_4_G - ± 4g aralığı için
MPU6050_RANGE_8_G - ± 8g aralığı için
MPU6050_RANGE_16_G - ± 16g aralığı için
Aralık ne kadar küçükse ivmeölçerden gelen okumaların o kadar hassas olacağını unutmayın.
setGyroRange ( mpu6050_gyro_range_t )
setGyroRange()Fonksiyon ivmeölçer aralığını belirler. 'SetGyroRange' için izin verilen değerler şunlardır:
MPU6050_RANGE_250_DEG - saniyede 250 derece aralık için (varsayılan)
MPU6050_RANGE_500_DEG - saniyede 500 derece aralık için
MPU6050_RANGE_1000_DEG - saniyede 1000 derece aralığı için
MPU6050_RANGE_2000_DEG - saniyede 2000 derece aralığı için
Daha küçük bir saniye başına derece aralığının daha hassas bir çıktı anlamına geldiğini unutmayın.
setFilterBandwidth ( mpu6050_bandwidth_t )
setFilterBandwidth()Fonksiyon dijital alçak geçiren filtre bant genişliği seçenekleri ayarlar. 'SetFilterBandwidth' için izin verilen değerler şunlardır:
MPU6050_BAND_260_HZ, - 260 Hz bant genişliği için (Dokümanlar bunun filtreyi devre dışı bıraktığını belirtmektedir)
MPU6050_BAND_184_HZ, - 184 Hz bant genişliği için
MPU6050_BAND_94_HZ, - 94 Hz bant genişliği için
MPU6050_BAND_44_HZ, - 44 Hz bant genişliği için
MPU6050_BAND_21_HZ, - 21 Hz bant genişliği için
MPU6050_BAND_10_HZ, - 10 Hz bant genişliği için
MPU6050_BAND_5_HZ, - 5 Hz bant genişliği için
Jiroskobun çıktı verileri, düşük geçişli bir filtre ile filtrelenir. Bant genişliği seçimi, bu filtrenin kesme frekansını değiştirmenize olanak tanır. Bant genişliği ayarının yaptığı tek şey, yüksek frekanslı gürültüyü kaldırarak sinyali biraz yumuşatmaktır.
Deneyimiz için ivmeölçer aralığını ± 8G, jiroskop aralığı ± 500 ° / s ve filtre bant genişliğini 21 Hz olarak ayarlıyoruz.
Ölçüm aralığı veya tam ölçekli aralık, MPU6050'nizin okuyabileceği maksimum ivme veya açısal hızdır. Neyi ölçtüğünüzü düşünün ve buna göre limitler belirleyin. Bir plak çarkının (çok yavaş olan) veya dönen bir çarkın (çok hızlı olabilen) dönüşünü ölçmeniz gerekiyor mu?
Kodun döngü bölümünde, sensors_event_tsonuçlarımızı tutmak için önce bellekte bir nesne oluşturuyoruz . sensors_event_tsadece hızlanma, cayro, sıcaklık, ışık, basınç ve çok daha fazlası gibi birçok sensör verisini tutan kullanıcı tanımlı bir veri türüdür (C'deki Yapılar). Github'da bununla ilgili daha fazla bilgi edinebilirsiniz .
sensors_event_t a, g, temp;
Sonra, getEvent()fonksiyon diyoruz . Bu işlev, sensörünüzden yeni bir değerler kümesini (bir sensör 'olayı') okur, bunları uygun SI birimlerine ve ölçeğe dönüştürür ve ardından sonuçları nesnemize atar mpu. Bu, sensörünüzü 'okumak' için aradığınız işlevdir!
Sadece MPU6050'den gelen ham verilere bakmak hiçbir işe yaramayacaktır. MPU6050'nizin hareket ettirdiğinizde nasıl tepki vereceğini gerçekten görmek istiyorsanız, Seri Plotter'ı kullanın .
Arduino IDE, seri çizici adı verilen harika bir araçla birlikte gelir. Size değişkenlerin gerçek zamanlı olarak görselleştirilmesini sağlayabilir. Bu, verileri görselleştirmek, kodunuzu gidermek ve değişkenlerinizi dalga formları olarak görselleştirmek için çok kullanışlıdır.
Aşağıdaki yeni kodla deneyelim. Aşağıdaki programı derleyin ve yükleyin, ardından Araçlar> Seri Plotter'a (Ctrl + Shift + L) gidin . Kod 115200 baud hızı kullanır, seri çizicide 115200 olarak ayarlandığından emin olun.
#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>
#include <Wire.h>
Adafruit_MPU6050 mpu;
voidsetup(void) {
Serial.begin(115200);
// Try to initialize!if (!mpu.begin()) {
Serial.println("Failed to find MPU6050 chip");
while (1) {
delay(10);
}
}
// set accelerometer range to +-8G
mpu.setAccelerometerRange(MPU6050_RANGE_8_G);
// set gyro range to +- 500 deg/s
mpu.setGyroRange(MPU6050_RANGE_500_DEG);
// set filter bandwidth to 21 Hz
mpu.setFilterBandwidth(MPU6050_BAND_21_HZ);
delay(100);
}
voidloop() {
/* Get new sensor events with the readings */
sensors_event_t a, g, temp;
mpu.getEvent(&a, &g, &temp);
/* Print out the values */
Serial.print(a.acceleration.x);
Serial.print(",");
Serial.print(a.acceleration.y);
Serial.print(",");
Serial.print(a.acceleration.z);
Serial.print(", ");
Serial.print(g.gyro.x);
Serial.print(",");
Serial.print(g.gyro.y);
Serial.print(",");
Serial.print(g.gyro.z);
Serial.println("");
delay(10);
}
Modülü Z ekseni boyunca yukarı ve aşağı hareket ettirirken buna benzer bir şey görmelisiniz.
Kod Açıklaması:
Aşağıdakiler dışında, bu çizimin çoğunun önceki çizimle tamamen aynı olduğunu fark edeceksiniz:
Sıcaklık okumaları yazdırılmaz
Diğer tüm okumalar, virgülle ayrılmış bir değerler listesi oluşturacak şekilde yazdırılır
Sayfalarımı ziyaret ettiğiniz için teşekkür ederim.Bu sitede mevcut olan içerikler kendi oluşturduğum projeler yazı,resim ve videolardan oluşmaktadır.İçerik oluşturmak çok uzun sürdüğü için bazı projelerde yurtdışı kaynaklardan faydalandım.Buradaki amacım ticari değildir.Kaynağı belli olan ve bizim kaynağına ulaşabildiğimiz materyal (yazı, fotoğraf, resim, video v.b.) için ilgili konularda fotoğraflarda logo varsa v.b. not olarak gösterilecektir.Sitemizde yayınlanan tüm içerik, bizim tarafımızdan ve internet üzerinden youtube, facebook ve blog gibi paylaşıma sunulmuş kaynak sitelerden alındığı için, sitemiz yasal yükümlülüğe tabi tutulamaz. Sitemizde telif haklarının size ait olduğu bir içerik varsa ve bunu kaldırmamızı isterseniz, iletişim sayfamızdan bizimle iletişime geçtiğiniz takdirde içerik yayından kaldırılacaktır.Bu konu ve modüller ile uğraşarak, ileride çok güzel makine ve elektronik aletler yapabilirsiniz.