Съдържание:
- Стъпка 1: Изисква се хардуер:
- Стъпка 2: Свързване на хардуера:
- Стъпка 3: Код за измерване на влажност и температура:
- Стъпка 4: Приложения:
Видео: Измерване на влажност и температура с помощта на HTS221 и частичен фотон: 4 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:52
HTS221 е ултра компактен капацитивен цифров сензор за относителна влажност и температура. Той включва сензорен елемент и специфична интегрална схема (ASIC) за прилагане на смесен сигнал за предоставяне на измервателната информация чрез цифрови серийни интерфейси. Интегриран с толкова много функции, това е един от най -подходящите сензори за измерване на критична влажност и температура.
В този урок е илюстрирано взаимодействието на сензорния модул HTS221 с фотон на частиците. За да прочетем стойностите на влажност и температура, използвахме частици с адаптер I2c, който прави връзката с сензорния модул лесна и по -надеждна.
Стъпка 1: Изисква се хардуер:
Материалите, от които се нуждаем за постигане на целта ни, включват следните хардуерни компоненти:
1. HTS221
2. Фотон от частици
3. I2C кабел
4. I2C щит за частичен фотон
Стъпка 2: Свързване на хардуера:
Разделът за свързване на хардуера основно обяснява необходимите кабелни връзки между сензора и фотона на частиците. Осигуряването на правилни връзки е основната необходимост, докато работите върху всяка система за желания изход. И така, необходимите връзки са както следва:
HTS221 ще работи през I2C. Ето примерната електрическа схема, демонстрираща как да свържете всеки интерфейс на сензора.
Извън кутията, дъската е конфигурирана за I2C интерфейс, като такава препоръчваме да използвате тази връзка, ако иначе не сте агностици.
Всичко, от което се нуждаете, са четири проводника! Изискват се само четири връзки Vcc, Gnd, SCL и SDA щифтове и те са свързани с помощта на I2C кабел.
Тези връзки са показани на снимките по -горе.
Стъпка 3: Код за измерване на влажност и температура:
Нека започнем с кода на частиците сега.
Докато използваме сензорния модул с частицата, ние включваме библиотеката application.h и spark_wiring_i2c.h. Библиотеката "application.h" и spark_wiring_i2c.h съдържа функциите, които улесняват i2c комуникацията между сензора и частицата.
Целият код на частиците е даден по -долу за удобство на потребителя:
#включва
#включва
// HTS221 I2C адресът е 0x5F
#define Addr 0x5F
двойна влажност = 0,0;
двоен cTemp = 0.0;
двойна fTemp = 0,0;
int temp = 0;
void setup ()
{
// Задаване на променлива
Particle.variable ("i2cdevice", "HTS221");
Particle.variable ("Влажност", влажност);
Particle.variable ("cTemp", cTemp);
// Инициализира I2C комуникацията като MASTER
Wire.begin ();
// Инициализира серийна комуникация, зададена скорост на предаване = 9600
Serial.begin (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 Hz
Wire.write (0x85);
// Спиране на I2C предаването
Wire.endTransmission ();
забавяне (300);
}
void loop ()
{
беззнакови int данни [2];
беззнаков int val [4];
беззнаков int H0, H1, H2, H3, T0, T1, T2, T3, суров;
// Стойности за калибриране на влажността
за (int i = 0; i <2; i ++)
{
// Стартиране на I2C предаване
Wire.beginTransmission (Addr);
// Изпращане на регистър на данни
Wire.write ((48 + i));
// Спиране на I2C предаването
Wire.endTransmission ();
// Искане на 1 байт данни
Wire.requestFrom (Addr, 1);
// Прочетете 1 байт данни
ако (Wire.available () == 1)
{
данни = Wire.read ();
}
}
// Конвертиране на данни за влажността
H0 = данни [0] / 2;
H1 = данни [1] / 2;
за (int i = 0; i <2; i ++)
{
// Стартиране на I2C предаване
Wire.beginTransmission (Addr);
// Изпращане на регистър на данни
Wire.write ((54 + i));
// Спиране на I2C предаването
Wire.endTransmission ();
// Искане на 1 байт данни
Wire.requestFrom (Addr, 1);
// Прочетете 1 байт данни
ако (Wire.available () == 1)
{
данни = Wire.read ();
}
}
// Конвертиране на данни за влажността
H2 = (данни [1] * 256.0) + данни [0];
за (int i = 0; i <2; i ++)
{
// Стартиране на I2C предаване
Wire.beginTransmission (Addr);
// Изпращане на регистър на данни
Wire.write ((58 + i));
// Спиране на I2C предаването
Wire.endTransmission ();
// Искане на 1 байт данни
Wire.requestFrom (Addr, 1);
// Прочетете 1 байт данни
ако (Wire.available () == 1)
{
данни = Wire.read ();
}
}
// Конвертиране на данни за влажността
H3 = (данни [1] * 256,0) + данни [0];
// Стойности за калибриране на температурата
// Стартиране на I2C предаване
Wire.beginTransmission (Addr);
// Изпращане на регистър на данни
Wire.write (0x32);
// Спиране на I2C предаването
Wire.endTransmission ();
// Искане на 1 байт данни
Wire.requestFrom (Addr, 1);
// Прочетете 1 байт данни
ако (Wire.available () == 1)
{
T0 = Wire.read ();
}
// Стартиране на I2C предаване
Wire.beginTransmission (Addr);
// Изпращане на регистър на данни
Wire.write (0x33);
// Спиране на I2C предаването
Wire.endTransmission ();
// Искане на 1 байт данни
Wire.requestFrom (Addr, 1);
// Прочетете 1 байт данни
ако (Wire.available () == 1)
{
T1 = Wire.read ();
}
// Стартиране на I2C предаване
Wire.beginTransmission (Addr);
// Изпращане на регистър на данни
Wire.write (0x35);
// Спиране на I2C предаването
Wire.endTransmission ();
// Искане на 1 байт данни
Wire.requestFrom (Addr, 1);
// Прочетете 1 байт данни
ако (Wire.available () == 1)
{
raw = Wire.read ();
}
необработен = необработен & 0x0F;
// Преобразуваме стойностите на калибриране на температурата в 10-бита
T0 = ((необработен & 0x03) * 256) + T0;
T1 = ((необработен & 0x0C) * 64) + T1;
за (int i = 0; i <2; i ++)
{
// Стартиране на I2C предаване
Wire.beginTransmission (Addr);
// Изпращане на регистър на данни
Wire.write ((60 + i));
// Спиране на I2C предаването
Wire.endTransmission ();
// Искане на 1 байт данни
Wire.requestFrom (Addr, 1);
// Прочетете 1 байт данни
ако (Wire.available () == 1)
{
данни = Wire.read ();
}
}
// Конвертиране на данните
T2 = (данни [1] * 256,0) + данни [0];
за (int i = 0; i <2; i ++)
{
// Стартиране на I2C предаване
Wire.beginTransmission (Addr);
// Изпращане на регистър на данни
Wire.write ((62 + i));
// Спиране на I2C предаването
Wire.endTransmission ();
// Искане на 1 байт данни
Wire.requestFrom (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 байта данни
Wire.requestFrom (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 ();
}
// Конвертиране на данните
влажност = (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);
temp = (val [3] * 256) + val [2]; cTemp = (((T1 - T0) / 8.0) * (temp - T2)) / (T3 - T2) + (T0 / 8.0);
fTemp = (cTemp * 1.8) + 32;
// Извеждане на данни към таблото за управление
Particle.publish ("Относителна влажност:", низ (влажност));
забавяне (1000);
Particle.publish ("Температура в Целзий:", Низ (cTemp));
забавяне (1000);
Particle.publish ("Температура по Фаренхайт:", String (fTemp));
забавяне (1000);
}
Функцията Particle.variable () създава променливите за съхраняване на изхода на сензора, а функцията Particle.publish () показва изхода на таблото за управление на сайта.
Изходът на сензора е показан на снимката по -горе за ваша справка.
Стъпка 4: Приложения:
HTS221 може да се използва в различни потребителски продукти като овлажнители на въздух и хладилници и др. Този сензор намира своето приложение и в по -широка област, включително автоматизация на интелигентен дом, промишлена автоматизация, дихателно оборудване, проследяване на активи и стоки.
Препоръчано:
Измерване на ускорението с помощта на ADXL345 и частичен фотон: 4 стъпки
Измерване на ускорението с помощта на ADXL345 и частичен фотон: ADXL345 е малък, тънък, 3-осен акселерометър с ултра ниска мощност с измерване с висока разделителна способност (13 бита) до ± 16 g. Цифровите изходни данни са форматирани като 16-битови двойки, допълващи се и са достъпни чрез I2 C цифров интерфейс. Измерва
Измерване на магнитното поле с помощта на HMC5883 и частичен фотон: 4 стъпки
Измерване на магнитно поле с помощта на HMC5883 и частичен фотон: HMC5883 е цифров компас, предназначен за нискополеви магнитни сензори. Това устройство има широк диапазон на магнитно поле от +/- 8 Oe и изходна скорост 160 Hz. Сензорът HMC5883 включва драйвери на ленти за автоматично размагняване, отместване на офсета и
Измерване на влажност с помощта на HYT939 и частичен фотон: 4 стъпки
Измерване на влажност с помощта на HYT939 и частичен фотон: HYT939 е цифров сензор за влажност, който работи по I2C комуникационен протокол. Влажността е основен параметър, когато става въпрос за медицински системи и лаборатории, така че за да постигнем тези цели, се опитахме да свържем HYT939 с малиново пи. Аз
Измерване на влажност и температура с помощта на HIH6130 и частичен фотон: 4 стъпки
Измерване на влажност и температура с помощта на HIH6130 и частичен фотон: HIH6130 е сензор за влажност и температура с цифров изход. Тези сензори осигуряват ниво на точност ± 4% относителна влажност. С водеща в индустрията дългосрочна стабилност, истинска температурно компенсирана цифрова I2C, водеща в индустрията надеждност, енергийна ефективност
Измерване на температура и влажност с помощта на HDC1000 и частичен фотон: 4 стъпки
Измерване на температура и влажност с помощта на HDC1000 и частичен фотон: HDC1000 е цифров сензор за влажност с вграден температурен сензор, който осигурява отлична точност на измерване при много ниска мощност. Устройството измерва влажността въз основа на нов капацитивен сензор. Сензорите за влажност и температура са факс