ABC del acelerometro.Posted by: 5Hertz on 17/02/2014in
Acelermetro4 Comments22,812 views 1 Los acelermetros son
dispositivos que miden la aceleracin, que es la tasa de cambio de
la velocidad de un objeto. Esto se mide en metros por segundo al
cuadrado (m/s) o en las fuerzas G (g). La sola fuerza de la
gravedad para nosotros aqu en el planeta Tierra es equivalente a
9,8 m/s, pero esto vara ligeramente con la altitud (y ser un valor
diferente en diferentes planetas, debido a las variaciones de la
atraccin gravitatoria). Los acelermetros son tiles para detectar
las vibraciones en los sistemas o para aplicaciones de
orientacin.
Ejes de medida de un acelermetro de tres ejesContenido:1.
Introduccion1.1 Cmo funciona un acelermetro?1.2 Cmo conectarse a un
acelermetro.1.3 Interfaz de comunicaciones.1.4 Potencia2. Cmo
seleccionar un acelermetro.2.1 Alcance.2.2 Caractersticas
adicionales.3. Gua de compra de uno de nuestros acelermetros3.1
Caractersticas a elegir de un acelermetro.3.1.1 Rango.3.1.2
Interfaz.3.2 Caractersticas especiales.3.3 Tabla comparativa.4. Cmo
utilizar su nuevo acelermetro con Arduino .4.1 Acelermetros
analgicos.4.1.1 Programacin analgicos.4.2 Acelermetros
digitales.4.2.1 Programacin digitales.
1.1 Cmo funciona un acelermetro?Los acelermetros son
dispositivos electromecnicos que detectan las fuerzas de
aceleracin, ya sea esttica o dinmica. Las fuerzas estticas incluyen
la gravedad, mientras que las fuerzas dinmicas pueden incluir
vibraciones y movimiento.Los acelermetros pueden medir la
aceleracin en uno, dos o tres ejes. Los de tres ejes son ms comunes
conforme los costos de produccin de los mismos baja.Generalmente,
los acelermetros contienen placas capacitivas internamente. Algunos
de estos son fijos, mientras que otros estn unidos a resortes
minsculos que se mueven internamente conforme las fuerzas de
aceleracin actan sobre el sensor. Como estas placas se mueven en
relacin el uno al otro, la capacitancia entre ellos cambia. A
partir de estos cambios en la capacitancia, la aceleracin se puede
determinar.
Sistema microelectromecnico para la aceleracin en 1 eje.Otros
acelermetros se pueden centrar en torno materiales piezoelctricos.
Estos pequea carga elctrica de salida estructuras cristalinas
cuando se coloca bajo tensin mecnica (por ejemplo aceleracin).
Sistema con tensin mecnica.Para la mayora de los acelermetros ,
las conexiones bsicas que se requieren para la operacin son el
poder y las lneas de comunicacin. Como siempre, leer la hoja de
datos para una correcta conexin.
1.2 Cmo conectarse a un acelermetroPara la mayora de los
acelermetros , las conexiones bsicas que se requieren para la
operacin son el poder y las lneas de comunicacin. Como siempre,
leer la hoja de datos para una correcta conexin.
1.3 Interfaz de comunicacionesLos acelermetros se comunicarse a
travs de un convertidor analgico , digital , o interfaz de conexin
modulada por ancho de impulsos(pwm) .Los acelermetros con una
interfaz analgica entregan un voltaje proporcional a la aceleracin
en cada uno de sus ejes (hablando de uno de 3 ejes) que normalmente
fluctan entre tierra y el valor de alimentacin Vcc. Estos suelen
ser ms baratos que los digitales y mucho ms fciles de usa en
momento ms veremos porqu.Los acelermetros con una interfaz digital
pueden comunicarse a travs de los protocolos de comunicacin de SPI
o I2C. Estos tienden a tener ms funcionalidad y ser menos
susceptibles al ruido que acelermetros analgicas .Los acelermetros
con salida modulada en ancho de pulso (PWM ) sus salidas don de
onda cuadrada con un periodo conocido, pero un ciclo de trabajo
vara con cambios en la aceleracin .
1.4 PotenciaLos acelermetros son generalmente dispositivos de
baja potencia . La corriente requerida cae tpicamente en la gama de
micro ( ) o mili amperios , con una tensin de alimentacin de 5 V o
menos . El consumo de corriente puede variar dependiendo de la
configuracin (por ejemplo , el modo de ahorro de energa en
comparacin con el modo de funcionamiento estndar). Estos modos
diferentes pueden hacer a los acelermetros muy adecuado para
aplicaciones que funcionan con batera .Asegrese de que los niveles
lgicos tanto del acelermetro como del microcontrolador correspondan
y ms en los digitales; ya que si esto no es as puede daar el
sensor.
2.Cmo seleccionar un acelermetroAntes de elegir usar un
acelermetro debemos considerar varios requerimientos donde entre
los principales se encuentra el nivel de alimentacin y el tipo de
comunicacin del que ya se habl anteriormente (cheque nuestros
tutoriales de cmo usar las interfaces digitales . Otras
caractersticas para su consideracin se muestran a continuacin.
2.1 AlcanceLa mayora de los acelermetros tendr un rango
seleccionable de las fuerzas que pueden medir. Estos intervalos
pueden variar de 1g hasta 250g. Tpicamente, el ms pequeo de la
gama, es el ms sensible. Por ejemplo, para medir pequeas
vibraciones sobre una mesa , utilizando un acelermetro de gama
pequea proporcionar datos ms detallados que el uso de uno de 250 g
(que es ms adecuado para cohetes ) .
2.2 Caractersticas adicionalesAlgunos acelermetros incluyen
caractersticas como la deteccin del grifo (til para las
aplicaciones de baja potencia ), deteccin de cada libre (
utilizados para activar la Proteccin del Disco Duro), compensacin
de temperatura ( para aumentar la precisin en situaciones de del
alto riesgo ) y deteccin de 0g. La necesidad de estos tipos de
caractersticas en el acelermetro ser determinada por la aplicacin
en la que se incorpora el acelermetro.
Este acelermetro puede ser configurado para realizar mediciones
entre 1.5g y 6g entre otras caractersticas especiales.
3. Gua de compra de uno de nuestros acelermetros.Acelermetros.Qu
mide un acelermetro? Bueno, la aceleracin. Ya sabes cmo algo rpido
se est acelerando o frenando. Vers, la aceleracin se visualiza en
unidades de metros por segundo al cuadrado ( m/s), o fuerza G ( g
), que es aproximadamente 9.8m/s; ( el valor exacto depende de su
elevacin y la masa del planeta en el que se est parado).Los
acelermetros se utilizan para detectar tanto esttica ( por ejemplo,
gravedad ) y dinmica ( por ejemplo, arranques repentinos / frenado
) de la aceleracin. Una de las aplicaciones ms ampliamente
utilizadas para acelermetros es la deteccin de inclinacin. Debido a
que estn afectados por la aceleracin de la gravedad, un acelermetro
le puede decir cmo se orienta con respecto a la superficie de la
Tierra. Por ejemplo, el iPhone de Apple o mejor aun el lumia 925 de
Nokia tienen un acelermetro, que lo deja saber si se encuentran
vertical u horizontal.Un acelermetro tambin se puede utilizar para
detectar el movimiento.Por ejemplo, un acelermetro en el WiiMote de
Nintendo se puede utilizar para detectar golpes de derecha y de
revs emulando los golpes de una raqueta de tenis, o el efecto que
se le pone a una bola de boliche. Por ltimo, un acelermetro tambin
se puede usar para detectar si un dispositivo est en un estado de
cada libre. Esta caracterstica se implementa en varias unidades de
disco duro: si esto se detecta manda la seal al Disco Duro para
guardar datos y bloquearse para evitar que el golpe dae los
datos.
3.1 Caractersticas a elegir de un acelermetro.Ahora que usted
sabe lo que hacen, vamos a considerar cules son las caractersticas
que debe buscar al seleccionar su acelermetro :
3.1.1 RangoLos lmites superior e inferior de lo que el
acelermetro puede medir tambin se conoce como su gama. En la mayora
de los casos, un rango menor a gran escala significa una salida ms
sensible, as que usted puede obtener una lectura ms precisa de un
acelermetro con un rango de baja escala.Usted debe seleccionar un
rango de deteccin que mejor se adapte a su proyecto, si el proyecto
slo ser sometido a aceleraciones entre 2g y -2g, un acelermetro
oscilado 24 no le va a dar mucha precisin.Contamos con un buen
surtido de acelermetros, con alcances mximos se extiende desde 1.5
g hasta 24g. La mayora de nuestros acelermetros se establecen en un
rango mnimo / mximo duro, sin embargo casi todos de los
acelermetros que tenemos disponen de rangos seleccionables .
3.1.2 Interfaz- Esta es otra de las caractersticas ms
importantes. Los acelermetros tendrn ya sea una interfaz Anloga,
Digital (I2C o SPI) o por Modulacin de Ancho de Pulso (PWM).
Actualmente solo disponemos sensores con las dos primeras
interfaces.Acelermetros con una salida analgica producirn una
tensin que es directamente proporcional a la aceleracin detectada.
En 0g, la salida analgica ser residir generalmente en alrededor de
la mitad de la tensin de alimentacin ( por ejemplo, 1,65 V para un
sensor de 3,3 V ). En general, esta interfaz es el ms fcil de
trabajar, usando solo un convertidor analgico a digital (ADC)
presente en la mayora de los microcontroladores.Acelermetros con
una interfaz de PWM producirn una onda cuadrada con una frecuencia
fija , pero el ciclo de trabajo del pulso variar con la aceleracin
detectada. Estos son bastante raro; por lo que no contamos con
ningn modelo pero siempre es bueno saber cmo funcionan.Acelermetros
digitales por lo general cuentan con una interfaz serial sea SPI o
I C. Dependiendo de su experiencia, estos pueden ser los ms
difciles de integrar con su microcontrolador. Dicho esto, los
acelermetros digitales son populares debido a que por lo general
tienen ms caractersticas, y son menos susceptibles al ruido que sus
homlogos analgicos.Nmero de ejes medidos Este est muy claro: de los
tres ejes posibles ( x , y, z ) , cuntos tiene sentido medir?
Acelermetros de tres ejes suelen ser el camino a seguir, sino que
son los ms comunes, as que aqu no hay mucho que pensarle.Consumo de
energa Si el proyecto funciona con pilas, es posible que desee
considerar la cantidad de energa que consumir el acelermetro. El
consumo de corriente se requiere por lo general ser en el rango de
los 100s A. Algunos sensores tambin disponen de la funcionalidad de
reposo para ahorrar energa cuando no se necesita el
acelermetro.
3.2 Caractersticas especialesLos acelermetros ms recientes
pueden tener algunas caractersticas ingeniosas, no basta con
producir los datos de aceleracin. Estos acelermetros nuevos pueden
incluir caractersticas como rangos seleccionables de medida,
control del sueo, 0 g de deteccin y deteccin de golpeteo.
3.3 Tabla comparativa.DispositivoRangoInterfazEjesRequerimientos
de energaCaractersticas especiales
MMA73611.5 g y 6gAnalgica32.2 a 3.6VDC,400A Compensacin de
temperatura Sensibilidad seleccionable. Deteccin 0g Modo de reposo
SELF-TEST
ADXL3353gAnalgica31.8 a 3.6VDC.350uA SELF-TEST
MMA8452 2g , 4 g, 8gDigital I2C31,95 V a 3,6 V6 uA - 165 uA Dos
pines de interrupcin Sensibilidad seleccionable SEFL-TEST Etc.
ADXL34516gDigitalSPI /I2C32.0 V to 3.6 V40 A Deteccin de doble
golpe Deteccin cada libre Dos pines de interrupcin
LIS331 6g , 12g, 24gDigitalSPI/ I2C32.16 V to 3.6 V10 A Dos
pines de interrupcin Dodo de reposo SEFL-TEST
MMA74552g, 4g, 8gDigital SPI/I2C32.4 V 3.6 V400 A Dos pines de
interrupcin Deteccin (golpe, vibracin y cada libre)
MMA76601.5gDigital I2C.32.4 V 3.6 V47 A Deteccin de orientacin
Deteccin de golpe y sacudida
4. Cmo utilizar su nuevo acelermetro con Arduino.Si usted ha
llegado a este punto ya tiene en proto o al menos en mente que
sensor va a usar para su proyecto. Cmo ya vimos anteriormente cada
sensor tiene ciertas caractersticas especiales que influyen a la
hora de tomar una decisin por cual dispositivo irse. Pero no se
dejar mentir que una de las principales aplicaciones que usted le
va a dar a su sensor es para saber el ngulo en que se encuentra con
respecto al vector de la gravedad.
4.1 Acelermetros Analgos.Empecemos por los que han elegido un
acelermetro analgico, ya sea porque lo tienen desde antes que
salieran los digitales o simplemente porque leyeron que son ms
fciles de usar (eso yo le dije).
Todo sabemos que el acelermetro mide el cambio de velocidad,
pero cuando este se encuentra esttico la nica aceleracin que
detecta es la gravedad que tira hacia abajo de este.Usando esta
aceleracin (gravedad) podemos calcular el ngulo de inclinacin del
sensor con respecto al eje vectorial de la gravedad. !Ahora un poco
de matemticas!.
Cmo vemos en la imagen cuando el acelermetro est en reposo,
solamente la fuerza de gravedad acta sobre el sensor y solo sobre
el eje Z. Entonces : x=0g y=0g z=1g
Pero una vez que inclinamos en sensor la fuerza de gravedad
genera componentes vectoriales en los ejes x,y,z. son estos
componentes los que ocupamos para poder estimar el ngulo de
inclinacin que tiene el sensor con respecto a la fuerza de gravedad
g y estos valores los voltajes que genera cada uno de los ejes al
ser cometidos a la aceleracin, los cuales mediremos con nuestro
cdigo que haremos en arduino .
4.1.1 Programacin para acelermetro analgico.(DESCARGAR).Una vez
que tengamos conectado nuestro sensor al arduino por los pines
analgicos, en la IDE empecemos a teclear el cdigo: Definimos los
pines analgicos en los que estn cada uno de los ejes.#define xPin
A4 // eje x en el pin analgico 4#define yPin A3 #define zPin A2
#define ST 2 //pin de activacin del sensor ADXL335
Definimos los mximos y mnimos valores del acelermetro para 1g de
aceleracin.int minVal = 405; //valores obtenidos de una prueba
anteriorint maxVal = 609;
Creamos tres variables tipo double para almacenar los ngulos en
cada eje.double x; double y; double z;
En el setup pondremos.void setup ( ) {
pinMode(ST,OUTPUT);digitalWrite(ST,LOW); Serial.begin(9600); }
En el loop leemos los valores analgicos de cada.int xRead =
analogRead(xPin); int yRead = analogRead(yPin); int zRead =
analogRead(zPin);
Convertimos las lecturas en valores proporcionales en el rango
de -100 a 100. Esto lo usamos ms que nada para poder darle sentido
a la inclinacin del sensor.int xAng = map(xRead, minVal, maxVal,
-100, 100); int yAng = map(yRead, minVal, maxVal, -100, 100); int
zAng = map(zRead, minVal, maxVal, -100, 100);
En la imagen se muestra el diagrama de cuerpo libre de los
vectores que genera cada eje y aplicndole la tangente inversa a
dichos vectores podremos calcular el ngulo en el que se encuentra
el objeto.Como por ejemplo para calcular el valor del ngulo en el
eje x con respecto al vector de gravedad sera : El comando antan2
Regresa el ngulo en radianes por lo que debemos convertirlo a
grados. Tambin este comando est definido para cuando uno de los
vectores sea 0; arroja un 0 o un 1 dependiendo del vector nulo.y =
RAD_TO_DEG * (atan2(-yAng, -zAng) + PI); x = RAD_TO_DEG *
(atan2(-xAng, -zAng) + PI); z = RAD_TO_DEG * (atan2(-yAng, -xAng) +
PI);
Imprimimos por serial las lecturas.Serial.print(x: );
Serial.print(x); Serial.print( y: ); Serial.print(y); Serial.print(
z: ); Serial.println(z);
4.2 Acelermetros digitales.Anteriormente vimos como leer y como
usar esas lecturas para calcular al ngulo de inclinacin de un
acelermetro analgico. Ahora veamos cmo obtener los mismo resultados
con un acelermetro digital.En los acelermetros la interfaz de
comunicacin puede ser I2C o SPI, cada una con caractersticas
propias (como vienen explicado en los tutoriales de cada uno de
ellos).Para este tutorial utilizaremos el sensor ADXL345 usando la
interfaz I2C.
Diagrama de conexin del ADXL345 con el arduino UNO.Hay que tener
en cuenta que al estar usado una interfaz digital los valores
arrojados por el acelermetro ya no son voltajes variables; ahora
son paquetes de bytes que vamos a leer por los pines SDA y SCL
localizados en el A4 y A5 del arduino pero no se deje engaar estos
pines sern usados como pines digitales no cmo analgicos. Una vez
entendido esto y teniendo todo bien conectado vamos a proceder a
desarrollar el cdigo.
4.2.1 Programacin para acelermetro digital.(DESCARGAR)
Importamos la librera Wire.h que es la que tiene el protocolo para
el I2C .#include
Definimos las direcciones de los registros que usaremos del
sensor; estas vienen especificadas en la hoja de datos del
fabricante.#define DEVICE (0x9D) // Direccin del dispositivo como
se especifica en la hoja de datoschar POWER_CTL = 0x2D; //Registro
de Control de Potenciachar DATA_FORMAT = 031;char DATAX0 = 032;
//Dato Eje X 0char DATAX1 = 033; //Dato Eje X 1char DATAY0 = 034;
//Dato Eje Y 0char DATAY1 = 035; //Dato Eje Y 1char DATAZ0 = 036;
//Dato Eje Z 0char DATAZ1 = 037; //Dato Eje Z 1
Definimos los mximos y mnimos arrojados por cada eje, en el eje
X y Y los valores son los mismos, pero en el eje Z no; as usaremos
estos valores para despus escalarlos a los valores de los otros
ejes, tambin definimos las variables donde se almacenaran los
ngulos.byte _buff[6];int minVal = -142; int maxVal = 112;double X;
double Y; double Z;
En el setup inicializamos la librera wire, la comunicacin serial
y configuraremos ciertos parmetros del sensor.// unirse a bus i2c
(direccin opcional para master)Wire.begin(); // inicia serial para
la salida. Asegrese de que se ajust el Monitor Serial a la misma
velocidad.Serial.begin(9600); Serial.print(init);
Nota: si usted no comprende aun muy bien cmo funciona el I2C
puede checar nuestros tutoriales de interfaces digitales para una
mejor explicacin.//Poner el ADXL345 en un rango de +/- 4G
escribiendo el valor 001 al registro DATA_FORMAT.
writeTo(DATA_FORMAT, 001);//Poner el ADXL345 en Modo de Medicin
escribiendo el valor 008 al registro POWER_CTL.writeTo(POWER_CTL,
008);
Nota: writeTo es una funcin que contiene los el cdigo I2C para
platicar con el acelermetro, esta funcin se mostrar mas abajo. En
el loop ponemos lo siguiente:uint8_t howManyBytesToRead = 6;//lee
los datos de aceleracin del ADXL345readFrom( DATAX0,
howManyBytesToRead, _buff);
// cada lectura de eje viene con una resolucin de 10 bit, es
decir, 2 bytes. Primero el Byte menos significativo!// de esta
forma, estamos convirtiendo los dos bytes en un intint x =
(((int)_buff[1])