MPU6050: Arduino ile konumlandırma modülü

MPU6050 kurulu

Bir proje oluşturmanız ve konumlandırmanız gerekirse, yani bilin nasıl yerleştirilir alanla ilgili olarak modülü kullanabilirsiniz MPU6050. Yani, bu modül, 6 serbestlik derecesine (DoF) sahip bir atalet ölçüm birimi veya IMU'dur (Atalet Ölçüm Birimi). Bu, çalışmak için uyguladığı 3 eksenli ivmeölçer tipi sensörler ve 3 eksenli bir jiroskop sayesinde.

Bu MPU6050, içerdiği nesnenin kullanım için nasıl konumlandırıldığını bilir. uygulamaları navigasyon, gonyometri, stabilizasyon, hareket kontrolü vb. Cep telefonları genellikle bu tür sensörler içerir, örneğin akıllı telefonun ters çevrildiğinde durması, video oyunlarında cep telefonunu direksiyon simidi gibi döndürerek araç sürmek gibi bazı işlevleri hareketlerle kontrol etmek için kullanılır.

İvmeölçer ve jiroskop nedir?

MEMS Örnekleri

MEMS Örnekleri

Peki, bölümlere ayrılalım. İlk şey, bu tür sensörlerin neler olduğunu görmek. hızlanma ve dönüşleri algılayabilirkendi isimlerinden de anlaşılacağı gibi.

  • ivmeölçer: hızlanmayı, yani zaman birimi başına hızdaki değişimi ölçer. Fizikte hızın zamanla değişiminin (a = dV / dt) ivmenin tanımı olduğunu unutmayın. Newton'un İkinci Yasasına göre, ayrıca a = F / m değerine sahibiz ve bu ivmeölçerlerin çalışmak için kullandıkları şeydir, yani nesnenin kuvvet ve kütle parametrelerini kullanırlar. Bunun elektronikte uygulanabilmesi için, mekanik parçalar bir MEMS'de oluşturulduğundan, geleneksel elektronik çip üretim tekniklerinden farklı olan MEMS (Mikro Elektro Mekanik Sistemler) teknikleri kullanılır. Bu durumda, ivmeleri ölçebilen izler veya elemanlar oluşturulur. Bu, hız gibi (ivme zamana entegre edilmişse), tekrar entegre edilirse, yer değiştirmemiz vb. Gibi birçok başka birimin alınabileceği anlamına gelir. Yani, bir nesnenin konumunu bilmek veya hareketini tespit etmek için çok ilginç parametreler.
  • Jiroskop: jiroskop olarak da adlandırılır, bir nesnenin açısal hızını, yani zaman birimi başına açısal yer değiştirmeyi veya bir cismin kendi ekseni etrafında ne kadar hızlı döndüğünü ölçen bir cihazdır. Bu durumda, MEMS teknikleri de Coriolis olarak bilinen bir etkiyi kullanarak bu hızı ölçmek için kullanılır. Bu sayede açısal hız ölçülebilir veya açısal hız zamana göre entegre edilerek açısal yer değiştirme elde edilebilir.

MPU6050 modülü

MPU6050 pin çıkışı

Artık ivmeölçer ve jiroskopun ne olduğunu bildiğinize göre, MPU6050 modülü Bir elemanın konumundaki bu değişiklikleri ölçmenize ve böylece bir reaksiyon oluşturmanıza olanak sağlamak için bu iki unsuru entegre eden bir elektronik panodur. Örneğin, bir nesne hareket ettiğinde bir LED'in yanması veya diğer çok daha karmaşık şeyler.

Dediğim gibi, 6 eksenli özgürlük, DoF, 3 eksenli X, Y ve Z ivme ivmeölçer ve diğer 3 eksenli jiroskop açısal hızı ölçmek için. Modülü konumlandırırken bir hata yapmamayı ve ölçümler için dönüş yönünü hesaba katmalısınız, çünkü yanlış işareti yaparsanız biraz kaotik olacaktır. Eksenlerin yönünü belirlediği aşağıdaki resme bakın (ancak, PCB'nin kendisinin de bir tarafına yazdırdığına dikkat edin):

Veri sayfası MPU6050

Bunu düşünerek ve pin çıkışı, MPU6050'yi kullanmaya başlamak için aşağı yukarı her şeye sahipsiniz. Önceki görüntüde görebileceğiniz gibi, bağlantılar oldukça basittir ve I2C iletişiminin Arduino dahil çoğu mikrodenetleyici ile uyumlu olmasını sağlar. SCL ve SDA pinleri, Arduino kartına doğrudan bağlantı için kart üzerinde bir kaldırma direncine sahiptir, bu nedenle bunları kendiniz eklemek konusunda endişelenmenize gerek yoktur.

I2C veriyolunda her iki yönde de çalışmak için, bunları kullanabilirsiniz iğneler ve yönler:

  • AD0 = 1 veya Yüksek (5v): I0C adresi 69x2 için.
  • AD0 = 0 veya Düşük (GND veya Nc): I0C veriyolunun 68x2 adresi için.

Unutmayın ki modelin çalışma voltajı 3v3, ancak neyse ki dahili bir regülatörü var, bu nedenle Arduino'nun 5v'si ile sorunsuz bir şekilde anahtarlanabilir ve 3.3v'ye dönüştürecek.

Bu arada, GND'ye karşı bir iç dirence sahip, bu pin bağlı değilse, adres varsayılan olarak 0x68 olacaktırvarsayılan olarak toprağa bağlanacağı için mantıksal 0 olarak yorumlanır.

Arduino ile entegrasyon

Arduino ve MPU6050 bağlantısı

Alabilirsiniz I2C otobüsü hakkında daha fazla bilgi Bu makalede. Arduino kartına bağlı olarak veri yolu için kullanılan pinlerin değiştiğini zaten biliyorsunuz, ancak Arduino UNO analog pin A4 ve A5, SDA (veri) ve SCL (saat) için sırasıyla. Bunlar, kullanmanız gereken karta güç veren 5v ve GND ile birlikte tek Arduino pinleridir. Böylece bağlantı mümkün olduğu kadar basit.

MPU6050'nin işlevleri için, bu bağlantıdan daha fazla bilgi alabileceğiniz kitaplıkları kullanabilirsiniz. I2C modülün ve otobüsünki MPU6050.

Arduino kart programlama MPU6050 ile çok basit değildir, bu yüzden yeni başlayanlar için değildir. Ek olarak, açıların ivme veya aralıklarının sınırlarını bilerek, hareketin veya ivmenin tam olarak ne olduğunu belirlemek için kalibre edebilirsiniz. Bununla birlikte, en azından onu kullanma hakkında nasıl yorum yapacağınıza dair bir örneğiniz olması için, bu kodu şuradan görebilirsiniz: Arduino IDE'niz için örnek taslak ivmeölçer ve jiroskop tarafından kaydedilen değerleri okuyacak:

// Bibliotecas necesarias:
#include "I2Cdev.h"
#include "MPU6050.h"
#include "Wire.h"

// Dependiendo del estado de AD0, la dirección puede ser 0x68 o 0x69, para controlar así el esclavo que leerá por el bus I2C
MPU6050 sensor;

// Valores RAW o en crudo leidos del acelerometro y giroscopio en los ejes x,y,z
int ax, ay, az;
int gx, gy, gz;

void setup() {
  Serial.begin(57600);    //Función para iniciar el puerto serie con 57600 baudios
  Wire.begin();           //Inicio para el bus I2C 
  sensor.initialize();    //Iniciando del sensor MPU6050

  if (sensor.testConnection()) Serial.println("Sensor iniciado correctamente");
  else Serial.println("Error al iniciar el sensor");
}

void loop() {
  // Leer las aceleraciones y velocidades angulares
  sensor.getAcceleration(&ax, &ay, &az);
  sensor.getRotation(&gx, &gy, &gz);

  // Muestra las lecturas que va registrando separadas por una tabulación 
  Serial.print("a[x y z] g[x y z]:\t");
  Serial.print(ax); Serial.print("\t");
  Serial.print(ay); Serial.print("\t");
  Serial.print(az); Serial.print("\t");
  Serial.print(gx); Serial.print("\t");
  Serial.print(gy); Serial.print("\t");
  Serial.println(gz);

  delay(100);
}

Yeni başlayan biriyseniz ve iyi bilmiyorsanız Arduino IDE ile nasıl programlanır, bunu anlamak sizin için zor olacak, bu nedenle ücretsiz Arduino programlamaya giriş dersi ile kılavuzumuza başvurabilirsiniz ...


İlk yorumu siz

Yorumunuzu bırakın

E-posta hesabınız yayınlanmayacak. Gerekli alanlar ile işaretlenmiştir *

*

*

  1. Verilerden sorumlu: Miguel Ángel Gatón
  2. Verilerin amacı: Kontrol SPAM, yorum yönetimi.
  3. Meşruiyet: Onayınız
  4. Verilerin iletilmesi: Veriler, yasal zorunluluk dışında üçüncü kişilere iletilmeyecektir.
  5. Veri depolama: Occentus Networks (AB) tarafından barındırılan veritabanı
  6. Haklar: Bilgilerinizi istediğiniz zaman sınırlayabilir, kurtarabilir ve silebilirsiniz.