Οι TMP36 και LM35 είναι αναλογικοί αισθητήρες θερμοκρασίας υπό μορφή ολοκληρωμένου κυκλώματος συσκευασίας ΤΟ-92. . Μεταφράζουν τη θερμοκρασία του περιβάλλοντος σε ηλεκτρική τάση, με γραμμικό τρόπο, η οποία μπορεί να διαβαστεί εύκολα από έναν μικροελεγκτή, όπως το Arduino. Και οι δύο αισθητήρες δίνουν κλίμακα 10 mV ανά °C, όμως διαφέρουν κυρίως στην τάση τροφοδοσίας, στο σημείο αναφοράς της εξόδου και στη δυνατότητα μέτρησης αρνητικών θερμοκρασιών.
Τι είναι οι αισθητήρες TMP36 και LM35
Οι δύο αισθητήρες TMP36 και LM35 ανήκουν στην κατηγορία των αναλογικών αισθητήρων θερμοκρασίας. Δεν επιστρέφουν απευθείας έναν ψηφιακό αριθμό, όπως ένας αισθητήρας DHT22 ή DS18B20, αλλά παράγουν μια αναλογική τάση στην έξοδό τους.
Για παράδειγμα:
- Ο LM35 παράγει 250 mV στους 25 °C.
- Ο TMP36 παράγει 750 mV στους 25 °C.
- Η μεταβολή της τάσης και στους δύο είναι 10 mV για κάθε αύξηση της θερμοκρασίας κατά 1 °C.
Η αναλογική τάση οδηγείται σε μία αναλογική είσοδο του Arduino, όπως η A0. Ο μετατροπέας ADC του Arduino μετατρέπει την τάση σε αριθμητική τιμή, την οποία στη συνέχεια ο κώδικας μετατρέπει σε θερμοκρασία.
Κύρια χαρακτηριστικά του LM35
Ο LM35 είναι ένας αισθητήρας σχεδιασμένος ώστε η έξοδός του να είναι άμεσα ανάλογη με τη θερμοκρασία σε βαθμούς Κελσίου. Η βασική σχέση λειτουργίας του είναι:
VOUT = (10 mV/∘C) × T
Παραδείγματα:
- στους 0 °C η έξοδος είναι 0 V,
- στους 25 °C η έξοδος είναι 0,25 V,
- στους 100 °C η έξοδος είναι 1 V.
Η Texas Instruments αναφέρει για τον LM35 εύρος τροφοδοσίας περίπου 4 έως 30 V, περιοχή λειτουργίας έως 150 °C, καθώς και τυπική ακρίβεια ±0,25 °C σε θερμοκρασία δωματίου και ±0,75 °C σε ολόκληρο το εύρος −55 έως 150 °C. Οι ακριβείς προδιαγραφές εξαρτώνται από την έκδοση του εξαρτήματος.
Κύρια χαρακτηριστικά του TMP36
Ο TMP36 είναι αισθητήρας χαμηλής τάσης και έχει σχεδιαστεί για εύκολη χρήση σε κυκλώματα με τροφοδοσία 3,3 V ή 5 V. Λειτουργεί με τροφοδοσία περίπου 2,7 έως 5,5 V και λειτουργεί για θερμοκρασίες από −40 έως +125 °C.
Η βασική του διαφορά από τον LM35 είναι ότι διαθέτει εσωτερική μετατόπιση τάσης 500 mV. Επομένως, η έξοδος δεν είναι 0 V στους 0 °C, αλλά περίπου 0,5 V.
Η σχέση του TMP36 είναι:
VOUT = 0,5 V+(10 mV/∘C) × T
ή, λύνοντας ως προς τη θερμοκρασία:
T(°C)=(VOUT−0,5)/0,01
Παραδείγματα:
- −10 °C → έξοδος περίπου 0,4 V,
- 0 °C → έξοδος περίπου 0,5 V,
- 25 °C → έξοδος περίπου 0,75 V,
- 50 °C → έξοδος περίπου 1,0 V,
- 100 °C → έξοδος περίπου 1,5 V.
Η μετατόπιση των 500 mV επιτρέπει στον TMP36 να αναπαριστά αρνητικές θερμοκρασίες με θετική τάση εξόδου. Αυτό είναι ιδιαίτερα χρήσιμο επειδή οι συνηθισμένες αναλογικές είσοδοι του Arduino δεν μπορούν να μετρήσουν αρνητική τάση. Η τυπική ακρίβεια του TMP36 είναι περίπου ±1 °C στους 25 °C και περίπου ±2 °C σε μεγαλύτερο εύρος θερμοκρασιών.
Αρχή λειτουργίας
Η λειτουργία των αισθητήρων βασίζεται στις ιδιότητες των ημιαγωγών και, ειδικότερα, στη μεταβολή της τάσης μιας επαφής pn ή μιας διάταξης παρόμοιας με δίοδο όταν μεταβάλλεται η θερμοκρασία.
Σε μια δίοδο πυριτίου, η τάση στα άκρα της μεταβάλλεται με τη θερμοκρασία. Το ολοκληρωμένο κύκλωμα στο εσωτερικό του αισθητήρα χρησιμοποιεί τρανζίστορ, διόδους, πηγές ρεύματος και ενισχυτικά στάδια για να ανιχνεύσει αυτή τη μεταβολή. Στη συνέχεια, το κύκλωμα τη μετατρέπει σε τάση με γραμμική σχέση ως προς τους βαθμούς Κελσίου.
Με απλουστευμένο τρόπο, η διαδικασία είναι η εξής:
- Ένα ή περισσότερα στοιχεία ημιαγωγών επηρεάζονται από τη θερμοκρασία.
- Η εσωτερική τάση τους μεταβάλλεται.
- Το ολοκληρωμένο κύκλωμα ενισχύει και προσαρμόζει αυτή τη μεταβολή.
- Η έξοδος διαμορφώνεται ώστε να μεταβάλλεται κατά 10 mV για κάθε 1 °C.
- Το Arduino μετρά την τάση και υπολογίζει τη θερμοκρασία.
Ο αισθητήρας δεν χρειάζεται εξωτερικό θερμίστορ ή πολύπλοκο κύκλωμα μέτρησης. Παρέχει απευθείας αναλογική τάση, γεγονός που τον καθιστά κατάλληλο για εκπαιδευτικές κατασκευές και απλά συστήματα ελέγχου.
Διαφορές των LM35 και TMP36
Οι διαφορές των αισθητηρίων θερμοκρασίας LM35 και TMP36 συνοψίζονται στον ακόλουθο πίνακα:
| Χαρακτηριστικό | LM35 | TMP36 |
| Τύπος εξόδου | Αναλογική | Αναλογική |
| Κλίμακα εξόδου | 10 mV/°C | 10 mV/°C |
| Έξοδος στους 0°C | 0 V | 0,5 V |
| Έξοδος στους 25°C | 0,25 V | 0,75 V |
| Τροφοδοσία | 4 έως 30V | 2,7 έως 5,5V |
| Ονομαστικό εύρος | -55 έως 150°C ανά έκδοση | -40 έως 125 °C |
| Μέτρηση αρνητικών θερμοκρασιών με Arduino | Δύσκολη χωρίς πρόσθετο κύκλωμα | Ευκολότερη |
| Καταλληλότητα για συστήματα 3,3V | Περιορισμένη | Πολύ καλή |
| Τύπος υπολογισμού | T = VOUT/0,01 | T = (VOUT – 0,5) / 0,01 |
Οι τιμές του πίνακα είναι γενικές και πρέπει να επιβεβαιώνονται από το datasheet της συγκεκριμένης έκδοσης και συσκευασίας. Για παράδειγμα, ορισμένες εκδόσεις LM35 έχουν διαφορετικό εύρος θερμοκρασίας ή διαφορετικές ανοχές.
Συνδεσμολογία TMP36 και LM35
Οι αισθητήρες διατίθενται συχνά σε περίβλημα TO-92 με τρεις ακροδέκτες, οι οποίες όταν κοιτάμε το εξάρτημα από την επίπεδη πλευρά, με τα ποδαράκια προς τα κάτω, η σειρά των ακροδεκτών είναι:

- VCC ή +Vs τροφοδοσία,
- VOUT αναλογική έξοδος,
- GND γείωση.
Ωστόσο, αυτή η σειρά δεν πρέπει να θεωρείται δεδομένη για κάθε κατασκευαστή ή συσκευασία. Η σωστή σειρά ακροδεκτών πρέπει να ελέγχεται στο datasheet του συγκεκριμένου εξαρτήματος.
Συνδεσμολογία TMP36 με Arduino Uno
- TMP36 VCC → 5V ή 3.3V του Arduino.
- TMP36 VOUT → A0.
- TMP36 GND → GND.
- Προαιρετικά, ένας πυκνωτής αποσύζευξης 100 nF συνδέεται μεταξύ VCC και GND, κοντά στον αισθητήρα.
Συνδεσμολογία LM35 με Arduino Uno
- LM35 +VS → 5V.
- LM35 VOUT → A0.
- LM35 GND → GND.
- Προαιρετικά, πυκνωτής αποσύζευξης 100 nF συνδέεται μεταξύ τροφοδοσίας και γείωσης.
Ο LM35 δεν είναι η καλύτερη επιλογή για κύκλωμα που λειτουργεί αποκλειστικά στα 3,3 V, επειδή η ελάχιστη τάση τροφοδοσίας του είναι συνήθως περίπου 4 V. Ο TMP36 είναι καταλληλότερος για τέτοιες εφαρμογές.
Μετατροπή της ένδειξης ADC σε θερμοκρασία
Στο Arduino Uno, ο προεπιλεγμένος μετατροπέας ADC έχει ανάλυση 10 bit. Αυτό σημαίνει ότι η αναλογική είσοδος επιστρέφει τιμές από 0 έως 1023.
Με αναφορά τάσης ADC ίση με 5 V:
VOUT=ADCvalue×5,0/1023
Για τον LM35:
TLM35=VOUT//0,01
Για τον TMP36:
TTMP36=(VOUT−0,5)/0,01
Σε μορφή κώδικα:
float voltage = adcValue * (5.0 / 1023.0);
float temperatureLM35 = voltage * 100.0;
float temperatureTMP36 = (voltage - 0.5) * 100.0;
Η σταθερά 5,0 αντιστοιχεί στην τάση αναφοράς του ADC. Αν το Arduino τροφοδοτείται από USB, η πραγματική τάση μπορεί να μην είναι ακριβώς 5 V. Για μεγαλύτερη ακρίβεια μπορεί να μετρηθεί η πραγματική τάση 5V ή να χρησιμοποιηθεί σταθερή εσωτερική αναφορά, με τις αντίστοιχες προσαρμογές στον κώδικα.
Παράδειγμα κώδικα για LM35
Ο παρακάτω κώδικας διαβάζει έναν LM35 συνδεδεμένο στην αναλογική είσοδο A0 και εμφανίζει τη θερμοκρασία στη σειριακή οθόνη.
const int sensorPin = A0;
void setup() {
Serial.begin(9600);
}
void loop() {
int adcValue = analogRead(sensorPin);
// Για Arduino Uno με αναφορά ADC περίπου 5 V
float voltage = adcValue * (5.0 / 1023.0);
// Ο LM35 δίνει 10 mV για κάθε 1 °C
float temperatureC = voltage * 100.0;
Serial.print("ADC: ");
Serial.print(adcValue);
Serial.print(" Τάση: ");
Serial.print(voltage, 3);
Serial.print(" V");
Serial.print(" Θερμοκρασία: ");
Serial.print(temperatureC, 2);
Serial.println(" °C");
delay(1000);
}
Παράδειγμα
Αν η θερμοκρασία είναι 25 °C, η έξοδος του LM35 θα είναι περίπου 0,25 V. Ο ADC θα διαβάσει περίπου: (0,25/5)×1023≈51 Ο κώδικας θα μετατρέψει αυτή την τάση σε περίπου 25 °C.
Παράδειγμα κώδικα για TMP36
Για τον TMP36 πρέπει να αφαιρεθούν πρώτα τα 500 mV της εσωτερικής μετατόπισης.
const int sensorPin = A0;
void setup() {
Serial.begin(9600);
}
void loop() {
int adcValue = analogRead(sensorPin);
// Για Arduino Uno με αναφορά ADC περίπου 5 V
float voltage = adcValue * (5.0 / 1023.0);
// Ο TMP36 έχει offset 0,5 V και κλίμακα 10 mV/°C
float temperatureC = (voltage - 0.5) * 100.0;
Serial.print("ADC: ");
Serial.print(adcValue);
Serial.print(" Τάση: ");
Serial.print(voltage, 3);
Serial.print(" V");
Serial.print(" Θερμοκρασία: ");
Serial.print(temperatureC, 2);
Serial.println(" °C");
delay(1000);
}
Παραδείγματα,
Αν ο TMP36 δώσει 0,75 V τότε η θερμοκρασία είναι T=(0,75−0,5)/0,01=25∘C
Αν δώσει 0,40 V τότε η θερμοκρασία είναι T=(0,40−0,5)/0,01=−10∘C
Έτσι ο TMP36 μπορεί να ανιχνεύσει θερμοκρασίες κάτω από το μηδέν χωρίς να χρειάζεται αρνητική τάση τροφοδοσίας ή πρόσθετο κύκλωμα μετατόπισης.
Κώδικας με μέσο όρο μετρήσεων
Οι αναλογικές μετρήσεις μπορεί να παρουσιάζουν μικρές διακυμάνσεις εξαιτίας ηλεκτρικού θορύβου, της τροφοδοσίας ή των περιορισμών του ADC. Μια απλή τεχνική βελτίωσης είναι η λήψη πολλών μετρήσεων και ο υπολογισμός του μέσου όρου.
Το παράδειγμα αφορά TMP36:
const int sensorPin = A0;
const int samples = 20;
void setup() {
Serial.begin(9600);
}
void loop() {
long sum = 0;
for (int i = 0; i < samples; i++) {
sum += analogRead(sensorPin);
delay(5);
}
float averageADC = sum / (float)samples;
float voltage = averageADC * (5.0 / 1023.0);
float temperatureC = (voltage - 0.5) * 100.0;
Serial.print("Μέση τιμή ADC: ");
Serial.print(averageADC);
Serial.print(" | Θερμοκρασία TMP36: ");
Serial.print(temperatureC, 2);
Serial.println(" °C");
delay(1000);
}
Ο μέσος όρος περιορίζει τις τυχαίες μεταβολές, αλλά δεν διορθώνει ένα συστηματικό σφάλμα. Αν, για παράδειγμα, η τάση αναφοράς έχει λανθασμένη τιμή στον υπολογισμό, οι μετρήσεις θα παραμένουν συστηματικά μετατοπισμένες.
Εφαρμογές
Οι TMP36 και LM35 χρησιμοποιούνται σε πολλές απλές και εκπαιδευτικές εφαρμογές:
- ψηφιακά θερμόμετρα με Arduino,
- καταγραφή θερμοκρασίας σε κάρτα SD,
- αυτόματη ενεργοποίηση ανεμιστήρα,
- έλεγχος θερμαντικών στοιχείων,
- μικροί μετεωρολογικοί σταθμοί,
- παρακολούθηση θερμοκρασίας σε χώρους,
- έλεγχος θερμοκρασίας σε κουτιά ηλεκτρονικών,
- εκπαιδευτικά πειράματα φυσικής και ηλεκτρονικής,
- συστήματα IoT με Arduino, ESP32 ή άλλους μικροελεγκτές,
- προστασία κυκλωμάτων από υπερθέρμανση,
- παρακολούθηση θερμοκρασίας κινητήρων ή μπαταριών, όταν το εύρος και η ακρίβεια του αισθητήρα είναι επαρκή.
Για εφαρμογές όπου απαιτείται υψηλή ακρίβεια, μεγάλη απόσταση καλωδίωσης, ψηφιακή επικοινωνία ή αυστηρή βαθμονόμηση, μπορεί να είναι προτιμότερος ένας ψηφιακός αισθητήρας ή ένας αισθητήρας RTD/θερμοζεύγους.
Πλεονεκτήματα και μειονεκτήματα των TMP36 και LM35
Πλεονεκτήματα
- Πολύ απλή συνδεσμολογία τριών ακροδεκτών.
- Δεν απαιτείται εξωτερικός θερμίστορ.
- Γραμμική έξοδος που μετατρέπεται εύκολα σε °C.
- Μικρό κόστος.
- Πολύ μικρή κατανάλωση ρεύματος.
- Κατάλληλοι για Arduino και εκπαιδευτικές κατασκευές.
- Δεν χρειάζεται σύνθετος αλγόριθμος για τη βασική μέτρηση.
Μειονεκτήματα
- Η έξοδος είναι ευαίσθητη στον ηλεκτρικό θόρυβο.
- Η ακρίβεια εξαρτάται από την τάση αναφοράς του ADC.
- Δεν υπάρχει ενσωματωμένη ψηφιακή επικοινωνία.
- Τα μακριά καλώδια μπορούν να προκαλέσουν ασταθείς ενδείξεις.
- Ο LM35 χρειάζεται συνήθως τουλάχιστον 4 V τροφοδοσία.
- Για αρνητικές θερμοκρασίες ο LM35 παράγει αρνητική τάση, κάτι που δεν μπορεί να διαβαστεί απευθείας από τις περισσότερες αναλογικές εισόδους Arduino.
- Η πραγματική θερμοκρασία που μετράται είναι κυρίως η θερμοκρασία του ίδιου του κελύφους του αισθητήρα· δεν μετρά πάντα άμεσα τη θερμοκρασία ενός αντικειμένου που βρίσκεται μακριά.
Συμβουλές για καλύτερες μετρήσεις
Ο αισθητήρας πρέπει να τοποθετείται μακριά από πηγές θερμότητας, όπως ο ρυθμιστής και σταθεροποιητής τάσης, ο μικροελεγκτής ή ισχυρά LED. Αν βρίσκεται πολύ κοντά σε εξαρτήματα που θερμαίνονται, μπορεί να μετρά τη θερμοκρασία της πλακέτας αντί για τη θερμοκρασία του περιβάλλοντος.
Χρήσιμες πρακτικές είναι οι εξής:
- Χρησιμοποίησε κοινή και σταθερή γείωση μεταξύ αισθητήρα και Arduino.
- Τοποθέτησε πυκνωτή 100 nF κοντά στους ακροδέκτες τροφοδοσίας του αισθητήρα.
- Απόφυγε πολύ μεγάλα καλώδια χωρίς θωράκιση.
- Πάρε πολλές μετρήσεις και υπολόγισε μέσο όρο.
- Χρησιμοποίησε την πραγματική τάση αναφοράς του Arduino στον υπολογισμό.
- Μην ξεπερνάς την επιτρεπόμενη τάση τροφοδοσίας και το θερμοκρασιακό εύρος του συγκεκριμένου μοντέλου.
- Έλεγξε το pinout από το datasheet πριν συνδέσεις το εξάρτημα.
Συμπέρασμα
Ο LM35 είναι ιδιαίτερα απλός όταν η εφαρμογή αφορά θετικές θερμοκρασίες και υπάρχει τροφοδοσία 5 V ή μεγαλύτερη. Ο TMP36 είναι συχνά πιο πρακτικός για σύγχρονα κυκλώματα Arduino και 3,3 V, επειδή λειτουργεί με χαμηλότερη τάση και η μετατόπιση των 500 mV επιτρέπει τη μέτρηση αρνητικών θερμοκρασιών με θετική τάση εξόδου.
Και οι δύο αποτελούν πολύ καλές επιλογές για την πρώτη επαφή με τους αναλογικούς αισθητήρες. Η βασική διαφορά στον κώδικα είναι ότι στον LM35 χρησιμοποιούμε τη σχέση: T=VOUT×100, ενώ στον TMP36 αφαιρούμε πρώτα τα 0,5 V και εφαρμόζουμε τον τύπο: T=(VOUT−0,5)×100.