Kazalo:

Merjenje vlažnosti in temperature s HTS221 in fotonom delcev: 4 koraki
Merjenje vlažnosti in temperature s HTS221 in fotonom delcev: 4 koraki

Video: Merjenje vlažnosti in temperature s HTS221 in fotonom delcev: 4 koraki

Video: Merjenje vlažnosti in temperature s HTS221 in fotonom delcev: 4 koraki
Video: Raspberry Pi HTS221 Relative Humidity and Temperature Sensor Python Tutorial 2024, Junij
Anonim
Image
Image

HTS221 je ultra kompakten kapacitivni digitalni senzor za relativno vlažnost in temperaturo. Vključuje zaznavni element in integrirano vezje za aplikacije z mešanim signalom (ASIC) za zagotavljanje merilnih informacij prek digitalnih serijskih vmesnikov. Integriran s toliko funkcijami, je eden najprimernejših senzorjev za merjenje kritične vlažnosti in temperature.

V tej vadnici je prikazano povezovanje senzorskega modula HTS221 s fotonom delcev. Za branje vrednosti vlažnosti in temperature smo uporabili delce z adapterjem I2c, ki omogoča enostavno in zanesljivo povezavo s senzorskim modulom.

1. korak: Potrebna strojna oprema:

Potrebna strojna oprema
Potrebna strojna oprema
Potrebna strojna oprema
Potrebna strojna oprema
Potrebna strojna oprema
Potrebna strojna oprema

Materiali, ki jih potrebujemo za dosego našega cilja, vključujejo naslednje komponente strojne opreme:

1. HTS221

2. Foton delcev

3. Kabel I2C

4. I2C ščit za foton delcev

2. korak: Priključitev strojne opreme:

Priključitev strojne opreme
Priključitev strojne opreme
Priključitev strojne opreme
Priključitev strojne opreme

Oddelek za priključitev strojne opreme v bistvu razlaga potrebne povezave ožičenja med senzorjem in fotonom delcev. Zagotavljanje pravilnih povezav je osnovna potreba pri delu na katerem koli sistemu za želeni izhod. Torej so potrebne povezave naslednje:

HTS221 bo deloval preko I2C. Tu je primer sheme ožičenja, ki prikazuje, kako povezati vsak vmesnik senzorja.

Plošča je že pripravljena za vmesnik I2C, zato priporočamo uporabo te povezave, če niste agnostični.

Vse kar potrebujete so štiri žice! Potrebne so le štiri povezave Vcc, Gnd, SCL in SDA, ki so povezane s kablom I2C.

Te povezave so prikazane na zgornjih slikah.

3. korak: Koda za merjenje vlažnosti in temperature:

Koda za merjenje vlažnosti in temperature
Koda za merjenje vlažnosti in temperature

Začnimo s kodo delcev zdaj.

Med uporabo senzorskega modula z delcem vključujemo knjižnico application.h in spark_wiring_i2c.h. Knjižnica "application.h" in spark_wiring_i2c.h vsebuje funkcije, ki olajšajo komunikacijo i2c med senzorjem in delcem.

Za udobje uporabnika je spodaj navedena celotna koda delcev:

#vključi

#vključi

// Naslov HTS221 I2C je 0x5F

#define Addr 0x5F

dvojna vlažnost = 0,0;

dvojni cTemp = 0,0;

dvojni fTemp = 0,0;

int temp = 0;

void setup ()

{

// Nastavi spremenljivko

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

Delci.premenljiva ("Vlažnost", vlažnost);

Delci.variable ("cTemp", cTemp);

// Inicializirajte komunikacijo I2C kot MASTER

Wire.begin ();

// Začetek serijske komunikacije, nastavljena hitrost prenosa = 9600

Serial.begin (9600);

// Zagon prenosa I2C

Wire.beginTransmission (Addr);

// Izbira povprečnega registra konfiguracije

Wire.write (0x10);

// Povprečni temperaturni vzorci = 256, Povprečni vzorci vlažnosti = 512

Wire.write (0x1B);

// Ustavi prenos I2C

Wire.endTransmission ();

// Zagon prenosa I2C

Wire.beginTransmission (Addr);

// Izberite kontrolni register1

Wire.write (0x20);

// Vklop, neprekinjeno posodabljanje, Izhodna hitrost podatkov = 1 Hz

Wire.write (0x85);

// Ustavi prenos I2C

Wire.endTransmission ();

zamuda (300);

}

void loop ()

{

podpisani int podatki [2];

brez podpisa int val [4];

nepodpisani int H0, H1, H2, H3, T0, T1, T2, T3, surov;

// Vrednosti kalibracije vlažnosti

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

{

// Zagon prenosa I2C

Wire.beginTransmission (Addr);

// Pošlji register podatkov

Wire.write ((48 + i));

// Ustavi prenos I2C

Wire.endTransmission ();

// Zahtevajte 1 bajt podatkov

Wire.requestFrom (Addr, 1);

// Preberite 1 bajt podatkov

če (Wire.available () == 1)

{

podatki = Wire.read ();

}

}

// Pretvarjanje podatkov o vlažnosti

H0 = podatki [0] / 2;

H1 = podatki [1] / 2;

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

{

// Zagon prenosa I2C

Wire.beginTransmission (Addr);

// Pošlji register podatkov

Wire.write ((54 + i));

// Ustavi prenos I2C

Wire.endTransmission ();

// Zahtevajte 1 bajt podatkov

Wire.requestFrom (Addr, 1);

// Preberite 1 bajt podatkov

če (Wire.available () == 1)

{

podatki = Wire.read ();

}

}

// Pretvarjanje podatkov o vlažnosti

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

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

{

// Zagon prenosa I2C

Wire.beginTransmission (Addr);

// Pošlji register podatkov

Wire.write ((58 + i));

// Ustavi prenos I2C

Wire.endTransmission ();

// Zahtevajte 1 bajt podatkov

Wire.requestFrom (Addr, 1);

// Preberite 1 bajt podatkov

če (Wire.available () == 1)

{

podatki = Wire.read ();

}

}

// Pretvarjanje podatkov o vlažnosti

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

// Vrednosti umerjanja temperature

// Zagon prenosa I2C

Wire.beginTransmission (Addr);

// Pošlji register podatkov

Wire.write (0x32);

// Ustavi prenos I2C

Wire.endTransmission ();

// Zahtevajte 1 bajt podatkov

Wire.requestFrom (Addr, 1);

// Preberite 1 bajt podatkov

če (Wire.available () == 1)

{

T0 = Wire.read ();

}

// Zagon prenosa I2C

Wire.beginTransmission (Addr);

// Pošlji register podatkov

Wire.write (0x33);

// Ustavi prenos I2C

Wire.endTransmission ();

// Zahtevajte 1 bajt podatkov

Wire.requestFrom (Addr, 1);

// Preberite 1 bajt podatkov

če (Wire.available () == 1)

{

T1 = Wire.read ();

}

// Zagon prenosa I2C

Wire.beginTransmission (Addr);

// Pošlji register podatkov

Wire.write (0x35);

// Ustavi prenos I2C

Wire.endTransmission ();

// Zahtevajte 1 bajt podatkov

Wire.requestFrom (Addr, 1);

// Preberite 1 bajt podatkov

če (Wire.available () == 1)

{

surovo = Wire.read ();

}

surovo = surovo & 0x0F;

// Pretvorimo vrednosti kalibracije temperature v 10 bitov

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

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

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

{

// Zagon prenosa I2C

Wire.beginTransmission (Addr);

// Pošlji register podatkov

Wire.write ((60 + i));

// Ustavi prenos I2C

Wire.endTransmission ();

// Zahtevajte 1 bajt podatkov

Wire.requestFrom (Addr, 1);

// Preberite 1 bajt podatkov

če (Wire.available () == 1)

{

podatki = Wire.read ();

}

}

// Pretvorimo podatke

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

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

{

// Zagon prenosa I2C

Wire.beginTransmission (Addr);

// Pošlji register podatkov

Wire.write ((62 + i));

// Ustavi prenos I2C

Wire.endTransmission ();

// Zahtevajte 1 bajt podatkov

Wire.requestFrom (Addr, 1);

// Preberite 1 bajt podatkov

če (Wire.available () == 1)

{

podatki = Wire.read ();

}

}

// Pretvorimo podatke

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

// Zagon prenosa I2C

Wire.beginTransmission (Addr);

// Pošlji register podatkov

Wire.write (0x28 | 0x80);

// Ustavi prenos I2C

Wire.endTransmission ();

// Zahtevajte 4 bajte podatkov

Wire.requestFrom (Addr, 4);

// Branje 4 bajtov podatkov

// vlažnost msb, vlažnost lsb, temp msb, temp lsb

če (Wire.available () == 4)

{

val [0] = Wire.read ();

val [1] = Wire.read ();

val [2] = Wire.read ();

val [3] = Wire.read ();

}

// Pretvorimo podatke

vlažnost = (val [1] * 256,0) + val [0];

vlažnost = ((1,0 * H1) - (1,0 * H0)) * (1,0 * vlažnost - 1,0 * H2) / (1,0 * H3 - 1,0 * H2) + (1,0 * H0);

temp = (val [3] * 256) + val [2]; cTemp = (((T1 - T0) / 8,0) * (temp - T2)) / (T3 - T2) + (T0 / 8,0);

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

// Izhod podatkov na nadzorno ploščo

Particle.publish ("Relativna vlažnost:", Niz (vlažnost));

zamuda (1000);

Particle.publish ("Temperatura v Celzijusi:", String (cTemp));

zamuda (1000);

Particle.publish ("Temperatura v Fahrenheitu:", String (fTemp));

zamuda (1000);

}

Funkcija Particle.variable () ustvari spremenljivke za shranjevanje izhoda senzorja, funkcija Particle.publish () pa prikaže izpis na nadzorni plošči spletnega mesta.

Izhod senzorja je za vašo referenco prikazan na zgornji sliki.

4. korak: Aplikacije:

Aplikacije
Aplikacije

HTS221 se lahko uporablja v različnih potrošniških izdelkih, kot so vlažilci zraka in hladilniki itd. Ta senzor se uporablja tudi na širšem področju, vključno z avtomatizacijo pametnega doma, industrijsko avtomatizacijo, opremo za dihanje, sledenjem sredstev in blaga.

Priporočena: