Acelerómetro de tres ejes

Acelerometro_de_tres_ejes_Tinkerkit

¿Qué es un acelerómetro? Un acelerómetro es, como su propio nombre indica, un sensor que mide la aceleración producida por el movimiento. Su uso es muy común en la electrónica actual para detectar el movimiento de dispositivos tales como teléfonos móviles, tabletas o pads de videoconsolas, ya que, al conocer el sentido en el que se produce dicho movimiento, podemos saber la posición del sensor dentro de un espacio tridimensional.

Ejes_xyz

Podemos poner como ejemplo el caso de los teléfonos móviles. Todo aquel que tenga un móvil más de una vez lo habrá girado para ver la pantalla en horizontal o en vertical, como cuando tenemos una foto que se visualiza mejor en una posición que en otra. Pues dicha acción de rotar la imagen en la pantalla se realiza gracias a un acelerómetro. Dicho sensor informa al sistema operativo del desplazamiento producido proporcionándole los datos generados por el movimiento, a continuación, el teléfono compara esos datos con los almacenados en una tabla. Dicha tabla tiene un registro en donde están relacionadas las acciones a ejecutar en función de unos valores concretos. Si los valores generados por el acelerómetro coinciden con alguno de los registros de la tabla, el teléfono ya sabe que debe hacer.

Según la información que proporcionan, existen varios tipos de acelerómetros, de un eje, de dos o de tres. Los sensores de tres ejes proporcionan información sobre las coordenadas X, Y y Z dentro del espacio, por contra, los sensores de dos ejes solo proporcionan información sobre las coordenadas X e Y. En este artículo trabajaremos con el modelo de tres ejes, aunque solo usaremos dos de ellos, en concreto los ejes X e Y. Suficiente para nuestro propósito.

Acelerómetro de tres ejes TinkerKit

El acelerómetro que usaremos en este artículo es un sensor de tres ejes de la empresa TinkerKit. Podría haber escogido un sensor de otra marca (Adafruit, SparkFun…), pero este era el que tenía más a mano. Sea de la marca que sea, no se diferencian mucho en cuanto a su uso se refiere, por lo que una vez cogido el concepto, es fácil utilizar uno u otro.

Acelerometro_TinkerKit_Back

Vista inferior del acelerómetro.

Acelerometro_TinkerKit_Front

Vista superior del acelerómetro.

Una particularidad de este acelerómetro, es que lleva dos conectores soldados. Su objetivo (al igual que el de los demás sensores de dicha marca) es conectar el circuito al Sensor Shield de TinkerKit. Dicho shield, es un modulo que permite conectar sensores y actuadores TinkerKit directamente a la placa Arduino sin el uso de la protoboard. No es obligatorio tener el mencionado shield, de hecho, no lo vamos a utilizar para este proyecto.

TinkerKit_Sensor_Shield

Sensor Shield de TinkerKit conectado a un Arduino Uno.

Por defecto, el sensor solo suministra los valores de los ejes X e Y. Si nos fijamos en la vista inferior de la placa veremos que cada conector tiene tres pines, dos para la alimentación y uno para el valor del eje. Si queremos obtener los valores del eje Z, tendremos que soldar un cable al pin marcado como Z.

El proyecto que vamos a llevar a cabo es un sencillo programa que lee los datos suministrados por el sensor y los muestra por el monitor serie. Una vez sepamos hacerlo, será nuestra imaginación la encargada de ir más allá, así que…, manos a la obra!!!

Montando el circuito

Para montar el circuito de este proyecto necesitamos los siguientes componentes:

– 1 acelerómetro de tres ejes TinkerKit.

– 1 Arduino UNO R3.

– Cables.

– 1 Protoboard.

Una vez tenemos los componentes necesarios, debemos seguir los pasos siguientes:

1 – Conectamos la alimentación y la tierra a la protoboard.

2 – Seguidamente, conectamos los pines de alimentación de cada eje del acelerómetro a la protoboard.

3 – Ahora conectamos el pin de datos del eje X del sensor al pin analógico A0 de nuestro Arduino.

4 – Y por último, unimos el pin de datos del eje Y al pin analógico A1.

Terminado de montar el circuito, deberíamos de tener algo parecido a lo mostrado en la siguiente figura.

Diseño de protoboard

El esquema eléctrico correspondiente sería:

Esquema de conexiones

El código

Comencemos por comentar paso a paso el código fuente con el que vamos a programar nuestro Arduino.

En primer lugar, crearemos dos constantes para identificar  los dos pines de entrada de nuestra placa y dos variables para almacenar los valores leídos por el acelerómetro.

//Declaramos los pines de entrada.
const int analogInPinX = A0;
const int analogInPinY = A1;
int sensorValueX = 0;    //Valor leido del pin X del accelerometro.
int sensorValueY = 0;    //Valor leido del pin Y del accelerometro.

Como el sensor que estamos utilizando proporciona una salida analógica comprendida entre 0 y 255, necesitamos mapear las lecturas obtenidas y almacenarlas en sendas variables.

int outputValueX = 0;    //Valor de salida analogica (PWM).
int outputValueY = 0;    //Valor de salida analogica (PWM).

Creamos la función setup().

void setup() {

    Serial.begin(9600);    
    Serial.println("Acelerometro Tinkerkit");

}

Ya dentro de la función loop(), empezamos por leer los datos que nos proporciona el acelerómetro y a continuación, los mapeamos.

void loop() {

    //Leemos los valores de entrada.
    sensorValueX = analogRead(analogInPinX);
    sensorValueY = analogRead(analogInPinY);

    /*mapeamos los valores leidos para que esten dentro del
    rango de salida analogica. */
    outputValueX = map(sensorValueX, 0, 1023, 0, 255);
    outputValueY = map(sensorValueY, 0, 1023, 0, 255);

Lo último que nos queda por hacer es mostrar la información por el monitor serie y añadir un delay, con el lapso de tiempo que más nos guste.

    //Mostramos los resultados por el monitor serie.
    Serial.print("Valor X: ");
    Serial.println(outputValueX);
    Serial.print("Valor Y: ");
    Serial.println(outputValueY);
    Serial.println();

    delay(1000);

}//Fin de la funcion loop.

Puesta en marcha

Cuando conectemos el circuito y el monitor serie empiece a mostrar los valores registrados por el acelerómetro, veremos como estos cambian en función de como rotemos el sensor.

Si queremos saber dentro de que rango el acelerómetro hace sus medidas, tenemos que tener claro cual es la posición inicial del mismo. Podemos tomar como referencia una serigrafía que suele estar presente en casi todos los acelerómetros del mercado.

Serigrafia de referencia

Serigrafía de referencia.

Una vez tenemos una posición inicial, podemos ir girando el sensor hasta llegar a la que nos interese y una vez ahí, anotamos los valores que aparecen en el monitor serie.

Conclusión

Con este proyecto hemos aprendido unas nociones básicas de como utilizar un acelerómetro con Arduino. Se ha utilizado un sensor del fabricante TinkerKit, pero la metodología es la misma que para un acelerómetro de otro fabricante con características similares.

Podemos ver los valores leídos por el sensor a través del monitor serie, pero… ¿y si en lugar de limitarnos a ver los resultados realizamos alguna otra acción? ¿Podríamos cambiar el color de un led RGB en función del giro del sensor? ¿Y si creamos una tabla con una relación entre los valores detectados y un sonido a reproducir para cada uno de ellos?

Espero que os haya gustado.

Un saludo y muchas gracias por leer este artículo.  ^_^

 

Referencias

– “Así funcionan las tripas de tu móvil: el acelerómetro, un sensor que te puede salvar la vida.” Artículo escrito por Lucía El Asri (@LuciaElasri, El Refugio) el 26 de junio de 2014 en hojaderouter.com

– “ABC del acelerómetro.” Artículo escrito por 5Hertz (@5HzElectronica) el 17 de febrero de 2014 en 5hertz.com

Descargas

Descarga desde Github el código fuente del programa utilizado en este artículo.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s