Étiquettes :
0
(0)

Un interrupteur tilt permet de détecter l’orientation ou l’inclinaison d’un système. Il est souvent utilisé pour indiquer si un système (comme un véhicule agricole) dépasse sa plage d’inclinaison de fonctionnement ou pour détecter l’orientation d’un écran et, ainsi, modifier sa mise en page. Il ne donne pas autant d’information qu’un accéléromètre mais est plus robuste et ne nécessite pas de programme particulier pour être traité.

Matériel

  • Ordinateur
  • Arduino UNO
  • Câble USB A Mâle/B Mâle
  • Tilt Switch

Principe de fonctionnement

L’interrupteur tilt (tilt switch ou ball tilt ou capteur à bille ou encore capteur à mercure) est composé d’une bille (ou d’une masse de mercure) et d’un contacteur. Lorsque l’orientation par rapport à l’horizon change, la bille, soumise à la gravité, bouge et rentre en contact avec deux pôles. Ce qui court-circuite ces derniers et ferme l’interrupteur.

Schéma

L’interrupteur tilt se branche, comme un bouton poussoir, de préférence sur une broche digitale du microcontrôleur car il retourne un état haut ou bas, fermé ou ouvert.

  • En reliant la masse et une broche digitale (ici pin 2)
  • En utilisant une résistance de pullup externe (si le microcontrôleur ou la broche utilisée n’a pas de pullup interne)

Code

L’interrupteur tilt fonctionne comme un interrupteur. Le code de gestion du capteur va donc fortement ressembler à celui d’un bouton poussoir. Il est bon de noter que , généralement, une bille fait le contact et ferme l’interrupteur. Il arrive que cette bille rebondisse au changement d’état. Pour éviter de prendre en compte ces rebonds parasites, nous utilisons une logique anti-rebond.

//Parameters
const int tiltPin = 2;

//Variables
bool tiltStatus = false;
bool oldTiltStatus = false;
unsigned long lastDebounceTime = 0;
unsigned long debounceDelay = 50;

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

void loop() {
  debounceTilt();
}

void debounceTilt( ) { /* function debounceTilt */
  ////debounce TiltSwitch
  int reading = digitalRead(tiltPin);
  if (reading != oldTiltStatus) {
    lastDebounceTime = millis();
  }
  if ((millis() - lastDebounceTime) > debounceDelay) {
    if (reading != tiltStatus) {
      tiltStatus = reading;
      Serial.print(F("Sensor state : ")); Serial.println(tiltStatus);
    }
  }
  oldTiltStatus = reading;
}

Résultats

En inclinant le capteur à bille, vous devriez voir son état changé sur le moniteur série. En faisant plusieurs tests, vous devriez pourvoir régler le paramètre debounceDelay afin de garantir que l’état lu est fiable

Applications

  • Détecter l’orientation d’un objet

Sources

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?