Indholdsfortegnelse:

Måling af fugtighed og temperatur ved hjælp af HTS221 og Arduino Nano: 4 trin
Måling af fugtighed og temperatur ved hjælp af HTS221 og Arduino Nano: 4 trin

Video: Måling af fugtighed og temperatur ved hjælp af HTS221 og Arduino Nano: 4 trin

Video: Måling af fugtighed og temperatur ved hjælp af HTS221 og Arduino Nano: 4 trin
Video: TrueGuard lys, temperatur og luftfugtigheds-måler 2024, Juli
Anonim
Image
Image

HTS221 er en ultrakompakt kapacitiv digital sensor til relativ luftfugtighed og temperatur. Det inkluderer et følerelement og et blandet signal applikationsspecifikt integreret kredsløb (ASIC) til at levere måleoplysningerne gennem digitale serielle grænseflader. Integreret med så mange funktioner er dette en af de mest passende sensorer til kritiske fugtigheds- og temperaturmålinger.

I denne vejledning er grænsefladen mellem HTS221 sensormodul og arduino nano illustreret. For at aflæse fugtigheds- og temperaturværdier har vi brugt arduino med en I2c -adapter. Denne I2C -adapter gør forbindelsen til sensormodulet let og mere pålidelig.

Trin 1: Påkrævet hardware:

Hardware påkrævet
Hardware påkrævet
Hardware påkrævet
Hardware påkrævet
Hardware påkrævet
Hardware påkrævet

De materialer, vi har brug for for at nå vores mål, omfatter følgende hardwarekomponenter:

1. HTS221

2. Arduino Nano

3. I2C -kabel

4. I2C Shield til Arduino Nano

Trin 2: Hardware -tilslutning:

Hardware -tilslutning
Hardware -tilslutning
Hardware -tilslutning
Hardware -tilslutning

Hardwaretilslutningssektionen forklarer dybest set de nødvendige ledningsforbindelser mellem sensoren og arduino nano. At sikre korrekte forbindelser er den grundlæggende nødvendighed, mens du arbejder på et hvilket som helst system til den ønskede output. Så de nødvendige forbindelser er som følger:

HTS221 fungerer over I2C. Her er eksemplet på ledningsdiagram, der viser, hvordan du tilslutter hver grænseflade på sensoren.

Out-of-the-box er tavlen konfigureret til en I2C-grænseflade, som sådan anbefaler vi at bruge denne tilslutning, hvis du ellers er agnostiker.

Alt du behøver er fire ledninger! Der kræves kun fire tilslutninger Vcc, Gnd, SCL og SDA ben, og disse er forbundet ved hjælp af I2C kabel.

Disse forbindelser er vist på billederne ovenfor.

Trin 3: Kode for luftfugtighed og temperaturmåling:

Kode for luftfugtighed og temperaturmåling
Kode for luftfugtighed og temperaturmåling

Lad os starte med Arduino -koden nu.

Mens vi bruger sensormodulet med Arduino, inkluderer vi Wire.h -biblioteket. "Wire" -biblioteket indeholder de funktioner, der letter i2c -kommunikationen mellem sensoren og Arduino -kortet.

Hele Arduino -koden er angivet nedenfor for brugerens bekvemmelighed:

#omfatte

// HTS221 I2C -adressen er 0x5F

#define Addr 0x5F

ugyldig opsætning ()

{

// Initialiser I2C -kommunikation som MASTER

Wire.begin ();

// Initialiser seriel kommunikation, indstil baudhastighed = 9600

Serial.begin (9600);

// Start I2C -transmission

Wire.beginTransmission (Addr);

// Vælg gennemsnitligt konfigurationsregister

Wire.write (0x10);

// Temperaturgennemsnitlige prøver = 256, Fugtighedsgennemsnitlige prøver = 512

Wire.write (0x1B);

// Stop I2C -transmission

Wire.endTransmission ();

// Start I2C -transmission

Wire.beginTransmission (Addr);

// Vælg kontrolregister1

Wire.write (0x20);

// Tænd, kontinuerlig opdatering, dataudgangshastighed = 1 Hz

Wire.write (0x85);

// Stop I2C -transmission

Wire.endTransmission ();

forsinkelse (300);

}

hulrum ()

{

usignerede int -data [2];

usigneret int val [4];

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

// Fugtighedsopkaldelsesværdier

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

{

// Start I2C -transmission

Wire.beginTransmission (Addr);

// Send dataregister

Wire.write ((48 + i));

// Stop I2C -transmission

Wire.endTransmission ();

// Anmod om 1 byte data

Wire.requestFrom (Addr, 1);

// Læs 1 byte data

hvis (Wire.available () == 1)

{

data = Wire.read ();

}

}

// Konverter fugtighedsdata

H0 = data [0] / 2;

H1 = data [1] / 2;

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

{

// Start I2C -transmission

Wire.beginTransmission (Addr);

// Send dataregister

Wire.write ((54 + i));

// Stop I2C -transmission

Wire.endTransmission ();

// Anmod om 1 byte data

Wire.requestFrom (Addr, 1);

// Læs 1 byte data

hvis (Wire.available () == 1)

{

data = Wire.read ();

}

}

// Konverter fugtighedsdata

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

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

{

// Start I2C -transmission

Wire.beginTransmission (Addr);

// Send dataregister

Wire.write ((58 + i));

// Stop I2C -transmission

Wire.endTransmission ();

// Anmod om 1 byte data

Wire.requestFrom (Addr, 1);

// Læs 1 byte data

hvis (Wire.available () == 1)

{

data = Wire.read ();

}

}

// Konverter fugtighedsdata

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

// Temperaturopkaldsværdier

// Start I2C -transmission

Wire.beginTransmission (Addr);

// Send dataregister

Wire.write (0x32);

// Stop I2C -transmission

Wire.endTransmission ();

// Anmod om 1 byte data

Wire.requestFrom (Addr, 1);

// Læs 1 byte data

hvis (Wire.available () == 1)

{

T0 = Wire.read ();

}

// Start I2C -transmission

Wire.beginTransmission (Addr);

// Send dataregister

Wire.write (0x33);

// Stop I2C -transmission

Wire.endTransmission ();

// Anmod om 1 byte data

Wire.requestFrom (Addr, 1);

// Læs 1 byte data

hvis (Wire.available () == 1)

{

T1 = Wire.read ();

}

// Start I2C -transmission

Wire.beginTransmission (Addr);

// Send dataregister

Wire.write (0x35);

// Stop I2C -transmission

Wire.endTransmission ();

// Anmod om 1 byte data

Wire.requestFrom (Addr, 1);

// Læs 1 byte data

hvis (Wire.available () == 1)

{

raw = Wire.read ();

}

rå = rå & 0x0F;

// Konverter temperaturopkaldsværdierne til 10-bit

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

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

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

{

// Start I2C -transmission

Wire.beginTransmission (Addr);

// Send dataregister

Wire.write ((60 + i));

// Stop I2C -transmission

Wire.endTransmission ();

// Anmod om 1 byte data

Wire.requestFrom (Addr, 1);

// Læs 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 -transmission

Wire.beginTransmission (Addr);

// Send dataregister

Wire.write ((62 + i));

// Stop I2C -transmission

Wire.endTransmission ();

// Anmod om 1 byte data

Wire.requestFrom (Addr, 1);

// Læs 1 byte data

hvis (Wire.available () == 1)

{

data = Wire.read ();

}

}

// Konverter dataene

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

// Start I2C -transmission

Wire.beginTransmission (Addr);

// Send dataregister

Wire.write (0x28 | 0x80);

// Stop I2C -transmission

Wire.endTransmission ();

// Anmod om 4 bytes data

Wire.requestFrom (Addr, 4);

// Læs 4 bytes data

// fugtigheds msb, fugtighed 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

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

fugtighed = ((1,0 * H1) - (1,0 * H0)) * (1,0 * fugtighed - 1,0 * H2) / (1,0 * H3 - 1,0 * H2) + (1,0 * H0);

int temp = (val [3] * 256) + val [2];

float cTemp = (((T1 - T0) / 8.0) * (temp - T2)) / (T3 - T2) + (T0 / 8.0);

float fTemp = (cTemp * 1.8) + 32;

// Output data til seriel skærm

Serial.print ("Relativ luftfugtighed:");

Serielt tryk (fugtighed);

Serial.println (" % RH");

Serial.print ("Temperatur i Celsius:");

Serial.print (cTemp); Serial.println ("C");

Serial.print ("Temperatur i Fahrenheit:");

Serial.print (fTemp);

Serial.println ("F");

forsinkelse (500);

}

I trådbiblioteket bruges Wire.write () og Wire.read () til at skrive kommandoer og læse sensoroutput.

Serial.print () og Serial.println () bruges til at vise sensorens output på den serielle monitor på Arduino IDE.

Sensorens output er vist på billedet ovenfor.

Trin 4: Ansøgninger:

Ansøgninger
Ansøgninger

HTS221 kan bruges i forskellige forbrugerprodukter som luftfugtere og køleskabe osv. Denne sensor finder også sin anvendelse i en bredere arena, herunder smart hjemmeautomatisering, industriel automatisering, åndedrætsudstyr, aktiv- og varesporing.

Anbefalede: