תוכן עניינים:
וִידֵאוֹ: מדידת לחות וטמפרטורה באמצעות HTS221 ופוטון חלקיקים: 4 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:14
HTS221 הוא חיישן דיגיטלי קיבולי אולטרה קומפקטי ללחות וטמפרטורה יחסית. הוא כולל רכיב חישה ומעגל משולב ספציפי ליישום אות מעורב (ASIC) המספק את מידע המדידה באמצעות ממשקים סדרתיים דיגיטליים. משולב עם כל כך הרבה תכונות זהו אחד החיישנים המתאימים ביותר למדידות לחות וטמפרטורה קריטיות.
במדריך זה הודגם הממשק של מודול החיישן HTS221 עם פוטון חלקיקים. כדי לקרוא את ערכי הלחות והטמפרטורה, השתמשנו בחלקיקים עם מתאם I2c. מתאם 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 בין החיישן לחלקיק.
קוד החלקיקים כולו ניתן להלן לנוחות המשתמש:
#לִכלוֹל
#לִכלוֹל
// כתובת I2C HTS221 היא 0x5F
#define Addr 0x5F
לחות כפולה = 0.0;
cTemp כפול = 0.0;
כפול 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);
// הפעלה, עדכון רציף, קצב פלט נתונים = 1 הרץ
Wire.write (0x85);
// עצור את שידור I2C
Wire.endTransmission ();
עיכוב (300);
}
לולאת חלל ()
{
נתוני int ללא חתום [2];
int val ללא חתום [4];
int חתום H0, H1, H2, H3, T0, T1, T2, T3, raw;
// ערכי קליברציה של לחות
עבור (int i = 0; i <2; i ++)
{
// התחל את שידור I2C
Wire.beginTransmission (Addr);
// שלח רישום נתונים
Wire.write ((48 + i));
// עצור את שידור I2C
Wire.endTransmission ();
// בקש בתים של נתונים
Wire.requestFrom (Addr, 1);
// קרא 1 בייט של נתונים
אם (Wire.available () == 1)
{
data = 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 ();
// בקש בתים של נתונים
Wire.requestFrom (Addr, 1);
// קרא 1 בייט של נתונים
אם (Wire.available () == 1)
{
data = Wire.read ();
}
}
// המרת נתוני לחות
H2 = (נתונים [1] * 256.0) + נתונים [0];
עבור (int i = 0; i <2; i ++)
{
// התחל את שידור I2C
Wire.beginTransmission (Addr);
// שלח רישום נתונים
Wire.write ((58 + i));
// עצור את שידור I2C
Wire.endTransmission ();
// בקש בתים של נתונים
Wire.requestFrom (Addr, 1);
// קרא 1 בייט של נתונים
אם (Wire.available () == 1)
{
data = Wire.read ();
}
}
// המרת נתוני לחות
H3 = (נתונים [1] * 256.0) + נתונים [0];
// ערכי שיחות טמפרטורה
// התחל את שידור I2C
Wire.beginTransmission (Addr);
// שלח רישום נתונים
Wire.write (0x32);
// עצור את שידור I2C
Wire.endTransmission ();
// בקש בתים של נתונים
Wire.requestFrom (Addr, 1);
// קרא 1 בייט של נתונים
אם (Wire.available () == 1)
{
T0 = Wire.read ();
}
// התחל את שידור I2C
Wire.beginTransmission (Addr);
// שלח רישום נתונים
Wire.write (0x33);
// עצור את שידור I2C
Wire.endTransmission ();
// בקש בתים של נתונים
Wire.requestFrom (Addr, 1);
// קרא 1 בייט של נתונים
אם (Wire.available () == 1)
{
T1 = Wire.read ();
}
// התחל את שידור I2C
Wire.beginTransmission (Addr);
// שלח רישום נתונים
Wire.write (0x35);
// עצור את שידור I2C
Wire.endTransmission ();
// בקש בתים של נתונים
Wire.requestFrom (Addr, 1);
// קרא 1 בייט של נתונים
אם (Wire.available () == 1)
{
raw = Wire.read ();
}
raw = raw & 0x0F;
// המר את ערכי ההתקשרות לטמפרטורה ל -10 סיביות
T0 = ((raw & 0x03) * 256) + T0;
T1 = ((raw & 0x0C) * 64) + T1;
עבור (int i = 0; i <2; i ++)
{
// התחל את שידור I2C
Wire.beginTransmission (Addr);
// שלח רישום נתונים
Wire.write ((60 + i));
// עצור את שידור I2C
Wire.endTransmission ();
// בקש בתים של נתונים
Wire.requestFrom (Addr, 1);
// קרא 1 בייט של נתונים
אם (Wire.available () == 1)
{
data = Wire.read ();
}
}
// המר את הנתונים
T2 = (נתונים [1] * 256.0) + נתונים [0];
עבור (int i = 0; i <2; i ++)
{
// התחל את שידור I2C
Wire.beginTransmission (Addr);
// שלח רישום נתונים
Wire.write ((62 + i));
// עצור את שידור I2C
Wire.endTransmission ();
// בקש בתים של נתונים
Wire.requestFrom (Addr, 1);
// קרא 1 בייט של נתונים
אם (Wire.available () == 1)
{
data = Wire.read ();
}
}
// המר את הנתונים
T3 = (נתונים [1] * 256.0) + נתונים [0];
// התחל את שידור I2C
Wire.beginTransmission (Addr);
// שלח רישום נתונים
Wire.write (0x28 | 0x80);
// עצור את שידור I2C
Wire.endTransmission ();
// בקש 4 בתים של נתונים
Wire.requestFrom (אדר, 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) * (טמפ ' - T2)) / (T3 - T2) + (T0 / 8.0);
fTemp = (cTemp * 1.8) + 32;
// נתוני פלט ללוח המחוונים
פרסומת Particle.publish ("לחות יחסית:", מחרוזת (לחות));
עיכוב (1000);
Particle.publish ("טמפרטורה בסלסיוס:", מחרוזת (cTemp));
עיכוב (1000);
Particle.publish ("טמפרטורה בפרנהייט:", מחרוזת (fTemp));
עיכוב (1000);
}
הפונקציה Particle.variable () יוצרת את המשתנים לאחסון הפלט של החיישן והפונקציה Particle.publish () מציגה את הפלט בלוח המחוונים של האתר.
פלט החיישן מוצג בתמונה למעלה לעיונך.
שלב 4: יישומים:
ניתן להשתמש ב- HTS221 במוצרי צריכה שונים כמו מכשירי אדים ומקררים וכו '. חיישן זה מוצא את יישומו גם בזירה רחבה יותר, לרבות אוטומציה ביתית חכמה, אוטומציה תעשייתית, ציוד נשימתי, מעקב אחר נכסים וסחורות.
מוּמלָץ:
חישוב לחות, לחץ וטמפרטורה באמצעות ממשק BME280 ופוטון: 6 שלבים
חישוב לחות, לחץ וטמפרטורה באמצעות BME280 וממשק פוטון: אנו נתקלים בפרויקטים שונים הדורשים ניטור טמפרטורה, לחץ ולחות. כך אנו מבינים כי פרמטרים אלה ממלאים למעשה תפקיד חיוני בהערכה ליעילות העבודה של מערכת בתנאים אטמוספריים שונים
מדידת לחות באמצעות HYT939 ופוטון חלקיקים: 4 שלבים
מדידת לחות באמצעות HYT939 ופוטון חלקיקים: HYT939 הוא חיישן לחות דיגיטלי שעובד על פרוטוקול תקשורת I2C. לחות היא פרמטר מרכזי בכל הקשור למערכות רפואיות ומעבדות, ולכן על מנת להשיג מטרות אלה ניסינו לחבר את HYT939 לפטל פטל. אני
מדידת לחות וטמפרטורה באמצעות HTS221 ו- Arduino Nano: 4 שלבים
מדידת לחות וטמפרטורה באמצעות HTS221 ו- Arduino Nano: HTS221 הוא חיישן דיגיטלי קיבולי אולטרה קומפקטי ללחות וטמפרטורה יחסית. הוא כולל אלמנט חישה ומעגל משולב ספציפי ליישום אותות מעורבים (ASIC) המספקים את מידע המדידה באמצעות סדרתי דיגיטלי
מדידת לחות וטמפרטורה באמצעות HTS221 ו- Raspberry Pi: 4 שלבים
מדידת לחות וטמפרטורה באמצעות HTS221 ו- Raspberry Pi: HTS221 הוא חיישן דיגיטלי קיבולי אולטרה קומפקטי ללחות וטמפרטורה יחסית. הוא כולל אלמנט חישה ומעגל משולב ספציפי ליישום אותות מעורבים (ASIC) המספקים את מידע המדידה באמצעות סדרתי דיגיטלי
מדידת לחות וטמפרטורה באמצעות HIH6130 ופוטון חלקיקים: 4 שלבים
מדידת לחות וטמפרטורה באמצעות HIH6130 ופוטון חלקיקים: HIH6130 הוא חיישן לחות וטמפרטורה עם פלט דיגיטלי. חיישנים אלה מספקים רמת דיוק של ± 4% לחות יחסית. עם יציבות ארוכת טווח מובילה בתעשייה, I2C דיגיטלי פיצוי טמפרטורה אמיתי, אמינות מובילה בתעשייה, יעילות אנרגטית