Kuidas kodus infrapunakaamerat alla 100 dollari eest ehitada (2. osa)

Möödus aega, kui olin kirjutanud selle artikli esimese peatüki. Kuid nüüd, uue aasta eelõhtul, on mul lõpuks piisavalt vaba aega, et lõpetada see, mida ma juba ammu lubasin.

Nii et siin me läheme ...

Kõigepealt vaatame kiiresti meie termopildisüsteemi põhiskeemi.

Kuidas märgata, et sellel skeemil on kolm peamist sõlme:

  • Laser-osuti mooduli sõlm
  • IR-andur MLX90614DCI sõlm
  • Servo sõlm
Iga sõlme kohta saate lugeda minu selle artikli eelmisest peatükist

Kuna toiteallikana kasutati standardset sülearvutit ja ühendati kogu see kraam läbi COM (USB) pordi, mis annab meile 5 V alalisvoolu ja 0,5 A (USB 2.0) või 0,9 A (USB 3.0), sõltuvalt sellest, millist USB-porti kasutatakse.

Kava skeem:

  • 3,3 V - kasutatakse IR-anduri toiteks ja ühendatakse läbi tõmbetakistite 4,7 kOhm väljunditega SDA ja SCL
  • 5 V - kasutatakse servode tarnimiseks.
  • D8 - vastutab horisontaalse servo pöördenurga eest.
  • D9 - vastutab vertikaalse servo pöördenurga eest.
  • A4 - ühendatakse infrapunaanduri SDA-kontaktiga
  • A5 - ühendatakse infrapunaanduri SCL-kontaktiga
  • GND - vastutab süsteemi maandamise eest

Olgu, kui nüüd riistvaraosaga aru saada, siis jätkame oma termopildi jaoks tarkvara loomist. Alguses plaanisin tarkvara osa veebiprojektina realiseerida Reacti abil, kuid arenduse hõlbustamiseks kasutasin standardset Windowsi vormi.

Läheme aga tagasi Arduinosse.

Andurite andmete lugemise alustamiseks peate GitHubi hoidlast alla laadima Adafruit_MLX90614. Pärast tihendamata kausta Adafruit_MLX90614 ümbernimetamist ja kontrollige, kas kaust Adafruit_MLX90614 sisaldab Adafruit_MLX90614.cpp ja Adafruit_MLX90614.h.

Pange raamatukogu kaust oma arduinosketchfolder / teegid / kausta. Võimalik, et peate looma teekide alamkausta, kui see on teie esimene teek. Taaskäivitage IDE.

Kui kõik ettevalmistused on tehtud, saame alustada tööd oma mikrokontrolleri tarkvara tuumaga.

Nii et põhimõtteliselt võime jagada meie programmi kolmeks väiksemaks osaks:

  • Muutujate määratlus
  • häälestus tühine
  • silmus tühine

Ei midagi erilist…

Muutujate määratluse osas lisame lihtsalt mõned täiendavad raamatukogud, mida kasutame järgmistes sammudes, ja muidugi määratleme kaks muutujat meie servose jaoks, ühe infrapunaanduri jaoks ja veel ühe, mis kutsub kordama meie skaneerimisalgoritmi kordamiseks, kuni see oleks vaja.

Tühja seadistamise korral määrame ja kinnitame muutuja Arduino reaalsetele tihvtidele.

Ja lõpuks üks silmus tühine osa, kuhu paigutatud meie süsteemi peamine loogika. Lühidalt, meil on siin 3 silmust. Esimene neist töötab kuni skannimine toimub ja lõpeb siis, kui kordub vale.

Teine silmus vastutab horisontaalse liikumise eest ja teeb kasutatud servote tehniliste omaduste tõttu 60 sammu 1 ° nurga all.

Sama asi töötab kolmanda silmuse puhul, mis vastutab vertikaalse liikumise eest, kuid sellisel juhul teeb servo ainult 45 sammu.

Pärast iga valmis vertikaalset silmust viiakse esimene servo tagasi vertikaalsesse algasendisse 65 ° ja kõik algab algusest.

Skaneerimise lõpus näete jadamonitori aknas maatriksi suurust 60✕45, kus kõik 2700 mõõtmist on seotud temperatuuriga, mille andur igal ajahetkel saavutab.

Ja selle maatriksi põhjal saate lihtsalt luua soovitud termopildi.

Lisasin pildikvaliteedi parandamiseks väikesed viivitused (100ms ja 50ms), peamine eesmärk oli teha kahe mõõtmise vahel mõni paus, et andur saaks selle ajani täpsemad andmed. Neid väärtusi saate vastavalt oma vajadustele suurendada või vähendada.

Tarkvara töölauaosa osas on kõik üsna lihtne - kõik, mis me vajame, et saada andmeid COM-pordist ja kuvada neid värvides vastavalt vastuvõetud temperatuuridele. Ma ei pane koodi sellepärast, et tegemist oleks tosina koodireaga, kuid kui olete huvitatud sellest, kuidas see minu poolt rakendatud on, vaadake minu Githubi hoidlat.

Nii et kuna me olime tarkvaraosa valmis saanud, on aeg proovida oma soojuskujutist töös. Skaneeriva objektina kasutasin külma veega pudelit, mis pandi lauale. Kuidas me näeme paremal pildil enamasti punaseid värve, mis tähendab, et skaneeritaval objektil on temperatuur kõrgem kui ta ise. Sinine värv tähistab pudeli sees olevat külma vett ning väikesed rohelised ja kollakasoranžid täpid näitavad vee soojendamise piirkondi.

Nii et kõik tundub vähemalt minu jaoks loogiline, võite proovida skannida kõike, mida soovite, ainult pidage meeles, et skaneerimine peaks toimuma täpselt objekti suunas, vastasel juhul võite püüda mõne kolmanda osapoole temperatuuri laike kõrge või madala temperatuuriga , mis võib teie termopildi segadusse ajada.

vasak - päris pilt; paremal - termopilt

Ahhhh ... unustasin peaaegu näidata, kuidas see kena välja näeb.

Nägus

Loodan, et see artikkel on kasulik kõigile, kes praegu proovivad sama teha või kavatsevad seda lähiajal teha.

Kui teile see lugu meeldis, klõpsake nuppu ja jagage, et aidata seda teistel leida! Lisage kommentaar alla.