Turinys:

Drėgmės ir temperatūros matavimas naudojant HTS221 ir dalelių fotoną: 4 žingsniai
Drėgmės ir temperatūros matavimas naudojant HTS221 ir dalelių fotoną: 4 žingsniai
Anonim
Image
Image

HTS221 yra ypač kompaktiškas talpinis skaitmeninis jutiklis, skirtas santykiniam drėgnumui ir temperatūrai. Jame yra jutimo elementas ir mišraus signalo taikymo integruotas grandynas (ASIC), skirtas pateikti matavimo informaciją per skaitmenines nuoseklias sąsajas. Integruotas su daugybe funkcijų, tai yra vienas tinkamiausių jutiklių kritiniams drėgmės ir temperatūros matavimams.

Šioje pamokoje buvo parodyta HTS221 jutiklio modulio sąsaja su dalelių fotonu. Norėdami nuskaityti drėgmės ir temperatūros vertes, naudojome daleles su I2c adapteriu. Šis I2C adapteris leidžia lengvai ir patikimiau prijungti jutiklio modulį.

1 veiksmas: reikalinga aparatūra:

Reikalinga aparatūra
Reikalinga aparatūra
Reikalinga aparatūra
Reikalinga aparatūra
Reikalinga aparatūra
Reikalinga aparatūra

Medžiagos, reikalingos mūsų tikslui pasiekti, apima šiuos aparatūros komponentus:

1. HTS221

2. Dalelių fotonas

3. I2C kabelis

4. I2C skydas dalelių fotonui

2 veiksmas: prijungimas prie aparatūros:

Aparatūros prijungimas
Aparatūros prijungimas
Aparatūros prijungimas
Aparatūros prijungimas

Techninės įrangos prijungimo skyrius iš esmės paaiškina laidų jungtis, reikalingas tarp jutiklio ir dalelių fotono. Užtikrinti teisingas jungtis yra pagrindinė būtinybė dirbant su bet kuria norimos išvesties sistema. Taigi, būtinos jungtys yra šios:

HTS221 veiks per I2C. Čia yra elektros instaliacijos schemos pavyzdys, parodantis, kaip prijungti kiekvieną jutiklio sąsają.

Iš karto plokštė sukonfigūruota I2C sąsajai, todėl rekomenduojame naudoti šį prijungimą, jei esate kitaip agnostikas.

Viskas, ko jums reikia, yra keturi laidai! Reikia tik keturių jungčių „Vcc“, „Gnd“, „SCL“ir „SDA“kaiščių, kurie yra prijungti naudojant I2C kabelį.

Šie ryšiai parodyti aukščiau esančiose nuotraukose.

3 žingsnis: Drėgmės ir temperatūros matavimo kodas:

Drėgmės ir temperatūros matavimo kodas
Drėgmės ir temperatūros matavimo kodas

Pradėkime nuo dalelių kodo dabar.

Naudodami jutiklio modulį su dalele, įtraukiame „application.h“ir „spark_wiring_i2c.h“biblioteką. Bibliotekoje „application.h“ir spark_wiring_i2c.h yra funkcijos, palengvinančios i2c ryšį tarp jutiklio ir dalelės.

Visas dalelių kodas pateikiamas žemiau, kad būtų patogiau vartotojui:

#įtraukti

#įtraukti

// HTS221 I2C adresas yra 0x5F

#define Addr 0x5F

dviguba drėgmė = 0,0;

dvigubas cTemp = 0,0;

dvigubas fTemp = 0,0;

int temp = 0;

negaliojanti sąranka ()

{

// Nustatyti kintamąjį

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

Dalelė.kintamasis ("Drėgmė", drėgmė);

Particle.variable ("cTemp", cTemp);

// Inicijuoti I2C komunikaciją kaip MASTER

Wire.begin ();

// Inicijuoti nuoseklųjį ryšį, nustatyti duomenų perdavimo spartą = 9600

Serial.begin (9600);

// Pradėti I2C perdavimą

Wire.beginTransmission (Addr);

// Pasirinkite vidutinį konfigūracijos registrą

Wire.write (0x10);

// Temperatūros vidurkio mėginiai = 256, Vidutinės drėgmės mėginiai = 512

Wire.write (0x1B);

// Sustabdyti I2C perdavimą

Wire.endTransmission ();

// Pradėti I2C perdavimą

Wire.beginTransmission (Addr);

// Pasirinkite valdymo registrą1

Wire.write (0x20);

// Įjungimas, nuolatinis atnaujinimas, duomenų išvesties sparta = 1 Hz

Wire.write (0x85);

// Sustabdyti I2C perdavimą

Wire.endTransmission ();

vėlavimas (300);

}

tuštumos kilpa ()

{

nepasirašyti int duomenys [2];

unsigned int val [4];

nepasirašytas int H0, H1, H2, H3, T0, T1, T2, T3, neapdorotas;

// Drėgmės nustatymo vertės

už (int i = 0; i <2; i ++)

{

// Pradėti I2C perdavimą

Wire.beginTransmission (Addr);

// Siųsti duomenų registrą

Wire.write ((48 + i));

// Sustabdyti I2C perdavimą

Wire.endTransmission ();

// Prašyti 1 baito duomenų

Wire.requestFrom (Addr, 1);

// Skaityti 1 baitą duomenų

jei (Wire.available () == 1)

{

duomenys = Wire.read ();

}

}

// Konvertuoti drėgmės duomenis

H0 = duomenys [0] / 2;

H1 = duomenys [1] / 2;

už (int i = 0; i <2; i ++)

{

// Pradėti I2C perdavimą

Wire.beginTransmission (Addr);

// Siųsti duomenų registrą

Wire.write ((54 + i));

// Sustabdyti I2C perdavimą

Wire.endTransmission ();

// Prašyti 1 baito duomenų

Wire.requestFrom (Addr, 1);

// Skaityti 1 baitą duomenų

jei (Wire.available () == 1)

{

duomenys = Wire.read ();

}

}

// Konvertuoti drėgmės duomenis

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

už (int i = 0; i <2; i ++)

{

// Pradėti I2C perdavimą

Wire.beginTransmission (Addr);

// Siųsti duomenų registrą

Wire.write ((58 + i));

// Sustabdyti I2C perdavimą

Wire.endTransmission ();

// Prašyti 1 baito duomenų

Wire.requestFrom (Addr, 1);

// Skaityti 1 baitą duomenų

jei (Wire.available () == 1)

{

duomenys = Wire.read ();

}

}

// Konvertuoti drėgmės duomenis

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

// Temperatūros nustatymo vertės

// Pradėti I2C perdavimą

Wire.beginTransmission (Addr);

// Siųsti duomenų registrą

Wire.write (0x32);

// Sustabdyti I2C perdavimą

Wire.endTransmission ();

// Prašyti 1 baito duomenų

Wire.requestFrom (Addr, 1);

// Skaityti 1 baitą duomenų

jei (Wire.available () == 1)

{

T0 = Wire.read ();

}

// Pradėti I2C perdavimą

Wire.beginTransmission (Addr);

// Siųsti duomenų registrą

Wire.write (0x33);

// Sustabdyti I2C perdavimą

Wire.endTransmission ();

// Prašyti 1 baito duomenų

Wire.requestFrom (Addr, 1);

// Skaityti 1 baitą duomenų

jei (Wire.available () == 1)

{

T1 = Wire.read ();

}

// Pradėti I2C perdavimą

Wire.beginTransmission (Addr);

// Siųsti duomenų registrą

Wire.write (0x35);

// Sustabdyti I2C perdavimą

Wire.endTransmission ();

// Prašyti 1 baito duomenų

Wire.requestFrom (Addr, 1);

// Skaityti 1 baitą duomenų

jei (Wire.available () == 1)

{

raw = Wire.read ();

}

žaliavas = žalias & 0x0F;

// Konvertuokite temperatūros iškvietimo reikšmes į 10 bitų

T0 = ((neapdorotas ir 0x03) * 256) + T0;

T1 = ((neapdorota ir 0x0C) * 64) + T1;

už (int i = 0; i <2; i ++)

{

// Pradėti I2C perdavimą

Wire.beginTransmission (Addr);

// Siųsti duomenų registrą

Wire.write ((60 + i));

// Sustabdyti I2C perdavimą

Wire.endTransmission ();

// Prašyti 1 baito duomenų

Wire.requestFrom (Addr, 1);

// Skaityti 1 baitą duomenų

jei (Wire.available () == 1)

{

duomenys = Wire.read ();

}

}

// Konvertuoti duomenis

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

už (int i = 0; i <2; i ++)

{

// Pradėti I2C perdavimą

Wire.beginTransmission (Addr);

// Siųsti duomenų registrą

Wire.write ((62 + i));

// Sustabdyti I2C perdavimą

Wire.endTransmission ();

// Prašyti 1 baito duomenų

Wire.requestFrom (Addr, 1);

// Skaityti 1 baitą duomenų

jei (Wire.available () == 1)

{

duomenys = Wire.read ();

}

}

// Konvertuoti duomenis

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

// Pradėti I2C perdavimą

Wire.beginTransmission (Addr);

// Siųsti duomenų registrą

Wire.write (0x28 | 0x80);

// Sustabdyti I2C perdavimą

Wire.endTransmission ();

// Prašyti 4 baitų duomenų

Wire.requestFrom (Addr, 4);

// Perskaitykite 4 baitus duomenų

// drėgmė msb, drėgmė lsb, temp msb, temp lsb

jei (Wire.available () == 4)

{

val [0] = Wire.read ();

val [1] = Wire.read ();

val [2] = Wire.read ();

val [3] = Wire.read ();

}

// Konvertuoti duomenis

drėgmė = (val [1] * 256,0) + val [0];

drėgmė = ((1,0 * H1) - (1,0 * H0)) * (1,0 * drėgmė - 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;

// Išvesti duomenis į prietaisų skydelį

Particle.publish ("Santykinė drėgmė:", Styga (drėgmė));

vėlavimas (1000);

Particle.publish ("Temperatūra Celsijaus laipsniais:", Styga (cTemp));

vėlavimas (1000);

Particle.publish ("Temperatūra Farenheitu:", Styga (fTemp));

vėlavimas (1000);

}

Funkcija „Particle.variable ()“sukuria kintamuosius, kad išsaugotų jutiklio išvestį, o „Particle.publish“() rodo išvestį svetainės prietaisų skydelyje.

Jutiklio išvestis yra parodyta aukščiau esančiame paveikslėlyje.

4 žingsnis: programos:

Programos
Programos

HTS221 gali būti naudojamas įvairiose plataus vartojimo prekėse, tokiose kaip oro drėkintuvai ir šaldytuvai ir tt

Rekomenduojamas: