1
Θερμόμετρο με pic και οθόνη από κινητό nokia
Αν και είχα ανεβάσει τα σχετικά αρχεία σε ένα αντίστοιχο θέμα πριν από ένα χρόνο περίπου, είπα να τα γράψω και εδώ να υπάρχουν συγκεντρωμένα.
Το κύκλωμα μετράει τη θερμοκρασία και την εμφανίζει σε μια οθόνη από κινητό nokia 3310. Για τη μέτρηση της θερμοκρασίας χρησιμοποιείται ο αισθητήρας DS18B20 ο οποίος μας δίνει τη δυνατότητα να μετράμε θερμοκρασίες από -55ο C έως 125ο C. Ο αισθητήρας αυτός εκτός του ότι μετράει τη θερμοκρασία, τη μετατρέπει και σε ψηφιακή μορφή. Για την επικοινωνία με τον μικροελεκτή pic 16LF88 χρησιμοποιεί (1-Wire) πρωτόκολλο επικοινωνίας. Περισσότερες λεπτομέρειες για το πρωτόκολλο αυτό μπορείτε να βρείτε στο datasheet του DS18B20.
Χρησιμοποιήθηκε ο pic 16LF88 προκειμένου να λειτουργεί σε χαμηλές τάσεις μιας και το κύκλωμα θα τροφοδοτείται από δύο αλκαλικές μπαταρίες 1,5V, καθώς επίσης αυτόν είχα στη διάθεση μου τότε. Για την επικοινωνία του pic με τον αισθητήρα θερμοκρασίας χρησιμοποιείται το RA3 ως είσοδος από το DS18B20, ενώ το RA4 ως έξοδος προς το DS18B20. Επειδή όμως στο pic 16LF88 το RA4 δεν είναι έξοδος ανοιχτού συλλέκτη όπως σε άλλους pic χρησιμοποιείται το τρανζίστορ Τ1.
Τώρα για την επικοινωνία με τη οθόνη χρησιμοποιείται το SSP Module του pic σε SPI MODE.
RB2: Serial data out προς SDIN LCD
RB3: Έξοδος προς VDD LCD
RB4: Serial clock out προς SCLK LCD
RB5: Έξοδος προς SE LCD
RB6: Έξοδος προς D/C LCD
RB7: Έξοδος προς RESET LCD
Το RB0 είναι είσοδος και προκαλεί διακοπή με σκοπό να μπορούμε να αλλάζουμε το mode της LCD και ταυτόχρονα να επιλέγουμε αν θα μετράει τη θερμοκρασία συνέχεια ή ανά διαστήματα για εξοικονόμηση ενέργειας.
Όπως φαίνεται και από το σχήμα, το κύκλωμα είναι πολύ απλό, αφού όλα τα κάνει ο μικροελεκτής. Για το χρονισμό του pic χρησιμοποιήθηκε ο εσωτερικός ταλαντωτής σε συχνότητα 4MHz. Επίσης μια δυνατότητα αυτού του pic είναι ότι μπορείς να ενεργοποιείς και να απενεργοποιείς το WDT όχι μόνο κατά τη φάση του προγραμματισμού αλλά και κατά την κανονική λειτουργιά του pic. Τέλος ο χρόνος που μπορεί να κάνει reset στον pic ο wdt μπορεί να φτάσει μέχρι και τα τεσσεράμισι λεπτά. Αυτή ακριβώς τη δυνατότητα εκμεταλλευόμαστε με το μπουτόν, πατώντας το κάνουμε εναλλαγή μεταξύ normal και inverse mode της οθόνης και ταυτόχρονα ενεργοποιούμε/απενεργοποιούμε τον wdt.
Normal mode: Μαύρα γράμματα σε λευκό φόντο, η μέτρηση της θερμοκρασίας γίνεται ανά 70 sec αν θυμάμαι καλά και στο υπόλοιπό διάστημα ο pic βρίσκεται σε sleep mode.
Inverse mode: Λευκά γράμματα σε μαύρο φόντο, η μέτρηση της θερμοκρασίας γίνεται συνεχώς.
Στο κάτω μέρος της οθόνης εμφανίζεται και μια μπάρα η οποία μεταβάλλεται ανάλογα με τη θερμοκρασία σε ένα εύρος από -20ο C έως 60ο C. Ενώ η ψηφιακή ένδειξη της θερμοκρασίας έχει ένα εύρος όσο ο αισθητήρας δηλαδή από -55ο C έως 125ο C.
Στο συμπιεσμένο αρχείο βρίσκεται το .asm αρχείο στο οποίο είναι γραμμένο το πρόγραμμα σε assembly. Αν το ανοίξει κανείς, θα δει ότι αποτελείται από πολλούς πίνακες και αυτό γιατί έπρεπε να δημιουργηθούν όλοι οι αριθμοί μιας και η οθόνη αυτή δεν είναι όπως οι γνωστές οθόνες lcd 2X16, καθώς επίσης έπρεπε να δημιουργηθούν και τα σταθερά τμήματα της οθόνης.
Οι μπαταρίες κρατούν περίπου ενάμισι μήνα όταν το θερμόμετρο μετράει συνεχώς τη θερμοκρασία, ενώ όταν την μετράει ανά διαστήματα κρατάνε περίπου 10 μήνες.
Υλικά
R1=100K
R2, R3, =4,7K
C1, C2=100nF
T1 =BC547
IC1= PIC16LF88
IC2= DS18B20
Οθόνη από κινητό nokia 3310
μπουτόν n.o.
διακόπτης on/off
αλκαλικές μπαταρίες 1,5V (ΑΑ) Χ2