
12 görselden oluşan yığın. Yöntem=B (R=44,S=4)
Günümüzün teknoloji ve elektronik dünyasında, MEMS (Mikro-Elektro-Mekanik Sistemler) sensörleri robotikten ev otomasyonuna ve giyilebilir cihazlara kadar her türlü proje için önemli bir araç haline gelmiştir. İvmeölçerleri ve jiroskopları birleştiren modüller, örneğin MPU6050 y el LSM9DS1, çok yönlülükleri, düşük maliyetleri ve Arduino ve diğer platformlar gibi mikrodenetleyicilerle kolay entegrasyonları sayesinde en popüler seçeneklerden ikisidir. Çalışmaları, benzersiz özellikleri, farklılıkları ve hatta bunlardan yararlanmanın en iyi yolunun kapsamlı bir şekilde anlaşılması, hassas sistemler tasarlamak için önemlidir. Hareketi, yönelimi ve eğimi ölçün.
Bu yazıda sensörler hakkında bilmeniz gereken her şeyi adım adım anlatacağız MPU6050 y LSM9DS1: nasıl çalıştıkları, hangi uygulamalara sahip oldukları, bunları projenize nasıl entegre edeceğiniz, kalibre edeceğiniz, okumalarını doğru şekilde yorumlayacağınız ve yeteneklerinden en iyi şekilde nasıl yararlanacağınız, en iyi eğitimlerde ve teknik makalelerde toplanan bilgileri, yakın dille pratik ve güncel bir vizyon altında birleştirerek, böylece profesyonel sonuçlara ulaşmak gelişmelerinizde.
MEMS sensörü nedir ve nasıl çalışır?
MPU6050 ve LSM9DS1'in belirli modellerine geçmeden önce, kavramın netleştirilmesi önemlidir. MEMS sensörüBu cihazlara ayrıca şunlar da denir: Mikroelektromekanik Sistemler, mikroskobik mekanik bileşenleri ve elektronik devreleri tek bir çipte birleştirerek, ivmeler, dönüşler veya titreşimler gibi fiziksel değişimleri algılayıp bunları dijital sistemler tarafından yorumlanabilen elektrik sinyallerine dönüştürebilirler.
MEMS ivmeölçer ve jiroskopların çalışması şu prensiplere dayanmaktadır:
- Newton'un ivme yasası (a = F/m), mikroskobik kütleler ve yaylar gibi davranan iç yapıları kullanır.
- Coriolis etkisi, küçük kütlelerin çip içerisinde dönerken yaşadıkları sapmadan yararlanarak açısal hareketleri tespit etmek için kullanılır.
- Fiziksel değişimleri yüksek çözünürlüklü dijital değerlere (genellikle 16 bit) dönüştüren dahili ADC dönüştürücüler.
Bu yetenekler, MEMS'i aşağıdaki uygulamalarda son derece kullanışlı hale getirir: yönelim, eğim veya hareketin ölçümü Üç boyutlu olarak navigasyon sistemleri, kamera sabitleme, akıllı saatler, drone'lar, robotlar ve daha fazlası gibi.
MPU6050'nin ana özellikleri
El MPU6050 Üç eksende ivme ve dönüşü ölçmek için ekonomik ve güvenilir bir çözüm arayan üreticiler, mühendisler ve hobiciler arasında muhtemelen en yaygın kullanılan MEMS hareket sensörüdür.
Başlıca teknik özellikleri şunlardır:
- 3 eksenli ivmeölçer:X, Y ve Z eksenlerindeki ivmeleri algılayabilme özelliğine sahip olup, ±2g, ±4g, ±8g ve ±16g programlanabilir aralıklara sahiptir.
- 3 eksenli jiroskop: Her üç eksendeki açısal hızları saniyede ±250, ±500, ±1000 ve ±2000 derecelik ayarlanabilir hassasiyetle ölçer.
- Dijital hareket işlemcisi (DMP): Karmaşık hesaplamaları gerçekleştirmeye adanmış dahili bir mikroişlemci içerir Hareket Füzyonu (sensör füzyonu), ana mikrodenetleyiciye bu hesaplamaları yüklemeye gerek kalmadan, kuaterniyonlar, Euler açıları ve dönüş matrisleri gibi verileri hesaplamak.
- I2C üzerinden dijital çıkış: İki olası adrese sahip I2C veri yolu üzerinden haberleşme (pin AD0 ile 0x68 veya 0x69 üzerinden yapılandırılabilir), çoğu Arduino, ESP ve benzeri kartlarla çalışmasına olanak tanır.
- 16-bit ADC dönüştürücü: Veri toplamada yüksek çözünürlük sunar.
- Entegre sıcaklık sensörü
- Harici bir manyetometre ile genişletme olanağı: I2C yardımcı veri yolu üzerinden MPU6050, popüler HMC5883L (manyetometre) gibi diğer bağlı sensörleri okuyarak eksiksiz bir 9 eksenli IMU oluşturabilir.
- Esnek çalışma voltajı: GY-3,3 gibi regülatör içeren bir anakart kullanılırsa 5V hatta 521V ile çalıştırılabilir.
Ayrıca modülün kompakt boyutları (yaklaşık 25 x 15 mm) ve breadboard'a entegre edilmeye hazır bir şekilde gelmesi, onu hem test hem de son geliştirme için ideal hale getiriyor.
LSM9DS1 nedir ve farkı nedir?
Buna karşılık, LSM9DS1 Başlangıç projelerinde MPU6050'den daha az popüler olmasına rağmen, MEMS IMU ailesi içinde daha gelişmiş ve modern bir seçenektir. Aşağıdakileri tek bir çipte entegre eder:
- Un 3 eksenli ivmeölçer
- Un 3 eksenli jiroskop
- Un manyetometre ayrıca 3 eksenli
Bu, LSM9DS1'in bir 9 DoF (Özgürlük Derecesi) IMU, üç boyutlu ivmeyi, açısal hızı ve Dünya'nın manyetik alanını ölçmenize olanak tanır ve eksiksiz ve doğru okumalar sağlar mutlak konum ve yönelim Dünya ile ilgili olarak.
MPU6050'ye göre başlıca avantajları şunlardır:
- Üç sensörü tek bir fiziksel çipte birleştirir, yerden tasarruf sağlar ve bağlantıları basitleştirir.
- Her ikisi aracılığıyla da iletişim kurabilirsiniz I2C SPI olarakBu da ona farklı platformlar için daha fazla çok yönlülük kazandırıyor.
- Her bir sensörün (ivmeölçer, jiroskop, manyetometre) aralıkları ve hassasiyetleri daha esnek bir şekilde yapılandırılabilir.
- Gelişmiş dijital filtreleme ve olay algılama seçeneklerine sahiptir.
LSM9DS1, ek harici sensörlere ihtiyaç duyulmadan mutlak yönelimin gerekli olduğu projeler (örneğin pusulalar, navigasyon sistemleri veya uçuş stabilizasyonu) için sıklıkla tercih edilir.
MEMS ivmeölçer ve jiroskopların çalışma prensipleri
Bu MEMS modüllerinin nasıl çalıştığını gerçekten anlamak için fiziksel kavramları ve bunların dijital verilere nasıl dönüştürüldüğünü anlamak önemlidir:
ivmeölçer
Un MEMS ivmeölçer bir nesnenin ivmesini (zaman içindeki hız değişimini) uzayın üç eksenine göre ölçer. Dahili olarak, bir varlığına dayanır mikroskobik asılı kütle esnek ankrajlar veya küçük yaylar tarafından. Sensör ivmelendiğinde, bu kütle hafifçe kayar ve bu değişim değişken veya piezoelektrik kapasitörler kullanılarak bir elektrik sinyaline dönüştürülür.
- İvmeölçer her zaman en az bir ivme algılar: yerçekimi (9,81 m / s2), sensör hareketsiz olsa bile.
Bu, yatay düzleme göre eğimi hesaplamak için kullanılır. - İvmenin zamana göre entegre edilmesiyle hız ve dolayısıyla gidilen konum elde edilebilir, ancak bu işlemler hata biriktirme eğilimindedir.
Jiroskop
El MEMS jiroskopu kullan coriolis etkisi bir cismin X, Y ve Z eksenleri etrafında dönme hızını algılamak için. Sensör bir dönüş yaşadığında, iç titreşimli kütleler, buna orantılı bir sapmaya maruz kalır açısal hızve bu değişim elektronik olarak ölçülmektedir.
- Jiroskop ölçümleri açısal hız: Sensörün yöneliminin her eksende ne kadar hızlı değiştiği.
- Açısal hızın zamanla entegre edilmesi, dönüş açısını (açısal konumu) verir, ancak bu işlem, açısal hız adı verilen kümülatif hatalar üretir. sürüklenme.
İvmeölçer ve jiroskop neden bir arada kullanılır?
Hem ivmeölçerlerin hem de jiroskopların, bir nesnenin yönelimini belirlemede kendi başlarına sınırlamaları vardır:
- İvmeölçer: Dikey eksene göre eğimleri algılamada hassas (yerçekimi kullanarak), ancak ani hareketlere, dış ivmelere veya titreşimlere karşı çok hassastır.
- Jiroskop: Hızlı yönelim değişikliklerini ölçmek için idealdir, ancak çıktıları uzun bir zaman periyoduna yayıldığında hata birikimi sorunu yaşanır.
Bu nedenle çoğu uygulama her iki sensörden gelen verileri birleştirir, bu da okumaların doğruluğunu ve güvenilirliğini büyük ölçüde artırır. açı, eğim veya konumBunu başarmak için kullanılırlar dijital işleme filtreleri Örneğin, her bir sensörün avantajlarını bir araya getiren ve değerlendiren Tamamlayıcı filtre veya Kalman filtresi gibi.
MPU6050 ile başlarken: bağlantı ve kütüphaneler
Tipik bağlantı şeması
Modül MPU6050 Genellikle bir plaka tipi üzerine monte edilir GY-521Arduino gibi mikrodenetleyicilerle entegrasyonu büyük ölçüde kolaylaştırmaktadır.
Modülü I2C modunda kullanmak için temel bağlantılar genellikle şunlardır:
MPU6050 | Arduino Uno/Nano/Mini | Arduino Mega/SONU | Arduino Leonardo |
---|---|---|---|
VCC | 5V | 5V | 5V |
GND | GND | GND | GND |
SCL | A5 | 21 | 3 |
SDA | A4 | 20 | 2 |
Modülde pull-up dirençleri yerleşik olduğundan, bunları dışarıdan eklemenize genellikle gerek yoktur.
I2C adresi ve AD0 pini
MPU6050, I2C adresini yapılandırmanıza olanak tanır 0x68 (varsayılan olarak, AD0 pini GND'de olduğunda veya bağlı olmadığında) veya 0x69 (AD0 yüksek/5V'a bağlandığında). Bu, aynı veri yolunda birden fazla sensörün kullanılmasını kolaylaştırır.
Önerilen kütüphane: Jeff Rowberg'in I2Cdevlib'i
Arduino'da MPU6050 ile rahat bir şekilde çalışabilmek için topluluk aşağıdaki kütüphanelerin kullanılmasını öneriyor:
- I2Cdev:Birçok sensörle I2C haberleşmesini kolaylaştırır.
- MPU6050: Tüm sensör fonksiyonlarına erişmenizi, kalibre edilmiş değerleri, ofsetleri okumanızı ve DMP'yi kullanmanızı sağlar.
Bunlar şu şekilde mevcuttur: https://github.com/jrowberg/i2cdevlib
İndirdikten sonra, bunları açıp klasöre koymanız yeterli kütüphaneler Arduino IDE'sinden.
Temel verilerin okunması: ivme ve açısal hız
MPU6050 bağlandıktan ve yapılandırıldıktan sonraki adım, ivme ve açısal hız okumaları üç eksende. Yukarıda belirtilen kütüphaneyi kullanan temel süreç şunları içerir:
- Sensörü şu işlevi kullanarak başlatın: sensör.başlat().
- Bağlantıyı kontrol edin sensör.testBağlantısı().
- İvmeölçer ve jiroskoptan gelen RAW (işlenmemiş) değerleri ivmelenme için ax, ay, az, spin için gx, gy, gz gibi değişkenlere dönüştürün.
- Sonuçları görüntülemek için verileri seri porta gönderin.
Bu veri aralığında 16 bitlik tam sayılar olarak görünür.
MPU6050 sensörünün kalibre edilmesi
MPU6050'yi kullanırken önemli aşamalardan biri şudur: ayarlamaSensörün, çipi modüle lehimleme sırasında olası yanlış hizalamalardan veya hatta küçük üretim kusurlarından dolayı, tamamen yatay ve hareketsiz durumda olsa bile sıfırdan farklı değerler döndürmesi çok yaygındır.
Sensörün kalibre edilmesi, sensörün ivmeölçer ve jiroskop ofsetleri her eksende ve bunları sensörde yapılandırın, böylece okumalar doğru bilgilere dayanır. Tipik bir süreç şunlardan oluşabilir:
- Şu fonksiyonlar kullanılarak mevcut ofsetler okunabilir: XAccelOffset'i al(), getYAccelOffset(), vb.
- Sensörü yatay pozisyonda ve tamamen hareketsiz bir şekilde yerleştirin.
- Bir program kullanarak, filtrelenmiş okumalar (örneğin, hareketli ortalama veya düşük geçişli filtre kullanarak) ideal değerlere yakınsayana kadar ofsetleri ayarlayın: ax = 0, ay = 0, az = 16384, gx = 0, gy = 0, gz = 0 ham modda (RAW).
- Bu değerleri fonksiyonlarla ayarlayın XAccelOffset'i ayarla(), setYAccelOffset(), vb.
Sensör düzgün bir şekilde kalibre edildiğinde, stabilizasyon veya navigasyon gibi kritik uygulamalar için gerekli olan çok daha doğru ve kararlı değerler sağlayacaktır.
Okumaların fiziksel birimlere ölçeklenmesi ve dönüştürülmesi
MPU6050'den alınan ham okumaların fiziksel hesaplamalarda veya veri görselleştirmelerinde yorumlanıp kullanılabilmesi için SI (Uluslararası Sistem) birimlerine dönüştürülmesi gerekir:
- Hızlanma: Varsayılan aralık ±2g'dir, bu da ±19,62 m/s'ye eşdeğerdir216384'lük bir RAW değeri 1g'ye karşılık gelir; bu nedenle, x am/s'ye dönüştürmek için2: balta * (9,81/16384.0).
- Açısal hız: Varsayılan olarak ±250°/s olduğundan dönüşüm şöyle olur: gx * (250.0 / 32768.0) RAW değerlerinden derece/saniyeye dönüştürmek için.
Sensörü başka aralıklara yapılandırırsanız bu ölçek faktörleri değişeceğinden, verileri yorumlamadan önce fabrika veya özel ayarları kontrol etmeniz önemlidir.
Eğimi yalnızca ivmeölçeri kullanarak hesaplayın
Sensör hareketsizken veya yalnızca yer çekiminin etkisi altındayken, ivmeölçer okumaları, X ve Y eksenlerine göre eğim açısıTipik matematik formülleri trigonometrik fonksiyonları kullanır:
- X Eğimi İçin: atan(ax / sqrt(ay² + az²)) × 180/π
- Y eğimi için: atan(ay / sqrt(ax² + az²)) × 180/π
Bu, yerçekimi düzlemine göre her bir eksenin eğim açısını sağlar, ancak sensör hareket halindeyse veya başka ivmeler alıyorsa, bu değerler değişebilir.
Jiroskop ile dönüş açılarının hesaplanması
Jiroskop, hesaplamayı sağlar açısal hızın entegrasyonu ile açının değişimi zamanla. Matematiksel olarak:
- Açı, belirli bir zaman aralığındaki açısal hızın integraline eşittir: θ = θ0 + ∫w·dt
Pratikte bu hesaplamalar program döngüleri içerisinde gerçekleştirilerek, açısal hız, örnekleme periyodu (dt) ile çarpılarak toplam açı elde edilebilir.
Entegrasyon hatasını kontrol etmek önemlidir, çünkü küçük hatalar birikerek sürüklenme.
Sensör füzyon filtreleri: Tamamlayıcı ve Kalman
Yorumlama hatalarını azaltmak ve her sensörden en iyi şekilde yararlanmak için veri birleştirme algoritmaları kullanılır:
Tamamlayıcı Filtre
Bu filtre, jiroskop tarafından tahmin edilen açıyı (kısa vadede iyi çalışır) ivmeölçer tarafından hesaplanan açıyla (uzun vadede daha güvenilirdir ancak gürültülüdür) birleştirir. Tipik formül şudur:
Son_açı = α × (Önceki_açı + Açısal_hız × dt) + (1-α) × İvmeölçer_açı
α genellikle 0,95 ile 0,99 arasındadır. Bu, kararlı bir okuma elde etmeyi ve sürüklenme.
Kalman filtresi
Çok daha gelişmiş olan bu filtre, her ölçümün belirsizliğini ve bunların korelasyonlarını hesaba katarak ölçümleri birleştirir ve gürültü varlığında doğru tahminler elde eder. Daha fazla hesaplama gücü gerektirmesine rağmen, navigasyon sistemlerinde ve gelişmiş robotikte yaygın olarak kullanılır.
3D simülasyon ve yönelim görselleştirme (Yaw, Pitch, Roll)
İlginç bir uygulama ise 3D yönelimin gerçek zamanlı gösterimi Bir drone veya robot gibi bir nesnenin açılarını temsil ederek Sapma, Eğim ve Yuvarlanma.
Bu, işlenmiş verilerin Seri Plotter veya hareketleri izlemek ve analiz etmek için belirli 3D programları gibi araçlar kullanılarak grafik yazılımlarına iletilmesiyle elde edilir. Bu şekilde, sisteminizin uzayda nasıl yönlendirildiğini görsel olarak anlayabilirsiniz.
Genişletilmiş okumalar: manyetometre ve LSM9DS1 sensörünün kullanımı
El LSM9DS1 tek bir çipte bir ivmeölçer, jiroskop ve manyetometreyi bir araya getirerek verilerin elde edilmesini sağlar mutlak konum ve yönelimİvme ve dönüşü ölçmenin yanı sıra, Dünya'nın manyetik alanını algılayarak şunları yapabilir:
- Hesapla mutlak azimut, navigasyon ve dijital pusulalarda kullanışlıdır.
- İlave harici sensörlere ihtiyaç duymadan rehberlik sistemleri geliştirin.
- Tüm sensörlerden gelen verileri birleştirerek son derece hassas konum ve yönelim tahmini (9-DoF) yapın.
MPU6050 ve LSM9DS1'in etkili kullanımı için pratik ipuçları
- Sensörleri her zaman kalibre edin Kritik uygulamalarda kullanımdan önce doğruluğu artırmak için.
- Modülleri motorlar veya mıknatıslar gibi elektromanyetik girişim kaynaklarının yakınına monte etmekten kaçının.
- Filtreleme tekniklerini kullanın ve örnekleme zamanlarını hassas bir şekilde kontrol edin.
- Kuzeye göre mutlak yönelim için, bir LSM9DS1 veya MPU6050'yi HMC5883L gibi harici bir manyetometre ile birleştirin.
- Gerçek zamanlı görselleştirmelerin uygulanması toplanan verilerin daha iyi yorumlanmasına yardımcı olur.
- Kitapçılar gibi i2cdevlib Bunlar işi çok daha basit hale getirir, bu yüzden geliştirmeyi kolaylaştırmak için bunlara öncelik verin.