sensore temperatura

Salve, ho comprato un sensore di temperatura MCP9700a collegato correttamente ma l'espressione usata mi dice un valore sballato circa 10 gradi in più, questa è la formula che ho usato ((5 * analogRead(tempPin) * 100.0 ) / 1023) * 0.330; mi potrete suggerire una soluzione? l'ho collegato in modo corretto pin 1 5v pin 3 gnd e pin 2 su pin analogico1. per favore aiuto

Ciao, sul datasheet http://ww1.microchip.com/downloads/en/DeviceDoc/21942e.pdf (pagina 11) ho trovato una formula un po' diversa da quella che hai utilizzato. Comunque, per debug, ti consiglio di farti passare sulla seriale anche il dato letto dall'ADC per individuare eventuali errori di arrotondamento di Arduino.

Dove hai preso questa formula? Il datasheet dice:

Vout = TC • TA + V0 Where: TA = Ambient Temperature Vout = Sensor Output Voltage V0 = Sensor Output Voltage at 0°C (See DC Electrical Characteristics table) Tc = Temperature Coefficient (See DC Electrical Characteristics table)

Quindi TA = (Vout-V0)/Tc

Devi prima calcolare/trovare V0 e Tc, e poi trovare il rapporto tra Vout e il valore letto sul pin analogico.

grazie, la formula l'ho trovata su http://www.giannifavilli.it/blog/arduino-controllo-remoto-http/ dove nel codice parla del sensore della temperatura. sono riuscito a capire che tc=10mV => 0,01 V mentre V0°=500mV => 0,5 V ora quello che mi chiedo è come trovo Vout?

ma Vout non dovrebbe essere il valore che tira fuori il pin 2?

exurgit: grazie, la formula l'ho trovata su http://www.giannifavilli.it/blog/arduino-controllo-remoto-http/ dove nel codice parla del sensore della temperatura. sono riuscito a capire che tc=10mV => 0,01 V mentre V0°=500mV => 0,5 V ora quello che mi chiedo è come trovo Vout?

Vout è il valore che leggi in uscita dal sensore. Il problema semmai è capire la relazione tra Vout e il valore letto sul pin analogico, ma quello credo dipenda dalla tensione di riferimento usata sulla Arduino, cioe' bisogna vedere il datasheet della Arduino. Forse puoi specificare questa tensione mettendola sul piedino Aref, e , sempre "forse", se non la specifichi vale i 5V "canonici", boh... Comunque sia, per ogni unità in piu' sul pin avrai Vref/1024 volt in piu' . Quindi, per esempio, se Vref=5V, per Vout=2,5 V leggerai 512 (o 511? :roll_eyes: ) Cioe' Vout = valorepin * Vref / 1024 , cioè valorepin = Vout * 1024 / Vref e siccome Vout = Tc * Ta + V0 ottieni valorepin = (Tc*Ta+V0) * 1024 / Vref

Quindi, per sapere che tensione hai in base al valore che leggi, dovrebbe essere: Temperatura = (Vref*Valorepin/1024 - V0 ) / Tc cioe' Temperatura = (Vref*Valorepin/1024 - V0 ) / 0,01

se Vref=5:

Temperatura = (5 * analogRead(tempPin)/1024 - V0 ) / Tc

cioe'

Boh, almeno credo... :~

Assomiglia alla tua formula: ((5 * analogRead(tempPin) * 100.0 ) / 1023) * 0.330

con Vref = 5

ma nella tua non c'e' V0, e invece che /Tc c'e' *0,330 ...