BH1750. Ympäristön valoanturi I2C-väylällä.

BH1750. Ympäristön valoanturi I2C-väylällä.

BH1750. Ympäristön valoanturi I2C-väylällä.

BH1750 on ympäristön valaistusanturi, jolla on kohtuullisen korkea resoluutio ja herkkyys. Se käyttäytyy näkyvän valon edessä ihmissilmään verrattavissa olevalla tavalla, eikä infrapunasäteily vaikuta siihen eikä se riipu valaistustyypin värilämpötilasta, eli se toimii hyvin luonnonvalossa ja erilaisia ​​keinovaloja. Se kommunikoi digitaalisesti mikro-ohjaimen kanssa I2C-väylä, joten se kestää häiriöitä, jos se sijoitetaan tietylle etäisyydelle sitä lukevasta piiristä. Sen vasteaika on melko pieni, alle 200 ms epäsuotuisimmissa olosuhteissa.

Sisällysluettelo

    BH1750 ympäristön valon tunnistin

    Sähköisestä näkökulmasta sen toteuttaminen on hyvin yksinkertaista. Liitä vain virta (2,4–3,6 V) ja I2C-väylä. Vaihtoehtoisesti väyläosoitetta voidaan muuttaa kahden laitteen yhdistämiseksi (ADDR:llä matalalla tasolla se on 0B0100011 tai 0x23 ja ADDR:llä korkealla tasolla 0B1011100 tai 0x5C) ja VDI-linjaa voidaan käyttää nollaustoimintoon mikro-ohjain.

    BH1750:n liittäminen Työläs3,3 V ulostulon lisäksi on oikein käyttää tasomuunninta. vetovastukset varten I2C-väylä. Vaikka komponentti tukee suoraa yhteyttä väylään I2C-väylä Ei ole suositeltavaa mitoittaa piiriä harkitsematta tason muuntamista.

    BH1750 ympäristön valaistusanturi. Sovelluspiiri

    Sen suosion vuoksi, joka johtuu tarkkuuteensa nähden erittäin halvasta, on olemassa useita moduuleja, kuten tuttu GY-30, joka näkyy valokuvassa alussa. Niiden yhdistämiseksi mukavammin, kun prototyyppiä tehdään mikro-ohjaimella, ne sisältävät yleensä tasomuuntimet I2C-väylä ja jännitesäätimet, jotta ne syöttävät suuremmalla jännitteellä (jopa 5 V) 3,3 V:n ulostulon sijaan Työläs.

    BH1750:ssä on kaksi lukutilaa, jatkuva ja yksilöllinen, jotka vastaavat kahta tilaa, aktiivista ja matalatehoista tai lepotilaa. Jos jatkuvaa lukutilaa käytetään, BH1750 pysyy aktiivisena näytteenoton jälkeen, mutta yksittäisen mittauksen jälkeen se siirtyy automaattisesti lepotilaan ja virransäästötilaan. Ensimmäinen luku jatkuvassa tilassa kestää enintään 180 ms ja seuraavat 16 ms ja 120 ms välillä resoluutiosta riippuen.

    Anturi pystyy mittaamaan 4 luksia, 1 luksia ja 0,5 luksia välein (resoluutio). BH1750 suosittelee teknisissä tiedoissaan käyttämään 1 luxin resoluutiota, jonka avulla voit erottaa alle 10 luksia (joka vastaa hämärää) ja joka on immuuni mittaukseen mahdollisesti vaikuttavalle melulle.

    Resoluutiot 1 lux ja 4 luksia käyttävät 16 bittiä dataa edustamaan kokonaislukuosaa, joten maksimimittaus 65535 luksia voidaan saavuttaa (aurinkoinen päivä ilman suoraa valoa). 0,5 luksia käyttää vähiten merkitsevää bittiä desimaaliosalle (mitat 0,5 - 0,5 luksia), joten jäljellä olevilla 15 bitillä on mahdollista esittää maksimiarvo 32767 luksia (ulkopuolinen ilman suoraa valoa)

    Teoreettinen aurinkovalaistus verrattuna BH1750:n keskimääräiseen kapasiteettiin
    Artikkelin kirjoituspaikan ja -päivän teoreettinen aurinkovalo (laillinen aika, ei aurinko) verrattuna BH1750:n keskimääräiseen kapasiteettiin 1 luksilla

    Normaalisti optinen ikkuna, jonka mukaan ympäristön valoa mitataan, vastaa koko näkyvää spektriä ja siinä pyritään saavuttamaan ihmisen herkkyysjakauma. Jos optista ikkunaa pienennetään (valoa mitataan pienemmällä aallonpituusalueella), BH1750:n herkkyyttä voidaan lisätä (jopa 0,11 luksia) optisen ikkunan vaikutuksen säädön peruutustavalla lisäämällä aikalukemaa suhteessa. Koska tässä erikoistilassa (ylimitoitettu) otetaan erilliset lukemat, kontekstin tulee sallia tämä muuttamatta erityisesti mittausolosuhteita (esim. anturin tulee pysyä erittäin vakaana, se ei saa siirtyä alueelle, jossa on erilaiset valaistusolosuhteet)

    BH1750 käyttökoodit

    Estado
    5>

    • 0B00000000 (0x00) Vähäinen teho tai tyhjäkäyntitila.

    • 0B00000001 (0x01) Kytketty päälle.

    • 0B00000111 (0x07) Nollaa. Tyhjentää BH1750-tietolokit.

    päätöslauselma
    5>

    • 0B00010011 (0x13) Jatkuva mittaus 4 luksin resoluutiolla (16 ms ja lukuajan välillä)

    • 0B00010000 (0x10) Jatkuva mittaus 1 luxin resoluutiolla (120 ms lukuaika)

    • 0B00010001 (0x11) Jatkuva mittaus 0,5 luxin resoluutiolla (120 ms lukuaika)

    • 0B00100011 (0x23) Mittaus 4 luksin resoluutiolla (16 ms lukuaika)

    • 0B00100000 (0x20) Mittaus 1 luksin resoluutiolla (120 ms lukuaika)

    • 0B00100001 (0x21) Mittaus 0,5 luksin resoluutiolla (120 ms lukuaika)

    Säätö optisen ikkunan muutoksille
    5>

    • 0B011MT [0,1,2,3,4] MTREG-rekisterin (Measurement Time REGister) matala bitti.

    • 0B01000MT [5,6,7] MTREG-rekisterin korkea bitti.

    Lue Arduinon BH1750

    Mittaa ympäristön valaistusta BH1750:lla alkaen Työläs kirjastoa käytetään Johdin joka hallitsee viestintää I2C-väylä. Prosessi on tavallinen tämäntyyppisessä viestinnässä, ensin ne aktivoidaan (kerran ohjelmassa) kanssa Wire.begin(), viestintä BH1750:n kanssa alkaa Wire.beginTransmission() ja osoitteesi I2C (0x5C tai 0x23 riippuen siitä, onko ADDR korkea vai matala), se määritetään lähettämällä vastaava koodi Wire.write() ja bussi vapautetaan kanssa Wire.endTransmission()

    Jos käytetään yhtä jatkuvan lukumuodon tiloja, Wire.beginTransmission() käytetään osoitteen sisältävien tietojen hakemiseen. I2C BH1750:n käyttöä vastaavasti sinua pyydetään antamaan kaksi tavua (resoluutio on 16 bittiä) Wire.requestFrom() joita luetaan, käytetään Wire.read(), ja ne ladataan etumerkittömäksi kokonaisluvuksi kiertäen ensimmäistä tavua 8 bittiä. Bussi vapautetaan myöhemmin kanssa Wire.endTransmission(). Lopputulos saadaan jakamalla palautettu arvo tarkkuuskertoimella (1,2, jos optista ikkunaa ei muuteta)

    Jos käytetään yksittäistä lukutilaa, BH1750 siirtyy lepotilaan.Palauttaaksesi aktiiviseen tilaan, voidaan lähettää konfiguraatio (sama lukutila tai uusi) tai käynnistyskoodi (0x01). Sammutuskoodia (1750x0) voidaan käyttää pakottamaan BH00 lepotilaan.

    On tärkeää kunnioittaa anturin lukuaikaa, joka riippuu resoluutiosta. Jos odotus ei ole kriittinen, se voidaan yhdistää arvoksi kaikille tapauksille, joka voi olla hieman odotettua maksimiarvoa suurempi, jotta voidaan varmistaa, että luku on valmis.

    Jotta koodin kirjoittaminen BH1750:lle olisi mukavampaa Työläs, tärkeimmät toimintakoodit löytyvät seuraavasta otsikkoasiakirjasta.

    Seuraava esimerkkikoodi näyttää yleisimmän valoanturin lukutilan I2C BH1750. Tarkkuus on 1 luksia ja lukutila on jatkuva. Esimerkki näyttää sarjakonsolin käyttämisen Työläs, jokainen mitatusta arvosta saatu tulos.

    Kuten edellä sanoin, sekä 1 luxin että 4 luxin resoluutiotilat käyttävät 16 bitin dataa mittauksen ilmaisemiseen kokonaislukuna. Toisaalta 0,5 luksin tilassa viimeinen bitti edustaa desimaaliosaa, eli kokonaismittaukseen vaikuttava arvo siirtyy potenssilla kaksi oikealle. 1 luksia tai 4 luksia -tilassa viimeinen bitti (LSB) on 2 arvoinen0, toiseksi viimeinen 21, seuraava 22…0,5 luksia -tilassa viimeinen bitti (LSB) on 2 arvoinen-1, toiseksi viimeinen 20, seuraava 21...

    Tämän tietorakenteen mukaan ja ottaen huomioon, että on suoritettava kaksi lukemaa I2C tavun verran, saadaksesi 16-bittisen arvon, sinun on ladattava tavun merkittävimmät bitit, ensimmäiset luettavat, ja käännettävä niitä 8 bittiä vasemmalle 1 luxin resoluutiotilassa ja 4 luksen resoluutiotilassa ja vain 7 bittiä 0,5 luxissa. Lukutavan yhtenäistämiseksi 0,5 luksia -tilassa voit ladata merkitsevimmän tavun etumerkittömäksi kokonaisluvuksi, kiertää 8 bittiä vasemmalle, ladata vähiten merkitsevän tavun ja kiertää koko etumerkitöntä kokonaislukua 1 bitin vasemmalle oikealle, säilyttäen desimaaliosan arvo, joka osoittaa LSB (vähiten merkitsevä bitti) soveltaa sitä myöhemmin.

    Loogisesti 1 lux tai 4 lux -tiloissa on tarpeen käyttää etumerkittömiä kokonaislukuja (unsigned int) mitä varten Työläs älä varaa MSB (merkittävin bitti) etumerkille ja pystyä toimimaan suoraan mittauksen todellisen arvon kanssa, ei negatiivisen luvun kanssa. Sisään Arduino Duetti ei ole välttämätöntä, koska kokonaisluvut käyttävät 32 bittiä, mutta sama ohjelma toimii myös jos sitä käytetään unsigned int.

    Seuraava koodi näyttää kuinka 0,5 luksia käytetään

    Lataa asiakirjat esimerkkeihin ympäristön valon mittaamisesta BH1750-anturilla ja Arduinolla.

    Post Comment

    Olet ehkä missannut