fbpixel
Etiquetas: , ,
0
(0)

Um sensor analógico envia um nível de tensão, normalmente entre 0 e 5V, representando um valor físico. Esta tensão pode estar sujeita a ruídos de medição (interferência eletrônica ou eletromagnética, precisão de medição, etc.). Em algumas aplicações, pode ser necessário determinar valores limiares precisos para executar certas tarefas. Um método simples de se implementar é estabelecer uma histerese sobre a medição, que permitirá saltos entre diferentes medições em detrimento da precisão.

Material

  • Computador
  • Arduino UNO
  • Cabo USB A Macho/B Macho
  • Sensor de temperatura (por exemplo)

Princípio de funcionamento

O princípio da histerese consiste em definir comportamentos diferentes conforme um valor aumenta ou diminui. Vamos a um exemplo prático. Imagine que quer controlar um relé de acordo com a temperatura medida para operar um ventilador, por exemplo. Quando a temperatura é de 40°C ou superior, o relé é fechado e quando a temperatura é mais baixa, o relé é aberto. Se, por alguma razão, a temperatura oscilar entre 39,5 e 40°C, o relé irá se abrir ou fechar sempre que o valor limiar for atingido.

A técnica amplamente utilizada é a de definir um limiar ALTO e um limiar BAIXO para fechar e abrir o relé. Determinamos que o algoritmo feche o relé quando a temperatura for maior ou igual a 40 e abra-o quando for inferior a 30°C. Este é o princípio da histerese.

Código

Criamos uma função que lê a entrada analógica e aplica a histerese de medição.

//Parameters
const int aihPin  = A0;
const int aihMargin  = 2;
const int aihThresh  = 306;

//Variables
int aihVal  = 0;
bool aihHystOn  = 0;

void setup() {
  //Init Serial USB
  Serial.begin(9600);
  Serial.println(F("Initialize System"));
  //Init AnalogHyst
  pinMode(aihPin, INPUT);
}

void loop() {
  readAnalogHyst();
  hystThresh();
  delay(200);
}

void readAnalogHyst( ) { /* function readAnalogHyst */
  ////Test routine for AnalogHyst
  aihVal = analogRead(aihPin);
  Serial.print(F("aih val ")); Serial.println(aihVal);
}

void hystThresh( ) { /* function hystThresh */
  ////Perform hysteresis on sensor readings

  if (aihVal >= (aihThresh + aihMargin)) {
    aihHystOn = true;
  }
  if (aihVal <= (aihThresh - aihMargin)) {
    aihHystOn = false;
  }

  Serial.print(F("aih hist : ")); Serial.println(aihHystOn);
}




Resultado

No monitor serial, vemos que o estado muda para 1 para valores acima de 308 e para 0 para valores abaixo de 304.

Aplicações

  • Gerir um relé com um sensor de temperatura

Fontes

Retrouvez nos tutoriels et d’autres exemples dans notre générateur automatique de code
La Programmerie

How useful was this post?

Click on a star to rate it!

Average rating 0 / 5. Vote count: 0

No votes so far! Be the first to rate this post.

As you found this post useful...

Follow us on social media!

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?