Física con Arduino
  • Sensores de bajo coste en el laboratorio de Física
  • SENSORES
    • Sensores: introducción
    • Sensor analógico de temperatura LM35
      • Conectar el sensor
      • Programar la placa Arduino
      • Lectura de un sensor con salida analógica
      • Medida de los datos
      • Conversión de los datos a grados centígrados
    • Sensor de llama
      • Conectar el sensor
      • Lectura del sensor
      • Transformar el valor bruto en porcentaje
    • Sensor de efecto Hall lineal
      • Conectar el sensor
      • Relación entre el voltaje y el campo magnético
      • Lectura del sensor
      • Medida del campo magnético
    • Sensor DHT22 de humedad y temperatura
      • Conectar el sensor
      • Añadir una biblioteca al IDE de Arduino
      • Lectura del sensor
    • Sensor digital de temperatura DS18B20
      • Conectar el sensor
      • Programar el sensor
      • Tres sensores
  • SALIDA
    • Dispositivos de salida: introducción
    • Pantalla LCD I2C
    • Pantalla 7 segmentos
  • PROYECTOS
    • Proyectos: introducción
    • Color y calor
    • Cómo atrapar el calor del sol
    • ¿De dónde viene la sal?
    • Curva de calentamiento del agua
  • Talleres
    • Rovereto 2019
  • Contacto
    • Sobre la autora
Powered by GitBook
On this page
  1. SENSORES
  2. Sensor analógico de temperatura LM35

Conversión de los datos a grados centígrados

Como hemos dicho antes, cuando se ejecuta la función analogRead Arduino devuelve valores enteros entre 0 y 1023, que son precisamente los números que acabas de ver en el monitor serie. Estos valores resultan ser directamente proporcionales al voltaje aplicado en el pin correspondiente. Teniendo en cuenta que cuando analogRead devuelve el valor 0 el voltaje aplicado al pin es 0 voltios, y que cuando analogRead tiene un valor de 1023 el voltaje es 5 voltios, podemos transformar el número devuelto por analogRead a voltaje (en voltios) sin más que hacer:

volts = sensorValue*(5/1023)

De acuerdo con la hoja de datos del sensor de temperatura LM35, la relación entre el voltaje y la temperatura en grados centígrados es lineal, con una equivalencia de 10 milivoltios = 1 °C. Así que primero pasamos los voltios a milivoltios:

millivolts = volts*1000

y, finalmente, convertimos los milivoltios a grados centígrados:

degreesC = millivolts/10

Con estas operaciones matemáticas sencillas hemos logrado convertir los valores brutos medidos por la placa Arduino en grados centígrados.

Por cierto, debes tener en cuenta que los valores del voltaje y la temperatura ya no son números enteros, sino decimales. Recuerda que, en el lenguaje Arduino, cuando declaramos una variable debemos especificar el tipo de valores que va a contener. La palabra que debes usar para indicar que la variable tomará valores reales es float.

Así, el programa final es:

void setup() {
  // Initializing the serial communication at 9600 bits of data per second
  Serial.begin(9600);
}

void loop() {
  // Reading the value of the sensor from the specified pin
  // and storing the value in a variable called sensorValue
  int sensorValue = analogRead(0);
  
  // Transforming raw input (with values in the range 0-1023) into voltage in volts (0-5 V)
  float volts = sensorValue*(5.0/1023.0); 

  // Transforming voltage in volts into millivolts
  float millivolts = volts*1000; 

  // Transforming voltage in millivolts into temperature in degrees Celsius
  float degreesC = millivolts/10;
  
  // Printing the output in the serial monitor
  Serial.println(degreesC);

  // Delay in between reads (in milliseconds)
  delay(1000);
}

Probablemente te habrás dado cuenta de que las instrucciones que comienzan con una doble barra (//) no son más que comentarios, y no se ejecutan. ¡Incluye siempre comentarios que expliquen tu código!

Cuando subas este sketch a la placa, verás valores similares a los siguientes en el monitor serie:

Estos valores representan la temperatura medida por el sensor, pero ahora expresada en grados centígrados. ¡Mucho mejor así!

PreviousMedida de los datosNextSensor de llama

Last updated 6 years ago