Conexión del sensor del interruptor de inclinación de bola a Arduino

En el emocionante mundo de la programación y la electrónica, los proyectos con Arduino se han convertido en una forma popular de aprender y crear dispositivos interactivos. En este artículo, exploraremos cómo conectar y utilizar un sensor de interruptor de inclinación de bola con Arduino. ¡Prepárate para sumergirte en el fascinante mundo de la tecnología y la creatividad!

Si desea detectar cuando algo se mueve, se inclina o tiembla sin tener que lidiar con las complejidades de un acelerómetro, el sensor de inclinación de bola puede ser la opción más asequible.

descripción general

Un sensor de inclinación de bola es más bien un interruptor que puede detectar movimiento, orientación o inclinación básicos. Estos interruptores están diseñados para que la conexión eléctrica se establezca o se interrumpa cuando se inclina lo suficiente. Esta señal se puede utilizar como indicador o para encender o apagar algo.

Son pequeños, baratos, fáciles de usar y nunca se desgastan. Su simplicidad los hace populares para su uso en juguetes, aparatos, robots y otros dispositivos cuya función depende de la inclinación. Por esta razón a veces se les llama “El acelerómetro del pobre“.

Conexión del sensor del interruptor de inclinación de bola a Arduino

Aunque todos los sensores de inclinación funcionan prácticamente igual, sus tamaños y especificaciones pueden variar ligeramente.

Dimensiones 5,5 mm (0,22 pulgadas) de diámetro y 13,5 mm (0,53 pulgadas) de longitud
Tensión máxima de funcionamiento (VCC) Hasta 20V
Corriente máxima de funcionamiento (Imax) 30mA
Rango de sensibilidad Movimientos de unos 5 a 10 grados.
esperanza de vida Más de 50.000 ciclos (interruptor)

Sensor de inclinación versus acelerómetro

Si bien el sensor de inclinación no es tan preciso ni flexible como un acelerómetro, puede detectar bastante bien el movimiento o la orientación. Otra ventaja de utilizar un sensor de inclinación es que se puede utilizar como sensor independiente. El acelerómetro, por otro lado, genera un voltaje digital o analógico que debe analizarse mediante circuitos adicionales.

¿Cómo funcionan los sensores de inclinación de bolas?

Un sensor de inclinación de bola normalmente consta de un tubo de metal en el que rueda una pequeña bola de metal. Un extremo de la cavidad tiene dos elementos conductores (polos). El sensor está diseñado de modo que si el ángulo es suficiente, la bola pueda rodar y se pueda establecer o romper una conexión eléctrica.

Conexión del sensor del interruptor de inclinación de bola a Arduino

Cuando el sensor está en posición vertical, la bola toca los postes y crea una conexión eléctrica. Y cuando el sensor se inclina, la bola se sale de los polos y la conexión se rompe.

Probando un sensor de inclinación de bola

Probar un sensor de inclinación de bola es muy sencillo. Pon tu multímetro en modo de prueba de continuidad y toca los dos cables con las sondas. Luego inclínelo para determinar el ángulo en el que se abre y se cierra el interruptor.

Cuando apunta hacia arriba, el interruptor está cerrado (continuidad total).

Conexión del sensor del interruptor de inclinación de bola a Arduino

Cuando apunta hacia abajo, el interruptor está abierto (sin continuidad).

Conexión del sensor del interruptor de inclinación de bola a Arduino

Cableado de un sensor de inclinación de bola a un Arduino

Conectar el sensor de inclinación a tu Arduino es bastante sencillo. Todo lo que necesitas hacer es conectar un pin a cualquier pin digital del Arduino y el otro a GND.

Si conecta el sensor de esta manera, deberá habilitar la resistencia pull-up «integrada» del Arduino para el pin de entrada. De lo contrario, necesitarás usar una resistencia pull-up externa de 10K en tu circuito.

La siguiente figura muestra el cableado.

Conexión del sensor del interruptor de inclinación de bola a Arduino

Código Arduino: lectura de un sensor de inclinación de bola

A continuación se muestra un boceto de Arduino muy simple que enciende el LED incorporado (conectado al pin 13) cuando el sensor de inclinación se inclina en una dirección y se apaga cuando se inclina en la otra dirección.

const int tiltPin = 2;		// tilt sensor pin is connected to pin 2
const int ledPin = 13;		// built-in LED is connected to pin 13

void setup() {
	pinMode(tiltPin, INPUT);		// set sensor pin as an INPUT pin
	digitalWrite(tiltPin, HIGH);	// turn on the built in pull-up resistor
	pinMode(ledPin, OUTPUT);		// set LED pin as an OUTPUT pin
}

void loop() {
	if (digitalRead(tiltPin)) { // check if the pin is high
		digitalWrite(ledPin, HIGH);	// turn on the LED
	}
	else { // if it isn't
		digitalWrite(ledPin, LOW);	// do the opposite
	}
}

El código se explica por sí mismo. Primero, se definen dos constantes que indican los pines de Arduino a los que están conectados el sensor de inclinación y el LED incorporado. En la configuración, el pin del sensor se configura como entrada mientras que el pin del LED se configura como salida. Además, se activa el pull-up interno para el pin del sensor. En el bucle, el LED incorporado se enciende cuando el pin del sensor está ALTO; de lo contrario, se apaga.

Es un boceto bastante corto, funciona muy bien, pero hay un problema. Si miró el LED mientras inclinaba el sensor, es posible que haya notado un parpadeo. Eso es porque algo llamado «interruptor de salto'.

¿Qué es Switch Bounce y cómo solucionarlo?

Cuando el sensor apunta hacia arriba, la bola rueda sobre las barras y las pone en cortocircuito, actuando como un interruptor. En un mundo ideal, si conectáramos esto a un analizador de señales, obtendríamos una señal que se vería así:

Conexión del sensor del interruptor de inclinación de bola a Arduino

Así es como debería funcionar un sensor de inclinación de bola y así es como piensa la mayoría de la gente. Sin embargo, en realidad se parece más a esto:

Conexión del sensor del interruptor de inclinación de bola a Arduino

Lo ideal es que el contacto se produzca inmediatamente. En cambio, la pelota rebota un poco, lo que hace que el contacto se abra, se cierre, se abra, se cierre, etc. Es un fenómeno puramente mecánico conocido como “Alternar rebote', como dejar caer una pelota: rebota antes de aterrizar finalmente en el suelo.

Entonces la señal sube y baja varias veces antes de finalmente estabilizarse. Esto sucede durante un período de tiempo

El proceso de eliminar los rebotes del interruptor se llama «rebote' que se puede lograr mediante programación. Normalmente, el salto del interruptor se produce dentro de una ventana de 50 ms. Por lo tanto, un retraso de 50 ms después de detectar un cambio de interruptor es suficiente para eliminarlo.

Código Arduino: lectura de un sensor de inclinación de bola (más confiable)

Aquí hay un nuevo boceto reescrito para mostrar cómo evitar el rebote de una entrada. En este boceto leemos el sensor de inclinación dos veces en un corto período de tiempo para asegurarnos de que esté definitivamente inclinado.

Continúe y cárguelo en su Arduino. Ahora puedes ver que el LED ya no parpadea cuando inclinas el sensor (si el problema persiste, intenta aumentar el tiempo de rebote).

const int tiltPin = 2;		// tilt sensor pin is connected to pin 2
const int ledPin = 13;		// built-in LED is connected to pin 13

int ledState = HIGH;		// the current state of the LED
int tiltState;				// the current reading from the sensor
int lastTiltState = LOW;	// the previous reading from the sensor

unsigned long time = 0;		// the last time the output pin was toggled
unsigned long debounceDelay = 50;	// the debounce time, increase if the output flickers

void setup() {
	pinMode(tiltPin, INPUT);		// Set sensor pin as an INPUT pin
	digitalWrite(tiltPin, HIGH);	// turn on the built in pull-up resistor
	pinMode(ledPin, OUTPUT);		// Set LED pin as an OUTPUT pin
}

void loop() {
	// read the state of the tilt sensor
	tiltState = digitalRead(tiltPin);

	// If the sensor really tilted?
	if (tiltState != lastTiltState) {
		// reset the debouncing timer
		time = millis();
	}

	if ((millis() - time) > debounceDelay) {
		// whatever the switch is at, its been there for a long time
		// so lets settle on it!
		ledState = tiltState;
	}
	digitalWrite(ledPin, ledState);

	// Save the last tiltState so we keep a running tally
	lastTiltState = tiltState;
}

Explicación del código:

El boceto comienza especificando los pines de Arduino a los que están conectados el sensor de inclinación y el LED incorporado.

const int tiltPin = 2;
const int ledPin = 13;

Tres números enteros, a saber. ledState, tiltState Y lastTiltState se definen de tal manera que almacenan el estado actual del LED, el valor medido actual del sensor y el valor medido anterior del sensor o LED.

int ledState = HIGH;
int tiltState;
int lastTiltState = LOW;

En el mismo ámbito global, se definen dos variables para almacenar el evento de inclinación de la carga y el tiempo de rebote. Tenga en cuenta que estas variables son valores largos sin signo porque el tiempo (medido en milisegundos) aumenta rápidamente en número y excede un valor entero.

unsigned long time = 0;
unsigned long debounceDelay = 50;

La sección de configuración es la misma que antes donde configuramos el pin del sensor como entrada y el pin del LED como salida; y active el pull-up interno del lápiz con sensor.

void setup() {
	pinMode(tiltPin, INPUT);
	digitalWrite(tiltPin, HIGH);
	pinMode(ledPin, OUTPUT);
}

En el bucle, primero leemos el estado del sensor de inclinación y comprobamos si este estado es diferente del último estado de inclinación (ya sea debido a inclinación o ruido). De lo contrario, registramos este evento de cambio de estado almacenando la hora actual. Para ello utilizamos el milisegundos() Función que rastrea el tiempo transcurrido desde que la placa Arduino comenzó a ejecutar el programa actual.

tiltState = digitalRead(tiltPin);

if (tiltState != lastTiltState) {
	time = millis();
}

A continuación vemos si el sensor cambia de estado en 50 ms (debounceDelay) ventana, si este no es el caso, significa que el sensor está realmente inclinado (y no es causado por el rebote del interruptor). Luego alternamos el LED y guardamos el último estado de inclinación para que podamos mantener un conteo continuo.

if ((millis() - time) > debounceDelay) {
	ledState = tiltState;
}
digitalWrite(ledPin, ledState);

lastTiltState = tiltState;

Error 403 The request cannot be completed because you have exceeded your quota. : quotaExceeded



Conexión del sensor del interruptor de inclinación de bola a Arduino

Introducción

El sensor de inclinación de bola es más bien un interruptor que puede detectar movimiento básico, orientación o inclinación. Estos interruptores están diseñados de tal manera que un nivel suficiente de inclinación establece o rompe la conexión eléctrica.

Son pequeños, económicos, fáciles de usar y nunca se desgastan. Su simplicidad los hace populares para su uso en juguetes, dispositivos, robots y otros dispositivos cuyo funcionamiento depende de la inclinación. Es por eso que a veces se les llama el «acelerómetro del hombre pobre».

Dimensiones

  • Diámetro: 5.5 mm
  • Longitud: 13.5 mm
  • Voltaje máximo de operación (VCC): hasta 20V
  • Corriente máxima de operación (Imax): 30mA
  • Rango de sensibilidad: Movimientos de alrededor de 5 a 10 grados
  • Vida útil: 50,000+ ciclos

Sensor de inclinación vs. Acelerómetro

Aunque no son tan precisos o flexibles como un acelerómetro, el sensor de inclinación puede detectar el movimiento u orientación de manera bastante efectiva. Otra ventaja de usar un sensor de inclinación es que puede ser utilizado como un sensor independiente. El acelerómetro, en cambio, produce un voltaje digital o analógico que debe ser analizado con circuitos adicionales.

¿Cómo funcionan los sensores de inclinación de bola?

Un sensor de inclinación de bola está típicamente compuesto por un tubo de metal con una pequeña bola de metal que rueda dentro de él. Uno de los extremos de la cavidad tiene dos elementos conductivos (polos). El sensor está diseñado de tal manera que un nivel suficiente de inclinación permite que la bola ruede, estableciendo o rompiendo una conexión eléctrica.

Pruebas de un sensor de inclinación de bola

Probar un sensor de inclinación de bola es muy simple. Coloque el multímetro en modo de «prueba de continuidad» y toque las sondas a los dos conductores. Luego inclínelo para determinar el ángulo en el que se abre y se cierra el interruptor.

Conexión de un sensor de inclinación de bola a Arduino

Conectar el sensor de inclinación a tu Arduino es bastante sencillo. Todo lo que necesitas hacer es conectar un pin a cualquier pin digital del Arduino y el otro a GND.

Si conectas el sensor de esta manera, necesitarás activar la resistencia pull-up interna del Arduino para el pin de entrada. De lo contrario, debes usar una resistencia pull-up externa de 10K en tu circuito.

Código de Arduino – Lectura de un sensor de inclinación de bola

A continuación se muestra un boceto básico de Arduino que encenderá el LED incorporado (conectado al pin 13) cuando el sensor de inclinación se inclina en una dirección y lo apagará cuando se incline en la otra dirección.

¡Encuentra el artículo completo aquí!

2 comentarios en «Conexión del sensor del interruptor de inclinación de bola a Arduino»

Deja un comentario