Sensor – TMP36 – Temperatuur sensor analoog
Hardware
De TMP36 is een analoge (laag-voltage) precisie temperatuur sensor, hij heeft een lineaire uitgang dat zowaar gelijk is met het aantal graden, de sensor heeft geen hardwarematige calibratie nodig.
Afwijking: ±1°C bij +25°C / ±2°C bij −40°C en +125°C
Specificaties:
- Voltage: 2.7 V to 5.5 VDC
- 10 mV/°C schaal factor
- ±2°C precisie over de temperatuur
- ±0.5°C linearity
- Operating Range: −40°C to +125°C
Hoe werkt het?
De sensor geeft een voltage via de analoge pin, dat is 10 mV per graad, daar moet je 500 mV (0,5V) aftrekken en dan x 100 vermenigvuldigen.
Voorbeeld:
Is de waarde 0,71 volt dan is de temperatuur 0,71 – 0,5 = 0,21 * 100 = 21 graden.
Pinout
Arduino
Aansluiten op de Arduino
Sluit de TMP36 aan volgens onderstaand schema (raadpleeg altijd de datasheet voor de juiste pinout van de weerstand):
TMP36 Pin: | Arduino Pin: |
---|---|
1 +Vs (2.7v tot 5.5v) | +5v |
2 (Analoge uitgang) | A0 |
3 (GND) | GND |
Script
Onderstaand script leest de TMP36 sensor uit en geeft het aantal graden weer via de seriële console.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
// TMP36 pin variabelen. // Configureer de analoge pin van de arduino waar de uitgang van de sensor op is aangesloten. // de sensor resolutie is 10mV / per graad met een 500mV offset om negatieve temperaturen toe te staan. int sensorPin = 0; void setup() { Serial.begin(9600); // Start de seriele poort op 9600 baud. } void loop() { // lees de voltage uit van de temperatuur sensor. int reading = analogRead(sensorPin); // converteer de waarde naar een voltage, voor 3.3v arduino gebruik 3.3 float voltage = reading * 5.0; voltage /= 1024.0; // print de voltage naar de console. Serial.print(voltage); Serial.println(" volts"); // converteer van 10 mV per graad met 500mV offset naar graden (voltage - 500mV) x 100). float temperatureC = (voltage - 0.5) * 100; // print de temperatuur naar de console. Serial.print(temperatureC); Serial.println(" degrees C"); // converteer naar Fahrenheit float temperatureF = (temperatureC * 9.0 / 5.0) + 32.0; // print de temperatuur naar de console. Serial.print(temperatureF); Serial.println(" degrees F"); delay(1000); // wacht een seconde. } |
Meer informatie op adafruit.com
Raspberry Pi
Aansluiten op de Raspberry Pi
Wat heb je nodig
1) MCP3008 + python module
2) Condensator 0.1uF
Sluit de TMP36 + MCP3008 aan zoals aangegeven op onderstaand schema:
Ps. de condensator (tussen GND en Vout) heb je nodig anders krijg je vreemde waarden.
Script:
Met onderstaand python script kun je de TMP36 uitlezen via de MCP3008:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
#!/usr/bin/python import spidev import time spi = spidev.SpiDev() spi.open(0,0) def read_spi(channel): spidata = spi.xfer2([1,(8+channel)<<4,0]) return ((spidata[1] & 3) << 8) + spidata[2] try: while True: channeldata = read_spi(0) voltage = round(((channeldata * 3300) / 1024),0) temperatuur = ((voltage - 500) / 10) print("Temperatuur = {} graden C".format(temperatuur)) time.sleep(1) except KeyboardInterrupt: spi.close() |
Start het script met: sudo python tmp36.py , druk op CTRL+C om het script te stoppen!
Dit is de output in de console:
1 2 3 4 5 6 7 8 9 10 11 12 |
Temperatuur = 16.3 graden C Temperatuur = 15.7 graden C Temperatuur = 16.0 graden C Temperatuur = 16.3 graden C Temperatuur = 17.0 graden C Temperatuur = 17.9 graden C Temperatuur = 18.3 graden C Temperatuur = 18.6 graden C Temperatuur = 19.2 graden C Temperatuur = 19.6 graden C Temperatuur = 19.6 graden C Temperatuur = 19.9 graden C |
Schema
GEEN GEGEVENS
Teardown
GEEN GEGEVENS
Datasheet
Fritzing
GEEN GEGEVENS
Downloads
GEEN GEGEVENS