Måling av fuktighet og temperatur ved bruk av HTS221 og partikkelfoton: 4 trinn
Måling av fuktighet og temperatur ved bruk av HTS221 og partikkelfoton: 4 trinn
Anonim
Image
Image

HTS221 er en ultrakompakt kapasitiv digital sensor for relativ fuktighet og temperatur. Den inneholder et følerelement og en spesifikk integrert krets (ASIC) for blandet signal for å gi måleinformasjonen gjennom digitale serielle grensesnitt. Integrert med så mange funksjoner, dette er en av de mest passende sensorene for kritiske fuktighets- og temperaturmålinger.

I denne opplæringen har grensesnittet mellom HTS221 -sensormodulen og partikkelfoton blitt illustrert. For å lese fuktighets- og temperaturverdiene har vi brukt partikkel med en I2c -adapter. Denne I2C -adapteren gjør tilkoblingen til sensormodulen enkel og mer pålitelig.

Trinn 1: Nødvendig maskinvare:

Maskinvare som kreves
Maskinvare som kreves
Maskinvare som kreves
Maskinvare som kreves
Maskinvare som kreves
Maskinvare som kreves

Materialene vi trenger for å nå målet vårt inkluderer følgende maskinvarekomponenter:

1. HTS221

2. Partikkelfoton

3. I2C -kabel

4. I2C -skjerm for partikkelfoton

Trinn 2: Maskinvaretilkobling:

Maskinvaretilkobling
Maskinvaretilkobling
Maskinvaretilkobling
Maskinvaretilkobling

Maskinvarekoblingsdelen forklarer i utgangspunktet ledningsforbindelsene som kreves mellom sensoren og partikkelfotonet. Å sikre riktige tilkoblinger er den grunnleggende nødvendigheten mens du arbeider på et hvilket som helst system for ønsket utgang. Så de nødvendige tilkoblingene er som følger:

HTS221 fungerer over I2C. Her er eksempel på koblingsskjema, som viser hvordan du kobler til hvert grensesnitt på sensoren.

Uten boksen er brettet konfigurert for et I2C-grensesnitt, derfor anbefaler vi å bruke denne tilkoblingen hvis du ellers er agnostiker.

Alt du trenger er fire ledninger! Bare fire tilkoblinger kreves Vcc, Gnd, SCL og SDA -pinner, og disse er koblet til ved hjelp av I2C -kabel.

Disse sammenhengene er vist på bildene ovenfor.

Trinn 3: Kode for fuktighet og temperaturmåling:

Kode for fuktighet og temperaturmåling
Kode for fuktighet og temperaturmåling

La oss begynne med partikkelkoden nå.

Mens vi bruker sensormodulen med partikkelen, inkluderer vi application.h og spark_wiring_i2c.h biblioteket. "application.h" og spark_wiring_i2c.h biblioteket inneholder funksjonene som letter i2c -kommunikasjonen mellom sensoren og partikkelen.

Hele partikkelkoden er gitt nedenfor for brukerens bekvemmelighet:

#inkludere

#inkludere

// HTS221 I2C -adressen er 0x5F

#define Addr 0x5F

dobbel fuktighet = 0,0;

dobbel cTemp = 0,0;

dobbel fTemp = 0,0;

int temp = 0;

ugyldig oppsett ()

{

// Angi variabel

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

Partikkel.variabel ("Fuktighet", fuktighet);

Particle.variable ("cTemp", cTemp);

// Initialiser I2C -kommunikasjon som MASTER

Wire.begin ();

// Initialiser seriell kommunikasjon, sett overføringshastighet = 9600

Serial.begin (9600);

// Start I2C -overføring

Wire.beginTransmission (Addr);

// Velg gjennomsnittlig konfigurasjonsregister

Wire.write (0x10);

// Temperatur gjennomsnittlige prøver = 256, Fuktighets gjennomsnittsprøver = 512

Wire.write (0x1B);

// Stopp I2C -overføring

Wire.endTransmission ();

// Start I2C -overføring

Wire.beginTransmission (Addr);

// Velg kontrollregister1

Wire.write (0x20);

// Strøm PÅ, kontinuerlig oppdatering, datautgangshastighet = 1 Hz

Wire.write (0x85);

// Stopp I2C -overføring

Wire.endTransmission ();

forsinkelse (300);

}

hulrom ()

{

usignerte int -data [2];

usignert int val [4];

usignert int H0, H1, H2, H3, T0, T1, T2, T3, rå;

// Verdier for fuktighetskalliberasjon

for (int i = 0; i <2; i ++)

{

// Start I2C -overføring

Wire.beginTransmission (Addr);

// Send dataregister

Wire.write ((48 + i));

// Stopp I2C -overføring

Wire.endTransmission ();

// Be om 1 byte med data

Wire.requestFrom (Addr, 1);

// Les 1 byte data

hvis (Wire.available () == 1)

{

data = Wire.read ();

}

}

// Konverter fuktighetsdata

H0 = data [0] / 2;

H1 = data [1] / 2;

for (int i = 0; i <2; i ++)

{

// Start I2C -overføring

Wire.beginTransmission (Addr);

// Send dataregister

Wire.write ((54 + i));

// Stopp I2C -overføring

Wire.endTransmission ();

// Be om 1 byte med data

Wire.requestFrom (Addr, 1);

// Les 1 byte data

hvis (Wire.available () == 1)

{

data = Wire.read ();

}

}

// Konverter fuktighetsdata

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

for (int i = 0; i <2; i ++)

{

// Start I2C -overføring

Wire.beginTransmission (Addr);

// Send dataregister

Wire.write ((58 + i));

// Stopp I2C -overføring

Wire.endTransmission ();

// Be om 1 byte med data

Wire.requestFrom (Addr, 1);

// Les 1 byte data

hvis (Wire.available () == 1)

{

data = Wire.read ();

}

}

// Konverter fuktighetsdata

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

// Temperaturoppkallingsverdier

// Start I2C -overføring

Wire.beginTransmission (Addr);

// Send dataregister

Wire.write (0x32);

// Stopp I2C -overføring

Wire.endTransmission ();

// Be om 1 byte med data

Wire.requestFrom (Addr, 1);

// Les 1 byte data

hvis (Wire.available () == 1)

{

T0 = Wire.read ();

}

// Start I2C -overføring

Wire.beginTransmission (Addr);

// Send dataregister

Wire.write (0x33);

// Stopp I2C -overføring

Wire.endTransmission ();

// Be om 1 byte med data

Wire.requestFrom (Addr, 1);

// Les 1 byte data

hvis (Wire.available () == 1)

{

T1 = Wire.read ();

}

// Start I2C -overføring

Wire.beginTransmission (Addr);

// Send dataregister

Wire.write (0x35);

// Stopp I2C -overføring

Wire.endTransmission ();

// Be om 1 byte med data

Wire.requestFrom (Addr, 1);

// Les 1 byte data

hvis (Wire.available () == 1)

{

raw = Wire.read ();

}

rå = rå & 0x0F;

// Konverter temperaturoppkallingsverdiene til 10-bits

T0 = ((rå & 0x03) * 256) + T0;

T1 = ((rå & 0x0C) * 64) + T1;

for (int i = 0; i <2; i ++)

{

// Start I2C -overføring

Wire.beginTransmission (Addr);

// Send dataregister

Wire.write ((60 + i));

// Stopp I2C -overføring

Wire.endTransmission ();

// Be om 1 byte med data

Wire.requestFrom (Addr, 1);

// Les 1 byte data

hvis (Wire.available () == 1)

{

data = Wire.read ();

}

}

// Konverter dataene

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

for (int i = 0; i <2; i ++)

{

// Start I2C -overføring

Wire.beginTransmission (Addr);

// Send dataregister

Wire.write ((62 + i));

// Stopp I2C -overføring

Wire.endTransmission ();

// Be om 1 byte med data

Wire.requestFrom (Addr, 1);

// Les 1 byte data

hvis (Wire.available () == 1)

{

data = Wire.read ();

}

}

// Konverter dataene

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

// Start I2C -overføring

Wire.beginTransmission (Addr);

// Send dataregister

Wire.write (0x28 | 0x80);

// Stopp I2C -overføring

Wire.endTransmission ();

// Be om 4 byte med data

Wire.requestFrom (Addr, 4);

// Les 4 byte med data

// fuktighet msb, fuktighet lsb, temp msb, temp lsb

hvis (Wire.available () == 4)

{

val [0] = Wire.read ();

val [1] = Wire.read ();

val [2] = Wire.read ();

val [3] = Wire.read ();

}

// Konverter dataene

fuktighet = (val [1] * 256,0) + val [0];

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

// Utdata til dashbordet

Particle.publish ("Relativ fuktighet:", String (fuktighet));

forsinkelse (1000);

Particle.publish ("Temperatur i Celsius:", String (cTemp));

forsinkelse (1000);

Particle.publish ("Temperatur i Fahrenheit:", String (fTemp));

forsinkelse (1000);

}

Particle.variable () -funksjonen oppretter variablene for å lagre sensorens utgang og Particle.publish () -funksjonen viser utgangen på dashbordet til nettstedet.

Sensorutgangen er vist på bildet ovenfor for din referanse.

Trinn 4: Søknader:

Applikasjoner
Applikasjoner

HTS221 kan brukes i forskjellige forbrukerprodukter som luftfuktere og kjøleskap etc. Denne sensoren finner også sin anvendelse på en bredere arena, inkludert smart hjemmeautomatisering, industriell automatisering, åndedrettsutstyr, eiendeler og varesporing.

Anbefalt: