Мазмұны:
- 1 -қадам: Қажетті жабдық:
- 2 -қадам: Жабдықты қосу:
- 3 -қадам: Ылғалдылық пен температураны өлшеу коды:
- 4 -қадам: Өтініштер:
Бейне: HTS221 және Arduino Nano көмегімен ылғалдылық пен температураны өлшеу: 4 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:24
HTS221 - салыстырмалы ылғалдылық пен температураның ультра жинақы сыйымдылықты сандық сенсоры. Ол сандық сериялық интерфейстер арқылы өлшеу ақпаратын беру үшін сенсорлық элементті және аралас сигналдық арнайы интегралды схеманы (ASIC) қамтиды. Бұл көптеген мүмкіндіктермен біріктірілген, бұл ылғалдылық пен температураны өлшеуге арналған ең қолайлы сенсорлардың бірі.
Бұл оқулықта HTS221 сенсорлық модулінің arduino nano -мен байланысы суреттелген. Ылғалдылық пен температураның мәндерін оқу үшін біз 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 кітапханасын қосамыз. «Wire» кітапханасында сенсор мен Arduino тақтасы арасындағы i2c байланысын жеңілдететін функциялар бар.
Пайдаланушыға ыңғайлы болу үшін барлық Arduino коды төменде келтірілген:
#қосу
// HTS221 I2C мекенжайы - 0x5F
#Addr 0x5F анықтаңыз
жарамсыз орнату ()
{
// 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 Гц
Wire.write (0x85);
// I2C берілуін тоқтату
Wire.endTransmission ();
кешіктіру (300);
}
бос цикл ()
{
қол қойылмаған 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)
{
шикі = 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);
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);
}
Сымдық кітапханада Wire.write () және Wire.read () командаларды жазу және сенсор шығысын оқу үшін қолданылады.
Serial.print () және Serial.println () сенсордың шығысын Arduino IDE сериялық мониторында көрсету үшін қолданылады.
Сенсордың шығысы жоғарыдағы суретте көрсетілген.
4 -қадам: Өтініштер:
HTS221 ауаны ылғалдандырғыштар мен тоңазытқыштар сияқты әр түрлі тұтыну өнімдерінде қолданыла алады. Бұл сенсор ақылды үйді автоматтандыру, өнеркәсіптік автоматтандыру, тыныс алу құралдары, активтер мен тауарларды бақылау сияқты кең ауқымда қолданылады.
Ұсынылған:
HIH6130 және Arduino Nano көмегімен ылғалдылық пен температураны өлшеу: 4 қадам
HIH6130 мен Arduino Nano көмегімен ылғалдылық пен температураны өлшеу: HIH6130 - цифрлық шығысы бар ылғалдылық пен температура сенсоры. Бұл датчиктер ± 4% RH дәлдік деңгейін қамтамасыз етеді. Өнеркәсіптің жетекші ұзақ мерзімді тұрақтылығымен, шынайы температуралық компенсацияланған сандық I2C, өнеркәсіптің сенімділігі, энергия тиімділігі
HTS221 және Raspberry Pi көмегімен ылғалдылық пен температураны өлшеу: 4 қадам
HTS221 мен Raspberry Pi көмегімен ылғалдылық пен температураны өлшеу: HTS221 - салыстырмалы ылғалдылық пен температураға арналған өте жинақы сыйымдылықты сандық сенсор. Ол сандық серия арқылы өлшеу ақпаратын беру үшін сенсорлық элементті және аралас сигналға арналған арнайы интегралды схеманы (ASIC) қамтиды
HIH6130 мен Raspberry Pi көмегімен ылғалдылық пен температураны өлшеу: 4 қадам
HIH6130 мен Raspberry Pi көмегімен ылғалдылық пен температураны өлшеу: HIH6130 - бұл цифрлық шығысы бар ылғалдылық пен температура сенсоры. Бұл датчиктер ± 4% RH дәлдік деңгейін қамтамасыз етеді. Өнеркәсіптің жетекші ұзақ мерзімді тұрақтылығымен, шынайы температуралық компенсацияланған сандық I2C, өнеркәсіптің сенімділігі, энергия тиімділігі
HIH6130 мен бөлшек фотонының көмегімен ылғалдылық пен температураны өлшеу: 4 қадам
HIH6130 мен бөлшек фотонының көмегімен ылғалдылық пен температураны өлшеу: HIH6130 - бұл цифрлық шығысы бар ылғалдылық пен температура сенсоры. Бұл датчиктер ± 4% RH дәлдік деңгейін қамтамасыз етеді. Өнеркәсіптің жетекші ұзақ мерзімді тұрақтылығымен, шынайы температуралық компенсацияланған сандық I2C, өнеркәсіптің сенімділігі, энергия тиімділігі
HTS221 мен бөлшек фотонының көмегімен ылғалдылық пен температураны өлшеу: 4 қадам
HTS221 мен бөлшектер фотонының көмегімен ылғалдылық пен температураны өлшеу: HTS221 - салыстырмалы ылғалдылық пен температураның ультра жинақы сыйымдылықты сандық сенсоры. Ол сандық серия арқылы өлшеу ақпаратын беру үшін сенсорлық элементті және аралас сигналға арналған арнайы интегралды схеманы (ASIC) қамтиды