Სარჩევი:
- ნაბიჯი 1: საჭირო აპარატურა:
- ნაბიჯი 2: აპარატურის დაკავშირება:
- ნაბიჯი 3: ტენიანობის და ტემპერატურის გაზომვის კოდი:
- ნაბიჯი 4: პროგრამები:
ვიდეო: ტენიანობის და ტემპერატურის გაზომვა HTS221 და ნაწილაკების ფოტონის გამოყენებით: 4 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:17
HTS221 არის ულტრა კომპაქტური capacitive ციფრული სენსორი ფარდობითი ტენიანობისა და ტემპერატურისათვის. იგი მოიცავს სენსორულ ელემენტს და შერეული სიგნალის გამოყენების სპეციფიკურ ინტეგრირებულ წრეს (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 კომუნიკაციას.
მომხმარებლის ნაწილის მოხერხებულობისთვის ქვემოთ მოცემულია ნაწილაკების მთელი კოდი:
#ჩართეთ
#ჩართეთ
// HTS221 I2C მისამართი არის 0x5F
#განსაზღვრეთ Addr 0x5F
ორმაგი ტენიანობა = 0.0;
ორმაგი cTemp = 0.0;
ორმაგი fTemp = 0.0;
int temp = 0;
ბათილად დაყენება ()
{
// ცვლადის დაყენება
ნაწილაკი. ცვლადი ("i2cdevice", "HTS221");
ნაწილაკი. ცვალებადი ("ტენიანობა", ტენიანობა);
ნაწილაკი. ცვლადი ("cTemp", cTemp);
// I2C კომუნიკაციის ინიციალიზაცია, როგორც MASTER
Wire.begin ();
// სერიული კომუნიკაციის ინიციალიზაცია, დაყენებული baud rate = 9600
სერიული.დაწყება (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, ნედლეული;
// ტენიანობის კალიბერაციის ღირებულებები
for (int i = 0; i <2; i ++)
{
// დაიწყეთ I2C გადაცემა
Wire.beginTransmission (Addr);
// მონაცემთა რეესტრის გაგზავნა
Wire.write ((48 + i));
// შეაჩერე I2C გადაცემა
Wire.endTransmission ();
// მოითხოვეთ მონაცემების 1 ბაიტი
მავთული. მოთხოვნა (Addr, 1);
// მონაცემების 1 ბაიტის წაკითხვა
თუ (Wire.available () == 1)
{
მონაცემები = Wire.read ();
}
}
// ტენიანობის მონაცემების კონვერტაცია
H0 = მონაცემები [0] / 2;
H1 = მონაცემები [1] / 2;
for (int i = 0; i <2; i ++)
{
// დაიწყეთ I2C გადაცემა
Wire.beginTransmission (Addr);
// მონაცემთა რეესტრის გაგზავნა
Wire.write ((54 + i));
// შეაჩერე I2C გადაცემა
Wire.endTransmission ();
// მოითხოვეთ მონაცემების 1 ბაიტი
მავთული. მოთხოვნა (Addr, 1);
// მონაცემების 1 ბაიტის წაკითხვა
თუ (Wire.available () == 1)
{
მონაცემები = Wire.read ();
}
}
// ტენიანობის მონაცემების კონვერტაცია
H2 = (მონაცემი [1] * 256.0) + მონაცემი [0];
for (int i = 0; i <2; i ++)
{
// დაიწყეთ I2C გადაცემა
Wire.beginTransmission (Addr);
// მონაცემთა რეესტრის გაგზავნა
Wire.write ((58 + i));
// შეაჩერე I2C გადაცემა
Wire.endTransmission ();
// მოითხოვეთ მონაცემების 1 ბაიტი
მავთული. მოთხოვნა (Addr, 1);
// მონაცემების 1 ბაიტის წაკითხვა
თუ (Wire.available () == 1)
{
მონაცემები = Wire.read ();
}
}
// ტენიანობის მონაცემების კონვერტაცია
H3 = (მონაცემები [1] * 256.0) + მონაცემები [0];
// ტემპერატურის გათავისუფლების ღირებულებები
// დაიწყეთ I2C გადაცემა
Wire.beginTransmission (Addr);
// მონაცემთა რეესტრის გაგზავნა
Wire.write (0x32);
// შეაჩერე I2C გადაცემა
Wire.endTransmission ();
// მოითხოვეთ მონაცემების 1 ბაიტი
მავთული. მოთხოვნა (Addr, 1);
// მონაცემების 1 ბაიტის წაკითხვა
თუ (Wire.available () == 1)
{
T0 = Wire.read ();
}
// დაიწყეთ I2C გადაცემა
Wire.beginTransmission (Addr);
// მონაცემთა რეესტრის გაგზავნა
Wire.write (0x33);
// შეაჩერე I2C გადაცემა
Wire.endTransmission ();
// მოითხოვეთ მონაცემების 1 ბაიტი
მავთული. მოთხოვნა (Addr, 1);
// მონაცემების 1 ბაიტის წაკითხვა
თუ (Wire.available () == 1)
{
T1 = Wire.read ();
}
// დაიწყეთ I2C გადაცემა
Wire.beginTransmission (Addr);
// მონაცემთა რეესტრის გაგზავნა
Wire.write (0x35);
// შეაჩერე I2C გადაცემა
Wire.endTransmission ();
// მოითხოვეთ მონაცემების 1 ბაიტი
მავთული. მოთხოვნა (Addr, 1);
// მონაცემების 1 ბაიტის წაკითხვა
თუ (Wire.available () == 1)
{
ნედლეული = Wire.read ();
}
ნედლეული = ნედლეული & 0x0F;
// გადააკეთეთ ტემპერატურის გამოძახილი მნიშვნელობები 10 ბიტზე
T0 = ((ნედლეული & 0x03) * 256) + T0;
T1 = ((ნედლეული & 0x0C) * 64) + T1;
for (int i = 0; i <2; i ++)
{
// დაიწყეთ I2C გადაცემა
Wire.beginTransmission (Addr);
// მონაცემთა რეესტრის გაგზავნა
Wire.write ((60 + i));
// შეაჩერე I2C გადაცემა
Wire.endTransmission ();
// მოითხოვეთ მონაცემების 1 ბაიტი
მავთული. მოთხოვნა (Addr, 1);
// მონაცემების 1 ბაიტის წაკითხვა
თუ (Wire.available () == 1)
{
მონაცემები = Wire.read ();
}
}
// მონაცემების კონვერტაცია
T2 = (მონაცემები [1] * 256.0) + მონაცემები [0];
for (int i = 0; i <2; i ++)
{
// დაიწყეთ I2C გადაცემა
Wire.beginTransmission (Addr);
// მონაცემთა რეესტრის გაგზავნა
Wire.write ((62 + i));
// შეაჩერე I2C გადაცემა
Wire.endTransmission ();
// მოითხოვეთ მონაცემების 1 ბაიტი
მავთული. მოთხოვნა (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 ბაიტი მონაცემები
მავთული. მოთხოვნა (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);
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 ("ტემპერატურა ფარენჰეიტში:", სიმებიანი (fTemp));
დაგვიანება (1000);
}
Particle.variable () ფუნქცია ქმნის ცვლადებს სენსორის გამომუშავების შესანახად და Particle.publish () ფუნქცია აჩვენებს გამომავალს საიტის დაფაზე.
სენსორის გამომავალი ნაჩვენებია ზემოთ მოცემულ სურათზე თქვენი მითითებისთვის.
ნაბიჯი 4: პროგრამები:
HTS221 შეიძლება გამოყენებულ იქნას სხვადასხვა სამომხმარებლო პროდუქტში, როგორიცაა ჰაერის დამატენიანებლები და მაცივრები და ა.შ.
გირჩევთ:
ტენიანობის გაზომვა HYT939 და ნაწილაკების ფოტონის გამოყენებით: 4 ნაბიჯი
ტენიანობის გაზომვა HYT939 და ნაწილაკების ფოტონის გამოყენებით: HYT939 არის ციფრული ტენიანობის სენსორი, რომელიც მუშაობს I2C საკომუნიკაციო პროტოკოლზე. ტენიანობა არის გადამწყვეტი პარამეტრი, როდესაც საქმე ეხება სამედიცინო სისტემებსა და ლაბორატორიებს, ამიტომ ამ მიზნების მისაღწევად ჩვენ შევეცადეთ HYT939 დავამყაროთ ჟოლოს პითან. ᲛᲔ
ტემპერატურის გაზომვა MCP9803 და ნაწილაკების ფოტონის გამოყენებით: 4 ნაბიჯი
ტემპერატურის გაზომვა MCP9803 და ნაწილაკების ფოტონის გამოყენებით: MCP9803 არის 2 მავთულის მაღალი სიზუსტის ტემპერატურის სენსორი. ისინი განასახიერებენ მომხმარებლის მიერ პროგრამირებადი რეგისტრებით, რომლებიც ხელს უწყობენ ტემპერატურის მგრძნობიარე პროგრამებს. ეს სენსორი შეეფერება უაღრესად დახვეწილ მრავალზონიანი ტემპერატურის მონიტორინგის სისტემას. ამ
ტემპერატურის გაზომვა STS21 და ნაწილაკების ფოტონის გამოყენებით: 4 ნაბიჯი
ტემპერატურის გაზომვა STS21 და ნაწილაკების ფოტონის გამოყენებით: STS21 ციფრული ტემპერატურის სენსორი გთავაზობთ საუკეთესო შესრულებას და სივრცის დაზოგვის ნაკვალევს. ის უზრუნველყოფს დაკალიბრებულ, ხაზოვანი სიგნალებს ციფრულ, I2C ფორმატში. ამ სენსორის დამზადება ემყარება CMOSens ტექნოლოგიას, რომელიც მიაკუთვნებს უპირატესობას
ტენიანობის და ტემპერატურის გაზომვა HIH6130 და ნაწილაკების ფოტონის გამოყენებით: 4 ნაბიჯი
ტენიანობის და ტემპერატურის გაზომვა HIH6130 და ნაწილაკების ფოტონის გამოყენებით: HIH6130 არის ტენიანობის და ტემპერატურის სენსორი ციფრული გამომუშავებით. ეს სენსორები უზრუნველყოფენ სიზუსტეს of 4% RH. ინდუსტრიის წამყვანი გრძელვადიანი სტაბილურობით, ჭეშმარიტი ტემპერატურის კომპენსირებული ციფრული I2C, ინდუსტრიის წამყვანი საიმედოობით, ენერგოეფექტურობით
ტემპერატურისა და ტენიანობის გაზომვა HDC1000 და ნაწილაკების ფოტონის გამოყენებით: 4 ნაბიჯი
ტემპერატურისა და ტენიანობის გაზომვა HDC1000 და ნაწილაკების ფოტონის გამოყენებით: HDC1000 არის ციფრული ტენიანობის სენსორი ინტეგრირებული ტემპერატურის სენსორით, რომელიც უზრუნველყოფს გაზომვის სიზუსტეს ძალიან დაბალ ენერგიაზე. მოწყობილობა ზომავს ტენიანობას ახალი capacitive სენსორის საფუძველზე. ტენიანობისა და ტემპერატურის სენსორები არის