Агуулгын хүснэгт:

HTS221 ба Arduino Nano ашиглан чийгшил ба температурын хэмжилт: 4 алхам
HTS221 ба Arduino Nano ашиглан чийгшил ба температурын хэмжилт: 4 алхам

Видео: HTS221 ба Arduino Nano ашиглан чийгшил ба температурын хэмжилт: 4 алхам

Видео: HTS221 ба Arduino Nano ашиглан чийгшил ба температурын хэмжилт: 4 алхам
Видео: Arduino Nano, BME280 и SSD1306 OLED-метеостанция 2024, Арваннэгдүгээр
Anonim
Image
Image

HTS221 бол харьцангуй чийгшил, температурын хэт авсаархан багтаамжтай дижитал мэдрэгч юм. Энэ нь дижитал цуваа интерфэйсээр хэмжилтийн мэдээллийг өгөх мэдрэгч элемент ба холимог дохионы хэрэглээний тусгай нэгдсэн хэлхээг (ASIC) агуулдаг. Олон тооны онцлог шинж чанар бүхий энэ нь чийгшил, температурыг хэмжих хамгийн тохиромжтой мэдрэгч юм.

Энэхүү гарын авлагад HTS221 мэдрэгч модулийн arduino нано -той хэрхэн холбогдож байгааг харуулав. Чийгшил ба температурын утгыг уншихын тулд бид I2c адаптертай arduino -ийг ашигласан бөгөөд энэхүү I2C адаптер нь мэдрэгчийн модульд холбогдоход хялбар, илүү найдвартай болгодог.

Алхам 1: Шаардлагатай тоног төхөөрөмж:

Шаардлагатай техник хангамж
Шаардлагатай техник хангамж
Шаардлагатай техник хангамж
Шаардлагатай техник хангамж
Шаардлагатай техник хангамж
Шаардлагатай техник хангамж

Зорилгодоо хүрэхийн тулд бидэнд шаардлагатай материалууд нь дараахь тоног төхөөрөмжийн бүрэлдэхүүн хэсгүүдийг агуулдаг.

1. HTS221

2. Ардуино Нано

3. I2C кабель

4. Arduino Nano -д зориулсан I2C бамбай

Алхам 2: Тоног төхөөрөмжийн холболт:

Тоног төхөөрөмжийн холболт
Тоног төхөөрөмжийн холболт
Тоног төхөөрөмжийн холболт
Тоног төхөөрөмжийн холболт

Тоног төхөөрөмжийн холболтын хэсэг нь үндсэндээ мэдрэгч ба arduino нано хооронд шаардлагатай утас холболтыг тайлбарладаг. Аливаа систем дээр ажиллахад шаардлагатай гаралтын хувьд зөв холболтыг хангах нь хамгийн чухал зүйл юм. Тиймээс шаардлагатай холболтууд дараах байдалтай байна.

HTS221 нь I2C дээр ажиллах болно. Мэдрэгчийн интерфэйс бүрийг хэрхэн яаж холбохыг харуулсан утасны диаграмын жишээ энд байна.

Хайрцагнаас гадуурх самбар нь I2C интерфэйс дээр тохируулагдсан байдаг тул хэрэв та өөр ойлголтгүй бол энэ холболтыг ашиглахыг зөвлөж байна.

Танд ердөө дөрвөн утас л хангалттай! Vcc, Gnd, SCL, SDA зүүг зөвхөн дөрвөн холболт шаарддаг бөгөөд эдгээр нь I2C кабелийн тусламжтайгаар холбогддог.

Эдгээр холболтыг дээрх зурган дээр харуулав.

Алхам 3: Чийглэг ба температур хэмжих код:

Чийглэг ба температур хэмжих код
Чийглэг ба температур хэмжих код

Одоо Arduino кодоор эхэлье.

Arduino -тай мэдрэгчийн модулийг ашиглахдаа бид Wire.h номын санг агуулдаг. "Утас" номын сан нь мэдрэгч ба Arduino самбар хоорондын i2c холболтыг хөнгөвчлөх функцүүдийг агуулдаг.

Хэрэглэгчийн тав тухыг хангах үүднээс Arduino кодыг бүхэлд нь доор өгөв.

#оруулах

// HTS221 I2C хаяг нь 0x5F байна

#тодорхойлох Addr 0x5F

хүчингүй тохиргоо ()

{

// I2C холболтыг MASTER болгон эхлүүлэх

Wire.begin ();

// Цуваа холболтыг эхлүүлж, дамжуулах хурд = 9600

Цуваа эхлэх (9600);

// I2C дамжуулалтыг эхлүүлэх

Wire.beginTransmission (Addr);

// Дундаж тохиргооны бүртгэлийг сонгоно уу

Wire.write (0x10);

// Температурын дундаж дээж = 256, Чийглэгийн дундаж дээж = 512

Wire.write (0x1B);

// I2C дамжуулалтыг зогсоох

Wire.endTransmission ();

// I2C дамжуулалтыг эхлүүлэх

Wire.beginTransmission (Addr);

// Хяналтын бүртгэлийг сонгоно уу1

Wire.write (0x20);

// асаах, тасралтгүй шинэчлэх, өгөгдөл дамжуулах хурд = 1 Гц

Wire.write (0x85);

// I2C дамжуулалтыг зогсоох

Wire.endTransmission ();

саатал (300);

}

хоосон давталт ()

{

гарын үсэг зураагүй int өгөгдөл [2];

тэмдэггүй int val [4];

гарын үсэггүй int H0, H1, H2, H3, T0, T1, T2, T3, түүхий;

// Чийгийг тооцоолох утга

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

{

// I2C дамжуулалтыг эхлүүлэх

Wire.beginTransmission (Addr);

// Мэдээллийн бүртгэл илгээх

Утас. бичих ((48 + i));

// I2C дамжуулалтыг зогсоох

Wire.endTransmission ();

// 1 байтын өгөгдөл хүсэх

Wire.requestFrom (Addr, 1);

// 1 байтын өгөгдлийг уншина уу

хэрэв (Утас. боломжтой () == 1)

{

өгөгдөл = Wire.read ();

}

}

// Чийглэгийн өгөгдлийг хөрвүүлэх

H0 = өгөгдөл [0] / 2;

H1 = өгөгдөл [1] / 2;

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

{

// I2C дамжуулалтыг эхлүүлэх

Wire.beginTransmission (Addr);

// Мэдээллийн бүртгэл илгээх

Утас. бичих ((54 + i));

// I2C дамжуулалтыг зогсоох

Wire.endTransmission ();

// 1 байтын өгөгдөл хүсэх

Wire.requestFrom (Addr, 1);

// 1 байтын өгөгдлийг уншина уу

хэрэв (Утас. боломжтой () == 1)

{

өгөгдөл = Wire.read ();

}

}

// Чийглэгийн өгөгдлийг хөрвүүлэх

H2 = (өгөгдөл [1] * 256.0) + өгөгдөл [0];

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

{

// I2C дамжуулалтыг эхлүүлэх

Wire.beginTransmission (Addr);

// Мэдээллийн бүртгэл илгээх

Утас. бичих ((58 + i));

// I2C дамжуулалтыг зогсоох

Wire.endTransmission ();

// 1 байтын өгөгдөл хүсэх

Wire.requestFrom (Addr, 1);

// 1 байтын өгөгдлийг уншина уу

хэрэв (Утас. боломжтой () == 1)

{

өгөгдөл = Wire.read ();

}

}

// Чийглэгийн өгөгдлийг хөрвүүлэх

H3 = (өгөгдөл [1] * 256.0) + өгөгдөл [0];

// Температурын тохируулгын утга

// I2C дамжуулалтыг эхлүүлэх

Wire.beginTransmission (Addr);

// Мэдээллийн бүртгэл илгээх

Wire.write (0x32);

// I2C дамжуулалтыг зогсоох

Wire.endTransmission ();

// 1 байтын өгөгдөл хүсэх

Wire.requestFrom (Addr, 1);

// 1 байтын өгөгдлийг уншина уу

хэрэв (Утас. боломжтой () == 1)

{

T0 = Wire.read ();

}

// I2C дамжуулалтыг эхлүүлэх

Wire.beginTransmission (Addr);

// Мэдээллийн бүртгэл илгээх

Wire.write (0x33);

// I2C дамжуулалтыг зогсоох

Wire.endTransmission ();

// 1 байтын өгөгдөл хүсэх

Wire.requestFrom (Addr, 1);

// 1 байтын өгөгдлийг уншина уу

хэрэв (Утас. боломжтой () == 1)

{

T1 = Wire.read ();

}

// I2C дамжуулалтыг эхлүүлэх

Wire.beginTransmission (Addr);

// Мэдээллийн бүртгэл илгээх

Wire.write (0x35);

// I2C дамжуулалтыг зогсоох

Wire.endTransmission ();

// 1 байтын өгөгдөл хүсэх

Wire.requestFrom (Addr, 1);

// 1 байтын өгөгдлийг уншина уу

хэрэв (Утас. боломжтой () == 1)

{

түүхий = Wire.read ();

}

түүхий = түүхий & 0x0F;

// Температурын тохируулгын утгыг 10 бит болгон хөрвүүлэх

T0 = ((түүхий & 0x03) * 256) + T0;

T1 = ((түүхий & 0x0C) * 64) + T1;

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

{

// I2C дамжуулалтыг эхлүүлэх

Wire.beginTransmission (Addr);

// Мэдээллийн бүртгэл илгээх

Утас. бичих ((60 + i));

// I2C дамжуулалтыг зогсоох

Wire.endTransmission ();

// 1 байтын өгөгдөл хүсэх

Wire.requestFrom (Addr, 1);

// 1 байтын өгөгдлийг уншина уу

хэрэв (Утас. боломжтой () == 1)

{

өгөгдөл = Wire.read ();

}

}

// Өгөгдлийг хөрвүүлэх

T2 = (өгөгдөл [1] * 256.0) + өгөгдөл [0];

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

{

// I2C дамжуулалтыг эхлүүлэх

Wire.beginTransmission (Addr);

// Мэдээллийн бүртгэл илгээх

Утас. бичих ((62 + i));

// I2C дамжуулалтыг зогсоох

Wire.endTransmission ();

// 1 байтын өгөгдөл хүсэх

Wire.requestFrom (Addr, 1);

// 1 байтын өгөгдлийг уншина уу

хэрэв (Утас. боломжтой () == 1)

{

өгөгдөл = Wire.read ();

}

}

// Өгөгдлийг хөрвүүлэх

T3 = (өгөгдөл [1] * 256.0) + өгөгдөл [0];

// I2C дамжуулалтыг эхлүүлэх

Wire.beginTransmission (Addr);

// Мэдээллийн бүртгэл илгээх

Wire.write (0x28 | 0x80);

// I2C дамжуулалтыг зогсоох

Wire.endTransmission ();

// 4 байтын өгөгдөл хүсэх

Wire.requestFrom (Addr, 4);

// 4 байтын өгөгдлийг уншина уу

// чийгшил msb, чийгшил lsb, temp msb, temp lsb

хэрэв (Утас. боломжтой () == 4)

{

val [0] = Wire.read ();

val [1] = Wire.read ();

val [2] = Wire.read ();

val [3] = Wire.read ();

}

// Өгөгдлийг хөрвүүлэх

хөвөх чийгшил = (val [1] * 256.0) + val [0];

чийгшил = ((1.0 * H1) - (1.0 * H0)) * (1.0 * чийгшил - 1.0 * Н2) / (1.0 * Н3 - 1.0 * Н2) + (1.0 * Н0);

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;

// Өгөгдлийг цуваа монитор руу гаргадаг

Serial.print ("Харьцангуй чийгшил:");

Цуврал хэвлэх (чийгшил);

Serial.println (" % RH");

Serial.print ("Цельсийн температур:");

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

Serial.print ("Фаренгейт дэх температур:");

Цуваа.хэвлэх (fTemp);

Serial.println ("F");

саатал (500);

}

Утасны санд Wire.write () ба Wire.read () командыг бичиж, мэдрэгчийн гаралтыг уншихад ашиглагддаг.

Arduino IDE -ийн цуваа дэлгэц дээр мэдрэгчийн гаралтыг харуулахад Serial.print () ба Serial.println () ашиглагддаг.

Мэдрэгчийн гаралтыг дээрх зурагт үзүүлэв.

Алхам 4: Өргөдөл:

Хэрэглээ
Хэрэглээ

HTS221 -ийг агаарын чийгшүүлэгч, хөргөгч гэх мэт өргөн хэрэглээний бүтээгдэхүүнүүдэд ашиглаж болно. Энэхүү мэдрэгч нь ухаалаг гэрийн автоматжуулалт, үйлдвэрлэлийн автоматжуулалт, амьсгалын төхөөрөмж, эд хөрөнгө, бараа бүтээгдэхүүний хяналт зэрэг өргөн хүрээнд хэрэглэгддэг.

Зөвлөмж болгож буй: