Θερμόμετρο και Υγρόμετρο

Θερμόμετρο και Υγρόμετρο
Θερμόμετρο και ΥγρόμετροΘερμόμετρο - Υγρόμετρο με το SHT21
5 5 2 Product


Εδώ παρουσιάζουμε ένα ηλεκτρονικό θερμόμετρο και υγρόμετρο που βασίζεται στον αισθητήρα θερμοκρασίας και υγρασίας SHT21 της Sensirion. Η κατασκευή αυτή φτιάχτηκε αρχικά με σκοπό να χρησιμοποιηθεί για τον έλεγχο της θερμοκρασίας και της υγρασίας σε μία εκκολαπτική μηχανή. Η πλακέτα διαθέτει μία οθόνη LCD, 2 γραμμών x 16 χαρακτήρες/γραμμή, στην οποία γίνεται η απεικόνιση της θερμοκρασίας του περιβάλλοντος σε βαθμούς Κελσίου και η απεικόνιση της σχετικής υγρασίας της ατμόσφαιρας (%), με ακρίβεια 2 δεκαδικών ψηφίων ! 

Η πλακέτα μπορεί να χρησιμοποιηθεί και ως γενική πλακέτα εφαρμογών (αναπτυξιακό σύστημα) για ανάπτυξη εφαρμογών με το SHT21. Περιλαμβάνει έναν 8-bit μικροελεγκτή PIC, θύρα εισόδου-εξόδου (Ι/Ο) 6 bit, 4 πλήκτρα ελέγχου, μία σειριακή θύρα RS-232 για διασύνδεση με υπολογιστή.      

Ο ηλεκτρονικός αισθητήρας SHT21 από τη Sensirion είναι ένας κορυφαίος αισθητήρας θερμοκρασίας και σχετικής ατμοσφαιρικής υγρασίας και διαθέτει δίαυλο ψηφιακής διασύνδεσης (digital interface) τύπου I2C. Η εταιρία Sensirion παρέχει κάποιο πηγιαίο κώδικα στη ιστοσελίδα της, που αφορά ένα παράδειγμα διασύνδεσης του SHT21 με έναν μικροελεγκτή NEC V850/SG3 (uPD70F3740). Στην κατασκευή που σας παρουσιάζουμε εδώ, χρησιμοποιούμε έναν μικροελεγκτή PIC18F2620 της Microchip που είναι εντελώς διαφορετικός από αυτόν που χρησιμοποιεί η Sensirion στην πιλοτική της εφαρμογή. Γι' αυτό, έχουμε τροποποιήσει και μεταγλωττίσει κατάλληλα τον κώδικα της Sensirion, για να μπορεί να "τρέχει" σε PIC. 

Κατασκευαστής: Γ. Αδαμίδης

Creative Commons License
Humidity and temperature sensor demo board by George Adamidis is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.

Το υλικό μέρος του ηλεκτρονικού θερμομέτρου και υγρομέτρου

Η πλακέτα μπορεί να χρησιμοποιηθεί ως γενική πλακέτα εφαρμογών (αναπτυξιακό σύστημα) για ανάπτυξη εφαρμογών με το SHT21. Έχουμε συμπεριλάβει μία σειριακή θύρα RS-232, για την περίπτωση που επιθυμείτε να στείλετε τα δεδομένα των μετρήσεων σε κάποιον υπολογιστή. Στη διαθέσιμη θύρα I/O, μπορείτε να συνδέσετε ηλεκτρονόμους (ρελέ), βομβητές ή οτιδήποτε άλλο δύναται να ενεργοποιηθεί από 5V και με ρεύμα έως 100mA.  Μπορείτε επίσης να προγραμματίσετε τις λειτουργίες των 4ων πλήκτρων όπως εσείς επιθυμείτε.

Πάνω στην πλακέτα έχουμε συμπεριλάβει έναν σταθεροποιητή τάσης 7805 που παρέχει 5V στο κύκλωμα ανεξάρτητα από την τάση τροφοδοσίας (η οποία μπορεί να βρίσκεται στην περιοχή από 9 έως 15V). O μικροελεγκτής και η οθόνη τροφοδοτούνται απευθείας από τα 5V του σταθεροποιητή. Ο αισθητήρας  SHT21  τροφοδοτείται με χαμηλότερη τάση (στην περιοχή 2.1 με 3.6V). Η τάση τροφοδοσίας του αισθητήρα προκύπτει από τα 5V, κατόπιν μίας πτώσης τάσης που προκαλείται μέσω μερικών διόδων πυριτίου.

Επειδή ο αισθητήρας και ο μικροελεγκτής τροφοδοτούνται από διαφορετικές τάσεις, προκύπτει κάποιο πρόβλημα όσον αφορά τη συμβατότητα των ορίων των τάσεων, στα σήματα που ανταλλάσσει ο μικροελεγκτής με τον αισθητήρα. Το πρόβλημα επιλύεται με τη χρήση κάποιων αντιστάσεων πρόσδεσης (pull-up) σε όλες τις γραμμές ελέγχου και με μία ειδική τεχνική ανταλλαγής σημάτων. Σύμφωνα με τη τεχνική αυτή, ο μικροελεγκτής γειώνει τις γραμμές ελέγχου στις οποίες επιθυμεί να αποστείλει λογικό 0, ενώ μετάγει σε κατάσταση υψηλής αντίστασης τις γραμμές στις οποίες επιθυμεί να στείλει λογικό 1.Έτσι, η στάθμη τάσης του λογικού 1 καθορίζεται μόνο από τις αντιστάσεις πρόσδεσης σε μία τιμή που είναι ίση με την τάση τροφοδοσίας του αισθητήρα και η στάθμη του λογικού μηδέν αντιστοιχεί σε τάση 0V (pull-down for zeros and floating for 1s).

Ο σταθεροποιητής τάσης, η οθόνη, καθώς και άλλα εξαρτήματα πάνω στην πλακέτα είναι δυνατό να παράγουν θερμότητα που μπορεί να επηρεάσει την ένδειξη του θερμομέτρου. Για να αποφύγουμε να συμβεί κάτι τέτοιο, έχουμε σχεδιάσει το τυπωμένο κύκλωμα έτσι ώστε να ελαχιστοποιούμε την απαγωγή θερμότητας προς τον αισθητήρα. Αυτό το πετυχαίνουμε με το να τοποθετούμε τον αισθητήρα SHT21 μακρυά από τα υπόλοιπα εξαρτήματα, χρησιμοποιώντας όσο το δυνατό λεπτότερες γραμμές χαλκού για τη διασύνδεση του αισθητήρα και "σκάβοντας" μερικές οπές-σχισμές στο τυπωμένο, γύρω από τον αισθητήρα.

Αν ο φωτισμός, στην οθόνη που θα χρησιμοποιήσετε, παράγει σχετικά υψηλή θερμότητα, τότε ίσως είναι καλύτερα να λάβετε πρόσθετα μέτρα, όπως να απομακρύνεται εντελώς τον αισθητήρα από την κύρια πλακέτα και να τον τοποθετήσετε σε ξεχωριστή πλακέτα. Μην ξεχνάτε ότι η ευαισθησία του αισθητήρα είναι εξαιρετικά υψηλή, τόσο που δύναται να επηρεαστεί ακόμη και από ένα κερί που βρίσκεται μερικά εκατοστά μακρύτερα ή από τη θερμοκρασία του σώματος σας, αν τύχει και βρεθείτε πλησίον. Η ακρίβεια του αισθητήρα SHT21 είναι 14bit όσον αφορά τη θερμοκρασία και 12bit όσον αφορά τη σχετική υγρασία.

 

Το λογισμικό

Το λογισμικό που σας παρέχουμε (πρόγραμμα του μικροελεγκτή) μπορεί να θεωρηθεί ως "πιλοτικό" (demo) υπό την έννοια ότι υλοποιεί ένα θερμόμετρο και υγρόμετρο αλλά όσον αφορά τον έλεγχο των πλήκτρων, υλοποιεί  μόνο κάποιες λειτουργίες επίδειξης (demo) ενώ δεν έχουμε συμπεριλάβει καθόλου κώδικα για τον έλεγχο της σειριακής θύρας.  Ο κώδικας που σας παρέχουμε, όταν πατηθεί οποιοδήποτε πλήκτρο, απλώς εμφανίζει κάποια μηνύματα στην οθόνη. Επομένως, θα πρέπει να γράψετε (ή να τροποποιήσετε τις υπάρχουσες) ρουτίνες για τα πλήκτρα, αναλόγως με τις λειτουργίες που θέλετε αυτά να εξυπηρετούν στη δική σας εφαρμογή. Επιπλέον, για τη σειριακή θύρα, καθώς και για τη θύρα εισόδου - εξόδου δεν έχουμε συμπεριλάβει καμία ρουτίνα στον κώδικα που σας παρέχουμε. Αν θέλετε να χρησιμοποιήσετε τη σειριακή θύρα ή τη θύρα εισόδου - εξόδου θα πρέπει να γράψετε τις δικές σας ρουτίνες, αναλόγως της εφαρμογής που επιθυμείτε να υλοποιήσετε. 

Ο κώδικας που σας παρέχουμε δεν είναι βελτιστοποιημένος διότι έχει γραφεί με απώτερο σκοπό να είναι ευκόλως κατανοητός. Οι ρουτίνες τις επικοινωνίας του μικροελεγκτή με τον αισθητήρα έχουν γραφεί με τέτοιο τρόπο ώστε να υποστηρίζουν την ειδική τεχνική επικοινωνίας "pull-down for zeros and floating for 1s" που περιγράψαμε παραπάνω. Για λόγους συμβατότητας, δεν χρησιμοποιούμε κάποιο εσωτερικό module του μικροελεγκτή για να υλοποιήσουμε το πρωτόκολλο επικοινωνίας I2C. Έχουμε απλώς γράψει κάποιες ρουτίνες που υλοποιούν το πρωτόκολλο I2C με έλεγχο γραμμών I/O. 

Τέλος, αξίζει να αναφέρουμε ότι ο μικροελεγκτής επικοινωνεί με τον αισθητήρα κάθε ένα δευτερόλεπτο περίπου. Ο χρόνος αυτός είναι σχετικά μεγάλος αλλά αυτό έχει γίνει σκόπιμα προκειμένου να ελαχιστοποιήσουμε οποιεσδήποτε απώλειες ισχύος πάνω στον αισθητήρα που θα μπορούσαν να επηρεάσουν την ένδειξη του θερμομέτρου.    


Προτάσεις για βελτίωση

Επιφυλασσόμαστε στο μέλλον να σας παρουσιάσουμε και επιπρόσθετες ειδικές εφαρμογές με το Θερμόμετρο και Υγρόμετρο. Προς το παρόν, ελπίζουμε ότι να σας είναι αρκετά χρήσιμη η τρέχουσα κατασκευή διότι με το hardwrare και το πιλοτικό λογισμικό που σας παρέχουμε, μπορείτε να φτιάξετε ένα ηλεκτρονικό θερμόμετρο και υγρόμετρο ακριβείας. Επιπλέον, κάνοντας κάποιες αλλαγές στον κώδικα, μπορείτε να φτιάξετε τις δικές σας εφαρμογές. Αν έχετε κάποιες προτάσεις ή ιδέες για βελτίωση, μη διστάσετε να επικοινωνήσετε μαζί μας. Επίσης, θα θέλαμε να δημοσιεύσουμε τις δικές σας ιδέες και κατασκευές που πρόκειται να υλοποιήσετε, ή υλοποιήσατε ήδη, χρησιμοποιώντας το αναπτυξιακό μας σύστημα.    


Ηλεκτρονικό σχηματικό, τυπωμένο κύκλωμα, πηγαίος κώδικας και κώδικας μηχανής

Εδώ παρέχουμε το πλήρες ηλεκτρονικό σχηματικό του Θερμομέτρου-Υγρομέτρου, πληροφορίες για το τυπωμένο κύκλωμα, το πρόγραμμα του μικροελεγκτή σε μορφή κώδικα μηχανής ή πηγαίου κώδικα.

Το ηλεκτρονικό σχηματικό - Φύλλο 1 από 2 - Το κυρίως κύκλωμα
Το ηλεκτρονικό σχηματικό - Φύλλο 2 από 2 - Η σειριακή θύρα επικοινωνίας

Στην κατασκευή μας χρησιμοποιούμε κλασσικά εξαρτήματα (through hole) εκτός από το ολοκληρωμένο SHT21 που είναι τύπου SMD. Όλα τα εξαρτήματα τοποθετούνται στην πάνω όψη της πλακέτας εκτός από το SHT21 που πρέπει να κολληθεί στην κάτω όψη. Οι αντιστάσεις είναι τύπου 1
/4W, ανοχής 5%. Το τυπωμένο κύκλωμα του πρωτοτύπου είναι διπλής όψης και έχει επιμεταλλωμένες οπές. Ωστόσο, το τυπωμένο κύκλωμα έχει σχεδιαστεί με τέτοιο τρόπο, έτσι ώστε να μπορεί να κατασκευαστεί και δίχως επιμεταλλωμένες οπές. Σε αυτή την περίπτωση, τα "περάσματα¨από τη μία όψη στην άλλη θα πρέπει να γίνουν με κόλληση των ακροδεκτών κάποιων εξαρτημάτων και από τις δύο όψεις (κολλήσεις και στις δύο όψεις) και ίσως χρειαστούν και κάποια "συρματάκια" για ορισμένα vias.   

Πληροφορίες τυπωμένου κυκλώματος (πρόσβαση κατόπιν πληρωμής / εξαιρούνται χρήστες ειδικών κατηγοριών).
Πληροφορίες συναρμολόγησης

Για να προγραμματίσετε το μικροελεγκτή PIC18F2620 θα χρειαστείτε έναν κατάλληλο προγραμματιστή. Εμείς χρησιμοποιήσαμε τον προγραμματιστή - αποσφαλματωτή MPLAB ICD 3 της Microchip.

Πηγαίος κώδικας σε C και αρχείο .hex