Différences entre versions de « ENG-CANSAT-PICO-TMP36 »

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche
Ligne 67 : Ligne 67 :
 
#
 
#
 
from machine import ADC, Pin
 
from machine import ADC, Pin
 +
import time
  
 
adc = ADC(Pin(26))
 
adc = ADC(Pin(26))
Ligne 74 : Ligne 75 :
 
     temp = (mv-500)/10
 
     temp = (mv-500)/10
 
     print( 'Temp: %5.2f °C, Voltage: %4i mV' % (temp,mv) )
 
     print( 'Temp: %5.2f °C, Voltage: %4i mV' % (temp,mv) )
 +
    time.sleep( 0.100 )
 
</syntaxhighlight>
 
</syntaxhighlight>
  

Version du 8 décembre 2022 à 17:03

About the TMP36 Sensor

The TMP36 is the reference analogue temperature sensor in the Arduino world. It is affordable, small et power efficient. For sure there are better temperature sensors but this one will do the job for almost nothing :-)

This sensor is very common and easy to use. It is also one of the components of the ARDX development kit.


With the TMP36, it is possible to measure a temperature from -50°C to 125°C, the output voltage is proportional to the temperature.

Don't be fooled, the TMP36 looks like a transistor (eg: P2N2222AG) but it isn't a transistor. It is a complex sensor within a package identical to a transistor.

There are 3 pins on the TMP36.

  • the ground (on the left),
  • the output signal (center position),
  • the +5 volts (on the right)

TMP36-pinout.jpg

The sensor output signal does output 10 millivolts per degree (with 500mV offset for temperature under 0°C).

Eg:

  • 25° C --> output = 750 mV
  • 0° C --> output = 500mV

Technical detail

  • Analog output (see graphics)
  • Temperature range: from -50°C to 125°C
  • Power supply range: 2.7 to 5.5v
  • TMP36 datasheet (analog.com, html)

How to measure the temperature

It will be necessary to convert the analogue voltage intro degree. As the TMP36 can also measure negative temperature, the 0 degree Celcius is placed at 500 mV offset. So, any voltage under 0.5 Volt is a negative temperature.

TMP36-Graph.png

Here is the formula to use with a TMP36 powered at 3.3v:

Temp in °C = ( output_voltage_in_mV - 500) / 10

So, if we do have an output voltage of exactly 1 Volt (1000 mV) then the temperature would be

temp = (1000 - 500)/10

So 50 Celcius degrees.

Wiring

To use the TMP36, connect:

  • The pin 1 (on the left) to a power source (3.3V),
  • The pin 3 (the the right droite) to the ground/GND.
  • The pin 2 (middle one) to the ADC0 analog input.

ENG-CANSAT-PICO-TMP36-01.jpg

The TMP36 output voltage would range from 0V @ -50°C to 1.75V @ 125°C. So no risk for our 3V based microcontroler.

Testing the sensor

The Raspberry-Pico offers a 12 bits resolution ADC (effective 0.8mV resolution. 3.3V/4095).

# Read the TMP36 analog temperature sensor 
#    sensor wired to ADC0 (GP26)
#
from machine import ADC, Pin
import time

adc = ADC(Pin(26))
while True:
    value = adc.read_u16()
    mv = 3300.0 * value / 65535
    temp = (mv-500)/10
    print( 'Temp: %5.2f °C, Voltage: %4i mV' % (temp,mv) )
    time.sleep( 0.100 )

Which produce the following results into the MicroPython REPL/Shell

Temp: 15.19 °C, Voltage:  651 mV
Temp: 14.87 °C, Voltage:  648 mV
Temp: 14.71 °C, Voltage:  647 mV


Written by Meurisse D. for MCHobby


MCHobby investit du temps et de l'argent dans la réalisation de traduction et/ou documentation. C'est un travail long et fastidieux réalisé dans l'esprit Open-Source... donc gratuit et librement accessible.
SI vous aimez nos traductions et documentations ALORS aidez nous à en produire plus en achetant vos produits chez MCHobby.