Mundarija:
- 1 -qadam: Uskuna kerak:
- 2 -qadam: Uskuna ulanishi:
- 3 -qadam: Namlik va haroratni o'lchash kodi:
- 4 -qadam: Ilovalar:
Video: HTS221 va zarracha foton yordamida namlik va haroratni o'lchash: 4 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:25
HTS221 - nisbiy namlik va harorat uchun ultra ixcham sig'imli raqamli sensor. Raqamli ketma -ket interfeyslar orqali o'lchash ma'lumotlarini etkazib berish uchun sezuvchi element va aralash signalli maxsus o'rnatilgan elektron (ASIC) o'z ichiga oladi. Ko'p funktsiyalar bilan birlashtirilgan, bu namlik va haroratni o'lchash uchun eng mos sensorlardan biridir.
Ushbu qo'llanmada HTS221 sensor modulining zarracha fotoni bilan o'zaro aloqasi tasvirlangan. Namlik va harorat qiymatlarini o'qish uchun biz I2c adapterli zarrachadan foydalanganmiz, bu I2C adapteri sensor moduliga ulanishni oson va ishonchli qiladi.
1 -qadam: Uskuna kerak:
Maqsadga erishish uchun bizga kerak bo'lgan materiallar quyidagi apparat komponentlarini o'z ichiga oladi:
1. HTS221
2. Foton zarrachalari
3. I2C kabeli
4. Zarrachalar fotoni uchun I2C qalqoni
2 -qadam: Uskuna ulanishi:
Uskuna ulash bo'limi asosan sensor va zarracha fotoni o'rtasida zarur bo'lgan simi ulanishlarini tushuntiradi. To'g'ri ulanishni ta'minlash har qanday tizimda kerakli chiqish uchun ishlashning asosiy zarurati hisoblanadi. Shunday qilib, kerakli ulanishlar quyidagilar:
HTS221 I2C orqali ishlaydi. Sensorning har bir interfeysini qanday ulash kerakligini ko'rsatadigan simlar sxemasi.
Qutidan tashqari, taxta I2C interfeysi uchun tuzilgan, shuning uchun agar siz agnostik bo'lsangiz, biz ushbu ulanishni ishlatishni maslahat beramiz.
Sizga faqat to'rtta sim kerak! Vcc, Gnd, SCL va SDA pinlari uchun faqat to'rtta ulanish kerak va ular I2C kabeli yordamida ulangan.
Bu ulanishlar yuqoridagi rasmlarda ko'rsatilgan.
3 -qadam: Namlik va haroratni o'lchash kodi:
Endi zarracha kodidan boshlaylik.
Sensor modulini zarracha bilan ishlatganda, biz application.h va spark_wiring_i2c.h kutubxonasini o'z ichiga olamiz. "application.h" va spark_wiring_i2c.h kutubxonasi sensor va zarracha o'rtasidagi i2c aloqasini osonlashtiradigan funktsiyalarni o'z ichiga oladi.
Butun zarracha kodi foydalanuvchiga qulay bo'lishi uchun quyida keltirilgan:
#qo'shing
#qo'shing
// HTS221 I2C manzili - 0x5F
#aniqlang Addr 0x5F
ikki marta namlik = 0,0;
er -xotin cTemp = 0,0;
er -xotin fTemp = 0,0;
int temp = 0;
bo'sh o'rnatish ()
{
// O'zgaruvchini o'rnating
Particle.variable ("i2cdevice", "HTS221");
Zarracha.variable ("Namlik", namlik);
Particle.variable ("cTemp", cTemp);
// I2C aloqasini MASTER sifatida boshlang
Wire.begin ();
// Seriyali aloqani ishga tushiring, bod tezligi = 9600 ni o'rnating
Serial.begin (9600);
// I2C uzatishni boshlang
Wire.beginTransmission (Addr);
// O'rtacha konfiguratsiya registrini tanlang
Wire.write (0x10);
// O'rtacha harorat namunalari = 256, o'rtacha namlik namunalari = 512
Wire.write (0x1B);
// I2C uzatishni to'xtating
Wire.endTransmission ();
// I2C uzatishni boshlang
Wire.beginTransmission (Addr);
// Boshqarish registrini tanlang1
Wire.write (0x20);
// Quvvat yoqish, uzluksiz yangilanish, ma'lumotlar chiqarish tezligi = 1 Hz
Wire.write (0x85);
// I2C uzatishni to'xtating
Wire.endTransmission ();
kechikish (300);
}
bo'sh halqa ()
{
imzosiz int ma'lumotlari [2];
imzosiz int val [4];
imzosiz int H0, H1, H2, H3, T0, T1, T2, T3, xom;
// Namlikni kalibrlash qiymatlari
uchun (int i = 0; i <2; i ++)
{
// I2C uzatishni boshlang
Wire.beginTransmission (Addr);
// Ma'lumotlar reestrini yuborish
Wire.write ((48 + i));
// I2C uzatishni to'xtating
Wire.endTransmission ();
// 1 bayt ma'lumotni so'rang
Wire.requestFrom (Addr, 1);
// 1 bayt ma'lumotni o'qing
agar (Wire.available () == 1)
{
ma'lumotlar = Wire.read ();
}
}
// Namlik ma'lumotlarini aylantirish
H0 = ma'lumotlar [0] / 2;
H1 = ma'lumotlar [1] / 2;
uchun (int i = 0; i <2; i ++)
{
// I2C uzatishni boshlang
Wire.beginTransmission (Addr);
// Ma'lumotlar reestrini yuborish
Wire.write ((54 + i));
// I2C uzatishni to'xtating
Wire.endTransmission ();
// 1 bayt ma'lumotni so'rang
Wire.requestFrom (Addr, 1);
// 1 bayt ma'lumotni o'qing
agar (Wire.available () == 1)
{
ma'lumotlar = Wire.read ();
}
}
// Namlik ma'lumotlarini aylantirish
H2 = (ma'lumotlar [1] * 256.0) + ma'lumotlar [0];
uchun (int i = 0; i <2; i ++)
{
// I2C uzatishni boshlang
Wire.beginTransmission (Addr);
// Ma'lumotlar reestrini yuborish
Wire.write ((58 + i));
// I2C uzatishni to'xtating
Wire.endTransmission ();
// 1 bayt ma'lumotni so'rang
Wire.requestFrom (Addr, 1);
// 1 bayt ma'lumotni o'qing
agar (Wire.available () == 1)
{
ma'lumotlar = Wire.read ();
}
}
// Namlik ma'lumotlarini aylantirish
H3 = (ma'lumotlar [1] * 256.0) + ma'lumotlar [0];
// Haroratni kalibrlash qiymatlari
// I2C uzatishni boshlang
Wire.beginTransmission (Addr);
// Ma'lumotlar reestrini yuborish
Wire.write (0x32);
// I2C uzatishni to'xtating
Wire.endTransmission ();
// 1 bayt ma'lumotni so'rang
Wire.requestFrom (Addr, 1);
// 1 bayt ma'lumotni o'qing
agar (Wire.available () == 1)
{
T0 = Wire.read ();
}
// I2C uzatishni boshlang
Wire.beginTransmission (Addr);
// Ma'lumotlar reestrini yuborish
Wire.write (0x33);
// I2C uzatishni to'xtating
Wire.endTransmission ();
// 1 bayt ma'lumotni so'rang
Wire.requestFrom (Addr, 1);
// 1 bayt ma'lumotni o'qing
agar (Wire.available () == 1)
{
T1 = Wire.read ();
}
// I2C uzatishni boshlang
Wire.beginTransmission (Addr);
// Ma'lumotlar reestrini yuborish
Wire.write (0x35);
// I2C uzatishni to'xtating
Wire.endTransmission ();
// 1 bayt ma'lumotni so'rang
Wire.requestFrom (Addr, 1);
// 1 bayt ma'lumotni o'qing
agar (Wire.available () == 1)
{
xom = Wire.read ();
}
xom = xom & 0x0F;
// Haroratni kalibrlash qiymatlarini 10 bitga aylantiring
T0 = ((xom & 0x03) * 256) + T0;
T1 = ((xom & 0x0C) * 64) + T1;
uchun (int i = 0; i <2; i ++)
{
// I2C uzatishni boshlang
Wire.beginTransmission (Addr);
// Ma'lumotlar reestrini yuborish
Wire.write ((60 + i));
// I2C uzatishni to'xtating
Wire.endTransmission ();
// 1 bayt ma'lumotni so'rang
Wire.requestFrom (Addr, 1);
// 1 bayt ma'lumotni o'qing
agar (Wire.available () == 1)
{
ma'lumotlar = Wire.read ();
}
}
// Ma'lumotni aylantirish
T2 = (ma'lumotlar [1] * 256.0) + ma'lumotlar [0];
uchun (int i = 0; i <2; i ++)
{
// I2C uzatishni boshlang
Wire.beginTransmission (Addr);
// Ma'lumotlar reestrini yuborish
Wire.write ((62 + i));
// I2C uzatishni to'xtating
Wire.endTransmission ();
// 1 bayt ma'lumotni so'rang
Wire.requestFrom (Addr, 1);
// 1 bayt ma'lumotni o'qing
agar (Wire.available () == 1)
{
ma'lumotlar = Wire.read ();
}
}
// Ma'lumotni aylantirish
T3 = (ma'lumotlar [1] * 256.0) + ma'lumotlar [0];
// I2C uzatishni boshlang
Wire.beginTransmission (Addr);
// Ma'lumotlar reestrini yuborish
Wire.write (0x28 | 0x80);
// I2C uzatishni to'xtating
Wire.endTransmission ();
// 4 bayt ma'lumotni so'rang
Wire.requestFrom (Addr, 4);
// 4 bayt ma'lumotni o'qing
// namlik msb, namlik lsb, temp msb, temp lsb
agar (Wire.available () == 4)
{
val [0] = Wire.read ();
val [1] = Wire.read ();
val [2] = Wire.read ();
val [3] = Wire.read ();
}
// Ma'lumotni aylantirish
namlik = (val [1] * 256,0) + val [0];
namlik = ((1.0 * H1) - (1.0 * H0)) * (1.0 * namlik - 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;
// Ma'lumotlarni boshqaruv paneliga chiqarish
Particle.publish ("Nisbiy namlik:", String (namlik));
kechikish (1000);
Particle.publish ("Selsiydagi harorat:", String (cTemp));
kechikish (1000);
Particle.publish ("Farengeytdagi harorat:", String (fTemp));
kechikish (1000);
}
Particle.variable () funktsiyasi sensorning chiqishini saqlash uchun o'zgaruvchilarni yaratadi va Particle.publish () funktsiyasi saytning boshqaruv panelida chiqishini ko'rsatadi.
Ma'lumot uchun sensor chiqishi yuqoridagi rasmda ko'rsatilgan.
4 -qadam: Ilovalar:
HTS221 har xil turdagi havo namlagichlari va muzlatgichlar kabi iste'molchi mahsulotlarida ishlatilishi mumkin. Bu sensor, shuningdek, aqlli uy avtomatizatsiyasi, sanoat avtomatizatsiyasi, nafas olish uskunalari, aktivlar va tovarlarni kuzatishni o'z ichiga oladi.
Tavsiya:
MCP9803 va zarracha foton yordamida haroratni o'lchash: 4 qadam
MCP9803 va zarracha foton yordamida haroratni o'lchash: MCP9803-2 simli yuqori aniqlikdagi harorat sensori. Ular foydalanuvchi tomonidan dasturlashtiriladigan registrlar bilan jihozlangan bo'lib, ular haroratni sezishni osonlashtiradi. Bu sensor juda ko'p zonali haroratni nazorat qilish tizimi uchun javob beradi
STS21 va zarracha foton yordamida haroratni o'lchash: 4 qadam
STS21 va zarracha foton yordamida haroratni o'lchash: STS21 raqamli harorat sensori yuqori ishlash va bo'sh joyni tejash imkonini beradi. Bu raqamli, I2C formatida kalibrlangan, chiziqli signallarni beradi. Ushbu sensorning ishlab chiqarilishi CMOSens texnologiyasiga asoslangan bo'lib, u yuqori darajadagi
TMP112 va zarracha foton yordamida haroratni o'lchash: 4 qadam
TMP112 va zarracha foton yordamida haroratni o'lchash: TMP112 yuqori aniqlik, kam quvvatli, raqamli harorat sensori I2C MINI. TMP112 haroratni o'lchash uchun ideal. Bu qurilma kalibrlashni yoki tashqi signal signalizatsiyasini talab qilmasdan ± 0,5 ° C aniqlikni taqdim etadi
ADT75 va zarracha foton yordamida haroratni o'lchash: 4 qadam
ADT75 va zarracha foton yordamida haroratni o'lchash: ADT75 - yuqori aniqlikdagi raqamli harorat sensori. U haroratni o'lchash va raqamlashtirish uchun tarmoqli oralig'idagi harorat sensori va 12-bitli analogdan raqamli konvertorga ega. Uning juda sezgir sensori uni men uchun etarlicha malakali qiladi
HIH6130 va zarracha foton yordamida namlik va haroratni o'lchash: 4 qadam
HIH6130 va zarracha foton yordamida namlik va haroratni o'lchash: HIH6130 - bu raqamli chiqishga ega namlik va harorat sensori. Bu sensorlar ± 4% RH aniqlik darajasini ta'minlaydi. Sanoatning etakchi uzoq muddatli barqarorligi, haqiqiy harorat kompensatsiyalangan raqamli I2C, sanoatning etakchi ishonchliligi, energiya samaradorligi