BH1750. Ümbritseva valguse andur I2C siiniga.

BH1750. Ümbritseva valguse andur I2C siiniga.

BH1750. Ümbritseva valguse andur I2C siiniga.

BH1750 on suhteliselt kõrge eraldusvõime ja tundlikkusega ümbritseva valguse andur. See käitub nähtava valguse käes inimsilmaga võrreldaval viisil ja seda ei mõjuta infrapunakiirgus ega sõltu valgustuse tüübi värvitemperatuurist, st töötab hästi loomuliku valgusega ja erinevat tüüpi kunstlik valgustus. See suhtleb digitaalselt mikrokontrolleriga I2C buss, seega on see häirete suhtes vastupidav, kui see asetatakse seda lugevast vooluringist teatud kaugusele. Selle reaktsiooniaeg on üsna madal, kõige ebasoodsamatel asjaoludel alla 200 ms.

Sisukord

    BH1750 ümbritseva valguse andur

    Elektroonilisest vaatenurgast on selle rakendamine väga lihtne. Lihtsalt ühendage toide (2,4–3,6 V) ja I2C buss. Valikuliselt saab siini aadressi muuta kahe seadme ühendamiseks (madala taseme ADDR-iga on see 0B0100011 või 0x23 ja kõrge taseme ADDR-iga 0B1011100 või 0x5C) ja VDI-liini saab kasutada lähtestamisfunktsiooniks mikrokontroller.

    BH1750 ühendamiseks Arduino, lisaks sellele, et toiteallikaks on 3,3 V väljund, on kõige õigem kasutada lisaks nivoomuundurile tõmbetakistid jaoks I2C buss. Kuigi komponent toetab otseühendust siiniga I2C buss Ei ole soovitatav määrata vooluringi suurust ilma taseme teisendamist kaalumata.

    BH1750 ümbritseva valguse andur. Rakendusahel

    Tänu oma populaarsusele, mis on tingitud täpsuse suhtes väga odavusest, on mitmeid mooduleid, näiteks tuntud GY-30, mis on näha alguses fotol. Nende mugavamaks ühendamiseks mikrokontrolleriga prototüüpimisel sisaldavad need tavaliselt nivoomuundureid I2C buss ja pingeregulaatorid, et toita neid 5 V väljundi asemel kõrgema pingega (kuni 3,3 V) Arduino.

    Mudelil BH1750 on kaks lugemisrežiimi, pidev ja individuaalne, mis vastavad kahele olekule, aktiivsele ja väikese võimsusega või unerežiimile. Kui pideva lugemise režiimi kasutamisel jääb BH1750 aktiivseks ka pärast proovivõttu, siis pärast individuaalset mõõtmist lülitub see automaatselt puhke- ja vähese energiatarbega režiimi. Esimene lugemine pidevas režiimis võtab maksimaalselt 180 ms ja järgnevad 16 ms kuni 120 ms olenevalt eraldusvõimest.

    Andur on võimeline mõõtma intervallidega (eraldusvõime) 4 luksi, 1 luksi ja 0,5 luksi. BH1750 soovitab oma andmelehel kasutada eraldusvõimet 1 luksi, mis võimaldab eristada alla 10 luksi valgustust (mis vastab hämarusele) ja on immuunsem müra suhtes, mis võib mõõtmist mõjutada.

    Eraldusvõimed 1 luksi ja 4 luksi kasutavad täisarvu esindamiseks 16 bitti andmeid, nii et on võimalik saavutada maksimaalne mõõtmine 65535 luksi (päikseline päev ilma otsese valguseta). Režiim 0,5 luksi kasutab kümnendkoha jaoks kõige vähem olulist bitti (mõõdetakse 0,5 luksi kuni 0,5 luksi), nii et ülejäänud 15 bitiga on võimalik esitada maksimaalne väärtus 32767 luksi (välispind ilma otsese valguseta)

    Teoreetiline päikesevalgustus võrreldes BH1750 keskmise võimsusega
    Artikli kirjutamise koha ja päeva teoreetiline päikesevalgus (seaduslik aeg, mitte päikeseenergia) võrreldes BH1750 keskmise võimsusega 1 luksi juures

    Tavaliselt vastab optiline aken, mille järgi ümbritsevat valgust mõõdetakse, kogu nähtavale spektrile ja eesmärk on saavutada selles inimese omaga võrreldav tundlikkuse jaotus. Kui optilist akent vähendada (valgust mõõdetakse madalamas lainepikkuse vahemikus), saab BH1750 tundlikkust suurendada (kuni 0,11 luksi) optilise akna mõju reguleerimise tühistamise režiimiga, suurendades aja näitu. proportsioonis. Kuna selles erirežiimis (ülegabariidilises) režiimis võetakse eraldi näidud, peab kontekst seda võimaldama ilma mõõtmistingimusi eriti muutmata (näiteks andur peab jääma väga stabiilseks, ei tohi liikuda erinevate valgustingimustega piirkonda)

    BH1750 operatsioonikoodid

    Estado
    5>

    • 0B00000000 (0x00) Väikese võimsusega või jõuderežiim.

    • 0B00000001 (0x01) Sisse lülitatud.

    • 0B00000111 (0x07) Lähtesta. Kustutab BH1750 andmelogid.

    Resolutsioon
    5>

    • 0B00010011 (0x13) Pidev mõõtmine eraldusvõimega 4 luksi (vahemikus 16 ms ja lugemisaeg)

    • 0B00010000 (0x10) Pidev mõõtmine eraldusvõimega 1 luksi (lugemisaeg 120 ms)

    • 0B00010001 (0x11) Pidev mõõtmine eraldusvõimega 0,5 luksi (lugemisaeg 120 ms)

    • 0B00100011 (0x23) Mõõtmine eraldusvõimega 4 luksi (lugemisaeg 16 ms)

    • 0B00100000 (0x20) Mõõtmine eraldusvõimega 1 luksi (lugemisaeg 120 ms)

    • 0B00100001 (0x21) Mõõtmine eraldusvõimega 0,5 luksi (lugemisaeg 120 ms)

    Reguleerimine optilise akna muutmiseks
    5>

    • 0B011MT [0,1,2,3,4] MTREG (Measurement Time REGister) registri madal bitt.

    • 0B01000MT [5,6,7] MTREG registri kõrge bitt.

    Lugege Arduino BH1750

    Ümbritseva valgustuse mõõtmiseks BH1750-ga alates Arduino raamatukogu kasutatakse Traat mis haldab suhtlust I2C buss. Protsess on seda tüüpi suhtluses tavaline, esmalt aktiveeritakse need (üks kord programmis) koos Wire.begin(), algab side BH1750-ga Wire.beginTransmission() ja teie aadress I2C (0x5C või 0x23 sõltuvalt sellest, kas ADDR on vastavalt kõrge või madal), konfigureeritakse, saates vastava koodi Wire.write() ja buss vabastatakse koos Wire.endTransmission()

    Kui kasutatakse üht pideva lugemise režiimidest, kasutatakse aadressiga andmete hankimiseks Wire.beginTransmission() I2C BH1750-le juurdepääsu saamiseks palutakse teil sisestada kaks baiti (eraldusvõime on 16 bitti) Wire.requestFrom() mida loetakse, kasutatakse Wire.read(), ja laaditakse märgita täisarvuks, pöörates esimest baiti 8 bitti. Buss vabastatakse hiljem koos Wire.endTransmission(). Lõpptulemus saadakse tagastatud väärtuse jagamisel täpsusteguriga (1,2, kui optilist akent ei muudeta)

    Individuaalse lugemise režiimi kasutamisel lülitub BH1750 puhkerežiimi.Aktiivsesse režiimi naasmiseks saab saata konfiguratsiooni (sama lugemisrežiimi või uue) või sisselülituskoodi (0x01). Väljalülituskoodi (1750x0) saab kasutada BH00 puhkerežiimi sundimiseks.

    Oluline on järgida anduri lugemisaega, mis sõltub eraldusvõimest. Kui ootamine pole kriitiline, saab selle kõigi juhtumite jaoks ühendada väärtuseks, mis võib olla eeldatavast maksimumist veidi suurem, et tagada lugemise lõpuleviimine.

    Et muuta BH1750 jaoks koodi kirjutamine mugavamaks Arduino, leiate kõige asjakohasemad toimingukoodid järgmisest päisdokumendist.

    Järgmine näidiskood näitab valgusanduri kõige levinumat lugemisrežiimi I2C BH1750. Eraldusvõime on 1 luks ja lugemisrežiim on pidev. Näide näitab jadakonsooli kasutamist Arduino, iga mõõdetud väärtusest saadud tulemus.

    Nagu ma eespool ütlesin, kasutavad nii 1 luksi kui ka 4 luksi eraldusvõime režiimid mõõtmise täisarvuna väljendamiseks 16 bitti andmeid. Teisest küljest tähistab 0,5 luksi režiimis viimane bitt kümnendosa, see tähendab, et kogumõõtmisele kaasa aitavat väärtust nihutatakse kahe võrra paremale. 1 luksi või 4 luksi režiimis viimane bit (LSB) on väärt 20, eelviimane 21, järgmised 22…0,5 luksi režiimis viimane bit (LSB) on väärt 2-1, eelviimane 20, järgmised 21...

    Vastavalt sellele andmestruktuurile ja arvestades, et tuleb teha kaks lugemist I2C baidist, tuleb 16-bitise väärtuse saamiseks laadida baidi kõige olulisemad bitid, esimesed, mida loetakse, ja pöörata neid 8 bitti vasakule 1 luksi eraldusvõime režiimis ja 4 luksi eraldusvõime režiimis ning ainult 7 bitti 0,5 luksis. Lugemisviisi ühtlustamiseks 0,5 luksi režiimis saate laadida kõige olulisema baidi märgita täisarvuks, pöörata 8 bitti vasakule, laadida kõige vähemtähtsaim bait ja pöörata kogu märgita täisarvu 1 biti võrra vasakule. paremale, säilitades kümnendosa väärtus, mis näitab LSB (kõige vähem oluline bitt) et seda hiljem rakendada.

    Loogiliselt on 1 luksi või 4 luksi režiimide puhul vaja kasutada märgita täisarve (unsigned int) milleks Arduino ära broneeri MSB (kõige olulisem bitt) märgi jaoks ja suutma opereerida otse mõõtmise tegeliku väärtusega, mitte negatiivse arvuga. sisse Arduino duett pole vajalik, kuna täisarvud kasutavad 32 bitti, kuid sama programm töötab ka siis, kui seda kasutatakse unsigned int.

    Järgmine kood näitab, kuidas 0,5 luksi režiimi kasutatakse

    Laadige alla BH1750 anduri ja Arduino abil ümbritseva valguse mõõtmise näidete dokumendid.

    Postita kommentaar

    Võib-olla jäite vahele