Мазмуну:
- 1 -кадам: Аппараттык камсыздоо талап кылынат:
- 2 -кадам: Аппараттык туташуу:
- 3 -кадам: Нымдуулукту жана температураны өлчөө коду:
- 4 -кадам: Тиркемелер:
Video: HTS221 жана бөлүкчө фотонун колдонуу менен нымдуулукту жана температураны өлчөө: 4 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:40
HTS221 салыштырмалуу нымдуулук жана температура үчүн өтө компакт сыйымдуу санарип сенсор. Бул санариптик сериялык интерфейстер аркылуу өлчөө маалыматын берүү үчүн сезгич элементти жана аралаш сигналга тиешелүү интегралдык микросхеманы (ASIC) камтыйт. Бул көптөгөн өзгөчөлүктөр менен интеграцияланган, бул нымдуулукту жана температураны өлчөө үчүн эң ылайыктуу сенсорлордун бири.
Бул окуу куралында HTS221 сенсор модулунун бөлүкчө фотону менен интерфейси сүрөттөлгөн. Нымдуулук жана температура баалуулуктарын окуу үчүн I2c adapter. This 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;
double cTemp = 0.0;
double fTemp = 0.0;
int temp = 0;
жараксыз орнотуу ()
{
// Өзгөрмөнү коюу
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);
// Power ON, Үзгүлтүксүз жаңыртуу, Маалымат чыгаруу ылдамдыгы = 1 Гц
Wire.write (0x85);
// I2C берүүнү токтотуу
Wire.endTransmission ();
кечигүү (300);
}
боштук цикл ()
{
кол коюлбаган int маалыматтары [2];
unsigned 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 ();
}
}
// Нымдуулук маалыматын Convert
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 ();
}
}
// Нымдуулук маалыматын Convert
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 ();
}
}
// Нымдуулук маалыматын Convert
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 ();
}
// Маалыматты конвертациялоо
нымдуулук = (вал [1] * 256.0) + вал [0];
нымдуулук = ((1.0 * H1) - (1.0 * H0)) * (1.0 * нымдуулук - 1.0 * H2) / (1.0 * H3 - 1.0 * H2) + (1.0 * H0);
темп = (val [3] * 256) + val [2]; cTemp = ((((T1 - T0) / 8.0) * (темп - T2)) / (T3 - T2) + (T0 / 8.0);
fTemp = (cTemp * 1.8) + 32;
// Маалыматтарды тактасына чыгаруу
Particle.publish ("Салыштырмалуу нымдуулук:", String (нымдуулук));
кечигүү (1000);
Particle.publish ("Цельсий боюнча температура:", String (cTemp));
кечигүү (1000);
Particle.publish ("Фаренгейттеги температура:", String (fTemp));
кечигүү (1000);
}
Particle.
Сенсор чыгаруу үчүн жогорудагы сүрөттө көрсөтүлгөн.
4 -кадам: Тиркемелер:
HTS221 абаны нымдагычтар жана муздаткычтар сыяктуу ар кандай керектөөчү продуктыларда колдонулушу мүмкүн. Бул сенсор ошондой эле акылдуу үйдү автоматташтыруу, өнөр жайлык автоматташтыруу, дем алуу жабдуулары, активдерди жана товарларды көзөмөлдөө сыяктуу кеңири аренада колдонулат.
Сунушталууда:
HYT939 жана бөлүкчө фотонун колдонуу менен нымдуулукту өлчөө: 4 кадам
HYT939 жана Particle Photon аркылуу нымдуулукту өлчөө: HYT939 - бул I2C байланыш протоколу боюнча иштеген санариптик нымдуулук сенсору. Нымдуулук медициналык системаларга жана лабораторияларга келгенде негизги параметр болуп саналат, ошондуктан бул максаттарга жетүү үчүн биз HYT939ду малина pi менен интерфейске келтирүүгө аракет кылдык. Мен
Температураны өлчөө MCP9803 жана бөлүкчө фотонун колдонуу: 4 кадам
MCP9803 жана Particle Photon аркылуу температураны өлчөө: MCP9803-2 зымдуу жогорку тактыктагы температура сенсору. Алар температураны сезүү колдонмолорун жеңилдетүүчү колдонуучу программалоочу реестрлер менен камтылган. Бул сенсор өтө татаал көп зоналык температура мониторинг системасына ылайыктуу
Температураны өлчөө STS21 жана бөлүкчө фотонун колдонуу: 4 кадам
STS21 жана Particle Photon аркылуу температураны өлчөө: STS21 Санариптик Температура Сенсору жогорку өндүрүмдүүлүктү жана мейкиндикти үнөмдөөчү изди сунуш кылат. Бул санарип, I2C форматында калибрленген, сызыктуу сигналдарды берет. Бул сенсордун жасалышы CMOSens технологиясына негизделген, ал жогорку сапаттарга таандык
ADT75 жана бөлүкчө фотонун жардамы менен температураны өлчөө: 4 кадам
ADT75 жана Particle Photon аркылуу температураны өлчөө: ADT75 - бул абдан так, санарип температура сенсору. Бул диапазондогу температура сенсорунан жана температураны көзөмөлдөө жана санариптештирүү үчүн санариптик конвертерге 12-биттен турат. Анын өтө сезгич сенсору мага жетиштүү компетенттүү кылат
HIH6130 жана бөлүкчө фотонун колдонуу менен нымдуулукту жана температураны өлчөө: 4 кадам
HIH6130 жана Particle Photon аркылуу нымдуулукту жана температураны өлчөө: HIH6130 - бул санариптик чыгышы бар нымдуулук жана температура сенсору. Бул сенсорлор ± 4% RH тактыгын камсыз кылат. Өнөр жайдын алдыңкы узак мөөнөттүү туруктуулугу, чыныгы температуранын ордун толтуруучу санариптик I2C, индустриянын алдыңкы ишенимдүүлүгү, энергияны үнөмдөө