Taula de continguts:

Mesura de la humitat i la temperatura mitjançant HTS221 i fotó de partícules: 4 passos
Mesura de la humitat i la temperatura mitjançant HTS221 i fotó de partícules: 4 passos

Vídeo: Mesura de la humitat i la temperatura mitjançant HTS221 i fotó de partícules: 4 passos

Vídeo: Mesura de la humitat i la temperatura mitjançant HTS221 i fotó de partícules: 4 passos
Vídeo: Mantenimiento predictivo por Jaltest. 2024, De novembre
Anonim
Image
Image

HTS221 és un sensor digital capacitiu ultra compacte per a humitat relativa i temperatura. Inclou un element de detecció i un circuit integrat específic d’aplicació de senyal mixta (ASIC) per proporcionar la informació de mesurament a través d’interfícies serials digitals. Integrat amb tantes funcions, aquest és un dels sensors més adequats per a mesuraments crítics d’humitat i temperatura.

En aquest tutorial s'ha il·lustrat la interfície del mòdul del sensor HTS221 amb el fotó de partícules. Per llegir els valors d’humitat i temperatura, hem utilitzat partícules amb un adaptador I2c, que fa que la connexió al mòdul del sensor sigui més fàcil i fiable.

Pas 1: maquinari necessari:

Maquinari necessari
Maquinari necessari
Maquinari necessari
Maquinari necessari
Maquinari necessari
Maquinari necessari

Els materials que necessitem per assolir el nostre objectiu inclouen els components de maquinari següents:

1. HTS221

2. Fotó de partícules

3. Cable I2C

4. Escut I2C per a fotons de partícules

Pas 2: connexió de maquinari:

Connexió de maquinari
Connexió de maquinari
Connexió de maquinari
Connexió de maquinari

La secció de connexió de maquinari explica bàsicament les connexions de cablejat necessàries entre el sensor i el fotó de partícules. Garantir connexions correctes és la necessitat bàsica mentre es treballa en qualsevol sistema per a la sortida desitjada. Per tant, les connexions necessàries són les següents:

El HTS221 funcionarà sobre I2C. Aquí teniu un exemple de diagrama de cablejat, que demostra com connectar cada interfície del sensor.

Fora de la caixa, el tauler està configurat per a una interfície I2C, per tant, us recomanem que utilitzeu aquesta connexió si no sou agnòstic.

Tot el que necessiteu són quatre cables. Només es necessiten quatre connexions pins Vcc, Gnd, SCL i SDA i es connecten amb l'ajut del cable I2C.

Aquestes connexions es mostren a les imatges anteriors.

Pas 3: codi per a la mesura de la humitat i la temperatura:

Codi de mesura de la humitat i la temperatura
Codi de mesura de la humitat i la temperatura

Comencem ara pel codi de partícules.

Mentre s’utilitza el mòdul de sensor amb la partícula, incloem la biblioteca application.h i spark_wiring_i2c.h. La biblioteca "application.h" i spark_wiring_i2c.h conté les funcions que faciliten la comunicació i2c entre el sensor i la partícula.

A continuació es proporciona tot el codi de partícules per a la comoditat de l'usuari:

#incloure

#incloure

// L'adreça I2C HTS221 és 0x5F

#define Addr 0x5F

doble humitat = 0,0;

doble cTemp = 0,0;

doble fTemp = 0,0;

int temp = 0;

configuració nul·la ()

{

// Estableix la variable

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

Particle.variable ("Humitat", humitat);

Particle.variable ("cTemp", cTemp);

// Inicialitzar la comunicació I2C com a MASTER

Wire.begin ();

// Inicialitzar la comunicació en sèrie, establir la velocitat de transmissió = 9600

Serial.begin (9600);

// Inicieu la transmissió I2C

Wire.beginTransmission (Addr);

// Seleccioneu un registre de configuració mitjà

Wire.write (0x10);

// Mostres mitjanes de temperatura = 256, mostres mitjanes d’humitat = 512

Wire.write (0x1B);

// Atura la transmissió I2C

Wire.endTransmission ();

// Inicieu la transmissió I2C

Wire.beginTransmission (Addr);

// Seleccioneu control register1

Wire.write (0x20);

// Encès, actualització contínua, velocitat de sortida de dades = 1 Hz

Wire.write (0x85);

// Atura la transmissió I2C

Wire.endTransmission ();

retard (300);

}

bucle buit ()

{

dades int sense signar [2];

unsigned int val [4];

sense signar int H0, H1, H2, H3, T0, T1, T2, T3, en brut;

// Valors de calibratge d’humitat

per a (int i = 0; i <2; i ++)

{

// Inicieu la transmissió I2C

Wire.beginTransmission (Addr);

// Enviar registre de dades

Wire.write ((48 + i));

// Atura la transmissió I2C

Wire.endTransmission ();

// Sol·liciteu 1 byte de dades

Wire.requestFrom (Addr, 1);

// Llegiu 1 byte de dades

if (Wire.available () == 1)

{

dades = Wire.read ();

}

}

// Converteix les dades d’humitat

H0 = dades [0] / 2;

H1 = dades [1] / 2;

per a (int i = 0; i <2; i ++)

{

// Inicieu la transmissió I2C

Wire.beginTransmission (Addr);

// Enviar registre de dades

Wire.write ((54 + i));

// Atura la transmissió I2C

Wire.endTransmission ();

// Sol·liciteu 1 byte de dades

Wire.requestFrom (Addr, 1);

// Llegiu 1 byte de dades

if (Wire.available () == 1)

{

dades = Wire.read ();

}

}

// Converteix les dades d’humitat

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

per a (int i = 0; i <2; i ++)

{

// Inicieu la transmissió I2C

Wire.beginTransmission (Addr);

// Enviar registre de dades

Wire.write ((58 + i));

// Atura la transmissió I2C

Wire.endTransmission ();

// Sol·liciteu 1 byte de dades

Wire.requestFrom (Addr, 1);

// Llegiu 1 byte de dades

if (Wire.available () == 1)

{

dades = Wire.read ();

}

}

// Converteix les dades d’humitat

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

// Valors de calibratge de temperatura

// Inicieu la transmissió I2C

Wire.beginTransmission (Addr);

// Enviar registre de dades

Wire.write (0x32);

// Atura la transmissió I2C

Wire.endTransmission ();

// Sol·liciteu 1 byte de dades

Wire.requestFrom (Addr, 1);

// Llegiu 1 byte de dades

if (Wire.available () == 1)

{

T0 = Wire.read ();

}

// Inicieu la transmissió I2C

Wire.beginTransmission (Addr);

// Enviar registre de dades

Wire.write (0x33);

// Atura la transmissió I2C

Wire.endTransmission ();

// Sol·liciteu 1 byte de dades

Wire.requestFrom (Addr, 1);

// Llegiu 1 byte de dades

if (Wire.available () == 1)

{

T1 = Wire.read ();

}

// Inicieu la transmissió I2C

Wire.beginTransmission (Addr);

// Enviar registre de dades

Wire.write (0x35);

// Atura la transmissió I2C

Wire.endTransmission ();

// Sol·liciteu 1 byte de dades

Wire.requestFrom (Addr, 1);

// Llegiu 1 byte de dades

if (Wire.available () == 1)

{

raw = Wire.read ();

}

raw = raw & 0x0F;

// Converteix els valors de calibratge de temperatura a 10 bits

T0 = ((en brut & 0x03) * 256) + T0;

T1 = ((en brut & 0x0C) * 64) + T1;

per a (int i = 0; i <2; i ++)

{

// Inicieu la transmissió I2C

Wire.beginTransmission (Addr);

// Enviar registre de dades

Wire.write ((60 + i));

// Atura la transmissió I2C

Wire.endTransmission ();

// Sol·liciteu 1 byte de dades

Wire.requestFrom (Addr, 1);

// Llegiu 1 byte de dades

if (Wire.available () == 1)

{

dades = Wire.read ();

}

}

// Converteix les dades

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

per a (int i = 0; i <2; i ++)

{

// Inicieu la transmissió I2C

Wire.beginTransmission (Addr);

// Enviar registre de dades

Wire.write ((62 + i));

// Atura la transmissió I2C

Wire.endTransmission ();

// Sol·liciteu 1 byte de dades

Wire.requestFrom (Addr, 1);

// Llegiu 1 byte de dades

if (Wire.available () == 1)

{

dades = Wire.read ();

}

}

// Converteix les dades

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

// Inicieu la transmissió I2C

Wire.beginTransmission (Addr);

// Enviar registre de dades

Wire.write (0x28 | 0x80);

// Atura la transmissió I2C

Wire.endTransmission ();

// Sol·liciteu 4 bytes de dades

Wire.requestFrom (Addr, 4);

// Llegiu 4 bytes de dades

// humitat msb, humitat lsb, temp msb, temp lsb

if (Wire.available () == 4)

{

val [0] = Wire.read ();

val [1] = Wire.read ();

val [2] = Wire.read ();

val [3] = Wire.read ();

}

// Converteix les dades

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

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

// Data de sortida al tauler

Particle.publish ("Humitat relativa:", String (humitat));

retard (1000);

Particle.publish ("Temperatura en centígrads", String (cTemp));

retard (1000);

Particle.publish ("Temperatura en Fahrenheit:", String (fTemp));

retard (1000);

}

La funció Particle.variable () crea les variables per emmagatzemar la sortida del sensor i la funció Particle.publish () mostra la sortida al tauler del lloc.

La sortida del sensor es mostra a la imatge superior per a la vostra referència.

Pas 4: aplicacions:

Aplicacions
Aplicacions

HTS221 es pot utilitzar en diversos productes de consum com humidificadors d'aire i neveres, etc. Aquest sensor també troba la seva aplicació en un àmbit més ampli, inclosa la domòtica intel·ligent, l'automatització industrial, els equips respiratoris, el seguiment d'actius i mercaderies.

Recomanat: