Përmbajtje:

Matja e lagështisë dhe temperaturës duke përdorur HTS221 dhe foton grimcash: 4 hapa
Matja e lagështisë dhe temperaturës duke përdorur HTS221 dhe foton grimcash: 4 hapa

Video: Matja e lagështisë dhe temperaturës duke përdorur HTS221 dhe foton grimcash: 4 hapa

Video: Matja e lagështisë dhe temperaturës duke përdorur HTS221 dhe foton grimcash: 4 hapa
Video: Matja e temperaturës nga rektumi, këshillat që duhet të ndiqni për ta kryer saktë 2024, Qershor
Anonim
Image
Image

HTS221 është një sensor dixhital ultra kompakt kapacitiv për lagështinë dhe temperaturën relative. Ai përfshin një element ndijimi dhe një qark të integruar specifik të aplikimit të sinjalit të përzier (ASIC) për të siguruar informacionin e matjes përmes ndërfaqeve serike dixhitale. I integruar me kaq shumë karakteristika ky është një nga sensorët më të përshtatshëm për matjet kritike të lagështisë dhe temperaturës.

Në këtë tutorial është ilustruar ndërfaqja e modulit të sensorit HTS221 me fotonin e grimcave. Për të lexuar vlerat e lagështisë dhe temperaturës, ne kemi përdorur grimcë me një përshtatës I2c. Ky përshtatës I2C e bën lidhjen me modulin e sensorit të lehtë dhe më të besueshëm.

Hapi 1: Kërkohet harduer:

Kërkohet harduer
Kërkohet harduer
Kërkohet harduer
Kërkohet harduer
Kërkohet harduer
Kërkohet harduer

Materialet që na duhen për të arritur qëllimin tonë përfshijnë përbërësit e mëposhtëm të harduerit:

1. HTS221

2. Fotoni i grimcave

3. Kabllo I2C

4. Mburoja I2C për fotonin e grimcave

Hapi 2: Bashkimi i harduerit:

Lidhja e harduerit
Lidhja e harduerit
Lidhja e harduerit
Lidhja e harduerit

Seksioni i lidhjes së harduerit në thelb shpjegon lidhjet e telave të kërkuara midis sensorit dhe fotonit të grimcave. Sigurimi i lidhjeve të sakta është nevoja themelore gjatë punës në çdo sistem për daljen e dëshiruar. Pra, lidhjet e nevojshme janë si më poshtë:

HTS221 do të funksionojë mbi I2C. Këtu është shembulli i diagramit të instalimeve elektrike, duke demonstruar se si të lidhni secilën ndërfaqe të sensorit.

Jashtë kutisë, bordi është i konfiguruar për një ndërfaqe I2C, si i tillë ne rekomandojmë përdorimin e këtij bashkimi nëse përndryshe jeni agnostik.

Gjithçka që ju nevojitet janë katër tela! Vetëm katër lidhje kërkohen kunjat Vcc, Gnd, SCL dhe SDA dhe këto janë të lidhura me ndihmën e kabllit I2C.

Këto lidhje demonstrohen në fotot e mësipërme.

Hapi 3: Kodi për Matjen e Lagështisë dhe Temperaturës:

Kodi për Matjen e Lagështisë dhe Temperaturës
Kodi për Matjen e Lagështisë dhe Temperaturës

Le të fillojmë me kodin e grimcave tani.

Ndërsa përdorim modulin e sensorit me grimcën, ne përfshijmë bibliotekën application.h dhe spark_wiring_i2c.h. Biblioteka "application.h" dhe spark_wiring_i2c.h përmban funksione të cilat lehtësojnë komunikimin i2c midis sensorit dhe grimcës.

I gjithë kodi i grimcave është dhënë më poshtë për lehtësinë e përdoruesit:

#përfshi

#përfshi

// Adresa HTS221 I2C është 0x5F

#përcaktoni Addr 0x5F

lagështia e dyfishtë = 0.0;

cTemp dyfishtë = 0.0;

dyshe fTemp = 0.0;

int temp = 0;

void setup ()

{

// Vendos ndryshoren

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

Grimca. E ndryshueshme ("Lagështia", lagështia);

Particle.variable ("cTemp", cTemp);

// Filloni komunikimin I2C si MASTER

Wire.begin ();

// Filloni komunikimin serik, vendosur normën e baudit = 9600

Serial.filloj (9600);

// Filloni Transmetimin I2C

Wire.beginTransmetimi (Addr);

// Zgjidh regjistrin mesatar të konfigurimit

Wire.write (0x10);

// Mostrat mesatare të temperaturës = 256, Mostrat mesatare të lagështisë = 512

Wire.write (0x1B);

// Ndaloni Transmetimin I2C

Wire.endTransmission ();

// Filloni Transmetimin I2C

Wire.beginTransmetimi (Addr);

// Zgjidhni regjistrin e kontrollit1

Wire.write (0x20);

// Ndezje, Përditësim i vazhdueshëm, Shkalla e daljes së të dhënave = 1 Hz

Wire.write (0x85);

// Ndaloni Transmetimin I2C

Wire.endTransmission ();

vonesë (300);

}

lak void ()

{

të dhëna int të panënshkruara [2];

int val i panënshkruar [4];

pa shenja int H0, H1, H2, H3, T0, T1, T2, T3, i papërpunuar;

// Vlerat e kalibrimit të lagështirës

për (int i = 0; i <2; i ++)

{

// Filloni Transmetimin I2C

Wire.beginTransmetimi (Addr);

// Dërgoni regjistrin e të dhënave

Wire.write ((48 + i));

// Ndaloni Transmetimin I2C

Wire.endTransmission ();

// Kërkoni 1 bajt të dhëna

Tela. Kërkohet Nga (Addr, 1);

// Lexoni 1 bajt të dhëna

nëse (Wire.available () == 1)

{

të dhënat = Wire.read ();

}

}

// Shndërroni të dhënat e lagështisë

H0 = të dhëna [0] / 2;

H1 = të dhëna [1] / 2;

për (int i = 0; i <2; i ++)

{

// Filloni Transmetimin I2C

Wire.beginTransmetimi (Addr);

// Dërgoni regjistrin e të dhënave

Wire.write ((54 + i));

// Ndaloni Transmetimin I2C

Wire.endTransmission ();

// Kërkoni 1 bajt të dhëna

Tela. Kërkohet Nga (Addr, 1);

// Lexoni 1 bajt të dhëna

nëse (Wire.available () == 1)

{

të dhënat = Wire.read ();

}

}

// Shndërroni të dhënat e lagështisë

H2 = (të dhëna [1] * 256.0) + të dhëna [0];

për (int i = 0; i <2; i ++)

{

// Filloni Transmetimin I2C

Wire.beginTransmetimi (Addr);

// Dërgoni regjistrin e të dhënave

Wire.write ((58 + i));

// Ndaloni Transmetimin I2C

Wire.endTransmission ();

// Kërkoni 1 bajt të dhëna

Tela. Kërkohet Nga (Addr, 1);

// Lexoni 1 bajt të dhëna

nëse (Wire.available () == 1)

{

të dhënat = Wire.read ();

}

}

// Shndërroni të dhënat e lagështisë

H3 = (të dhëna [1] * 256.0) + të dhëna [0];

// Vlerat e kalibrimit të temperaturës

// Filloni Transmetimin I2C

Wire.beginTransmetimi (Addr);

// Dërgoni regjistrin e të dhënave

Wire.write (0x32);

// Ndaloni Transmetimin I2C

Wire.endTransmission ();

// Kërkoni 1 bajt të dhëna

Tela. Kërkohet Nga (Addr, 1);

// Lexoni 1 bajt të dhëna

nëse (Wire.available () == 1)

{

T0 = Wire.read ();

}

// Filloni Transmetimin I2C

Wire.beginTransmetimi (Addr);

// Dërgoni regjistrin e të dhënave

Wire.write (0x33);

// Ndaloni Transmetimin I2C

Wire.endTransmission ();

// Kërkoni 1 bajt të dhëna

Tela. Kërkohet Nga (Addr, 1);

// Lexoni 1 bajt të dhëna

nëse (Wire.available () == 1)

{

T1 = Wire.read ();

}

// Filloni Transmetimin I2C

Wire.beginTransmetimi (Addr);

// Dërgoni regjistrin e të dhënave

Wire.write (0x35);

// Ndaloni Transmetimin I2C

Wire.endTransmission ();

// Kërkoni 1 bajt të dhëna

Tela. Kërkohet Nga (Addr, 1);

// Lexoni 1 bajt të dhëna

nëse (Wire.available () == 1)

{

i papërpunuar = Wire.read ();

}

i papërpunuar = i papërpunuar & 0x0F;

// Shndërroni vlerat e kalibrimit të temperaturës në 10-bit

T0 = ((e papërpunuar & 0x03) * 256) + T0;

T1 = ((e papërpunuar & 0x0C) * 64) + T1;

për (int i = 0; i <2; i ++)

{

// Filloni Transmetimin I2C

Wire.beginTransmetimi (Addr);

// Dërgoni regjistrin e të dhënave

Wire.write ((60 + i));

// Ndaloni Transmetimin I2C

Wire.endTransmission ();

// Kërkoni 1 bajt të dhëna

Tela. Kërkohet Nga (Addr, 1);

// Lexoni 1 bajt të dhëna

nëse (Wire.available () == 1)

{

të dhënat = Wire.read ();

}

}

// Shndërroni të dhënat

T2 = (të dhëna [1] * 256.0) + të dhëna [0];

për (int i = 0; i <2; i ++)

{

// Filloni Transmetimin I2C

Wire.beginTransmetimi (Addr);

// Dërgoni regjistrin e të dhënave

Wire.write ((62 + i));

// Ndaloni Transmetimin I2C

Wire.endTransmission ();

// Kërkoni 1 bajt të dhëna

Tela. Kërkohet Nga (Addr, 1);

// Lexoni 1 bajt të dhëna

nëse (Wire.available () == 1)

{

të dhënat = Wire.read ();

}

}

// Shndërroni të dhënat

T3 = (të dhëna [1] * 256.0) + të dhëna [0];

// Filloni Transmetimin I2C

Wire.beginTransmetimi (Addr);

// Dërgoni regjistrin e të dhënave

Wire.write (0x28 | 0x80);

// Ndaloni Transmetimin I2C

Wire.endTransmission ();

// Kërkoni 4 bajt të dhëna

Tela. Kërkohet Nga (Addr, 4);

// Lexoni 4 bajt të dhëna

// lagështia msb, lagështia lsb, temp msb, temp lsb

nëse (Wire. në dispozicion () == 4)

{

val [0] = Wire.read ();

val [1] = Wire.read ();

val [2] = Wire.read ();

val [3] = Wire.read ();

}

// Shndërroni të dhënat

lagështia = (val [1] * 256.0) + val [0];

lagështia = ((1.0 * H1) - (1.0 * H0)) * (1.0 * lagështia - 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;

// Dalja e të dhënave në pult

Particle.publish ("Lagështia relative:", String (lagështia));

vonesa (1000);

Particle.publish ("Temperatura në Celsius:", String (cTemp));

vonesa (1000);

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

vonesa (1000);

}

Funksioni Particle.variable () krijon variablat për të ruajtur daljen e sensorit dhe funksioni Particle.publish () shfaq daljen në pultin e faqes.

Dalja e sensorit tregohet në figurën e mësipërme për referencën tuaj.

Hapi 4: Aplikimet:

Aplikimet
Aplikimet

HTS221 mund të përdoret në produkte të ndryshme të konsumit si lagështues të ajrit dhe frigoriferë, etj. Ky sensor gjithashtu gjen aplikimin e tij në një arenë më të gjerë duke përfshirë automatizimin e shtëpisë inteligjente, automatizimin industrial, pajisjet e frymëmarrjes, përcjelljen e aseteve dhe mallrave.

Recommended: