İçindekiler:

Arduino Manyetometre: 5 Adım (Resimlerle)
Arduino Manyetometre: 5 Adım (Resimlerle)

Video: Arduino Manyetometre: 5 Adım (Resimlerle)

Video: Arduino Manyetometre: 5 Adım (Resimlerle)
Video: How to use MPU-9250 Gyroscope, Accelerometer, Magnetometer for Arduino 2024, Eylül
Anonim
Arduino Manyetometre
Arduino Manyetometre

Ne inşa ediyoruz?

İnsanlar manyetik alanları algılayamaz, ancak her zaman mıknatıslara dayanan cihazlar kullanırız. Örneğin motorlar, pusulalar, dönüş sensörleri ve rüzgar türbinleri, çalışması için mıknatıslara ihtiyaç duyar. Bu öğretici, üç Hall efekt sensörü kullanarak manyetik alanı algılayan Arduino tabanlı bir manyetometrenin nasıl oluşturulacağını açıklar. Bir konumdaki manyetik alan vektörü, izometrik projeksiyon kullanılarak küçük bir ekranda görüntülenir.

Arduino nedir?

Arduino, küçük, açık kaynaklı, kullanıcı dostu bir mikro denetleyicidir. Dijital giriş ve çıkış pinlerine sahiptir. Ayrıca sensörlerden gelen girişi okumak için yararlı olan analog giriş pinlerine sahiptir. Farklı Arduino modelleri mevcuttur. Bu eğitim, Arduino Uno veya Arduino MKR1010'un nasıl kullanılacağını açıklar. Ancak başka modeller de kullanılabilir.

Bu eğitime başlamadan önce, Arduino geliştirme ortamını ve ayrıca kendi modeliniz için gereken kitaplıkları indirin. Geliştirme ortamı https://www.arduino.cc/en/main/software adresinde mevcuttur ve kurulum talimatları https://www.arduino.cc/en/main/software adresinde mevcuttur.

Manyetik alan nedir?

Kalıcı mıknatıslar, diğer kalıcı mıknatıslara kuvvet uygular. Akım taşıyan teller, diğer akım taşıyan tellere kuvvet uygular. Kalıcı mıknatıslar ve akım taşıyan teller de birbirlerine kuvvet uygular. Birim test akımı başına bu kuvvet bir manyetik alandır.

Bir cismin hacmini ölçersek, tek bir skaler sayı elde ederiz. Bununla birlikte, manyetizma daha karmaşık bir nicelik olan bir vektör alanı ile tanımlanır. İlk olarak, tüm uzay boyunca pozisyona göre değişir. Örneğin, kalıcı bir mıknatıstan bir santimetre uzaklıkta bulunan manyetik alan, muhtemelen on santimetre uzaklıktaki manyetik alandan daha büyük olacaktır.

Daha sonra, uzaydaki her noktadaki manyetik alan bir vektör ile temsil edilir. Vektörün büyüklüğü manyetik alanın gücünü temsil eder. Yön, hem kuvvetin yönüne hem de test akımının yönüne diktir.

Manyetik alanı tek bir konumdaki bir ok olarak hayal edebiliriz. Farklı konumlarda, muhtemelen farklı boyutlarda ve farklı yönleri gösteren bir ok dizisiyle uzaydaki manyetik alanı hayal edebiliriz. https://www.falstad.com/vector3dm/ adresinde güzel bir görselleştirme mevcuttur. Yaptığımız manyetometre sensörlerin bulunduğu yerdeki manyetik alanı ekranda ok şeklinde gösteriyor.

Hall etkisi sensörü nedir ve nasıl çalışır?

Hall etkisi sensörü, belirli bir yön boyunca manyetik alanın gücünü ölçen küçük, ucuz bir cihazdır. Fazla yüklerle katkılı bir yarı iletken parçasından yapılır. Bazı Hall etkisi sensörlerinin çıkışı bir analog voltajdır. Diğer Hall etkisi sensörleri, entegre bir karşılaştırıcıya sahiptir ve dijital bir çıkış üretir. Diğer Hall etkisi sensörleri, akış hızı, dönüş hızı veya diğer miktarları ölçen daha büyük cihazlara entegre edilmiştir.

Hall etkisinin arkasındaki fizik, Lorentz kuvvet denklemi ile özetlenir. Bu denklem, harici bir elektrik ve manyetik alan nedeniyle hareketli bir yük üzerindeki kuvveti tanımlar.

resim
resim

Aşağıdaki şekil Hall etkisini göstermektedir. Mavi ok yönünde manyetik alanın gücünü ölçmek istediğimizi varsayalım. Şeklin sol kısmında gösterildiği gibi, ölçülecek alanın yönüne dik bir yarı iletken parçası üzerinden bir akım uyguluyoruz. Akım yüklerin akışıdır, bu nedenle yarı iletkendeki bir yük belirli bir hızla hareket eder. Bu yük, şeklin orta kısmında gösterildiği gibi dış alan nedeniyle bir kuvvet hissedecektir. Yükler kuvvet nedeniyle hareket edecek ve yarı iletkenin kenarlarında birikecektir. Yükler, biriken yüklerden kaynaklanan kuvvet, dış manyetik alandan kaynaklanan kuvveti dengeleyene kadar birikir. Şeklin sağ kısmında gösterildiği gibi yarı iletken üzerindeki voltajı ölçebiliriz. Ölçülen voltaj, manyetik alanın gücü ile orantılıdır ve akıma ve manyetik alanın yönüne dik doğrultudadır.

resim
resim

İzometrik izdüşüm nedir?

Uzaydaki her noktada, manyetik alan üç boyutlu bir vektörle tanımlanır. Ancak bizim görüntü ekranımız iki boyutludur. Üç boyutlu vektörü iki boyutlu bir düzleme yansıtarak ekranda çizebiliriz. Bunu başarmanın izometrik izdüşüm, ortografik izdüşüm veya eğik izdüşüm gibi birçok yolu vardır.

İzometrik izdüşümde, x, y ve z eksenleri birbirinden 120 derece uzaktadır ve eşit olarak kısaltılmış olarak görünürler. İzometrik izdüşüm hakkında ek bilgi ve gerekli formüller Wikipedia'nın konuyla ilgili sayfasında bulunabilir.

Adım 1: Sarf Malzemelerini Toplayın

Arduino ve Kablo

Arduino, manyetometrenin beynidir. Bu talimatlar, bir Arduino Uno veya bir Arduino MKR1010'un nasıl kullanılacağını açıklar. Her iki durumda da, bilgisayara bağlamak için bir kablo gereklidir.

Seçenek 1: Arduino Uno ve USB AB Kablosu

www.digikey.com/product-detail/en/arduino/A000066/1050-1024-ND/2784006

www.digikey.com/product-detail/en/stewart-connector/SC-2ABE003F/380-1424-ND/8544570

Seçenek 2: Arduino MKR1010 ve microUSB kablosu

www.digikey.com/product-detail/en/arduino/ABX00023/1050-1162-ND/9486713

www.digikey.com/product-detail/en/stewart-connector/SC-2AMK003F/380-1431-ND/8544577

TFT Ekran

TFT, İnce Film Transistör anlamına gelir. Bu 1.44 ekran 128 x 128 piksel içerir. Küçük, parlak ve renklidir. Bir kesme panosuna takılı olarak gelir. Ancak başlık pimleri ayrı gelir, bu nedenle bunları lehimlemeniz gerekir. (Lehim ve havya gerekli.)

www.digikey.com/product-detail/tr/adafruit-industries-llc/2088/1528-1345-ND/5356830

    resim
    resim
  • Analog Hall Etkisi Sensörleri

Üç Hall etkisi sensörü gereklidir. Aşağıdaki bağlantı Allegro parça numarası A1324LUA-T içindir. Bu sensör için pin 1 besleme gerilimi, pin 2 toprak ve pin 3 çıkıştır. Diğer Hall sensörleri de çalışmalıdır, ancak dijital değil analog olduklarından emin olun. Farklı bir sensör kullanıyorsanız, pin çıkışını kontrol edin ve gerekirse kablolamayı ayarlayın. (Aslında test amaçlı aynı firmadan farklı bir sensör kullandım. Ancak benim kullandığım eskidi ve bu sensör onun yedeği.)

www.digikey.com/product-detail/en/allegro-microsystems-llc/A1324LUA-T/620-1432-ND/2728144

Küçük Breadboard ve Tel

www.digikey.com/product-detail/tr/adafruit-industries-llc/239/1528-2143-ND/7244929

Test için Kalıcı Mıknatıslar

Buzdolabı mıknatısları iyi çalışacaktır.

Adım 2: Kablolama

kablolama
kablolama

Ekrandaki başlıkları lehimleyin.

resim
resim

Sensörleri devre tahtasının bir ucuna yerleştirin ve ekranı ve Arduino'yu karşı uca yerleştirin. Arduino ve ekrandaki kablolardaki akım, sensörlerin okumasını istemediğimiz manyetik alanlar üretir. Ek olarak, sensörleri ekran ve sensör kablolarındaki akımı olumsuz yönde etkileyebilecek kalıcı mıknatısların yakınına yerleştirmek isteyebiliriz. Bu sebeplerden dolayı sensörlerin ekrandan ve Arduino'dan uzak olmasını istiyoruz. Ayrıca bu nedenlerden dolayı bu manyetometre çok güçlü manyetik alanlardan uzak tutulmalıdır.

Sensörleri birbirine dik ama mümkün olduğunca birbirine yakın yerleştirin. Sensörleri dikey hale getirmek için hafifçe bükün. Her sensörün her bir pimi, ayrı olarak bağlanabilmesi için devre tahtasının ayrı bir sırasında olmalıdır.

resim
resim

MKR1010 ve Uno arasındaki kablo bağlantısı iki nedenden dolayı biraz farklıdır. İlk olarak, Arduino ve ekran SPI tarafından iletişim kurar. Farklı Arduino modellerinde belirli SPI hatları için farklı atanmış pinler bulunur. İkincisi, Uno'nun analog girişleri 5 V'a kadar kabul edebilirken, MKR1010'un analog girişleri sadece 3,3 V'a kadar kabul edebilir. Hall efekt sensörleri için önerilen besleme voltajı 5 V'tur. Sensör çıkışları Arduino analog girişlerine bağlanır, ve bunlar besleme gerilimleri kadar büyük olabilir. Uno için sensörler için önerilen 5 V beslemeyi kullanın. MKR1010 için 3,3 V kullanın, böylece Arduino'nun analog girişi asla kaldırabileceğinden daha büyük bir voltaj görmez.

Kullanmakta olduğunuz Arduino için aşağıdaki şemaları ve talimatları izleyin.

Arduino Uno ile kablolama

resim
resim

Ekranda 11 pin var. Bunları Arduino Uno'ya aşağıdaki gibi bağlayın. (NC, bağlı değil anlamına gelir.)

  • Vin →5V
  • 3.3 →NK
  • Gnd →GND
  • SCK →13
  • SO → NC
  • SI →11
  • TC →10
  • RST →9
  • D/C →8
  • CCS → NC
  • Basit → Kuzey Amerika

Sensörlerin Vin'ini Arduino'nun 5V'sine bağlayın. Sensörün toprağını Arduino'nun toprağına bağlayın. Sensörlerin çıkışını Arduino'nun A1, A2 ve A3 analog girişlerine bağlayın.

resim
resim

Arduino MKR1010 ile kablolama

resim
resim

Ekranda 11 pin var. Bunları Arduino'ya aşağıdaki gibi bağlayın. (NC, bağlı değil anlamına gelir.)

  • Vin →5V
  • 3.3 →NK
  • Gnd →GND
  • SCK →SKK 9
  • SO → NC
  • SI →MOSI 8
  • TC →5
  • RST →4
  • D/K →3
  • CCS → NC
  • Basit → Kuzey Amerika

Sensörlerin Vin'ini Arduino'nun Vcc'sine bağlayın. Bu pin 5V değil 3.3V'da. Sensörün toprağını Arduino'nun toprağına bağlayın. Sensörlerin çıkışını Arduino'nun A1, A2 ve A3 analog girişlerine bağlayın.

resim
resim

3. Adım: Ekranı Test Edin

TFT ekranını çalıştıralım. Neyse ki Adafruit, bazı kullanıcı dostu kitaplıklara ve bunlarla birlikte gitmek için mükemmel bir öğreticiye sahiptir. Bu talimatlar öğreticiyi yakından takip eder, Arduino geliştirme ortamını açın. Araçlar → Kitaplıkları Yönet seçeneğine gidin. Adafruit_GFX, Adafruit_ZeroDMA ve Adafruit_ST7735 kitaplıklarını kurun. Android geliştirme ortamını yeniden başlatın.

Graphictest örneği kitaplıklara dahil edilmiştir. Aç onu. Dosya → Örnekler → Adafruit ST7735 ve ST7789 Kitaplığı → grafik testi. 1.44 ekran açıklama çıkış satırı 95'i ve açıklama satırı 98'i seçmek için.

Orijinal versiyon:

94 // 1.8 TFT ekran kullanıyorsanız bu başlatıcıyı kullanın:

95 tft.initR(INITR_BLACKTAB); //ST7735S çipini başlat, siyah sekme 96 97 //VEYA 1.44 TFT kullanılıyorsa bu başlatıcıyı kullan (açıklama yok): 98 //tft.initR(INITR_144GREENTAB); // ST7735R çipini başlat, yeşil sekme

1.44 ekran için doğru sürüm:

94 // 1.8 TFT ekran kullanıyorsanız bu başlatıcıyı kullanın:

95 //tft.initR(INIT_BLACKTAB); //ST7735S çipini başlat, siyah sekme 96 97 //VEYA 1,44 TFT kullanıyorsanız bu başlatıcıyı kullanın (yorumsuz): 98 tft.initR(INITR_144GREENTAB); //SST35R çipini başlat, yeşil sekme

Ekran SPI kullanarak iletişim kurar ve farklı model Arduino'lar bazı iletişim hatları için farklı özel pinler kullanır. En grafik örneği, Uno pinleriyle çalışacak şekilde ayarlanmıştır. MKR1010 kullanıyorsanız, 80 ve 81. satırlar arasına aşağıdaki satırları ekleyin.

MKR1010 için düzeltmeler:

80

#define TFT_CS 5 #define TFT_RST 4 #define TFT_DC 3 #define TFT_MOSI 8 #define TFT_SCLK 9 Adafruit_ST7735 tft=Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST); 81 kayan nokta p=3.1415926;

Değiştirilmiş grafik test örneğini kaydedin. Henüz yapmadıysanız, Arduino'yu bilgisayara takın. Bilgisayarın Arduino'yu bulabildiğini doğrulamak için Araçlar → Kart ve Araçlar → Bağlantı Noktasına gidin. Çizim → Yükle seçeneğine gidin. Örnek işe yararsa, ekranda çizgiler, dikdörtgenler, metin ve tam demo gösterilir. Adafruit öğreticisi, sorun giderme gerekirse daha fazla ayrıntı sağlar.

Adım 4: Manyetometre Kodu

Ekli kodu indirin ve Arduino geliştirme ortamında açın.

Bu program altı işlevi kullanır:

Setup(), ekranı başlatır

Loop(), programın ana döngüsünü içerir. Ekranı karartıyor, eksenleri çiziyor, girdileri okuyor ve manyetik alan vektörünü temsil eden oku çiziyor. Satır 127 değiştirilerek değiştirilebilen bir saniyelik yenileme hızına sahiptir

DrawAxes3d() x, y ve z eksenlerini çizer ve etiketler

DrawArrow3d() 0 ile 1023 arasında bir x, y ve z girdisi alır. Bu değerlerden okun uzaydaki bitiş noktalarını hesaplar. Ardından, ekrandaki bitiş noktalarını hesaplamak için isometricxx() ve isometricyy() fonksiyonlarını kullanır. Son olarak oku çizer ve ekranın alt kısmına voltajları yazdırır

Isometricxx(), izometrik projeksiyonun x koordinatını bulur. Bir noktanın x, y ve z koordinatlarını alır ve ekranda karşılık gelen x piksel konumunu döndürür

Isometricyy(), izometrik izdüşümün y koordinatını bulur. Bir noktanın x, y ve z koordinatlarını alır ve ekranda karşılık gelen y piksel konumunu döndürür

Kodu çalıştırmadan önce ekran ile SPI iletişimi için hangi pinleri kullanacağımızı ve sensörler için kaynak voltajını belirtmemiz gerekiyor. MKR1010 kullanıyorsanız, satır 110'un yanı sıra 92-96 satırlarını yorumlayın. Ardından, satır 108'in yanı sıra 85-89 satırlarını yorumlayın. Uno kullanıyorsanız, satır 108'in yanı sıra 85-89 satırlarını da yorumlayın. Ardından, 92-96 satırlarını ve 110. satırları yorumsuz bırakın.

Kodu yükleyin, Sketch → Upload.

x, y ve z eksenlerini kırmızı olarak görmelisiniz. Uç için mavi daireli yeşil bir ok, sensörlerdeki manyetik alan vektörünü temsil eder. Voltaj okumaları sol altta görüntülenir. Bir mıknatısı sensörlere yaklaştırdığınızda, voltaj okumaları değişmeli ve okun boyutu büyümelidir.

resim
resim

Adım 5: Gelecekteki Çalışma

Gelecek iş
Gelecek iş

Sonraki adım, cihazı kalibre etmek olacaktır. Sensör veri sayfası, ham sensör voltaj değerlerinin manyetik alan kuvvetine nasıl dönüştürüleceği hakkında bilgi sağlar. Kalibrasyon, daha doğru bir manyetometre ile karşılaştırılarak doğrulanabilir.

Kalıcı mıknatıslar, akım taşıyan tellerle etkileşime girer. Ekranın yanındaki ve Arduino'daki teller, sensör okumalarını etkileyebilecek manyetik alanlar üretir. Ek olarak, bu cihaz güçlü bir kalıcı mıknatısın yakınında ölçüm yapmak için kullanılırsa, test edilen cihazdan gelen manyetik alan etkileşime girecek, gürültüye neden olacak ve muhtemelen Arduino'ya ve ekrana zarar verecektir. Koruma, bu manyetometreyi daha sağlam hale getirebilir. Arduino, metal bir kutu içinde blendajlıysa daha büyük manyetik alanlara dayanabilir ve sensörleri çıplak teller yerine blendajlı kablolar bağlarsa daha az gürültü ortaya çıkar.

Manyetik alan konumun bir fonksiyonudur, dolayısıyla uzayın her noktasında farklıdır. Bu cihaz, bir noktadaki manyetik alanın x, y ve z bileşenlerini ölçmek için biri olmak üzere üç sensör kullanır. Sensörler birbirine yakın ancak tek bir noktada değiller ve bu da manyetometre çözünürlüğünü sınırlıyor. Manyetik alan okumalarını farklı noktalarda kaydetmek ve ardından bunları ilgili konumlarda bir dizi ok olarak görüntülemek harika olurdu. Ancak, bu başka bir günün projesi.

Referanslar

Adafruit Arduino Graphics kütüphaneleri hakkında bilgi

https://learn.adafruit.com/adafruit-1-44-color-tft-with-micro-sd-socket/genel bakış

Manyetik alan görselleştirme

https://www.falstad.com/vector3dm/

Hall etkisi ve Hall etkisi sensörleri hakkında bilgi

  • https://sensing.honeywell.com/index.php?ci_id=47847
  • https://www.allegromicro.com/~/media/Files/Datasheets/A1324-5-6-Datasheet.ashx

İzometrik projeksiyon hakkında bilgi

  • https://en.wikipedia.org/wiki/3D_projection
  • https://en.wikipedia.org/wiki/Isometric_projection

Önerilen: