Kazalo:
- 1. korak: Potrebna strojna oprema:
- 2. korak: Priključitev strojne opreme:
- 3. korak: Koda za merjenje vlažnosti in temperature:
- 4. korak: Aplikacije:
Video: Merjenje vlažnosti in temperature s HTS221 in fotonom delcev: 4 koraki
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:04
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:
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:
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:
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:
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:
Merjenje tlaka s CPS120 in fotonom delcev: 4 koraki
Merjenje tlaka z uporabo CPS120 in fotona iz delcev: CPS120 je visokokakovosten in poceni kapacitivni senzor absolutnega tlaka s popolnoma kompenzirano močjo. Porabi zelo malo energije in je sestavljen iz ultra majhnega mikro-elektro-mehanskega senzorja (MEMS) za merjenje tlaka. Sigma-delta temelji
Merjenje temperature s STS21 in fotonom delcev: 4 koraki
Merjenje temperature z uporabo STS21 in fotona iz delcev: digitalni temperaturni senzor STS21 ponuja vrhunske zmogljivosti in prihrani prostor. Zagotavlja umerjene, linearizirane signale v digitalnem formatu I2C. Izdelava tega senzorja temelji na CMOSens tehnologiji, ki pripisuje vrhunski
Merjenje temperature s TMP112 in fotonom delcev: 4 koraki
Merjenje temperature s pomočjo TMP112 in fotona iz delcev: TMP112 visokonatančen, nizko porabljen digitalni temperaturni senzor I2C MINI modul. TMP112 je idealen za daljše merjenje temperature. Ta naprava ponuja natančnost ± 0,5 ° C brez kalibracije ali prilagajanja signala zunanjih komponent
Merjenje vlažnosti in temperature z uporabo HIH6130 in fotona delcev: 4 koraki
Merjenje vlažnosti in temperature z uporabo HIH6130 in fotona iz delcev: HIH6130 je senzor vlažnosti in temperature z digitalnim izhodom. Ti senzorji zagotavljajo natančnost ± 4% RH. Z dolgoročno stabilnostjo v industriji, resnično temperaturno kompenziranim digitalnim I2C, vodilno zanesljivostjo v industriji, energetsko učinkovitostjo
Merjenje temperature in vlažnosti z uporabo HDC1000 in fotona iz delcev: 4 koraki
Merjenje temperature in vlažnosti z uporabo HDC1000 in fotona iz delcev: HDC1000 je digitalni senzor vlažnosti z vgrajenim temperaturnim senzorjem, ki zagotavlja odlično natančnost merjenja pri zelo nizki moči. Naprava meri vlažnost na podlagi novega kapacitivnega senzorja. Senzorji vlažnosti in temperature so fakt