Como calibrar un sensor con Arduino / Genuino (Fotoresistencias, sensores de temperatura, …)

En este ejemplo os mostramos una técnica para calibrar la entrada de diferentes sensores con las placas Arduino/Genuino. En este ejemplo la placa toma lecturas de los sensores cada cinco segundos durante la puesta en marcha y lo que nos permite establecer los valores máximo y mínimo de nuestro sensor. Las lecturas de los sensores durante los primeros cinco segundos de la ejecución del sketch definen los valores mínimo y máximo esperados para las lecturas tomadas durante el programa.

Componentes y materiales

  •  Placa Arduino/Genuino
  • 1 Sensor analógico
  • 1 Resistencia de 10k ohm
  • 1 Resistencia de 220 ohm
  • 1 LEDs
  • Cables de conexión
  • 1 Protoboard

 

Esquema y montaje

Conectamos el sensor analógico (por ejemplo, potenciómetro, sensor de luz) a la entrada analógica 2. El LED lo conectamos en el pin digital 9.

Conectamos el LED al pin digital 9 con una resistencia limitadora de corriente de 220 ohmios en serie. Conectamos una fotorresistencia a 5V y luego al pin analógico 0 con una resistencia de 10K ohmios a tierra.

Código del proyecto para Arduino

Antes de la instalación, configuramos los valores iniciales para el mínimo y el máximo de la siguiente manera:

int sensorMin = 1023;        // valor mínimo del sensor 
int sensorMax = 0;           // valor máximo del sensor

Durante el proceso de calibración se establece el valor mínimo que deseamos, guardándolo como el nuevo mínimo. Del mismo modo, se establece el valor, de la siguiente manera:

  // // Calibrar durante los primeros cinco segundos 
  while (millis() < 5000) {
    sensorValue = analogRead(sensorPin);

    // Registrar el valor máximo del sensor
    if (sensorValue > sensorMax) {
      sensorMax = sensorValue;
    }

    // Registrar el valor mínimo del sensor
    if (sensorValue < sensorMin) {
      sensorMin = sensorValue;
    }
  }

Así, cualquier lectura que se toma, se puede asignar a la gama entre este mínimo y el máximo de esta manera:

  // Aplicar la calibración para la lectura del sensor
  sensorValue = map(sensorValue, sensorMin, sensorMax, 0, 255);

Código completo del proyecto para Arduino

const int sensorPin = A0;    // configuramos el pin para el sensor
const int ledPin = 9;        // configuramos el pin para el LED

// variables:
int sensorValue = 0;         // Valor del sensor
int sensorMin = 1023;        // valor mínimo del sensor 
int sensorMax = 0;           // valor máximo del sensor

void setup() {
  // El LED se enciende para indicar el periodo de calibración
  pinMode(13, OUTPUT);
  digitalWrite(13, HIGH);

  // // Calibrar durante los primeros cinco segundos 
  while (millis() < 5000) {
    sensorValue = analogRead(sensorPin);

    // Registrar el valor máximo del sensor
    if (sensorValue > sensorMax) {
      sensorMax = sensorValue;
    }

    // Registrar el valor mínimo del sensor
    if (sensorValue < sensorMin) {
      sensorMin = sensorValue;
    }
  }

  // Señal para el fin de la calibración
  digitalWrite(13, LOW);
}

void loop() {
  // Leemos el sensor
  sensorValue = analogRead(sensorPin);

  // Aplicar la calibración para la lectura del sensor
  sensorValue = map(sensorValue, sensorMin, sensorMax, 0, 255);

  // en caso de que el valor del sensor está fuera del rango
  // visto durante la calibración
  sensorValue = constrain(sensorValue, 0, 255);

  // se desvanecen el LED utilizando el valor de calibrado: 
  analogWrite(ledPin, sensorValue);

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.