fbpixel
Etiquetas:
0
(0)

Un interruptor de inclinación sirve para detectar la orientación o inclinación de un sistema. Suele utilizarse para indicar si un sistema (como un vehículo agrícola) está fuera de su rango de inclinación operativo, o para detectar la orientación de una pantalla y cambiar así su disposición. No da tanta información como un acelerómetro, pero es más robusto y no requiere un programa especial para procesarlo.

Material

  • Ordenador
  • Arduino UNO
  • Cable USB A macho
  • Interruptor de inclinación

Cómo funciona

El interruptor basculante (interruptor de inclinación o inclinación de bola o sensor de mercurio) consta de una bola (o una masa de mercurio) y un contactor. Cuando cambia la orientación con respecto al horizonte, la bola, sometida a la gravedad, se desplaza y entra en contacto con dos polos. Esto cortocircuita los polos y cierra el interruptor.

Esquema

El interruptor basculante se conecta, como un pulsador, preferiblemente a un pin digital del microcontrolador porque devuelve un estado alto o bajo, cerrado o abierto.

  • Conectando la masa y un pin digital (aquí pin 2)
  • Utilizar una resistencia de pull-up externa (si el microcontrolador o el pin utilizado no tienen un pull-up interno).

Código

El sensor de inclinación funciona como un interruptor. Por tanto, el código de funcionamiento del sensor se parecerá mucho al de un pulsador. Es bueno tener en cuenta que, por lo general, una bola hace el contacto y cierra el interruptor. Sucede que esta bola rebota cuando cambia el estado. Para no tener en cuenta estos rebotes parásitos, utilizamos una lógica anti-rebote.

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

Al inclinar el sensor de bola, debería ver su cambio de estado en el monitor serie. Haciendo varias pruebas, deberías ser capaz de ajustar el parámetro debounceDelay para asegurar que la lectura del estado es fiable.

Aplicaciones

  • Detección de la orientación de un objeto

Fuentes

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuarlo!

Promedio de puntuación 0 / 5. Recuento de votos: 0

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

Ya que has encontrado útil este contenido...

¡Sígueme en los medios sociales!

¡Siento que este contenido no te haya sido útil!

¡Déjame mejorar este contenido!

Dime, ¿cómo puedo mejorar este contenido?