Sisällysluettelo:
2025 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2025-01-13 06:57
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ä on esittely arduino nanolla.
Vaihe 1: Mitä tarvitset..
1. Arduino Nano
2. HTS221
3. I²C -kaapeli
4. I²C -kilpi Arduino Nanolle
Vaihe 2: Liitännät:
Ota I2C -suoja Arduino Nanolle ja työnnä sitä varovasti Nanon nastojen yli.
Liitä sitten I2C -kaapelin toinen pää HTS221 -anturiin ja toinen pää I2C -suojaan.
Liitännät näkyvät yllä olevassa kuvassa.
Vaihe 3: Koodi:
HTS221: n arduino-koodi voidaan ladata github-arkistostamme- DCUBE Community.
Tässä linkki samaan:
github.com/DcubeTechVentures/HTS221/blob/master/Arduino/HTS221.ino
Mukana on kirjasto Wire.h, joka helpottaa anturin I2c -tiedonsiirtoa Arduino -kortin kanssa.
Voit myös kopioida koodin täältä, se annetaan seuraavasti:
// Jaetaan vapaaehtoisella lisenssillä.
// Käytä sitä haluamallasi tavalla, voittoa tai ilmaiseksi, jos se sopii siihen liittyvien teosten lisensseihin.
// HTS221
// Tämä koodi on suunniteltu toimimaan HTS221_I2CS I2C Mini -moduulin kanssa
#sisältää
// HTS221 I2C -osoite on 0x5F
#define Addr 0x5F
mitätön asennus ()
{
// 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
kellukosteus = (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);
int temp = (val [3] * 256) + val [2];
kelluva cTemp = ((((T1 - T0) / 8,0) * (lämpötila - T2)) / (T3 - T2) + (T0 / 8,0);
kelluva fTemp = (cTemp * 1,8) + 32;
// Tulostustiedot sarjamittarille
Serial.print ("Suhteellinen kosteus:");
Sarjajälki (kosteus);
Serial.println (" % RH");
Serial.print ("Lämpötila celsiusasteina:");
Serial.print (cTemp); Serial.println ("C");
Serial.print ("Lämpötila Fahrenheit:");
Serial.print (fTemp);
Serial.println ("F");
viive (500);
}
Vaihe 4: Sovellukset:
HTS221: tä voidaan käyttää erilaisissa kulutustavaroissa, kuten ilmankostuttimissa ja jääkaappeissa.