Πίνακας περιεχομένων:
- Βήμα 1: Απαιτείται υλικό:
- Βήμα 2: Σύνδεση υλικού:
- Βήμα 3: Κωδικός για μέτρηση υγρασίας και θερμοκρασίας:
- Βήμα 4: Εφαρμογές:
Βίντεο: Μέτρηση υγρασίας και θερμοκρασίας με χρήση HTS221 και Arduino Nano: 4 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:34
Το HTS221 είναι ένας εξαιρετικά συμπαγής χωρητικός ψηφιακός αισθητήρας για σχετική υγρασία και θερμοκρασία. Περιλαμβάνει ένα στοιχείο ανίχνευσης και ένα ολοκληρωμένο κύκλωμα ειδικής εφαρμογής μικτού σήματος (ASIC) για την παροχή των πληροφοριών μέτρησης μέσω ψηφιακών σειριακών διεπαφών. Ενσωματωμένο με τόσα πολλά χαρακτηριστικά, αυτός είναι ένας από τους πιο κατάλληλους αισθητήρες για κρίσιμες μετρήσεις υγρασίας και θερμοκρασίας.
Σε αυτό το σεμινάριο απεικονίζεται η διασύνδεση της μονάδας αισθητήρα HTS221 με το arduino nano. Για να διαβάσετε τις τιμές υγρασίας και θερμοκρασίας, χρησιμοποιήσαμε arduino με προσαρμογέα I2c. Αυτός ο προσαρμογέας I2C καθιστά τη σύνδεση με τη μονάδα αισθητήρα εύκολη και πιο αξιόπιστη.
Βήμα 1: Απαιτείται υλικό:
Τα υλικά που χρειαζόμαστε για την επίτευξη του στόχου μας περιλαμβάνουν τα ακόλουθα στοιχεία υλικού:
1. HTS221
2. Arduino Nano
3. Καλώδιο I2C
4. I2C Shield για Arduino Nano
Βήμα 2: Σύνδεση υλικού:
Η ενότητα σύνδεσης υλικού εξηγεί βασικά τις συνδέσεις καλωδίωσης που απαιτούνται μεταξύ του αισθητήρα και του arduino nano. Η διασφάλιση των σωστών συνδέσεων είναι η βασική ανάγκη ενώ εργάζεστε σε οποιοδήποτε σύστημα για την επιθυμητή έξοδο. Έτσι, οι απαιτούμενες συνδέσεις είναι οι εξής:
Το HTS221 θα λειτουργήσει μέσω I2C. Ακολουθεί το παράδειγμα διαγράμματος καλωδίωσης, που δείχνει πώς συνδέεται κάθε διασύνδεση του αισθητήρα.
Εκτός συσκευασίας, ο πίνακας έχει διαμορφωθεί για διεπαφή I2C, ως εκ τούτου συνιστούμε τη χρήση αυτής της σύνδεσης εάν είστε αλλιώς αγνωστικιστής.
Το μόνο που χρειάζεστε είναι τέσσερα καλώδια! Απαιτούνται μόνο τέσσερις συνδέσεις ακροδέκτες Vcc, Gnd, SCL και SDA και αυτές συνδέονται με τη βοήθεια καλωδίου I2C.
Αυτές οι συνδέσεις φαίνονται στις παραπάνω εικόνες.
Βήμα 3: Κωδικός για μέτρηση υγρασίας και θερμοκρασίας:
Ας ξεκινήσουμε με τον κώδικα Arduino τώρα.
Κατά τη χρήση της μονάδας αισθητήρα με το Arduino, συμπεριλαμβάνουμε τη βιβλιοθήκη Wire.h. Η βιβλιοθήκη "Wire" περιέχει τις λειτουργίες που διευκολύνουν την επικοινωνία i2c μεταξύ του αισθητήρα και της πλακέτας Arduino.
Ολόκληρος ο κωδικός Arduino δίνεται παρακάτω για τη διευκόλυνση του χρήστη:
#περιλαμβάνω
// Η διεύθυνση HTS221 I2C είναι 0x5F
#define Addr 0x5F
void setup ()
{
// Αρχικοποίηση επικοινωνίας 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) ·
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.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 με αντιστάθμιση θερμοκρασίας, κορυφαία αξιοπιστία στη βιομηχανία, ενεργειακή απόδοση
Μέτρηση θερμοκρασίας και υγρασίας χρησιμοποιώντας HDC1000 και Arduino Nano: 4 βήματα
Μέτρηση θερμοκρασίας και υγρασίας με χρήση HDC1000 και Arduino Nano: Ο HDC1000 είναι ένας ψηφιακός αισθητήρας υγρασίας με ενσωματωμένο αισθητήρα θερμοκρασίας που παρέχει εξαιρετική ακρίβεια μέτρησης σε πολύ χαμηλή ισχύ. Η συσκευή μετρά την υγρασία με βάση έναν νέο χωρητικό αισθητήρα. Οι αισθητήρες υγρασίας και θερμοκρασίας είναι
Μέτρηση υγρασίας και θερμοκρασίας με χρήση HTS221 και Raspberry Pi: 4 βήματα
Μέτρηση υγρασίας και θερμοκρασίας με χρήση HTS221 και Raspberry Pi: Το HTS221 είναι ένας εξαιρετικά συμπαγής χωρητικός ψηφιακός αισθητήρας για σχετική υγρασία και θερμοκρασία. Περιλαμβάνει ένα στοιχείο ανίχνευσης και ένα ολοκληρωμένο κύκλωμα ειδικής εφαρμογής μικτού σήματος (ASIC) για την παροχή των πληροφοριών μέτρησης μέσω ψηφιακού σειριακού
Μέτρηση υγρασίας και θερμοκρασίας με χρήση HIH6130 και Raspberry Pi: 4 βήματα
Μέτρηση υγρασίας και θερμοκρασίας με χρήση HIH6130 και Raspberry Pi: Το HIH6130 είναι αισθητήρας υγρασίας και θερμοκρασίας με ψηφιακή έξοδο. Αυτοί οι αισθητήρες παρέχουν επίπεδο ακρίβειας ± 4% RH. Με κορυφαία μακροπρόθεσμη σταθερότητα στη βιομηχανία, πραγματικό ψηφιακό I2C με αντιστάθμιση θερμοκρασίας, κορυφαία αξιοπιστία στη βιομηχανία, ενεργειακή απόδοση
Μέτρηση υγρασίας και θερμοκρασίας χρησιμοποιώντας το HTS221 και το φωτόνιο σωματιδίων: 4 βήματα
Μέτρηση υγρασίας και θερμοκρασίας χρησιμοποιώντας το HTS221 και το σωματίδιο φωτονίου: Το HTS221 είναι ένας εξαιρετικά συμπαγής χωρητικός ψηφιακός αισθητήρας για σχετική υγρασία και θερμοκρασία. Περιλαμβάνει ένα στοιχείο ανίχνευσης και ένα ολοκληρωμένο κύκλωμα ειδικής εφαρμογής μικτού σήματος (ASIC) για την παροχή των πληροφοριών μέτρησης μέσω ψηφιακού σειριακού