fbpixel
Etiquetas:
0
(0)

Um interruptor de inclinação é utilizado para detectar a orientação ou inclinação de um sistema. É frequentemente utilizado para indicar se um sistema (como um veículo agrícola) está para além da sua gama de inclinação operacional, ou para detectar a orientação de um ecrã e assim alterar a sua disposição. Não fornece tanta informação como um acelerómetro, mas é mais robusto e não requer qualquer programa especial para ser processado.

Hardware

  • Computador
  • Arduino UNO
  • Cabo USB A macho
  • Interruptor de inclinação

Princípio de funcionamento

O interruptor de inclinação é constituído por uma esfera (ou uma massa de mercúrio) e um contactor. Quando a sua orientação em relação ao horizonte muda, a bola, sujeita à gravidade, desloca-se e entra em contacto com dois pólos. Isto provoca um curto-circuito nos pólos e fecha o interruptor.

Diagrama

O interruptor de inclinação é ligado, como um botão de pressão, de preferência a um pino digital no microcontrolador, porque devolve um estado alto ou baixo, fechado ou aberto.

  • Ligando a terra e um pino digital (neste caso, o pino 2)
  • Utilizando uma resistência pull-up externa (se o microcontrolador ou o pino utilizado não tiver um pull-up interno)

Código

O interruptor de inclinação funciona como um interruptor. Por conseguinte, o código de gestão do sensor assemelha-se muito ao de um botão de pressão. Vale a pena notar que, geralmente, uma bola faz contacto e fecha o interruptor. Por vezes, esta bola salta quando o estado muda. Para evitar ter em conta estes saltos parasitas, utilizamos uma lógica anti-salto.

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

Resultados

Ao inclinar o sensor de esferas, deverá ver a alteração do seu estado no monitor de série. Ao efectuar vários testes, deverá ser possível ajustar o parâmetro debounceDelay para garantir que a leitura do estado é fiável.

Aplicações

  • Detectar a orientação de um objecto

Fontes

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?