Πίνακας περιεχομένων:

Μέτρηση υγρασίας και θερμοκρασίας χρησιμοποιώντας το HTS221 και το φωτόνιο σωματιδίων: 4 βήματα
Μέτρηση υγρασίας και θερμοκρασίας χρησιμοποιώντας το HTS221 και το φωτόνιο σωματιδίων: 4 βήματα

Βίντεο: Μέτρηση υγρασίας και θερμοκρασίας χρησιμοποιώντας το HTS221 και το φωτόνιο σωματιδίων: 4 βήματα

Βίντεο: Μέτρηση υγρασίας και θερμοκρασίας χρησιμοποιώντας το HTS221 και το φωτόνιο σωματιδίων: 4 βήματα
Βίντεο: Χρησιμοποιώντας το υπέρυθρο όργανο μέτρησης testo 835-H1 σε θερμική αποκατάσταση 2024, Ιούνιος
Anonim
Image
Image

Το 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 μεταξύ του αισθητήρα και του σωματιδίου.

Ολόκληρος ο κωδικός σωματιδίων δίνεται παρακάτω για τη διευκόλυνση του χρήστη:

#περιλαμβάνω

#περιλαμβάνω

// Η διεύθυνση 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 ();

// Αρχικοποίηση σειριακής επικοινωνίας, ρυθμισμένος ρυθμός baud = 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)?

}

κενός βρόχος ()

{

ανυπόγραφα δεδομένα 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 ();

// Αίτημα 1 byte δεδομένων

Wire.requestFrom (Addr, 1)?

// Διαβάστε 1 byte δεδομένων

εάν (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 byte δεδομένων

Wire.requestFrom (Addr, 1)?

// Διαβάστε 1 byte δεδομένων

εάν (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 byte δεδομένων

Wire.requestFrom (Addr, 1)?

// Διαβάστε 1 byte δεδομένων

εάν (Wire.available () == 1)

{

δεδομένα = Wire.read ();

}

}

// Μετατροπή δεδομένων υγρασίας

H3 = (δεδομένα [1] * 256.0) + δεδομένα [0];

// Θερμοκρασία τιμές έκλυσης

// Έναρξη μετάδοσης I2C

Wire.beginTransmission (Addr);

// Αποστολή μητρώου δεδομένων

Wire.write (0x32);

// Διακοπή μετάδοσης I2C

Wire.endTransmission ();

// Αίτημα 1 byte δεδομένων

Wire.requestFrom (Addr, 1)?

// Διαβάστε 1 byte δεδομένων

εάν (Wire.available () == 1)

{

T0 = Wire.read ();

}

// Έναρξη μετάδοσης I2C

Wire.beginTransmission (Addr);

// Αποστολή μητρώου δεδομένων

Wire.write (0x33);

// Διακοπή μετάδοσης I2C

Wire.endTransmission ();

// Αίτημα 1 byte δεδομένων

Wire.requestFrom (Addr, 1)?

// Διαβάστε 1 byte δεδομένων

εάν (Wire.available () == 1)

{

T1 = Wire.read ();

}

// Έναρξη μετάδοσης I2C

Wire.beginTransmission (Addr);

// Αποστολή μητρώου δεδομένων

Wire.write (0x35);

// Διακοπή μετάδοσης I2C

Wire.endTransmission ();

// Αίτημα 1 byte δεδομένων

Wire.requestFrom (Addr, 1)?

// Διαβάστε 1 byte δεδομένων

εάν (Wire.available () == 1)

{

raw = Wire.read ();

}

ακατέργαστο = ακατέργαστο & 0x0F;

// Μετατρέψτε τις τιμές εκπομπής θερμοκρασίας σε 10-bit

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 byte δεδομένων

Wire.requestFrom (Addr, 1)?

// Διαβάστε 1 byte δεδομένων

εάν (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 byte δεδομένων

Wire.requestFrom (Addr, 1)?

// Διαβάστε 1 byte δεδομένων

εάν (Wire.available () == 1)

{

δεδομένα = Wire.read ();

}

}

// Μετατρέψτε τα δεδομένα

T3 = (δεδομένα [1] * 256.0) + δεδομένα [0];

// Έναρξη μετάδοσης I2C

Wire.beginTransmission (Addr);

// Αποστολή μητρώου δεδομένων

Wire.write (0x28 | 0x80);

// Διακοπή μετάδοσης I2C

Wire.endTransmission ();

// Ζητήστε 4 byte δεδομένων

Wire.requestFrom (Addr, 4)?

// Διαβάστε 4 byte δεδομένων

// υγρασία 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 * Η1) - (1,0 * Η0)) * (1,0 * υγρασία - 1,0 * Η2) / (1,0 * Η3 - 1,0 * Η2) + (1,0 * Η0) ·

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 ("Σχετική υγρασία:", String (υγρασία));

καθυστέρηση (1000)?

Particle.publish ("Temperature in Celsius:", String (cTemp));

καθυστέρηση (1000)?

Particle.publish ("Temperature in Fahrenheit:", String (fTemp));

καθυστέρηση (1000)?

}

Η συνάρτηση Particle.variable () δημιουργεί τις μεταβλητές για αποθήκευση της εξόδου του αισθητήρα και η λειτουργία Particle.publish () εμφανίζει την έξοδο στον πίνακα ελέγχου της τοποθεσίας.

Η έξοδος του αισθητήρα εμφανίζεται στην παραπάνω εικόνα για αναφορά.

Βήμα 4: Εφαρμογές:

Εφαρμογές
Εφαρμογές

Το HTS221 μπορεί να χρησιμοποιηθεί σε διάφορα καταναλωτικά προϊόντα, όπως υγραντήρες αέρα και ψυγεία κ.λπ.

Συνιστάται: