Tengo un Arduino Diecimila y un montón de viejos Sensores de temperatura Phidgets 1114.
Quiero poder obtener una temperatura algo estable / precisa de estos sensores dentro de mis bocetos de arduino.
La fórmula de phidgets para el 1114 es tempC = (SensorValue / 4) - 50.
Tengo entendido que los Phidgets tienen un ADC de 8 bits y Arduino tiene un ADC de 10 bits.
Lee también una publicación anterior aquí que describe el uso de una fórmula más como esta tempC = (SensorValue * 0.0625) - 50. Debido a que 10bit dac necesita dividirse por 4 nuevamente para obtener este resultado en un ADC de 10bit.
Usando el ejemplo analógico en el sitio web, he encontrado esto:
const int analogInPin = A5; // Analog input pin that the potentiometer is attached to
const int analogOutPin = 9; // Analog output pin that the LED is attached to
int sensorValue = 0; // value read from the pot
int outputValue = 0; // value output to the PWM (analog out)
float temperature = 0.0;
void setup() {
// initialize serial communications at 9600 bps:
Serial.begin(9600);
}
void loop() {
// read the analog in value:
sensorValue = analogRead(analogInPin);
// map it to the range of the analog out:
outputValue = map(sensorValue, 0, 1023, 0, 255);
// change the analog out value:
analogWrite(analogOutPin, outputValue);
// print the results to the serial monitor:
Serial.print("sensor = " );
Serial.print(sensorValue);
Serial.print("\t Temperature = ");
temperature = ((float)sensorValue/4) - 50.0;
Serial.println(temperature);
// wait 10 milliseconds before the next loop
// for the analog-to-digital converter to settle
// after the last reading:
delay(10);
}
Esto produce una salida de monitor en serie de este modo:
sensor = 303 Temperature = 25.75
sensor = 305 Temperature = 26.25
sensor = 306 Temperature = 26.50
sensor = 307 Temperature = 26.75
sensor = 303 Temperature = 25.75
sensor = 310 Temperature = 27.50
sensor = 308 Temperature = 27.00
sensor = 305 Temperature = 26.25
sensor = 306 Temperature = 26.50
sensor = 307 Temperature = 26.75
sensor = 303 Temperature = 25.75
sensor = 304 Temperature = 26.00
sensor = 302 Temperature = 25.50
sensor = 305 Temperature = 26.25
sensor = 304 Temperature = 26.00
sensor = 305 Temperature = 26.25
sensor = 307 Temperature = 26.75
sensor = 303 Temperature = 25.75
sensor = 305 Temperature = 26.25
sensor = 306 Temperature = 26.50
Lo que muestra que la temperatura es aproximadamente 2-3 grados C más alta de lo que actualmente es, tengo un indicador de temperatura aquí que muestra 24.5C
He intentado usar el * 0.0625 y eso solo lleva el valor a -30, rango -31 ...