Menu

Calibração de sensores

        Apresentamos este artigo para facilitar a vida dos leitores que são fãs de Arduino ou Genuinos para instrumentação.
     Este artigo orienta os interessados a ter o cuidado quando estão a fazendo medições físicas, com as placas  Arduino/Genuino, este cuidado trata-se da calibração de sensores com a placa em questão.
     E para isso vamos apresentar um exemplo padrão. Toda a explicação será apresentada ao longo do código, recorrendo às linhas de comentários.
     Antes de apresentar o código, é necessário ter atenção para a resolução das placas Arduino/Genuino e dos sensores utilizados. Este parâmetro, é  crucial para fazer uma ótima aquisição de dados, tipicamente chamados de número de bits.

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

Montagem:
 












    










     Nesta ilustração foi usado um LED ligado no pino 9 (PWM), com um resistor de 220 ohm em série e um LDR (resistor sensível à intensidade luminosa), ligado em série com um resistor de 10 K,  estando este ligado à terra.

     Este LDR é o sensor, que serve para exemplificar o cuidado do método de calibração.

Código:

/*
  Calibração de sensores
*/

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

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

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

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

  // Desliga o LED indicador de calibração
  digitalWrite(13, LOW);
}

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

 
  // Aplica 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);

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

Postem suas dúvidas e comentários no nosso fórum!