Sisällysluettelo:

Kosteuden ja lämpötilan mittaus HTS221: n ja hiukkasfotonin avulla: 4 vaihetta
Kosteuden ja lämpötilan mittaus HTS221: n ja hiukkasfotonin avulla: 4 vaihetta

Video: Kosteuden ja lämpötilan mittaus HTS221: n ja hiukkasfotonin avulla: 4 vaihetta

Video: Kosteuden ja lämpötilan mittaus HTS221: n ja hiukkasfotonin avulla: 4 vaihetta
Video: 3 в 1 ZigBee датчик температуры, влажности и освещения с LCD дисплеем 2024, Kesäkuu
Anonim
Image
Image

HTS221 on erittäin kompakti kapasitiivinen digitaalinen anturi suhteelliseen kosteuteen ja lämpötilaan. Se sisältää anturielementin ja sekoitussignaalisovelluskohtaisen integroidun piirin (ASIC) mittaustietojen toimittamiseksi digitaalisten sarjaliitäntöjen kautta. Integroitu niin moniin ominaisuuksiin, tämä on yksi sopivimmista antureista kriittisille kosteus- ja lämpötilamittauksille.

Tässä opetusohjelmassa on kuvattu HTS221 -anturimoduulin liitäntä hiukkasfotoniin. Kosteus- ja lämpötila -arvojen lukemiseen olemme käyttäneet hiukkasia, joissa on I2c -sovitin. Tämä I2C -sovitin tekee liitännän anturimoduuliin helppoa ja luotettavaa.

Vaihe 1: Tarvittava laitteisto:

Tarvittava laitteisto
Tarvittava laitteisto
Tarvittava laitteisto
Tarvittava laitteisto
Tarvittava laitteisto
Tarvittava laitteisto

Tavoitteemme saavuttamiseen tarvittavat materiaalit sisältävät seuraavat laitteistokomponentit:

1. HTS221

2. Hiukkasfotoni

3. I2C -kaapeli

4. I2C -suoja hiukkasfotonille

Vaihe 2: Laitteiston kytkentä:

Laitteiston kytkentä
Laitteiston kytkentä
Laitteiston kytkentä
Laitteiston kytkentä

Laitteiston kytkentäosio selittää periaatteessa anturin ja hiukkasfotonin väliset tarvittavat johdotusliitännät. Oikeiden liitosten varmistaminen on perustarve, kun työskentelet minkä tahansa järjestelmän kanssa halutun lähdön saavuttamiseksi. Tarvittavat liitännät ovat siis seuraavat:

HTS221 toimii I2C: n kautta. Tässä on esimerkki kytkentäkaaviosta, joka osoittaa, miten anturin jokainen liitäntä kytketään.

Valmis levy on konfiguroitu I2C-rajapintaa varten, joten suosittelemme käyttämään tätä kytkentää, jos olet muuten agnostikko.

Tarvitset vain neljä johtoa! Tarvitaan vain neljä liitäntää Vcc, Gnd, SCL ja SDA, ja ne on kytketty I2C -kaapelin avulla.

Nämä yhteydet on esitetty yllä olevissa kuvissa.

Vaihe 3: Kosteus- ja lämpötilamittauskoodi:

Kosteus- ja lämpötilamittauskoodi
Kosteus- ja lämpötilamittauskoodi

Aloitetaan nyt hiukkaskoodista.

Kun käytät anturimoduulia hiukkasen kanssa, sisällytämme hakemistoon application.h ja spark_wiring_i2c.h. "application.h" ja spark_wiring_i2c.h -kirjasto sisältävät toiminnot, jotka helpottavat i2c -tiedonsiirtoa anturin ja hiukkasen välillä.

Koko hiukkaskoodi annetaan alla käyttäjän mukavuuden vuoksi:

#sisältää

#sisältää

// HTS221 I2C -osoite on 0x5F

#define Addr 0x5F

kaksinkertainen kosteus = 0,0;

kaksinkertainen cTemp = 0,0;

kaksinkertainen fTemp = 0,0;

int lämpötila = 0;

mitätön asennus ()

{

// Aseta muuttuja

Particle.variable ("i2cdevice", "HTS221");

Particle.variable ("Kosteus", kosteus);

Particle.variable ("cTemp", cTemp);

// Alusta I2C -viestintä MASTERiksi

Wire.begin ();

// Alusta sarjaliikenne, aseta baudinopeus = 9600

Sarja.alku (9600);

// Käynnistä I2C -lähetys

Wire.beginTransmission (Addr);

// Valitse keskimääräinen määritysrekisteri

Wire.write (0x10);

// Lämpötilan keskimääräiset näytteet = 256, Kosteusnäytteet = 512

Wire.write (0x1B);

// Pysäytä I2C -lähetys

Wire.endTransmission ();

// Käynnistä I2C -lähetys

Wire.beginTransmission (Addr);

// Valitse ohjausrekisteri 1

Wire.write (0x20);

// Virta päällä, jatkuva päivitys, tiedonsiirtonopeus = 1 Hz

Wire.write (0x85);

// Pysäytä I2C -lähetys

Wire.endTransmission ();

viive (300);

}

tyhjä silmukka ()

{

allekirjoittamaton int -data [2];

unsigned int val [4];

allekirjoittamaton int H0, H1, H2, H3, T0, T1, T2, T3, raaka;

// Kosteuden kutsuarvot

(int i = 0; i <2; i ++)

{

// Käynnistä I2C -lähetys

Wire.beginTransmission (Addr);

// Lähetä rekisteri

Wire.write ((48 + i));

// Pysäytä I2C -lähetys

Wire.endTransmission ();

// Pyydä 1 tavu dataa

Wire.requestFrom (Addr, 1);

// Lue 1 tavu dataa

jos (Wire.available () == 1)

{

data = Wire.read ();

}

}

// Muunna kosteustiedot

H0 = data [0] / 2;

H1 = data [1] / 2;

(int i = 0; i <2; i ++)

{

// Käynnistä I2C -lähetys

Wire.beginTransmission (Addr);

// Lähetä rekisteri

Wire.write ((54 + i));

// Pysäytä I2C -lähetys

Wire.endTransmission ();

// Pyydä 1 tavu dataa

Wire.requestFrom (Addr, 1);

// Lue 1 tavu dataa

jos (Wire.available () == 1)

{

data = Wire.read ();

}

}

// Muunna kosteustiedot

H2 = (data [1] * 256,0) + data [0];

(int i = 0; i <2; i ++)

{

// Käynnistä I2C -lähetys

Wire.beginTransmission (Addr);

// Lähetä rekisteri

Wire.write ((58 + i));

// Pysäytä I2C -lähetys

Wire.endTransmission ();

// Pyydä 1 tavu dataa

Wire.requestFrom (Addr, 1);

// Lue 1 tavu dataa

jos (Wire.available () == 1)

{

data = Wire.read ();

}

}

// Muunna kosteustiedot

H3 = (data [1] * 256,0) + data [0];

// Lämpötilan kutsun arvot

// Käynnistä I2C -lähetys

Wire.beginTransmission (Addr);

// Lähetä rekisteri

Wire.write (0x32);

// Pysäytä I2C -lähetys

Wire.endTransmission ();

// Pyydä 1 tavu dataa

Wire.requestFrom (Addr, 1);

// Lue 1 tavu dataa

jos (Wire.available () == 1)

{

T0 = Wire.read ();

}

// Käynnistä I2C -lähetys

Wire.beginTransmission (Addr);

// Lähetä rekisteri

Wire.write (0x33);

// Pysäytä I2C -lähetys

Wire.endTransmission ();

// Pyydä 1 tavu dataa

Wire.requestFrom (Addr, 1);

// Lue 1 tavu dataa

jos (Wire.available () == 1)

{

T1 = Wire.read ();

}

// Käynnistä I2C -lähetys

Wire.beginTransmission (Addr);

// Lähetä rekisteri

Wire.write (0x35);

// Pysäytä I2C -lähetys

Wire.endTransmission ();

// Pyydä 1 tavu dataa

Wire.requestFrom (Addr, 1);

// Lue 1 tavu dataa

jos (Wire.available () == 1)

{

raaka = Wire.read ();

}

raaka = raaka & 0x0F;

// Muunna lämpötilan kutsun arvot 10-bittisiksi

T0 = ((raaka & 0x03) * 256) + T0;

T1 = ((raaka & 0x0C) * 64) + T1;

(int i = 0; i <2; i ++)

{

// Käynnistä I2C -lähetys

Wire.beginTransmission (Addr);

// Lähetä rekisteri

Wire.write ((60 + i));

// Pysäytä I2C -lähetys

Wire.endTransmission ();

// Pyydä 1 tavu dataa

Wire.requestFrom (Addr, 1);

// Lue 1 tavu dataa

jos (Wire.available () == 1)

{

data = Wire.read ();

}

}

// Muunna tiedot

T2 = (data [1] * 256,0) + data [0];

(int i = 0; i <2; i ++)

{

// Käynnistä I2C -lähetys

Wire.beginTransmission (Addr);

// Lähetä rekisteri

Wire.write ((62 + i));

// Pysäytä I2C -lähetys

Wire.endTransmission ();

// Pyydä 1 tavu dataa

Wire.requestFrom (Addr, 1);

// Lue 1 tavu dataa

jos (Wire.available () == 1)

{

data = Wire.read ();

}

}

// Muunna tiedot

T3 = (data [1] * 256,0) + data [0];

// Käynnistä I2C -lähetys

Wire.beginTransmission (Addr);

// Lähetä rekisteri

Wire.write (0x28 | 0x80);

// Pysäytä I2C -lähetys

Wire.endTransmission ();

// Pyydä 4 tavua dataa

Wire.requestFrom (Addr, 4);

// Lue 4 tavua dataa

// kosteus msb, kosteus lsb, lämpötila msb, lämpötila lsb

jos (Wire.available () == 4)

{

val [0] = Wire.read ();

val [1] = Wire.read ();

val [2] = Wire.read ();

val [3] = Wire.read ();

}

// Muunna tiedot

kosteus = (val [1] * 256,0) + val [0];

kosteus = (((1,0 * H1) - (1,0 * H0)) * (1,0 * kosteus - 1,0 * H2) / (1,0 * H3 - 1,0 * H2) + (1,0 * H0);

lämpötila = (val [3] * 256) + val [2]; cTemp = ((((T1 - T0) / 8,0) * (lämpötila - T2)) / (T3 - T2) + (T0 / 8,0);

fTemp = (cTemp * 1,8) + 32;

// Tulosta tiedot kojelautaan

Particle.publish ("Suhteellinen kosteus:", Jono (kosteus));

viive (1000);

Particle.publish ("Lämpötila Celsius:", Jono (cTemp));

viive (1000);

Particle.publish ("Lämpötila Fahrenheit:", Jono (fTemp));

viive (1000);

}

Particle.variable () -funktio luo muuttujat anturin lähdön tallentamiseksi ja Particle.publish () -toiminto näyttää tuotoksen sivuston kojelaudalla.

Anturilähtö näkyy yllä olevassa kuvassa.

Vaihe 4: Sovellukset:

Sovellukset
Sovellukset

HTS221: tä voidaan käyttää erilaisissa kulutustavaroissa, kuten ilmankostuttimissa ja jääkaappeissa.

Suositeltava: