Sisukord:
Video: Arduino Nano - HTS221 suhtelise niiskuse ja temperatuurianduri õpetus: 4 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:47
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. Siin on demonstratsioon arduino nanoga.
Samm: mida vajate..
1. Arduino Nano
2. HTS221
3. I²C kaabel
4. I²C kilp Arduino Nano jaoks
Samm: ühendused:
Võtke Arduino Nano jaoks I2C kilp ja lükake see õrnalt üle Nano tihvtide.
Seejärel ühendage I2C kaabli üks ots HTS221 anduriga ja teine ots I2C varjestusega.
Ühendused on näidatud ülaltoodud pildil.
3. samm: kood:
HTS221 arduino koodi saab alla laadida meie githubi hoidlast DCUBE Community.
Siin on link samale:
github.com/DcubeTechVentures/HTS221/blob/master/Arduino/HTS221.ino
Kaasame raamatukogu Wire.h, et hõlbustada anduri I2c -side Arduino plaadiga.
Siit saate koodi ka kopeerida, see on järgmine:
// Levitatakse vaba tahte litsentsiga.
// Kasutage seda soovitud viisil, kasumit teenides või tasuta, tingimusel et see sobib sellega seotud teoste litsentsidega.
// HTS221
// See kood on loodud töötama koos HTS221_I2CS I2C minimooduliga
#kaasake
// HTS221 I2C aadress on 0x5F
#define Addr 0x5F
tühine seadistus ()
{
// 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);
// Loe 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);
// Loe 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);
// Loe 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);
// Loe 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
ujuki 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);
int temp = (val [3] * 256) + val [2];
ujuk cTemp = ((((T1 - T0) / 8,0) * (temp - T2)) / (T3 - T2) + (T0 / 8,0);
ujuk fTemp = (cTemp * 1,8) + 32;
// Andmete väljastamine jadamonitorile
Serial.print ("Suhteline niiskus:");
Serial.print (niiskus);
Serial.println (" % RH");
Serial.print ("Temperatuur Celsiuse järgi:");
Serial.print (cTemp); Serial.println ("C");
Serial.print ("Temperatuur Fahrenheiti järgi:");
Serial.print (fTemp);
Serial.println ("F");
viivitus (500);
}
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:
Arduino AMS5812_0050-D-B rõhu- ja temperatuurianduri õpetus: 4 sammu
Arduino AMS5812_0050-D-B Rõhu- ja temperatuurianduri õpetus: AMS5812 võimendatud rõhuandur analoog- ja digitaalväljunditega on ülitäpne andur, millel on analoogpinge väljund ja digitaalne I2C-liides. See ühendab piesoresistentse anduri ja selle toimimiseks signaali tingiva elemendi
Arduino Nano - SI7050 temperatuurianduri õpetus: 4 sammu
Arduino Nano - SI7050 temperatuurianduri õpetus: SI7050 on digitaalne temperatuuriandur, mis töötab I2C sideprotokolli alusel ja pakub suurt täpsust kogu tööpinge ja temperatuurivahemiku ulatuses. Selle anduri suure täpsuse põhjuseks on uudne signaalitöötlus ja anaalse
Arduino Nano - TCN75A temperatuurianduri õpetus: 4 sammu
Arduino Nano-TCN75A temperatuurianduri õpetus: TCN75A on kahejuhtmeline seeria temperatuuriandur, mis on ühendatud temperatuuri-digitaalse muunduriga. See on ühendatud kasutaja programmeeritavate registritega, mis pakuvad temperatuuri tundvate rakenduste jaoks paindlikkust. Registri seaded võimaldavad kasutajatel
Arduino Nano - STS21 temperatuurianduri õpetus: 4 sammu
Arduino Nano - STS21 temperatuurianduri õpetus: 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
Arduino Nano - TMP100 temperatuurianduri õpetus: 4 sammu
Arduino Nano-TMP100 temperatuurianduri õpetus: TMP100 suure täpsusega, väikese võimsusega, digitaalne temperatuuriandur I2C MINI moodul. TMP100 on ideaalne pikemaajaliseks temperatuuri mõõtmiseks. See seade pakub täpsust ± 1 ° C ilma kalibreerimist või välise komponendi signaali ettevalmistamist nõudmata. Ta