Mundarija:

Arduino magnitometri: 5 qadam (rasmlar bilan)
Arduino magnitometri: 5 qadam (rasmlar bilan)

Video: Arduino magnitometri: 5 qadam (rasmlar bilan)

Video: Arduino magnitometri: 5 qadam (rasmlar bilan)
Video: GY-271. Цифровой магнитометр и Ардуино. Делаем компас 2024, Sentyabr
Anonim
Arduino magnitometri
Arduino magnitometri

Biz nima qurayapmiz?

Odamlar magnit maydonlarni aniqlay olmaydilar, lekin biz doimo magnitlarga tayanadigan asboblardan foydalanamiz. Dvigatellar, kompaslar, aylanish sensorlar va shamol turbinalari, masalan, ishlash uchun magnit kerak. Ushbu qo'llanmada uchta Hall effekti sensori yordamida magnit maydonini sezadigan Arduino asosidagi magnitometrni qanday yasash kerakligi tasvirlangan. Joylashuvdagi magnit maydon vektori kichik ekranda izometrik proektsiya yordamida ko'rsatiladi.

Arduino nima?

Arduino-bu ochiq manbali kichik foydalanuvchilar uchun qulay mikrokontroller. U raqamli kirish va chiqish pinlariga ega. Sensorlardan kirishni o'qish uchun foydali bo'lgan analog kirish pinlari ham mavjud. Arduino -ning turli xil modellari mavjud. Ushbu qo'llanma Arduino Uno yoki Arduino MKR1010 -dan qanday foydalanishni tasvirlaydi. Ammo boshqa modellardan ham foydalanish mumkin.

Qo'llanmani boshlashdan oldin, Arduino ishlab chiqish muhitini va sizning modelingiz uchun zarur bo'lgan kutubxonalarni yuklab oling. Ishlab chiqish muhiti https://www.arduino.cc/en/main/software -da, o'rnatish ko'rsatmalari esa https://www.arduino.cc/en/main/software -da mavjud.

Magnit maydon nima?

Doimiy magnitlar boshqa doimiy magnitlarga ta'sir qiladi. Oqim o'tkazuvchi simlar boshqa oqim o'tkazuvchi simlarga kuch ta'sir qiladi. Doimiy magnitlar va tok o'tkazuvchi simlar ham bir -biriga ta'sir qiladi. Sinov oqimining birligiga to'g'ri keladigan bu kuch magnit maydondir.

Agar biz ob'ektning hajmini o'lchasak, bitta skalyar sonni olamiz. Biroq, magnitlanish vektor maydoni bilan tavsiflanadi, bu murakkabroq miqdor. Birinchidan, u butun makon bo'ylab joylashuviga qarab o'zgaradi. Masalan, doimiy magnitdan bir santimetr masofadagi magnit maydoni, ehtimol, o'n santimetr naridagi magnit maydonidan kattaroqdir.

Keyinchalik, kosmosning har bir nuqtasidagi magnit maydoni vektor bilan ifodalanadi. Vektorning kattaligi magnit maydonining kuchini ifodalaydi. Yo'nalish kuch yo'nalishiga ham, sinov oqimi yo'nalishiga ham perpendikulyar.

Biz magnit maydonini bitta joyda o'q sifatida tasavvur qilishimiz mumkin. Biz magnit maydonini kosmosdagi har xil o'lchamdagi va har xil yo'nalishdagi o'qlar yordamida tasavvur qila olamiz. Chiroyli vizualizatsiya https://www.falstad.com/vector3dm/ saytida mavjud. Biz qurayotgan magnitometr displeyda o'q sifatida sensorlar joylashgan joydagi magnit maydonni ko'rsatadi.

Hall effekti sensori nima va u qanday ishlaydi?

Hall effekti sensori - bu ma'lum bir yo'nalish bo'yicha magnit maydonining kuchini o'lchaydigan kichik, arzon qurilma. U ortiqcha zaryadlangan dopingli yarimo'tkazgichdan yasalgan. Ba'zi Hall effektli sensorlarning chiqishi analog kuchlanishdir. Boshqa Hall effektli sensorlar o'rnatilgan taqqoslagichga ega va raqamli chiqishni ishlab chiqaradi. Boshqa Hall effektli sensorlar oqim tezligini, aylanish tezligini yoki boshqa miqdorlarni o'lchaydigan katta asboblarga birlashtirilgan.

Hall effekti ortidagi fizika Lorents kuch tenglamasi bilan umumlashtirilgan. Bu tenglama tashqi elektr va magnit maydon tufayli harakatlanuvchi zaryadning kuchini tavsiflaydi.

Rasm
Rasm

Quyidagi rasm Hall effektini ko'rsatadi. Aytaylik, biz ko'k o'q yo'nalishi bo'yicha magnit maydonining kuchini o'lchashni xohlaymiz. Rasmning chap qismida ko'rsatilgandek, biz o'lchanadigan maydon yo'nalishiga perpendikulyar bo'lgan yarimo'tkazgich bo'lagi orqali tok o'tkazamiz. Oqim - bu zaryadlar oqimi, shuning uchun yarimo'tkazgichdagi zaryad ma'lum tezlik bilan harakat qiladi. Rasmning o'rta qismida ko'rsatilganidek, bu zaryad tashqi maydon tufayli kuch sezadi. Zaryadlar kuch tufayli harakatlanadi va yarimo'tkazgichning chetida to'planadi. To'plangan zaryadlar kuchi tashqi magnit maydoni ta'siridagi kuchni muvozanatlashtirmaguncha zaryadlar to'planib boradi. Rasmning o'ng qismida ko'rsatilgandek, yarimo'tkazgichdagi kuchlanishni o'lchashimiz mumkin. O'lchangan kuchlanish magnit maydonining kuchiga mutanosibdir va u oqimga va magnit maydonining yo'nalishiga perpendikulyar yo'nalishda bo'ladi.

Rasm
Rasm

Izometrik proektsiya nima?

Kosmosning har bir nuqtasida magnit maydon uch o'lchovli vektor bilan tavsiflanadi. Biroq, bizning ekranimiz ikki o'lchovli. Biz uch o'lchovli vektorni ikki o'lchovli tekislikka loyihalashimiz mumkin, shunda biz uni ekranda chizamiz. Buni amalga oshirishning izometrik proyeksiyasi, ortografik proektsiyasi yoki qiyshiq proektsiyasi kabi bir qancha usullar mavjud.

Izometrik proyeksiyada x, y va z o'qlari bir -biridan 120 daraja masofada joylashgan bo'lib, ular bir xil darajada oldindan tasvirlangan ko'rinadi. Izometrik proektsiya haqida qo'shimcha ma'lumotlarni, shuningdek kerakli formulalarni Vikipediyaning mavzu bo'yicha sahifasida topish mumkin.

1 -qadam: materiallarni yig'ish

Arduino va kabel

Arduino - magnitometrning miyasi. Ushbu ko'rsatmalar Arduino Uno yoki Arduino MKR1010 -dan qanday foydalanishni tasvirlaydi. Har qanday holatda ham, uni kompyuterga ulash uchun kabel kerak.

1 -variant: Arduino Uno va USB AB kabeli

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

2 -variant: Arduino MKR1010 va microUSB kabeli

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 displeyi

TFT ingichka plyonkali tranzistor degan ma'noni anglatadi. Bu 1,44 dyuymli displeyda 128 x 128 pikselli displey mavjud. U kichik, yorqin va rang -barang. U taxtaga biriktirilgan. Biroq, bosh pimlari alohida bo'ladi, shuning uchun siz ularni lehimlashingiz kerak. kerak.)

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

    Rasm
    Rasm
  • Analog zal effektli sensorlar

Uchta Hall effekti sensori kerak. Quyidagi havola Allegro qism raqami A1324LUA-T uchun. Ushbu sensor uchun 1 -pin - bu besleme zo'riqishi, 2 -pin - er, 3 -pin - chiqish. Boshqa Hall sensorlar ham ishlashi kerak, lekin ularning analog emas, raqamli ekanligiga ishonch hosil qiling. Agar siz boshqa sensordan foydalansangiz, pinoutni tekshiring va agar kerak bo'lsa, simlarni to'g'rilang. (Aslida men sinov uchun bir kompaniyaning boshqa sensoridan foydalandim. Ammo men ishlatganim eskirgan va bu sensor uning o'rnini bosgan.)

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

Kichik non paneli va sim

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

Sinov uchun doimiy magnitlar

Sovutgich magnitlari yaxshi ishlaydi.

2 -qadam: simlarni ulash

Ulanish
Ulanish

Sarlavhalarni ekranda lehimlang.

Rasm
Rasm

Sensorlarni taxtaning bir chetiga, displey va Arduino -ni qarama -qarshi uchiga joylashtiring. Arduino va displeydagi simlar oqimi magnit maydonlarni hosil qiladi, biz sensorlar o'qishini xohlamaymiz. Bundan tashqari, biz sensorlarni doimiy magnitlar yoniga qo'yishni xohlashimiz mumkin, bu displey va sensor simlaridagi oqimga salbiy ta'sir ko'rsatishi mumkin. Shu sabablarga ko'ra, biz sensorlar displeydan va Arduino -dan uzoqda bo'lishini xohlaymiz. Shu sabablarga ko'ra, bu magnitometrni juda kuchli magnit maydonlaridan uzoqroq tutish kerak.

Datchiklarni bir -biriga perpendikulyar, lekin bir -biriga iloji boricha yaqinroq joylashtiring. Datchiklarni perpendikulyar qilish uchun ularni sekin eging. Har bir sensorning har bir pinasi alohida taxtaning alohida qatorida bo'lishi kerak, shuning uchun uni alohida ulash mumkin.

Rasm
Rasm

Ikkita sababga ko'ra, simlar MKR1010 va Uno o'rtasida biroz farq qiladi. Birinchidan, Arduino va displey SPI orqali muloqot qiladi. Arduino -ning turli xil modellarida SPI -ning ma'lum liniyalari uchun ajratilgan pinlar mavjud. Ikkinchidan, Uno -ning analog kirishlari 5 V gacha, MKR1010 -ning analogli kirishlari esa faqat 3,3 V gacha qabul qilishi mumkin. Hall effektli sensorlar uchun tavsiya etilgan besleme zo'riqishi 5 V. Sensorning chiqishlari Arduino analogli kirishiga ulangan, va ular besleme zo'riqishida katta bo'lishi mumkin. Uno uchun datchiklar uchun tavsiya etilgan 5 V kuchlanishdan foydalaning. MKR1010 uchun Arduino analog kirishi hech qachon qo'lidan keladigan kuchlanishni ko'rmasligi uchun 3,3 V dan foydalaning.

Siz foydalanadigan Arduino uchun quyidagi diagramma va ko'rsatmalarga amal qiling.

Arduino Uno -ga ulanish

Rasm
Rasm

Displeyda 11 ta pin bor. Ularni Arduino Uno -ga quyidagicha ulang. (NC ulanmagan degan ma'noni anglatadi.)

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

Sensorlarning Vinini Arduino 5V ga ulang. Sensor erini Arduino -ga ulang. Sensorlarning chiqishini Arduino A1, A2 va A3 analogli kirishiga ulang.

Rasm
Rasm

Arduino MKR1010 bilan simlarni ulash

Rasm
Rasm

Displeyda 11 ta pin bor. Ularni Arduino -ga quyidagicha ulang. (NC ulanmagan degan ma'noni anglatadi.)

  • 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

Sensor Vinni Arduino Vcc -ga ulang. Bu pin 5V emas, balki 3.3V. Sensor erini Arduino -ga ulang. Sensorlarning chiqishini Arduino A1, A2 va A3 analogli kirishiga ulang.

Rasm
Rasm

3 -qadam: displeyni sinab ko'ring

Keling, TFT displeyining ishlashini ta'minlaylik. Yaxshiyamki, Adafruit -da foydalanuvchilar uchun qulay kutubxonalar va ular bilan ishlash uchun ajoyib qo'llanma mavjud. Ushbu ko'rsatmalar https://learn.adafruit.com/adafruit-1-44-color-tft-with-micro-sd-socket/overview qo'llanmasini diqqat bilan kuzatib boradi.

Arduino rivojlanish muhitini oching. Asboblar → Kutubxonalarni boshqarish -ga o'ting. Adafruit_GFX, Adafruit_ZeroDMA va Adafruit_ST7735 kutubxonalarini o'rnating. Android ishlab chiqish muhitini qayta ishga tushiring.

Eng grafik grafik misol kutubxonalarga kiritilgan. Uni oching. Fayl → Misollar → Adafruit ST7735 va ST7789 kutubxonasi → graphicstest. 1.44 dyuymli izohni tanlash uchun 95 -qatorni va 98 -qatorni izohlamang.

Asl versiya:

94 // 1,8 dyuymli TFT ekranidan foydalansangiz, bu boshlang'ichdan foydalaning:

95 tft.initR (INITR_BLACKTAB); // Init ST7735S chipi, qora yorliq 96 97 // Yoki 1.44 dyuymli TFT: 98 //tft.initR(INITR_144GREENTAB) ishlatilsa, bu boshlovchidan foydalaning (izoh bermang); // Init ST7735R chipi, yashil yorliq

1,44 dyuymli displey uchun to'g'ri versiya:

94 // 1,8 dyuymli TFT ekranidan foydalansangiz, bu boshlang'ichdan foydalaning:

95 //tft.initR(INIT_BLACKTAB); // Init ST7735S chipi, 96 97 qora varag'i // Yoki 1.44 dyuymli TFT: 98 tft.initR (INITR_144GREENTAB) ishlatilsa, bu boshlovchidan foydalaning (izoh bermang); // Init SST35R chipi, yashil yorliq

Displey SPI yordamida muloqot qiladi va Arduinosning turli xil modellari ba'zi aloqa liniyalari uchun har xil ajratilgan pinlardan foydalanadi. Eng grafik grafik misol Uno pinlari bilan ishlash uchun o'rnatiladi. Agar siz MKR1010 dan foydalanayotgan bo'lsangiz, 80 va 81 qatorlar orasiga quyidagi qatorlarni qo'shing.

MKR1010 uchun tuzatishlar:

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

O'zgartirilgan grafik namunasini saqlang. Agar siz hali buni qilmagan bo'lsangiz, Arduino -ni kompyuterga ulang. Kompyuter Arduino -ni topa olishini tekshirish uchun Asboblar → Kengash va Asboblar → Port -ga o'ting. Sketch → Yuklash -ga o'ting. Agar misol ishlasa, displeyda chiziqlar, to'rtburchaklar, matn va to'liq demo ko'rsatiladi. Adafruit qo'llanmasi, agar muammolarni bartaraf etish zarur bo'lsa, batafsilroq ma'lumot beradi.

4 -qadam: Magnetometr kodi

Qo'shilgan kodni yuklab oling va uni Arduino ishlab chiqish muhitida oching.

Bu dastur oltita funktsiyadan foydalanadi:

Setup () displeyni ishga tushiradi

Loop () dasturning asosiy tsiklini o'z ichiga oladi. U ekranni qoraytiradi, o'qlarni tortadi, kirishni o'qiydi va magnit maydon vektorini ifodalovchi o'qni chizadi. Uning yangilanish tezligi bir soniya, uni 127 -qatorni o'zgartirish orqali o'zgartirish mumkin

DrawAxes3d () x, y va z o'qlarini chizadi va belgilaydi

DrawArrow3d () 0 dan 1023 gacha bo'lgan x, y va z kirishni oladi. Bu qiymatlardan o'qning fazodagi oxirgi nuqtalarini hisoblab chiqadi. Keyinchalik, ekrandagi oxirgi nuqtalarni hisoblash uchun isometricxx () va isometricyy () funktsiyalaridan foydalaniladi. Nihoyat, u o'qni tortadi va ekranning pastki qismidagi kuchlanishlarni bosib chiqaradi

Izometricxx () izometrik proyeksiyaning x koordinatasini topadi. U nuqtaning x, y va z koordinatalarini oladi va ekrandagi tegishli x piksel o'rnini qaytaradi

Izometricyy () izometrik proektsiyaning y koordinatasini topadi. U nuqtaning x, y va z koordinatalarini oladi va ekrandagi y pikselning mos joyini qaytaradi

Kodni ishga tushirishdan oldin, displey bilan SPI aloqasi uchun qaysi pimlardan foydalanish kerakligini va sensorlar uchun manba kuchlanishini ko'rsatishimiz kerak. Agar siz MKR1010-dan foydalanayotgan bo'lsangiz, 92-96-qatorlarni ham, 110-qatorni ham izohlang. Keyin 85-89-qatorlarni va 108-qatorni sharhlamang. Agar siz Uno-dan foydalanayotgan bo'lsangiz, 85-89-qatorlarni ham, 108-qatorni ham izohlang. Keyin, 92-96-qatorlarni va 110-qatorni izohlamang.

Kodni yuklang, eskiz → yuklash.

Siz qizil, x, y va z o'qlarini ko'rishingiz kerak. Ko'k aylanasi bo'lgan yashil o'q datchiklardagi magnit maydon vektorini ifodalaydi. Pastki chapda kuchlanish ko'rsatkichlari ko'rsatiladi. Sensorlarga magnitni yaqinlashtirganda, kuchlanish ko'rsatkichlari o'zgarishi kerak, o'qning kattaligi ham oshishi kerak.

Rasm
Rasm

5 -qadam: Kelgusi ish

Kelajakdagi ish
Kelajakdagi ish

Keyingi qadam qurilmani kalibrlash bo'ladi. Sensor ma'lumotlar varag'i xom sensor kuchlanish qiymatlarini magnit maydon kuchiga aylantirish haqida ma'lumot beradi. Kalibrlashni aniqroq magnitometr bilan solishtirish mumkin.

Doimiy magnitlar oqim o'tkazuvchi simlar bilan o'zaro ta'sir qiladi. Displey yaqinidagi va Arduino simlari magnit maydonlarni hosil qiladi, bu sensor o'qishiga ta'sir qilishi mumkin. Bundan tashqari, agar bu qurilma kuchli doimiy magnit yaqinida o'lchash uchun ishlatilsa, sinovdan o'tkaziladigan qurilmaning magnit maydoni o'zaro ta'sir qiladi, shovqinni chiqaradi va Arduino va displeyga zarar etkazishi mumkin. Himoya qilish magnitometrni yanada mustahkam qilishi mumkin. Arduino, agar u metall qutiga o'ralgan bo'lsa, katta magnit maydonlarga bardosh bera oladi va agar himoyalanmagan kabellar datchiklarni yalang'och simlar o'rniga ulasa, shovqin kamroq bo'ladi.

Magnit maydon - bu pozitsiyaning funktsiyasi, shuning uchun u kosmosning har bir nuqtasida farq qiladi. Bu qurilma magnit maydonining bir nuqtasida x, y va z komponentlarini o'lchash uchun uchta sensordan foydalanadi. Sensorlar bir -biriga yaqin, lekin bir nuqtada emas va bu magnitometrning ruxsatini cheklaydi. Magnit maydon o'qilishini har xil nuqtalarda saqlash yaxshi bo'lardi, keyin ularni tegishli o'qlar qatori sifatida ko'rsatish. Biroq, bu boshqa kun uchun loyiha.

Manbalar

Adafruit Arduino Graphics kutubxonalari haqida ma'lumot

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

Magnit maydon vizualizatsiyasi

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

Hall effekti va Hall effekti sensori haqida ma'lumot

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

Izometrik proektsiya haqida ma'lumot

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

Tavsiya: