Talaan ng mga Nilalaman:

Arduino Magnetometer: 5 Hakbang (na may Mga Larawan)
Arduino Magnetometer: 5 Hakbang (na may Mga Larawan)

Video: Arduino Magnetometer: 5 Hakbang (na may Mga Larawan)

Video: Arduino Magnetometer: 5 Hakbang (na may Mga Larawan)
Video: How to use MPU-9250 Gyroscope, Accelerometer, Magnetometer for Arduino 2024, Setyembre
Anonim
Arduino Magnetometer
Arduino Magnetometer

Ano ang itinatayo natin?

Hindi nakakakita ang mga tao ng mga magnetic field, ngunit gumagamit kami ng mga aparato na umaasa sa mga magnet sa lahat ng oras. Ang mga motor, kumpas, sensor ng pag-ikot, at mga turbine ng hangin, halimbawa, lahat ay nangangailangan ng mga magnet para sa pagpapatakbo. Inilalarawan ng tutorial na ito kung paano bumuo ng isang Arduino batay sa magnetometer na nakakaramdam ng magnetikong patlang gamit ang tatlong sensor ng Hall effect. Ang magnetic field vector sa isang lokasyon ay ipinapakita sa isang maliit na screen gamit ang isometric projection.

Ano ang isang Arduino?

Ang isang Arduino ay isang maliit na open-source na madaling gamitin ng microcontroller. Mayroon itong mga digital input at output pin. Mayroon din itong mga analog input pin, na kapaki-pakinabang para sa pagbabasa ng input mula sa mga sensor. Magagamit ang iba't ibang mga modelo ng Arduino. Inilalarawan ng tutorial na ito kung paano gamitin ang Arduino Uno o ang Arduino MKR1010. Gayunpaman ang iba pang mga modelo ay maaaring magamit din.

Bago mo simulan ang tutorial na ito, i-download ang Arduino development environment pati na rin ang anumang mga library na kinakailangan para sa iyong partikular na modelo. Ang kapaligiran sa pag-unlad ay magagamit sa https://www.arduino.cc/en/main/software, at ang mga tagubilin sa pag-install ay magagamit sa

Ano ang isang magnetic field?

Ang mga permanenteng magnet ay nagsisikap ng lakas sa iba pang mga permanenteng magnet. Ang mga kasalukuyang nagdadala ng mga wire ay nagbibigay lakas sa iba pang mga kasalukuyang nagdadala ng mga wire. Ang mga permanenteng magnet at kasalukuyang nagdadala ng mga wire ay nagsisikap din sa bawat isa. Ang lakas na ito bawat pagsubok na yunit ay isang magnetic field.

Kung susukatin namin ang dami ng isang bagay, nakakakuha kami ng isang solong numero ng scalar. Gayunpaman, ang magnetismo ay inilarawan ng isang vector field, isang mas kumplikadong dami. Una, nag-iiba ito sa posisyon sa buong puwang. Halimbawa

Susunod, ang magnetic field sa bawat punto sa kalawakan ay kinakatawan ng isang vector. Ang lakas ng vector ay kumakatawan sa lakas ng magnetic field. Ang direksyon ay patayo sa parehong direksyon ng puwersa at ang direksyon ng kasalukuyang pagsubok.

Maaari nating mailarawan ang magnetic field sa isang solong lokasyon bilang isang arrow. Maaari nating mailarawan ang magnetic field sa buong puwang ng isang hanay ng mga arrow sa iba't ibang mga lokasyon, posibleng magkakaiba ang laki at tumuturo sa iba't ibang direksyon. Ang isang magandang visualization ay magagamit sa https://www.falstad.com/vector3dm/. Ang magnetometer na aming binubuo ay nagpapakita ng magnetic field sa lokasyon ng mga sensor bilang isang arrow sa display.

Ano ang isang sensor ng Hall effect, at paano ito gumagana?

Ang sensor ng Hall effect ay isang maliit, murang aparato na sumusukat sa lakas ng magnetic field kasama ang isang partikular na direksyon. Ginawa ito mula sa isang piraso ng semiconductor na na-doped na may labis na singil. Ang output ng ilang sensor ng Hall effect ay isang analog boltahe. Ang iba pang mga sensor ng epekto sa Hall ay may isang integrated comparator at gumagawa ng isang digital output. Ang iba pang mga sensor ng epekto sa Hall ay isinama sa mas malaking mga instrumento na sumusukat sa rate ng daloy, bilis ng pag-ikot, o iba pang dami.

Ang pisika sa likod ng epekto ng Hall ay buod ng equation ng puwersang Lorentz. Inilalarawan ng equation na ito ang puwersa sa isang gumagalaw na singil dahil sa isang panlabas na electric at magnetic field.

Larawan
Larawan

Ang pigura sa ibaba ay naglalarawan ng epekto ng Hall. Ipagpalagay na nais nating sukatin ang lakas ng magnetic field sa direksyon ng asul na arrow. Tulad ng ipinakita sa kaliwang bahagi ng pigura, naglalagay kami ng isang kasalukuyang sa pamamagitan ng isang piraso ng semiconductor patayo sa direksyon ng patlang na sinusukat. Ang kasalukuyang daloy ng mga singil, kaya't ang isang singil sa semiconductor ay gumagalaw nang may bilis. Ang singil na ito ay makakaramdam ng isang puwersa dahil sa panlabas na patlang, tulad ng ipinakita sa gitnang bahagi ng pigura. Ang mga singil ay lilipat dahil sa lakas at maipon sa mga gilid ng semiconductor. Bumubuo ang mga pagsingil hanggang sa lakas dahil sa naipon na mga singil na balanse ang puwersa dahil sa panlabas na magnetic field. Masusukat namin ang boltahe sa kabuuan ng semiconductor, tulad ng ipinakita sa kanang bahagi ng pigura. Ang sukat ng boltahe ay proporsyonal sa lakas ng magnetic field, at ito ay sa direksyon na patayo sa kasalukuyang at direksyon ng magnetic field.

Larawan
Larawan

Ano ang proxy ng isometric?

Sa bawat punto sa kalawakan, ang magnetic field ay inilarawan ng isang tatlong dimensional na vector. Gayunpaman, ang aming display screen ay dalawang dimensional. Maaari naming ipalabas ang tatlong dimensional na vector sa isang dalawang dimensional na eroplano upang maaari naming iguhit ito sa screen. Mayroong maraming mga paraan upang magawa ito tulad ng isometric projection, orthographic projection, o oblique projection.

Sa isometric projection, ang x, y, at z axes ay 120 degree ang pagitan, at lumilitaw silang pantay na hinuhulaan. Ang karagdagang impormasyon tungkol sa proxy ng isometric, pati na rin ang mga formula na kinakailangan, ay matatagpuan sa pahina ng Wikipedia tungkol sa paksa.

Hakbang 1: Ipunin ang Mga Pantustos

Arduino at Cable

Ang Arduino ay utak ng magnetometer. Inilalarawan ng mga tagubiling ito kung paano gamitin ang alinman sa isang Arduino Uno o isang Arduino MKR1010. Sa alinmang kaso, kailangan ng isang cable upang ikonekta ito sa computer.

Pagpipilian 1: Arduino Uno at USB AB Cable

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

Pagpipilian 2: Arduino MKR1010 at microUSB cable

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

Ipakita ang TFT

Ang TFT ay nangangahulugang Thin Film Transistor. Ang display na 1.44 ay naglalaman ng 128 by 128 pixel. Ito ay maliit, maliwanag, at makulay. Dumating ito sa isang breakout board. Gayunpaman, ang mga header pin ay magkakahiwalay, kaya kailangan mong solder ang mga ito. (Ang solder at isang soldering iron ay kailangan.)

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

    Larawan
    Larawan
  • Mga Sensor ng Epekto ng Analog Hall

Tatlong Hall effect sensor ang kinakailangan. Ang link sa ibaba ay para sa numero ng bahagi ng Allegro na A1324LUA-T. Para sa sensor na ito, ang pin 1 ay ang supply voltage, ang pin 2 ay ground, at ang pin 3 ang output. Ang iba pang mga sensor ng Hall ay dapat ding gumana, ngunit tiyakin na ang mga ito ay analog, hindi digital. Kung gumagamit ka ng ibang sensor, suriin ang pinout at ayusin ang mga kable kung kinakailangan. (Gumamit talaga ako ng ibang sensor mula sa parehong kumpanya para sa mga layunin sa pagsubok. Gayunpaman, ang ginamit ko ay lipas na, at ang sensor na ito ang kapalit nito.)

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

Maliit na Breadboard at Wire

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

Permanenteng Magneto para sa Pagsubok

Ang mga magnet na reprigerator ay gagana nang maayos.

Hakbang 2: Mga kable

Kable
Kable

Maghinang ng mga header sa display.

Larawan
Larawan

Ilagay ang mga sensor sa isang dulo ng breadboard, at ilagay ang display at Arduino sa tapat na dulo. Ang kasalukuyang sa mga wire sa Arduino at ang display ay bumubuo ng mga magnetic field, na hindi namin nais na mabasa ng mga sensor. Bilang karagdagan, baka gusto naming ilagay ang mga sensor malapit sa mga permanenteng magnet, na maaaring makaapekto sa kasalukuyang sa mga wire ng display at sensor. Para sa mga kadahilanang ito, nais namin ang mga sensor na malayo sa display at Arduino. Dahil din sa mga kadahilanang ito, ang magnetometer na ito ay dapat itago mula sa napakalakas na mga magnetic field.

Ilagay ang mga sensor patayo sa bawat isa ngunit bilang malapit sa bawat isa hangga't maaari. Dahan-dahang yumuko ang mga sensor upang mai-patayo ang mga ito. Ang bawat pin ng bawat sensor ay dapat na nasa isang magkakahiwalay na hilera ng breadboard upang maaari itong magkahiwalay na konektado.

Larawan
Larawan

Ang mga kable ay bahagyang naiiba sa pagitan ng MKR1010 at ng Uno para sa dalawang kadahilanan. Una, ang Arduino at display ay nakikipag-usap ng SPI. Ang magkakaibang mga modelo ng Arduino ay may iba't ibang nakatuon na mga pin para sa ilang mga linya ng SPI. Pangalawa, ang mga analog input ng Uno ay maaaring tanggapin hanggang sa 5 V habang ang mga analog input ng MKR1010 ay maaaring tanggapin lamang hanggang sa 3.3 V. Ang inirekumendang boltahe ng suplay para sa mga sensor ng epekto ng Hall ay 5 V. Ang mga output ng sensor ay konektado sa Arduino analog inputs, at ang mga ito ay maaaring maging kasing laki ng mga supply voltages. Para sa Uno, gamitin ang inirekumendang 5 V na supply para sa mga sensor. Para sa MKR1010, gumamit ng 3.3 V upang ang analog input ng Arduino ay hindi kailanman makakakita ng boltahe na mas malaki kaysa sa kayang hawakan nito.

Sundin ang mga diagram at tagubilin sa ibaba para sa Arduino na iyong ginagamit.

Mga kable na may Arduino Uno

Larawan
Larawan

Ang display ay may 11 mga pin. Ikonekta ang mga ito sa Arduino Uno tulad ng sumusunod. (Ang ibig sabihin ng NC ay hindi konektado.)

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

Ikonekta ang Vin ng mga sensor sa 5V ng Arduino. Ikonekta ang ground ng sensor sa lupa ng Arduino. Ikonekta ang output ng mga sensor sa mga analog input na A1, A2, at A3 ng Arduino.

Larawan
Larawan

Mga kable na may Arduino MKR1010

Larawan
Larawan

Ang display ay may 11 mga pin. Ikonekta ang mga ito sa Arduino tulad ng sumusunod. (Ang ibig sabihin ng NC ay hindi konektado.)

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

Ikonekta ang Vin ng mga sensor sa Vcc ng Arduino. Ang pin na ito ay nasa 3.3V, hindi 5V. Ikonekta ang lupa ng sensor sa lupa ng Arduino. Ikonekta ang output ng mga sensor sa mga analog input na A1, A2, at A3 ng Arduino.

Larawan
Larawan

Hakbang 3: Subukan ang Display

Paganahin natin ang display na TFT. Sa kasamaang palad, ang Adafruit ay may ilang mga magiliw na aklatan ng gumagamit at isang mahusay na tutorial na sumabay sa kanila. Ang mga tagubiling ito ay malapit na sundin ang tutorial, Buksan ang Arduino development environment. Pumunta sa Mga Tool → Pamahalaan ang Mga Aklatan. I-install ang mga aklatan ng Adafruit_GFX, Adafruit_ZeroDMA, at Adafruit_ST7735. I-restart ang kapaligiran sa pag-unlad ng Android.

Ang halimbawa ng graphicstest ay kasama sa mga aklatan. Buksan mo. File → Mga Halimbawa → Adafruit ST7735 at ST7789 Library → graphicstest. Upang mapili ang 1.44 display comment out line 95 at linya ng hindi pagkakapreso 98.

Orihinal na bersyon:

94 // Gamitin ang initializer na ito kung gumagamit ng isang 1.8 TFT screen:

95 tft.initR (INITR_BLACKTAB); // Init ST7735S chip, black tab 96 97 // O gamitin ang initializer na ito (hindi komportable) kung gumagamit ng isang 1.44 TFT: 98 //tft.initR(INITR_144GREENTAB); // Init ST7735R chip, green tab

Tamang bersyon para sa display na 1.44 :

94 // Gamitin ang initializer na ito kung gumagamit ng isang 1.8 TFT screen:

95 //tft.initR(INIT_BLACKTAB); // Init ST7735S chip, black tab 96 97 // O gamitin ang initializer na ito (hindi komportable) kung gumagamit ng isang 1.44 TFT: 98 tft.initR (INITR_144GREENTAB); // Init SST35R chip, green tab

Nakikipag-usap ang display gamit ang SPI, at iba't ibang mga modelo ng Arduinos ay gumagamit ng iba't ibang nakatuon na mga pin para sa ilang mga linya ng komunikasyon. Ang halimbawa ng graphicstest ay naka-set up upang gumana kasama ang mga Uno pin. Kung gumagamit ka ng MKR1010, idagdag ang mga sumusunod na linya sa pagitan ng mga linya 80 at 81.

Mga Pagwawasto para sa MKR1010:

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_SSTK, TFT_RR 81 float p = 3.1415926;

I-save ang binagong halimbawa ng graphicstest. I-plug ang Arduino sa computer kung hindi mo pa nagagawa. Pumunta sa Mga Tool → Lupon at Mga Tool → Port upang mapatunayan na mahahanap ng computer ang Arduino. Pumunta sa Sketch → Mag-upload. Kung gumagana ang halimbawa, magpapakita ang display ng mga linya, parihaba, teksto, at kumpletong demo. Nagbibigay ang tutorial ng Adafruit ng mas maraming detalye kung kinakailangan ng pagto-troubleshoot.

Hakbang 4: Ang Magnetometer Code

I-download ang nakalakip na code, at buksan ito sa Arduino development environment.

Gumagamit ang program na ito ng anim na pagpapaandar:

Ang pag-setup () ay nagpapasimula sa pagpapakita

Naglalaman ang Loop () ng pangunahing loop ng programa. Inilalagay nito ang kulay sa screen, iginuhit ang mga palakol, binabasa ang mga input, at iginuhit ang arrow na kumakatawan sa vector ng magnetic field. Mayroon itong rate ng pag-refresh ng isang segundo na maaaring mabago sa pamamagitan ng pagbabago ng linya 127

Iguhit at label ng DrawAxes3d () ang mga axis na x, y, at z

Ang DrawArrow3d () ay tumatagal ng isang x, y, at z input mula 0 hanggang 1023. Mula sa mga halagang ito, kinakalkula nito ang mga dulo ng arrow ng puwang. Susunod, gumagamit ito ng mga function na isometricxx () at isometricyy () upang makalkula ang mga end point sa screen. Sa wakas, iginuhit nito ang arrow at inililimbag ang mga voltages sa ilalim ng screen

Nahahanap ng Isometricxx () ang x coordinate ng isometric projection. Tumatagal ito sa mga coordinate ng x, y, at z ng isang punto at ibabalik ang kaukulang lokasyon ng x pixel sa screen

Nahahanap ng Isometricyy () ang koordinasyon ng isometric projection. Tumatagal ito sa mga coordinate ng x, y, at z ng isang punto at ibabalik ang kaukulang lokasyon ng y pixel sa screen

Bago patakbuhin ang code, kailangan naming tukuyin kung aling mga pin ang gagamitin para sa SPI na komunikasyon sa display, at kailangan naming tukuyin ang pinagmulan ng boltahe para sa mga sensor. Kung gumagamit ka ng MKR1010, magbigay ng puna sa mga linya na 92-96 pati na rin linya 110. Kung gayon, mga linya ng hindi pagkakasundo 85-89 pati na rin linya 108. Kung gumagamit ka ng Uno, magkomento ng mga linya 85-89 pati na rin linya 108 Pagkatapos, ang mga linya na hindi nag-iingat ng 92-96 pati na rin ang linya 110.

I-upload ang code, Sketch → I-upload.

Dapat mong makita ang mga axis ng x, y, at z sa pula. Ang isang berdeng arrow na may asul na bilog para sa tip ay kumakatawan sa vector ng magnetic field sa mga sensor. Ang mga pagbasa ng boltahe ay ipinapakita sa ibabang kaliwa. Habang inilalapit mo ang isang magnet sa mga sensor, dapat magbago ang mga pagbasa ng boltahe, at dapat lumaki ang laki ng arrow.

Larawan
Larawan

Hakbang 5: Gawain sa Hinaharap

Gawain sa Hinaharap
Gawain sa Hinaharap

Ang susunod na hakbang ay upang i-calibrate ang aparato. Ang sheet data ng sensor ay nagbibigay ng impormasyon tungkol sa kung paano i-convert ang mga halaga ng hilaw na boltahe ng sensor sa lakas ng magnetic field. Ang pagkakalibrate ay maaaring mapatunayan sa pamamagitan ng paghahambing sa isang mas tumpak na magnetometer.

Ang mga permanenteng magnet ay nakikipag-ugnay sa kasalukuyang mga wire na nagdadala. Ang mga wire na malapit sa display at sa Arduino ay bumubuo ng mga magnetic field na maaaring makaapekto sa mga pagbasa ng sensor. Bilang karagdagan, kung ang aparatong ito ay ginagamit upang sukatin malapit sa isang malakas na permanenteng magnet, ang magnetic field mula sa aparato sa ilalim ng pagsubok ay makikipag-ugnay, magpapakilala ng ingay, at posibleng makapinsala sa Arduino at ipakita. Ang Shielding ay maaaring gawing mas matatag ang magnetometer na ito. Ang Arduino ay makatiis ng mas malalaking mga magnetikong larangan kung ito ay pinrotektahan sa isang metal box, at mas kaunting ingay ang ipapakilala kung ang mga kalasag na mga kable ay kumokonekta sa mga sensor sa halip na walang mga wire.

Ang magnetikong patlang ay isang pagpapaandar ng posisyon, kaya't iba ito sa bawat punto sa kalawakan. Gumagamit ang aparatong ito ng tatlong mga sensor, isa upang masukat ang x, ang y, at ang sangkap ng z ng magnetic field sa isang punto. Ang mga sensor ay malapit sa bawat isa ngunit wala sa isang solong punto, at nililimitahan nito ang resolusyon ng magnetometer. Ito ay magiging cool na upang i-save ang mga magnetic field readings sa iba't ibang mga puntos pagkatapos ay ipakita ang mga ito bilang isang hanay ng mga arrow sa mga kaukulang lokasyon. Gayunpaman, iyon ay isang proyekto para sa ibang araw.

Mga Sanggunian

Impormasyon sa mga aklatan ng Adafruit Arduino Graphics

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

Pagpapakita ng magnetikong patlang

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

Ang impormasyon sa Hall effect at Hall effect sensors

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

Ang impormasyon sa proxy ng isometric

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

Inirerekumendang: