fbpixel
Étiquettes : , ,
3.7
(3)

Une capteur analogique envoie un niveau de tension, généralement comprise entre 0 et 5V, représentant une valeur physique. Cette tension peut être sujet à des bruits de mesure (interférence électronique, électromagnétique, précision de mesure, etc.). Dans certaines applications, vous aurez besoin de déterminer des valeurs seuils précises pour effectuer vos tâches. Une méthode simple à mettre en place est la mise en place d’un hystérésis sur la mesure qui va permettre d’effectuer des sauts entre différentes mesures au prix de la précision.

Matériel

  • Ordinateur
  • Arduino UNO
  • Câble USB A Mâle/B Mâle
  • Capteur de température (par exemple)

Principe de fonctionnement

Le principe de l’hystérésis est de définir un comportement différent selon que la valeur augmente ou diminue. Donnons un exemple pratique. imaginons que vous vouliez commander un relais en fonction de la température mesurée, pour actionner un ventilateur, par exemple. Lorsque la température est supérieur ou égale à 40°C, le relais est fermé et lorsque la température est inférieure, le relais est ouvert. Si, pour une raison ou une autre, la température oscille entre 39.5 et 40°C, le relais va s’ouvrir et se fermer au passage de la valeur seuil.
La technique largement utilisée, est de définir un seuil HAUT et un seuil BAS pour fermer et ouvrir le relais. Nous allons spécifier à l’algorithme de fermer le relais lorsque la température est supérieure ou égale à 40 et de fermer le relais lorsque la température est inférieure à 30°C. C’est le principe de l’hystérésis.

Code

Nous allons créer une fonction qui va lire l’entrée analogique et appliquer l’hystérésis de mesure.

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




Résultat

Sur le moniteur série, nous voyons que l’état passe à 1 pour une valeur supérieure à 308 et passe à 0 pour une valeur inférieure à 304.

Applications

  • Gestion d’un relais avec un capteur de température

Sources

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 3.7 / 5. Vote count: 3

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?