Სარჩევი:

Arduino Nano - HTS221 შედარებითი ტენიანობისა და ტემპერატურის სენსორის სახელმძღვანელო: 4 ნაბიჯი
Arduino Nano - HTS221 შედარებითი ტენიანობისა და ტემპერატურის სენსორის სახელმძღვანელო: 4 ნაბიჯი

ვიდეო: Arduino Nano - HTS221 შედარებითი ტენიანობისა და ტემპერატურის სენსორის სახელმძღვანელო: 4 ნაბიჯი

ვიდეო: Arduino Nano - HTS221 შედარებითი ტენიანობისა და ტემპერატურის სენსორის სახელმძღვანელო: 4 ნაბიჯი
ვიდეო: Arduino Nano 33 BLE Sense — плата с голосовым управлением, IMU, датчиком цвета и метеосенсором. 2024, ნოემბერი
Anonim
Image
Image

HTS221 არის ულტრა კომპაქტური capacitive ციფრული სენსორი ფარდობითი ტენიანობისა და ტემპერატურისათვის. იგი მოიცავს სენსორულ ელემენტს და შერეული სიგნალის გამოყენების სპეციფიკურ ინტეგრირებულ წრეს (ASIC), რომელიც უზრუნველყოფს გაზომვის ინფორმაციას ციფრული სერიული ინტერფეისების საშუალებით. ამდენი მახასიათებლით ინტეგრირებული ეს არის ერთ -ერთი ყველაზე შესაფერისი სენსორი კრიტიკული ტენიანობისა და ტემპერატურის გაზომვისთვის. აქ არის დემონსტრაცია არდუინო ნანოთი.

ნაბიჯი 1: რაც გჭირდებათ..

Რა გჭირდება..!!
Რა გჭირდება..!!

1. არდუინო ნანო

2. HTS221

3. I²C კაბელი

4. I²C ფარი არდუინო ნანოსთვის

ნაბიჯი 2: კავშირები:

კავშირები
კავშირები
კავშირები
კავშირები
კავშირები
კავშირები
კავშირები
კავშირები

აიღეთ I2C ფარი არდუინო ნანოსთვის და ნაზად წაისვით ნანოს ქინძისთავებზე.

შემდეგ დააკავშირეთ I2C კაბელის ერთი ბოლო HTS221 სენსორთან და მეორე ბოლო I2C ფარს.

კავშირები ნაჩვენებია ზემოთ მოცემულ სურათზე.

ნაბიჯი 3: კოდი:

კოდი
კოდი

Arduino კოდი HTS221– ისთვის შეგიძლიათ გადმოწეროთ ჩვენი github საცავიდან- DCUBE Community.

აქ არის იგივე ბმული:

github.com/DcubeTechVentures/HTS221/blob/master/Arduino/HTS221.ino

ჩვენ მოიცავს ბიბლიოთეკას Wire.h სენსორის I2c კომუნიკაციის გასაადვილებლად Arduino დაფასთან.

თქვენ ასევე შეგიძლიათ დააკოპიროთ კოდი აქედან, იგი მოცემულია შემდეგნაირად:

// განაწილებულია თავისუფალი ნების ლიცენზიით.

// გამოიყენეთ იგი ნებისმიერი ფორმით, როგორც გსურთ, მოგებით ან უფასოდ, იმ პირობით, რომ იგი ჯდება ლიცენზიებთან დაკავშირებული სამუშაოებისათვის.

// HTS221

// ეს კოდი შექმნილია HTS221_I2CS I2C მინი მოდულთან მუშაობისთვის

#ჩართეთ

// HTS221 I2C მისამართი არის 0x5F

#განსაზღვრეთ Addr 0x5F

ბათილად დაყენება ()

{

// I2C კომუნიკაციის ინიციალიზაცია, როგორც MASTER

Wire.begin ();

// სერიული კომუნიკაციის ინიციალიზაცია, დაყენებული baud rate = 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);

// მონაცემთა რეესტრის გაგზავნა

Wire.write ((48 + i));

// შეაჩერე I2C გადაცემა

Wire.endTransmission ();

// მოითხოვეთ მონაცემების 1 ბაიტი

მავთული. მოთხოვნა (Addr, 1);

// მონაცემების 1 ბაიტის წაკითხვა

თუ (Wire.available () == 1)

{

მონაცემები = Wire.read ();

}

}

// ტენიანობის მონაცემების კონვერტაცია

H0 = მონაცემები [0] / 2;

H1 = მონაცემები [1] / 2;

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

{

// დაიწყეთ I2C გადაცემა

Wire.beginTransmission (Addr);

// მონაცემთა რეესტრის გაგზავნა

Wire.write ((54 + i));

// შეაჩერე I2C გადაცემა

Wire.endTransmission ();

// მოითხოვეთ მონაცემების 1 ბაიტი

მავთული. მოთხოვნა (Addr, 1);

// მონაცემების 1 ბაიტის წაკითხვა

თუ (Wire.available () == 1)

{

მონაცემები = Wire.read ();

}

}

// ტენიანობის მონაცემების კონვერტაცია

H2 = (მონაცემი [1] * 256.0) + მონაცემი [0];

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

{

// დაიწყეთ I2C გადაცემა

Wire.beginTransmission (Addr);

// მონაცემთა რეესტრის გაგზავნა

Wire.write ((58 + i));

// შეაჩერე I2C გადაცემა

Wire.endTransmission ();

// მოითხოვეთ მონაცემების 1 ბაიტი

მავთული. მოთხოვნა (Addr, 1);

// მონაცემების 1 ბაიტის წაკითხვა

თუ (Wire.available () == 1)

{

მონაცემები = Wire.read ();

}

}

// ტენიანობის მონაცემების კონვერტაცია

H3 = (მონაცემები [1] * 256.0) + მონაცემები [0];

// ტემპერატურის გათავისუფლების ღირებულებები

// დაიწყეთ I2C გადაცემა

Wire.beginTransmission (Addr);

// მონაცემთა რეესტრის გაგზავნა

Wire.write (0x32);

// შეაჩერე I2C გადაცემა

Wire.endTransmission ();

// მოითხოვეთ მონაცემების 1 ბაიტი

მავთული. მოთხოვნა (Addr, 1);

// მონაცემების 1 ბაიტის წაკითხვა

თუ (Wire.available () == 1)

{

T0 = Wire.read ();

}

// დაიწყეთ I2C გადაცემა

Wire.beginTransmission (Addr);

// მონაცემთა რეესტრის გაგზავნა

Wire.write (0x33);

// შეაჩერე I2C გადაცემა

Wire.endTransmission ();

// მოითხოვეთ მონაცემების 1 ბაიტი

მავთული. მოთხოვნა (Addr, 1);

// მონაცემების 1 ბაიტის წაკითხვა

თუ (Wire.available () == 1)

{

T1 = Wire.read ();

}

// დაიწყეთ I2C გადაცემა

Wire.beginTransmission (Addr);

// მონაცემთა რეესტრის გაგზავნა

Wire.write (0x35);

// შეაჩერე I2C გადაცემა

Wire.endTransmission ();

// მოითხოვეთ მონაცემების 1 ბაიტი

მავთული. მოთხოვნა (Addr, 1);

// მონაცემების 1 ბაიტის წაკითხვა

თუ (Wire.available () == 1)

{

ნედლეული = Wire.read ();

}

ნედლეული = ნედლეული & 0x0F;

// გადააკეთეთ ტემპერატურის გამოძახილი მნიშვნელობები 10 ბიტზე

T0 = ((ნედლეული & 0x03) * 256) + T0;

T1 = ((ნედლეული & 0x0C) * 64) + T1;

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

{

// დაიწყეთ I2C გადაცემა

Wire.beginTransmission (Addr);

// მონაცემთა რეესტრის გაგზავნა

Wire.write ((60 + i));

// შეაჩერე I2C გადაცემა

Wire.endTransmission ();

// მოითხოვეთ მონაცემების 1 ბაიტი

მავთული. მოთხოვნა (Addr, 1);

// მონაცემების 1 ბაიტის წაკითხვა

თუ (Wire.available () == 1)

{

მონაცემები = Wire.read ();

}

}

// მონაცემების კონვერტაცია

T2 = (მონაცემები [1] * 256.0) + მონაცემები [0];

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

{

// დაიწყეთ I2C გადაცემა

Wire.beginTransmission (Addr);

// მონაცემთა რეესტრის გაგზავნა

Wire.write ((62 + i));

// შეაჩერე I2C გადაცემა

Wire.endTransmission ();

// მოითხოვეთ მონაცემების 1 ბაიტი

მავთული. მოთხოვნა (Addr, 1);

// მონაცემების 1 ბაიტის წაკითხვა

თუ (Wire.available () == 1)

{

მონაცემები = Wire.read ();

}

}

// მონაცემების კონვერტაცია

T3 = (მონაცემები [1] * 256.0) + მონაცემები [0];

// დაიწყეთ I2C გადაცემა

Wire.beginTransmission (Addr);

// მონაცემთა რეესტრის გაგზავნა

Wire.write (0x28 | 0x80);

// შეაჩერე I2C გადაცემა

Wire.endTransmission ();

// მოითხოვეთ 4 ბაიტი მონაცემები

მავთული. მოთხოვნა (Addr, 4);

// წაიკითხეთ 4 ბაიტი მონაცემები

// ტენიანობა msb, ტენიანობა lsb, temp msb, temp lsb

თუ (Wire. Available () == 4)

{

val [0] = Wire.read ();

val [1] = Wire.read ();

val [2] = Wire.read ();

val [3] = Wire.read ();

}

// მონაცემების კონვერტაცია

float ტენიანობა = (val [1] * 256.0) + val [0];

ტენიანობა = ((1.0 * H1) - (1.0 * H0)) * (1.0 * ტენიანობა - 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;

// სერიული მონიტორის მონაცემების გამოტანა

Serial.print ("ფარდობითი ტენიანობა:");

სერიული. ბეჭდვა (ტენიანობა);

Serial.println (" % RH");

Serial.print ("ტემპერატურა ცელსიუსში:");

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

Serial.print ("ტემპერატურა ფარენჰეიტში:");

Serial.print (fTemp);

Serial.println ("F");

დაგვიანება (500);

}

ნაბიჯი 4: პროგრამები:

HTS221 შეიძლება გამოყენებულ იქნას სხვადასხვა სამომხმარებლო პროდუქტში, როგორიცაა ჰაერის დამატენიანებლები და მაცივრები და ა.შ.

გირჩევთ: