MLX90393 Magnetometer Sensor Arduino Library Kurulumu ve Kullanımı - Turkish Tutorial

in #utopian-io7 years ago (edited)

This is a Turkish tutorial of an open source Arduino library, which lets you turn your Arduino to a “Magnetometer”, with a MLX90393 Magnetometer breakout circuit, that measures magnetic fields. I will show you how to install the library to Arduino IDE and make an example project with the library, throughout this tutorial while giving information magnetometers and their working principle.

Merhaba, bu yazıda Arduino mikrokontrolörünüze, MLX90393 Manyetometre devresi yardımıyla, “Manyetometre” olma özelliği ekleyen, açık kaynak bir kütüphaneden bahsedeceğim. Yazı boyunca manyetometrelerin ne olduğunu, nasıl çalıştığını, kullanım alanlarını, MLX90393 kütüphanesinin kurulumunu ve MLX90393 manyetometre modülü yapacağımız örnek bir proje kodlarını görebilirsiniz.

manyetometre.jpg
Pioneer 10 ve 11 uzay gemilerinde kullanılan helyum vektör manyetometresi.


Manyetometre Nedir ve Nasıl Çalışır?

Manyetometre, bir ortamın manyetik alan yoğunluğunu ölçmeye yarayan cihazdır. 1833 yılında Alman matematikçi Carl Friedrich Gauss tarafından icat edilen manyetometre, Dünyanın manyetik alanını ölçmede, manyetik anomalileri tespit etmekte, yeni maden bulma araştırmalarında ve jeolojik araştırmalarda sıklıkla kullanılmaktadır.

dünya.jpg
Dünya'nın manyetik alanı.

Yön bulmak için kullandığımız ve insanoğlunun en eski icatlarından olan pusula da bir manyetometredir. Manyetometrelerin bir kullanım alanı da metal dedektörleridir. Manyetik özelliklere sahip metalleri bulmada kullanılabilirler.

pusula.png
İlk manyetometre: Pusula.

Manyetometreler skaler ve vektörel olarak ikiye ayrılırlar. Skaler ve vektörel olarak ayrılan manyetometrelerin de kendi içinde bir sürü türü vardır. Her tür manyetometrenin çalışma prensibi farklıdır. Projemizde kullanacağımız “Akı geçidi (fluxgate) manyetometresi”nin çalışma prensibi şöyle özetlenebilir: iki halka şeklinde manyetik çekirdek etrafına sarılan teller nedeniyle, ilk çekirdek üzerinde alternative akım geçişi başladığında, çekirdek manyetik doygunluğa ulaştığında ikinci çekirdek üzerinde akım indüklenmeye başlar. Bu akım bir devre yardımıyla ölçülerek manyetik alan değişimi bulunur. Manyetometrelerin ölçüm birimi CGS biriminde Gauss, SI birimde Tesladır. 10000 Gauss 1 Tesla’ya eşittir.

Manyetometre1.jpg
Akı geçidi (fluxgate) manyetometresi iç yapısı.

Projemizde kullanacağımız MLX90393 Manyetik sensörünün özellikleri aşağıdadır.
Çözünürlük: 0.161 uT
Maksimum Çözünürlük: 44,000 uT
Çalışma Gerilimi: 3.3V
Haberleşme Arabirimleri: I2C veya SPI

MLX90393_.jpg
MLX90393 Manyetik sensörü.


MLX90393 Kütüphanesinin Arduino IDE’sine Kurulumu

1. https://github.com/tedyapo/arduino-MLX90393 adresinden kütüphaneyi indirin.

indir.png

2. Arduino programını açıp sırasıyla Sketch->Include Library->Add .ZIP Library seçeneklerini seçin.

ekle.png

3. arduino-MLX90393-master.zip dosyasını seçin ve Open'a tıklayın.


MLX90393 Kütüphanesinin Kullanımı

Öncelikle MLX90393 Manyetik sensörümüzü Arduino’muza bağlama işlemlerini adım adım uygulayın.

  • Arduino’nuzun 3.3V gerilim çıkışını MLX90393 manyetik sensörünün 3.3V gerilim girişine bağlayın.
  • MLX90393 manyetik sensörünün “SDA” çıkışını, Arduino’nuzun “Analog 4” (A4) girişine bağlayın.
  • MLX90393 manyetik sensörünün “SCL” çıkışını, Arduino’nuzun “Analog 5” (A5) girişine bağlayın.
  • MLX90393 manyetik sensörünün “GND” girişini, Arduino’nuzun “GND” çıkışına bağlayın.

baglanti.jpg
MLX90393 manyetik sensörünün Arduino'ya bağlanı şeması.

X,Y,Z eksenlerinin manyetik alanlarını okuyan ve ortam sıcaklığı ile ekrana yansıtan “Manyetometre” projesinin yapılış adımları aşağıdadır.

1. Yeni bir sketch açın ve "Manyetometre_Deneme" olarak kaydedin.

2. Öncelikle kullanacağımız kütüphanelerimizi sketch’imize eklemek için, kodun en başına, #include <Wire.h> ve #include <MLX90393.h>yazın.

1.PNG

3. Kütüphaneyi ekledikten sonra MLX90393 manyetik sensörü tanımlayan kodu yazın. Ardından ekranda göstereceğimiz olan sıcaklık, X,Y,Z eksenleri manyetik alan ölçümleri için, "t","x","y","z" adında dört adet data değişkeni oluşturun. Bu data değişkenleri float cinsindendir.

2.PNG

4. void setup() fonksiyonunun içine, 9600 baud hızında seri haberleşmeyi başlatacak komutu ekleyin. Ekrana “MLX90393 Manyetometre Okumaları: ” yazacak şekilde bir print komutu oluşturun ve sensörün Arduino ile olan iletişimini I2C protokolü üzerinden başlatan kodu ekleyin.

3.PNG

5. void loop() fonksiyonunun içine, ilk önce sensördeki verileri okuyacak kütüphane fonksiyonunu ekleyin. Ardından sırasıyla, X ekseni manyetik alan yoğunluğu okumasını, Y ekseni manyetik alan yoğunluğu okumasını, Z ekseni manyetik alan yoğunluğu okumasını ve ortam sıcaklığı değerini ekrana yansıtacak olan print komutlarını ilgili veri değerlerini ekleyerek yazın. İşlemlerin sonuna 10ms’lik bir delay komutu ekleyin. Okumaların ekrana yansıma sıklığını değiştirmek için delay süresini değiştirebilirsiniz.

4.PNG


Bu yazımda Arduino mikrokontrolörü için " tedyapo" adlı GitHub kullanıcısı tarafından yazılmış "Arduino- MLX90393-Library" kütüphanesinin kurulumu, manyetometrelerin ne olduğunu, nasıl çalıştıklarını anlatarak ve MLX90393 modülünü kullanarak, bir manyetometre örneği yaparak kütüphanenin kullanımını gösterdim. Umuyorum ki vermiş olduğum bilgileri beğenirsiniz, okuduğunuz için teşekkürler. Başka yazılarda görüşmek dileğiyle.
Kütüphane hakkında daha fazla bilgi ve kaynak için aşağıdaki linki kullanabilirsiniz.

GitHub: https://github.com/tedyapo/arduino-MLX90393

Örnek projenin kaynak kodu:


#include <Wire.h>
#include <MLX90393.h>

MLX90393 mlx;        // MLX90393 Manyetik sensörü tanımlar.
MLX90393::txyz data; // "t","x","y","z" adında 4 data değişkeni oluşturur (float).

void setup()
{
  
  Serial.begin(9600);       // 9600 baud rate'de seri haberleşmeyi başlatır.
  
  Serial.println("MLX90393 Manyetometre Okumaları:  "); 
  
  mlx.begin(); // Sensör ve Arduino iletişimini (I2C) protokolü üzerinden başlatır.
}

void loop()
{
  
  mlx.readData(data);       // Sensörden verileri okur.

  Serial.print("X ekseni manyetik alan yoğunluğu (uT)[");    // Okumaları ekrana yansıtır.
  Serial.print(data.x);
  Serial.print("] Y ekseni manyetik alan yoğunluğu (uT)[");
  Serial.print(data.y);
  Serial.print("] Z ekseni manyetik alan yoğunluğu (uT)[");
  Serial.print(data.z);
  Serial.print("] Ortam sıcaklığı (C)[");
  Serial.print(data.t);
  Serial.print("]");

  delay(10);
}



Posted on Utopian.io - Rewarding Open Source Contributors

Sort:  

Your contribution cannot be approved because it is not as informative as other contributions. See the Utopian Rules. Contributions need to be informative and descriptive in order to help readers and developers understand them.

You can contact us on Discord.
[utopian-moderator]

Release the Kraken! You got a 29.41% upvote from @seakraken courtesy of @drencolha!

This post has received a 4.35 % upvote, thanks to: @drencolha.

This post has received a 3.12 % upvote from @kittybot thanks to: @drencolha.

The @OriginalWorks bot has determined this post by @drencolha to be original material and upvoted it!

ezgif.com-resize.gif

To call @OriginalWorks, simply reply to any post with @originalworks or !originalworks in your message!

Please note that this is a BETA version. Feel free to leave a reply if you feel this is an error to help improve accuracy.

Coin Marketplace

STEEM 0.17
TRX 0.15
JST 0.028
BTC 57198.53
ETH 2362.64
USDT 1.00
SBD 2.40