Mündəricat:

Arduino Magnetometer: 5 addım (şəkillərlə)
Arduino Magnetometer: 5 addım (şəkillərlə)

Video: Arduino Magnetometer: 5 addım (şəkillərlə)

Video: Arduino Magnetometer: 5 addım (şəkillərlə)
Video: Как использовать гироскоп, акселерометр, магнитометр MPU-9250 для Arduino 2024, Noyabr
Anonim
Arduino maqnitölçən
Arduino maqnitölçən

Nə tikirik?

İnsanlar maqnit sahələrini aşkar edə bilmirlər, amma biz daim maqnitlərə arxalanan cihazlardan istifadə edirik. Məsələn, mühərriklər, pusulalar, fırlanma sensörləri və külək turbinləri işləmək üçün maqnit tələb edir. Bu dərslik, üç Hall effekti sensoru istifadə edərək maqnit sahəsini hiss edən Arduino əsaslı bir maqnitölçənin necə qurulacağını təsvir edir. Bir yerdəki maqnit sahəsi vektoru, izometrik proyeksiyadan istifadə edərək kiçik bir ekranda göstərilir.

Arduino nədir?

Bir Arduino, kiçik bir açıq mənbə istifadəçi dostu mikro nəzarətçisidir. Rəqəmsal giriş və çıxış pinlərinə malikdir. Sensorlardan daxil olan məlumatları oxumaq üçün faydalı olan analog giriş pinləri də var. Fərqli Arduino modelləri mövcuddur. Bu dərslik ya Arduino Uno ya da Arduino MKR1010 -dan necə istifadə olunacağını izah edir. Ancaq digər modellər də istifadə edilə bilər.

Bu təlimata başlamazdan əvvəl, Arduino inkişaf mühitini və xüsusi modeliniz üçün lazım olan kitabxanaları yükləyin. İnkişaf mühiti https://www.arduino.cc/en/main/software saytında mövcuddur və quraşdırma təlimatları https://www.arduino.cc/en/main/software saytında mövcuddur.

Maqnit sahəsi nədir?

Daimi maqnitlər digər daimi maqnitlərə təsir göstərir. Cari daşıyıcı tellər digər cərəyan aparıcı tellərə təsir göstərir. Daimi maqnitlər və cərəyan aparan tellər də bir -birinə təsir göstərir. Vahid sınaq cərəyanına düşən bu qüvvə bir maqnit sahəsidir.

Bir cismin həcmini ölçsək, tək skalyar ədəd alarıq. Bununla birlikdə, maqnetizm daha mürəkkəb bir kəmiyyət olan bir vektor sahəsi ilə izah olunur. Birincisi, bütün məkanda mövqeyinə görə dəyişir. Məsələn, daimi bir maqnitdən bir santimetr olan maqnit sahəsi, on santimetr uzaqlıqdakı maqnit sahəsindən daha böyük ola bilər.

Sonra, kosmosun hər nöqtəsindəki maqnit sahəsi bir vektorla təmsil olunur. Vektorun böyüklüyü maqnit sahəsinin gücünü ifadə edir. İstiqamət həm qüvvənin istiqamətinə, həm də sınaq cərəyanının istiqamətinə dikdir.

Bir yerdəki maqnit sahəsini ox kimi təsəvvür edə bilərik. Maqnit sahəsini fərqli yerlərdə, bəlkə də fərqli ölçülərdə və fərqli istiqamətlərə işarə edən bir ox ilə təsəvvür edə bilərik. Gözəl bir görselleştirme https://www.falstad.com/vector3dm/ saytında mövcuddur. Qurduğumuz maqnitometr, sensorların yerləşdiyi yerdəki maqnit sahəsini ekranda ox kimi göstərir.

Hall effekti sensoru nədir və necə işləyir?

Hall effekti sensoru, müəyyən bir istiqamətdə maqnit sahəsinin gücünü ölçən kiçik, ucuz bir cihazdır. Həddindən artıq yüklə doldurulmuş yarımkeçiricidən hazırlanmışdır. Bəzi Hall effekti sensorlarının çıxışı analoq bir gərginlikdir. Digər Hall effekti sensorları inteqrasiya edilmiş bir müqayisə cihazına malikdir və rəqəmsal bir çıxış istehsal edir. Digər Hall effekti sensorlar, axın sürətini, fırlanma sürətini və ya digər miqdarları ölçən daha böyük alətlərə birləşdirilmişdir.

Hall effektinin arxasındakı fizika Lorentz qüvvə tənliyi ilə ümumiləşdirilir. Bu tənlik, xarici bir elektrik və maqnit sahəsi səbəbiylə hərəkət edən bir yükün gücünü təsvir edir.

Şəkil
Şəkil

Aşağıdakı şəkil Hall effektini göstərir. Tutaq ki, maqnit sahəsinin gücünü mavi ox istiqamətində ölçmək istəyirik. Şəklin sol hissəsində göstərildiyi kimi, ölçüləcək sahənin istiqamətinə dik olan yarımkeçirici parçası vasitəsilə bir cərəyan tətbiq edirik. Cari yüklərin axınıdır, buna görə də yarımkeçiricidəki bir yük müəyyən bir sürətlə hərəkət edir. Bu yük, rəqəmin ortasında göstərildiyi kimi xarici sahə səbəbiylə bir qüvvə hiss edəcək. Yüklər güc səbəbiylə hərəkət edəcək və yarımkeçiricinin kənarında yığılacaq. Yığılan yüklər səbəbiylə qüvvə, xarici maqnit sahəsindəki qüvvəni balanslaşdırana qədər yüklər əmələ gəlir. Şəklin sağ hissəsində göstərildiyi kimi yarımkeçiricidəki gərginliyi ölçə bilərik. Ölçülən gərginlik maqnit sahəsinin gücü ilə mütənasibdir və cərəyana və maqnit sahəsinin istiqamətinə dik istiqamətdədir.

Şəkil
Şəkil

İzometrik proyeksiya nədir?

Kosmosdakı hər nöqtədə maqnit sahəsi üçölçülü bir vektorla təsvir olunur. Ancaq ekranımız iki ölçülüdür. Üç ölçülü vektoru iki ölçülü bir müstəviyə yansıtmaqla onu ekranda çəkə bilərik. Bunu yerinə yetirmək üçün izometrik proyeksiya, ortoqrafik proyeksiya və ya oblik proyeksiya kimi bir çox yol var.

İzometrik proyeksiyada, x, y və z oxları bir -birindən 120 dərəcə ayrıdır və eyni dərəcədə qabaqcadan görünürlər. İzometrik proyeksiya haqqında əlavə məlumatları və lazım olan düsturları Vikipediyanın mövzu ilə bağlı səhifəsində tapa bilərsiniz.

Addım 1: Təchizat toplayın

Arduino və kabel

Arduino maqnitometrinin beyinləridir. Bu təlimatlar bir Arduino Uno və ya Arduino MKR1010 -dan necə istifadə olunacağını təsvir edir. Hər iki halda da onu kompüterə bağlamaq üçün bir kabel lazımdır.

Seçim 1: Arduino Uno və USB AB Kabeli

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

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

Seçim 2: Arduino MKR1010 və microUSB kabeli

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

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

TFT Ekranı

TFT, İncə Film Transistoru deməkdir. Bu 1,44 düymlük ekranda 128 x 128 piksel var. Kiçik, parlaq və rəngarəngdir. Qırılma lövhəsinə yapışdırılır. Bununla birlikdə başlıq pinləri ayrıdır, buna görə də onları lehimləməlisiniz. (Lehim və lehimləmə dəmiri lazım.)

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

    Şəkil
    Şəkil
  • Analog Hall Təsir Sensorları

Üç Hall effekti sensoru tələb olunur. Aşağıdakı link Allegro hissə nömrəsi A1324LUA-T üçündür. Bu sensor üçün pin 1 təchizat gərginliyi, pin 2 torpaq və pin 3 çıxışdır. Digər Hall sensorları da işləməlidir, ancaq rəqəmsal deyil, analoq olduğundan əmin olun. Fərqli bir sensor istifadə edirsinizsə, pinoutu yoxlayın və lazım olduqda naqilləri düzəldin. (Əslində sınaq məqsədi ilə eyni şirkətdən fərqli bir sensor istifadə etdim. Ancaq istifadə etdiyim köhnəlmiş və bu sensor onun əvəzidir.)

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

Kiçik Breadboard və Tel

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

Test üçün Daimi Maqnitlər

Soyuducu maqnitləri yaxşı işləyəcək.

Addım 2: Kabel çəkmə

Kablolama
Kablolama

Ekrandakı başlıqları lehimləyin.

Şəkil
Şəkil

Sensorları çörək taxtasının bir ucuna, ekranı və Arduino -nu əks ucuna qoyun. Arduino və ekrandakı tellərdə cərəyan, sensorların oxumasını istəmədiyimiz maqnit sahələri yaradır. Əlavə olaraq, sensorları daimi maqnitlərin yanına qoymaq istəyə bilərik ki, bu da ekran və sensorun tellərindəki cərəyana mənfi təsir göstərə bilər. Bu səbəblərdən, sensorların ekrandan və Arduinodan uzaq olmasını istəyirik. Həm də bu səbəblərdən bu maqnitometr çox güclü maqnit sahələrindən uzaq tutulmalıdır.

Sensorları bir -birinə dik, lakin bir -birinə mümkün qədər yaxın qoyun. Sensorların dik olması üçün onları yumşaq bir şəkildə bükün. Sensorların hər bir pinləri ayrı -ayrı bağlana bilməsi üçün çörək taxtasının ayrı bir cərgəsində olmalıdır.

Şəkil
Şəkil

Kablolama iki səbəbdən MKR1010 və Uno arasında bir qədər fərqlidir. Birincisi, Arduino və ekran SPI tərəfindən ünsiyyət qurur. Fərqli Arduino modellərində, müəyyən SPI xətləri üçün fərqli xüsusi pinlər var. İkincisi, Uno -nun analoq girişləri 5 V -a qədər qəbul edə bilər, MKR1010 -un analoq girişləri isə yalnız 3,3 V -ə qədər qəbul edə bilər. Hall effekti sensorlar üçün tövsiyə olunan təchizat gərginliyi 5 V. Sensor çıxışları Arduino analoq girişlərinə, və bunlar təchizat gərginliyi qədər böyük ola bilər. Uno üçün, sensorlar üçün tövsiyə olunan 5 V təchizatı istifadə edin. MKR1010 üçün 3.3 V istifadə edin ki, Arduino analoq girişi heç vaxt idarə edə biləcəyindən daha böyük bir gərginlik görməsin.

İstifadə etdiyiniz Arduino üçün aşağıdakı diaqramları və təlimatları izləyin.

Arduino Uno ilə əlaqə

Şəkil
Şəkil

Ekranda 11 pin var. Onları Arduino Uno -ya aşağıdakı kimi bağlayın. (NC bağlı deyil deməkdir.)

  • Vin → 5V
  • 3.3 → NC
  • Gnd → GND
  • SCK → 13
  • SO → NC
  • SI → 11
  • TCS → 10
  • RST → 9
  • D/C → 8
  • CCS → NC
  • Lite → NC

Sensorların Vinini Arduino 5V -ə qoşun. Sensorun zəminini Arduino torpağına qoşun. Sensorların çıxışını Arduinonun A1, A2 və A3 analog girişlərinə qoşun.

Şəkil
Şəkil

Arduino MKR1010 ilə naqillər

Şəkil
Şəkil

Ekranda 11 pin var. Onları Arduino -ya aşağıdakı kimi bağlayın. (NC bağlı deyil deməkdir.)

  • Vin → 5V
  • 3.3 → NC
  • Gnd → GND
  • SCK → SCK 9
  • SO → NC
  • SI → MOSI 8
  • TCS → 5
  • RST → 4
  • D/C → 3
  • CCS → NC
  • Lite → NC

Sensorların Vinini Arduino Vcc -ə qoşun. Bu pin 5V deyil, 3.3V -dir. Sensorun zəminini Arduino torpağına qoşun. Sensorların çıxışını Arduinonun A1, A2 və A3 analog girişlərinə qoşun.

Şəkil
Şəkil

Addım 3: Ekranı sınayın

TFT ekranını işə salaq. Xoşbəxtlikdən, Adafruit -in bəzi istifadəçi dostu kitabxanaları və onlarla birlikdə getmək üçün əla bir dərsliyi var. Bu təlimatlar https://learn.adafruit.com/adafruit-1-44-color-tft-with-micro-sd-socket/overview təlimatını yaxından izləyir.

Arduino inkişaf mühitini açın. Alətlər → Kitabxanaları İdarə Edin. Adafruit_GFX, Adafruit_ZeroDMA və Adafruit_ST7735 kitabxanalarını quraşdırın. Android inkişaf mühitini yenidən başladın.

Qrafik nümunəsi kitabxanalara daxil edilmişdir. Açın. Fayl → Nümunələr → Adafruit ST7735 və ST7789 Kitabxanası → graphicstest. 1.44 ekran şərhini 95 -ci sətirdən və 98 -ci sətirdən şərh etmədən seçin.

Orijinal versiya:

94 // 1.8 TFT ekranı istifadə edərkən bu başlanğıcdan istifadə edin:

95 tft.initR (INITR_BLACKTAB); // Init ST7735S çipi, qara nişan 96 97 // Ya da 1.44 TFT: 98 //tft.initR(INITR_144GREENTAB) istifadə edirsinizsə bu başlatıcıdan (şərh yazmayın) istifadə edin; // ST7735R çipi, yaşıl sekmə

1.44 ekran üçün düzgün versiya:

94 // 1.8 TFT ekranı istifadə edirsinizsə bu başlanğıcdan istifadə edin:

95 //tft.initR(INIT_BLACKTAB); // Init ST7735S çipi, qara nişan 96 97 // Ya da 1.44 TFT: 98 tft.initR (INITR_144GREENTAB) istifadə edirsinizsə bu başlatıcıdan (şərh yazmayın) istifadə edin; // Init SST35R çipi, yaşıl nişan

Ekran SPI istifadə edərək ünsiyyət qurur və fərqli model Arduinos bəzi rabitə xətləri üçün fərqli ayrılmış pinlərdən istifadə edir. Ən qrafik nümunəsi Uno pinləri ilə işləmək üçün qurulmuşdur. MKR1010 istifadə edirsinizsə, 80 və 81 sətirləri arasına aşağıdakı sətirləri əlavə edin.

MKR1010 üçün düzəlişlər:

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_MRSI, TFT_MOSI; 81 float p = 3.1415926;

Dəyişdirilmiş qrafik nümunəsini qeyd edin. Arduino'yu kompüterə qoşun, əgər hələ bunu etməmisinizsə. Kompüterin Arduino -nu tapa biləcəyini yoxlamaq üçün Alətlər → Lövhə və Alətlər → Limana gedin. Sketch → Yüklə bölməsinə keçin. Nümunə işləyirsə, ekranda xətlər, düzbucaqlılar, mətn və tam demo göstəriləcək. Adafruit dərsliyi, problemlərin həllinə ehtiyac varsa daha ətraflı məlumat verir.

Addım 4: Maqnitometr Kodu

Əlavə edilmiş kodu yükləyin və Arduino inkişaf mühitində açın.

Bu proqram altı funksiyadan istifadə edir:

Setup () ekranı işə salır

Loop () proqramın əsas döngəsini ehtiva edir. Ekranı qaraldır, baltaları çəkir, girişləri oxuyur və maqnit sahəsi vektorunu təmsil edən oxu çəkir. 127 xəttini dəyişdirərək dəyişdirilə bilən bir saniyəlik bir yeniləmə sürətinə malikdir

DrawAxes3d () x, y və z oxlarını çəkir və etiketləyir

DrawArrow3d (), 0 ilə 1023 arasında dəyişən bir x, y və z girişi alır. Bu dəyərlərdən oxun kosmosdakı son nöqtələrini hesablayır. Sonra, ekrandakı son nöqtələri hesablamaq üçün isometricxx () və isometricyy () funksiyalarından istifadə edir. Nəhayət, oxu çəkir və ekranın altındakı gərginliyi yazdırır

Isometricxx () izometrik proyeksiyanın x koordinatını tapır. Bir nöqtənin x, y və z koordinatlarını alır və ekrandakı müvafiq x piksel yerini qaytarır

Isometricyy () izometrik proyeksiyanın y koordinatını tapır. Bir nöqtənin x, y və z koordinatlarını alır və ekrandakı müvafiq y piksel yerini qaytarır

Kodu işə salmadan əvvəl, ekranla SPI ünsiyyəti üçün hansı sancaqlar istifadə edəcəyimizi və sensorlar üçün mənbə gərginliyini təyin etməliyik. MKR1010 istifadə edirsinizsə, 92-96 və 110-cu sətirləri şərh edin. Sonra 85-89 və 108-ci sətirləri şərh edin. Uno istifadə edirsinizsə, 85-89 və 108-ci sətirləri şərh edin. Sonra 92-96 və 110-cu sətirləri qeyd edin.

Kodu yükləyin, Sketch → Yüklə.

X, y və z oxlarını qırmızı rəngdə görməlisiniz. Uç üçün mavi dairəsi olan yaşıl ox, sensorlardakı maqnit sahəsi vektorunu təmsil edir. Sol alt hissədə gərginlik göstəriciləri göstərilir. Mıknatısları sensorlara yaxınlaşdırdıqca gərginlik oxunuşları dəyişməli və oxun ölçüsü artmalıdır.

Şəkil
Şəkil

Addım 5: Gələcək İş

Gələcək İş
Gələcək İş

Növbəti addım cihazın kalibrlənməsi olacaq. Sensor məlumat vərəqi, xam sensorun gərginlik dəyərlərini maqnit sahəsinin gücünə necə çevirmək barədə məlumat verir. Kalibrləmə daha dəqiq bir maqnitometrlə müqayisə olunmaqla yoxlanıla bilər.

Daimi maqnitlər cərəyan keçirən tellərlə qarşılıqlı təsir göstərir. Ekranın yaxınlığındakı və Arduino telləri, sensor oxunuşlarına təsir edə biləcək maqnit sahələri yaradır. Əlavə olaraq, bu cihaz güclü bir daimi maqnitin yanında ölçmək üçün istifadə edilərsə, sınaqdan keçirilən cihazdakı maqnit sahəsi ilə qarşılıqlı əlaqə yaradacaq, Arduino və ekrana səs -küy salacaq və ehtimal ki, zədələyəcək. Qoruyucu bu maqnitölçəni daha möhkəm edə bilər. Arduino, metal bir qutuda qorunsa daha böyük maqnit sahələrinə tab gətirə bilər və çılpaq tellər əvəzinə sensorları ekranlı kabellər bağlasa daha az səs çıxacaq.

Maqnit sahəsi bir mövqe funksiyasıdır, buna görə də kosmosun hər nöqtəsində fərqlidir. Bu cihaz bir nöqtədə maqnit sahəsinin x, y və z komponentini ölçmək üçün üç sensordan istifadə edir. Sensorlar bir -birinə yaxındır, ancaq bir nöqtədə deyil və bu, maqnitometrin qətnaməsini məhdudlaşdırır. Maqnit sahəsindəki oxunuşları fərqli nöqtələrdə saxlamaq və sonra onları müvafiq yerlərdə bir sıra oxlar kimi göstərmək yaxşı olardı. Ancaq bu başqa bir gün üçün bir layihədir.

İstinadlar

Adafruit Arduino Graphics kitabxanaları haqqında məlumat

https://learn.adafruit.com/adafruit-1-44-color-tft-with-micro-sd-socket/overview

Maqnit sahəsinin vizuallaşdırılması

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

Hall effekti və Hall effekti sensorlar haqqında məlumat

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

İzometrik proyeksiya haqqında məlumat

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

Tövsiyə: