You are currently viewing Arduino: Aprenda a calibrar sensores

Arduino: Aprenda a calibrar sensores

O Tech-Portugal apresenta este artigo para facilitar a vida as leitores que são fãs de Arduino ou Genuinos para instrumentação. Este artigo brinda os interessados a ter o cuidado quando estão a fazer medições físicas, com as placas da Arduino/Genuino. Este cuidado trata-se da calibração de sensores com a placa em questão. E para isso vamos apresentar um exemplo standard. Toda a explicação será apresentada ao longo do código, recorrendo a linhas de comentários.

Antes de apresentar o código, fazemos uma chamada de atenção para a resolução das placas Arduino/Genuino e dos sensores utilizados. Este parâmetro, é um parâmetro crucial para fazer uma óptima aquisição de dados, tipicamente chamados de número de bits.

Um exemplo de aquisição de dados é mostrado abaixo:

calibration

Nesta ilustração foi usado um LED ligado no pino 9 (PWM), com uma resistência de 220 ohm em série e uma foto resistência (resistência sensível à intensidade luminosa), ligada em série com uma resistência de 10 K,  estando esta ligado à terra-ground.

Esta foto resistência é o sensor, que serve para exemplificar o cuidado de método de calibração.

/*
  Calibração de sensores
*/

// Inicialização das variáveis do tipo inteiro dedicadas à leitura do sensor
int sensorValue = 0;         // Valor do sensor lido actual
int sensorMin = 1023;        // Valor mínimo lido do sensor 
int sensorMax = 0;           // Valor máximo lido do sensor 
int sensorPin = 0 ;
int ledPin = 13;

void setup() {
  // Ligar o LED indicador para início do período para a executar a calibração 
  pinMode(13, OUTPUT);
  digitalWrite(13, HIGH);

  // Calibrar durante os primeiros cinco segundos: 5000 milisegundos 
  
  while (millis() < 5000) {
    sensorValue = analogRead(sensorPin);
    // Grava o valor máximo do valor lido do sensor
    if (sensorValue > sensorMax) {
      sensorMax = sensorValue;
    }

    // Grava o valor mínimo lido do sensor 
    if (sensorValue < sensorMin) {
      sensorMin = sensorValue;
    }
  }

  // Desligar o LED indicador da calibração
  digitalWrite(13, LOW);
}

void loop() {
  // Ler os valores vindos do sensor 
  sensorValue = analogRead(sensorPin);

  
  // Aplicar o método de calibração aos valores provenientes do sensor
  sensorValue = map(sensorValue, sensorMin, sensorMax, 0, 255);

  
  // Caso os valores do sensor estarem fora da gama de valores definida durante a calibração 
  sensorValue = constrain(sensorValue, 0, 255);

  
  // Atenuar a intensidade do LED usando os valores de calibrados
  analogWrite(ledPin, sensorValue);
}

Tem alguma dúvida ou sugestão para os nossos artigos?

António Sousa

António Sousa, técnico de redes e sistemas informáticos e fundador do Tech em Português! Sou um amante das novas tecnologias e um aventureiro dessa grande "auto-estrada" que é a internet!