Sisukord:
- Samm: vajalik riistvara:
- 2. samm: riistvara ühendamine:
- 3. samm: niiskuse ja temperatuuri mõõtmise kood:
- 4. samm: rakendused:
Video: Niiskuse ja temperatuuri mõõtmine HTS221 ja osakeste footoni abil: 4 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:48
HTS221 on ülikompaktne mahtuvuslik digitaalne andur suhtelise niiskuse ja temperatuuri jaoks. See sisaldab andurielementi ja segasignaalirakenduse spetsiifilist integraallülitust (ASIC), et edastada mõõtmisteavet digitaalsete jadaliideste kaudu. See on integreeritud nii paljude funktsioonidega, see on üks kõige sobivamaid andureid kriitilise niiskuse ja temperatuuri mõõtmiseks.
Selles õpetuses on illustreeritud HTS221 andurimooduli liidestamist osakeste footoniga. Niiskuse ja temperatuuri väärtuste lugemiseks oleme kasutanud osakesi koos I2c adapteriga. See I2C adapter muudab ühenduse andurimooduliga lihtsaks ja usaldusväärsemaks.
Samm: vajalik riistvara:
Eesmärgi saavutamiseks vajalikud materjalid sisaldavad järgmisi riistvarakomponente:
1. HTS221
2. Osakeste footon
3. I2C kaabel
4. I2C kilp osakeste footonile
2. samm: riistvara ühendamine:
Riistvara ühendamise jaotis selgitab põhimõtteliselt anduri ja osakeste footoni vahel vajalikke juhtmestiku ühendusi. Soovitud väljundi mis tahes süsteemiga töötamisel on põhivajadus õigete ühenduste tagamine. Seega on vajalikud ühendused järgmised:
HTS221 töötab üle I2C. Siin on näide ühendusskeemist, mis näitab, kuidas anduri iga liidest ühendada.
Valmis plaat on konfigureeritud I2C liidese jaoks, seega soovitame seda ühendamist kasutada, kui olete muidu agnostik.
Kõik, mida vajate, on neli juhtmest! Vaja on ainult nelja ühendust Vcc, Gnd, SCL ja SDA ning need ühendatakse I2C kaabli abil.
Neid seoseid on näidatud ülaltoodud piltidel.
3. samm: niiskuse ja temperatuuri mõõtmise kood:
Alustame nüüd osakeste koodiga.
Andurimooduli kasutamisel koos osakesega kaasame teeki application.h ja spark_wiring_i2c.h. Raamatukogu "application.h" ja spark_wiring_i2c.h sisaldab funktsioone, mis hõlbustavad i2c suhtlust anduri ja osakese vahel.
Kogu osakeste kood on kasutaja mugavuse huvides toodud allpool:
#kaasake
#kaasake
// HTS221 I2C aadress on 0x5F
#define Addr 0x5F
kahekordne niiskus = 0,0;
kahekordne cTemp = 0,0;
kahekordne fTemp = 0,0;
sisetemperatuur = 0;
tühine seadistus ()
{
// Määra muutuja
Particle.variable ("i2cdevice", "HTS221");
Osake.muutuja ("Niiskus", niiskus);
Particle.variable ("cTemp", cTemp);
// Initsialiseeri I2C side kui MASTER
Wire.begin ();
// Initsialiseeri jadaühendus, määrake edastuskiirus = 9600
Seriaalne algus (9600);
// Käivitage I2C edastamine
Wire.beginTransmission (Addr);
// Valige keskmine konfiguratsiooniregister
Wire.write (0x10);
// Temperatuuri keskmised proovid = 256, Niiskuse keskmised proovid = 512
Wire.write (0x1B);
// Peata I2C edastamine
Wire.endTransmission ();
// Käivitage I2C edastamine
Wire.beginTransmission (Addr);
// Valige juhtregister1
Wire.write (0x20);
// Toide sisse lülitatud, pidev värskendamine, andmete väljundkiirus = 1 Hz
Wire.write (0x85);
// Peata I2C edastamine
Wire.endTransmission ();
viivitus (300);
}
tühine tsükkel ()
{
allkirjastamata int andmed [2];
allkirjastamata int val [4];
allkirjastamata int H0, H1, H2, H3, T0, T1, T2, T3, toores;
// Niiskuse kõne väärtused
jaoks (int i = 0; i <2; i ++)
{
// Käivitage I2C edastamine
Wire.beginTransmission (Addr);
// Andmete registri saatmine
Wire.write ((48 + i));
// Peata I2C edastamine
Wire.endTransmission ();
// Taotle 1 baiti andmeid
Wire.requestFrom (Addr, 1);
// Lugege 1 bait andmeid
kui (Wire.available () == 1)
{
andmed = Wire.read ();
}
}
// Niiskuse andmete teisendamine
H0 = andmed [0] / 2;
H1 = andmed [1] / 2;
jaoks (int i = 0; i <2; i ++)
{
// Käivitage I2C edastamine
Wire.beginTransmission (Addr);
// Andmete registri saatmine
Wire.write ((54 + i));
// Peata I2C edastamine
Wire.endTransmission ();
// Taotle 1 baiti andmeid
Wire.requestFrom (Addr, 1);
// Lugege 1 bait andmeid
kui (Wire.available () == 1)
{
andmed = Wire.read ();
}
}
// Niiskuse andmete teisendamine
H2 = (andmed [1] * 256,0) + andmed [0];
jaoks (int i = 0; i <2; i ++)
{
// Käivitage I2C edastamine
Wire.beginTransmission (Addr);
// Andmete registri saatmine
Wire.write ((58 + i));
// Peata I2C edastamine
Wire.endTransmission ();
// Taotle 1 baiti andmeid
Wire.requestFrom (Addr, 1);
// Lugege 1 bait andmeid
kui (Wire.available () == 1)
{
andmed = Wire.read ();
}
}
// Niiskuse andmete teisendamine
H3 = (andmed [1] * 256,0) + andmed [0];
// Temperatuuri määramise väärtused
// Käivitage I2C edastamine
Wire.beginTransmission (Addr);
// Andmete registri saatmine
Wire.write (0x32);
// Peata I2C edastamine
Wire.endTransmission ();
// Taotle 1 baiti andmeid
Wire.requestFrom (Addr, 1);
// Lugege 1 bait andmeid
kui (Wire.available () == 1)
{
T0 = Wire.read ();
}
// Käivitage I2C edastamine
Wire.beginTransmission (Addr);
// Andmete registri saatmine
Wire.write (0x33);
// Peata I2C edastamine
Wire.endTransmission ();
// Taotle 1 baiti andmeid
Wire.requestFrom (Addr, 1);
// Lugege 1 bait andmeid
kui (Wire.available () == 1)
{
T1 = Wire.read ();
}
// Käivitage I2C edastamine
Wire.beginTransmission (Addr);
// Andmete registri saatmine
Wire.write (0x35);
// Peata I2C edastamine
Wire.endTransmission ();
// Taotle 1 baiti andmeid
Wire.requestFrom (Addr, 1);
// Lugege 1 bait andmeid
kui (Wire.available () == 1)
{
toores = Wire.read ();
}
toores = toores & 0x0F;
// Teisendage temperatuurikõne väärtused 10-bitisteks
T0 = ((toores & 0x03) * 256) + T0;
T1 = ((toores & 0x0C) * 64) + T1;
jaoks (int i = 0; i <2; i ++)
{
// Käivitage I2C edastamine
Wire.beginTransmission (Addr);
// Andmete registri saatmine
Wire.write ((60 + i));
// Peata I2C edastamine
Wire.endTransmission ();
// Taotle 1 baiti andmeid
Wire.requestFrom (Addr, 1);
// Lugege 1 bait andmeid
kui (Wire.available () == 1)
{
andmed = Wire.read ();
}
}
// Teisendage andmed
T2 = (andmed [1] * 256,0) + andmed [0];
jaoks (int i = 0; i <2; i ++)
{
// Käivitage I2C edastamine
Wire.beginTransmission (Addr);
// Andmete registri saatmine
Wire.write ((62 + i));
// Peata I2C edastamine
Wire.endTransmission ();
// Taotle 1 baiti andmeid
Wire.requestFrom (Addr, 1);
// Lugege 1 bait andmeid
kui (Wire.available () == 1)
{
andmed = Wire.read ();
}
}
// Teisendage andmed
T3 = (andmed [1] * 256,0) + andmed [0];
// Käivitage I2C edastamine
Wire.beginTransmission (Addr);
// Andmete registri saatmine
Wire.write (0x28 | 0x80);
// Peata I2C edastamine
Wire.endTransmission ();
// Taotle 4 baiti andmeid
Wire.requestFrom (Addr, 4);
// Loe 4 baiti andmeid
// niiskus msb, niiskus lsb, temp msb, temp lsb
kui (Wire.available () == 4)
{
val [0] = Wire.read ();
val [1] = Wire.read ();
val [2] = Wire.read ();
val [3] = Wire.read ();
}
// Teisendage andmed
niiskus = (val [1] * 256,0) + val [0];
niiskus = ((1,0 * H1) - (1,0 * H0)) * (1,0 * niiskus - 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;
// Andmete väljastamine armatuurlauale
Particle.publish ("Suhteline niiskus:", String (niiskus));
viivitus (1000);
Particle.publish ("Temperatuur Celsiuse järgi:", String (cTemp));
viivitus (1000);
Particle.publish ("Temperatuur Fahrenheiti järgi:", String (fTemp));
viivitus (1000);
}
Funktsioon Particle.variable () loob muutujad anduri väljundi salvestamiseks ja Particle.publish () kuvab väljundi saidi armatuurlaual.
Anduri väljund on näidatud ülaltoodud pildil.
4. samm: rakendused:
HTS221 saab kasutada mitmesugustes tarbekaupades nagu õhuniisutajad ja külmikud jne. Seda andurit saab kasutada ka laiemal areenil, sealhulgas nutika kodu automatiseerimine, tööstusautomaatika, hingamisteede seadmed, varade ja kaupade jälgimine.
Soovitan:
Temperatuuri mõõtmine MCP9803 ja osakeste footoni abil: 4 sammu
Temperatuuri mõõtmine, kasutades MCP9803 ja osakeste fotone: MCP9803 on 2-juhtmeline suure täpsusega temperatuuriandur. Need on varustatud kasutaja poolt programmeeritavate registritega, mis hõlbustavad temperatuuri andmise rakendusi. See andur sobib väga keeruka mitme tsooni temperatuuri jälgimissüsteemi jaoks
Temperatuuri mõõtmine STS21 ja osakeste footoni abil: 4 sammu
Temperatuuri mõõtmine STS21 ja osakeste fotonite abil: STS21 digitaalne temperatuuriandur pakub suurepärast jõudlust ja ruumi säästvat jalajälge. See pakub kalibreeritud, lineariseeritud signaale digitaalses I2C -vormingus. Selle anduri valmistamine põhineb CMOSens tehnoloogial, mis omistab suurepärase
Temperatuuri mõõtmine TMP112 ja osakeste footoni abil: 4 sammu
Temperatuuri mõõtmine, kasutades TMP112 ja osakeste fotone: TMP112 suure täpsusega, väikese võimsusega, digitaalne temperatuuriandur I2C MINI moodul. TMP112 on ideaalne pikemaajaliseks temperatuuri mõõtmiseks. Selle seadme täpsus on ± 0,5 ° C, ilma et oleks vaja kalibreerimist või välise komponendi signaali konditsioneerimist
Niiskuse ja temperatuuri mõõtmine HIH6130 ja osakeste footoni abil: 4 sammu
Niiskuse ja temperatuuri mõõtmine, kasutades HIH6130 ja osakeste fotone: HIH6130 on digitaalse väljundiga niiskus- ja temperatuuriandur. Need andurid tagavad täpsuse taseme ± 4% RH. Tööstusharu juhtiva pikaajalise stabiilsusega, tõelise temperatuuriga kompenseeritud digitaalse I2C-ga, tööstusharu juhtiva töökindlusega, energiatõhususega
Temperatuuri ja niiskuse mõõtmine HDC1000 ja osakeste footoni abil: 4 sammu
Temperatuuri ja niiskuse mõõtmine HDC1000 ja osakeste footonite abil: HDC1000 on digitaalne niiskusandur koos integreeritud temperatuurianduriga, mis tagab suurepärase mõõtmistäpsuse väga väikese võimsusega. Seade mõõdab niiskust uue mahtuvusliku anduri põhjal. Niiskuse ja temperatuuri andurid on