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 (tal como um veículo agrícola) está fora do seu alcance de funcionamento, ou para detectar a orientação de um visor e assim alterar a sua disposição. Não dá tanta informação como um acelerómetro mas é mais robusto e não requer um programa especial para processar.

Material

  • Computador
  • Arduino UNO
  • Cabo USB A Masculino
  • Interruptor de Inclinação

Como funciona

O interruptor de inclinação (interruptor de inclinação ou sensor de esfera ou de mercúrio) consiste numa esfera (ou massa de mercúrio) e num contactor. Quando a orientação em relação ao horizonte muda, a bola, sujeita à gravidade, move-se e entra em contacto com dois pólos. Isto provoca um curto-circuito nos pólos e fecha o interruptor.

Esquema

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

  • Ligando o solo e um pino digital (aqui o pino 2)
  • Utilização de uma resistência de tracção externa (se o microcontrolador ou pino utilizado não tiver uma tracção interna)

Código

O interruptor de inclinação funciona como um interruptor. O código de funcionamento do sensor assemelhar-se-á, portanto, estreitamente ao de um botão de pressão. É bom notar que, geralmente, uma bola faz o contacto e fecha o interruptor. Acontece que esta bola salta quando o estado muda. Para evitar ter em conta estes ressaltos parasitas, utilizamos uma lógica anti-pulo.

//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 esfera, deverá ver o seu estado alterado no monitor de série. Ao fazer vários testes, deverá ser capaz de ajustar o parâmetro debounceDelay para assegurar que o estado lido é 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?