from machine import Pin, ADC
from time import sleep
from math import log
led = Pin(22, Pin.OUT)
button = Pin(12, Pin.IN, Pin.PULL_DOWN)
sensor = ADC(32)
#Il pin 12 è configurato in maniera tale da utilizzare la sua resistenza di pull-down interna.
BETA=3950
T0 = 25
while True:
button_state = button.value()
if button_state == 1:
led.value(1)
val_d = sensor.read()
val_a = val_d *3.3/4095
k=val_a/(3.3-val_a)
T = 1 / (log(1 / (4095. / val_d - 1)) / BETA + 1 / (T0+273.15)) - 273.15
#Possiamo anche scrivere T in funzione della tensione misurata (che compare nella costante k)
#T = 1 / (log(k) / BETA + 1 / (T0+273.15)) - 273.15;
#Calcolo della T a partire da una calibrazione statica
#La calibrazione statica è stata effettuata leggendo il valore di tensione val_a per ogni temperatura
#in un range nell'intorno di 36°C
m=-0.032
b=2.444
#val_a=m*T+b
T2=(val_a-b)/m
#Attenzione, T2 è influenzato da un errore dovuto ad una non perfetta linearità dell'uscita
#Lo si può stimare calcolando l'indice di scostamento dalla linearità
print('ADCout=', val_d, '\tVm=', round(val_a,2),' V', '\tT = ', round(T,2), '°C', '\tT2=', round(T2,2), '°C')
led.value(0)
sleep(1)
else:
led.value(0)