Anda di halaman 1dari 16

Acelermetros de 3 ejes, lo

que necesitas saber


febrero 12, 2015 Gustavo Circelli Arduino, Proyectos

El siguente Post tiene como objetivo la comprensin de los


acelermetros, como probarlos y saber como utilizarlos
posteriormente. Nos hemos ayudado de Arduino para
implementar una manera de estudiarlos. Previo al uso de
tales sensores en nuestros proyectos, es importante conocer
cmo funcionan conceptualmente sin entrar en profundidad
en la arquitectura interna. Solo nos vamos a centrar en lo que
es realmente importante comprender para poder utilizarlos.
Antes tendremos que revisar conceptos tiles que
utilizaremos en este estudio. Sabemos que todos los
cuerpos en la superficie terrestre estn sometidos a la
fuerza de gravedad, que es una fuerza que nos
empuja hacia el centro de la tierra. Cualquier objeto e
independiente de su masa, se ver acelerado hacia la
tierra a un valor g=9,8 m/s2 (depende tambin del
lugar geogrfico), y ms an, ya en la superficie de la
misma, contina siendo acelerado y es lo que permite
medir el peso de una persona o cualquier objeto.
El peso es una fuerza que est dada por la ecuacin
de Newton F=mg (fuerza es igual al producto de la
masa por la aceleracin), siendo m la masa del objeto.
Es muy comn confundir masa con peso, es errneo
decir que por ejemplo Juan pesa 78 Kg, en realidad la
balanza mide cuanto el producto demg , y los 78kg
son una unidad de masa.

El peso de Juan sera 78 g = 764 Kg m/s2 = 764


Newtons. La balanza divide por un factor 9,8, 10 para
redondear y muestra 78 Kg.
La masa es una propiedad fundamental de todos los
objetos. Se defini al Kilogramo hacia 1889 en la
revolucin francesa, y es un prototipo internacional de
una aleacin de Platino e Iridio. Dicho elemento
patrn pesa 9.8 N. Es decir, no se eligi cualquier
patrn de masa, sino aquella que represente 9,8 N.
La masa es una caracterstica inercial de los objetos, y
es la propiedad que nos dice que un objeto
permanecer en equilibrio a menos que se le aplique
una determinada fuerza (1ra de Newton). Este efecto
se puede notar, por ejemplo, al ir en un vehculo. Si el
vehculo est en reposo, la masa de los pasajeros
estn en equilibrio, de igual manera que si viajasen a
150 Kmt/h. Pero si se frena bruscamente, la fuerza de
frenado se aplica al vehculo y no a los pasajeros, por
lo tanto los mismos continuarn viajando a
100Kmts/h. Lasfuerzas G , tienen como unidad a
la gravedad g, es decir 1 fuerza G=9.8m/seg2, el
termino fuerza aplicado no es correcto, ya que la
gravedad no es una fuerza, pero as se la denomina
como una medida para identificar a la gravedad,
entonces los cambios de aceleracin producen
Fuerzas G. Por ejemplo supongamos que un vehculo
viaja a 100 Km/h y se estrella contra un muro y pasa a
velocidad cero en 1 seg. Si suponemos que la
aceleracin ( negativa) es constante , podemos
calcularla:
Teniendo en cuenta que ( Vf=Vi+a*t) Vf=0, Vi=100
Km/h, t=1seg a= -100*1000/(1*60*60) = -27.7 m/s2 ,

si 1G= 9.8 , sera una fuerza de casi 3G , es decir 3


veces la gravedad. Nuestro cuerpo est sometido
a 1g , es decir que nuestro peso podramos decir que
posee 1g, este impacto genera entonces una fuerza 3
veces nuestro peso.
Recordar que F=mxa, donde la aceleracin a es la
denominada fuerza G. Es una manera mentalmente
simple para comparar la fuerza con nuestro peso,
sabiendo que nuestro peso o el de cualquier objeto
representa 1G.
Sensor de aceleracin, Acelermetro MMA7361

Aceler
metro MMA7361
Los acelermetros, como el sensor MMA7361 son
capaces de medir la aceleracin en 3 dimensiones,
llamados ejes X, Y, Z. Todo cuerpo posee un centro de
masa que es el lugar donde se equilibran todas sus
fuerzas. Si aplicamos una fuerza en un centro de
masa, el cuerpo no va a rotar, pero si se aplica

desplazado de su centro experimentara un momento


de fuerza que lo har rotar.
Cuando un objeto, en general se mueve por alguna
fuerza aplicada, esa fuerza se puede descomponer
como componentes de fuerza parciales sobre los 3
ejes, es decir Rx, Ry y Rz, el mdulo o intensidad de la
fuerza se calcula aplicando el teorema de Pitgoras
en tres dimensiones:
R2 = Rx2+Ry2+Rz2

Diagrama
de componentes de Fuerza en 3 D
El origen podemos considerar que corresponde al
centro de masa. Esta Fuerza tendr asociados 3
ngulos, uno respecto de cada eje tal que: cos(Axr) =
Rx / R cos(Ayr) = Ry / R cos(Azr) = Rz / R Y los
ngulos: Axr = arccos(Rx/R) Ayr = arccos(Ry/R) Azr =
arccos(Rz/R) ()ver
fuente
de
referencia
starlino_Guide)

De esta manera, si nuestro acelermetro sensor nos


est indicando cierta medida de magnitud aplicada en
cada eje, podremos realizar estos clculos para
determinar intensidad y ngulos de la Fuerza. Al
adquirir nuestro mdulo acelermetro, es importante
leer su Datasheet para conocer la referencia de sus
ejes y su orientacin. Por ejemplo el MMA7361 tiene
la siguiente disposicin: Es decir, colocado de esta
manera vemos como nombra los ejes y su signo, el
cual es de suma importancia.

referencia ejes acelerometro


Pensemos ahora ,y a los efectos didcticos, que el
Acelermetro est conformado por un receptculo en
su centro de masa, y dentro del mismo tres pequeas
bolillas de masa xx, donde cada una est sujeta a
cada eje X+, Y+, Z+ , a travs de un resorte
minsculo capaz de registrar la fuerza elstica. Ahora,
viene lo divertido, tal cual est colocado el chip del
acelermetro, como lo muestra anteriormente, la
gravedad acta sobre el eje Y, en sentido (-Y). La
bolilla sujeta a Y+ sufrir un estiramiento dado que
cae por su peso, por efecto directo de la gravedad:

Representacin de +1G del acelermetro

El estiramiento genera una fuerza con sentido Y+


igual aK (I-I0), donde (I-I0) es el estiramiento y K una
constante de fabricacin. I0 es el resorte sin estirar,
es
decir
sin
aplicacin
de
fuerza
alguna,
llamada Fuerza
0G Esta
fuerza
corresponde
enteramente aplicada sobre el eje Y llamada Fy, por lo
tanto serpa proporcional a la fuerza +1G ya que acta
la gravedad directamente sobre l. El signo (+) indica
el de la fuerza que realiza el resorte, tratando de
evitar que el resorte se estire y su sentido
corresponde a (+Y).

Representacin de -1G del Acelermetro

Si ahora rotamos 180 grados el chip, la bolilla,


ahora comprimir el resorte nuevamente por efecto
de la gravedad pero, la fuerza del resorte posee un
sentido hacia (-Y) lo que representara una proporcin
a la fuerza de -1G Con el resto de los ejes sucede lo
mismo con sus respectivas bolillas y resortes. La
teora indica que las salidas de tensin proporcional a
la magnitud en cada eje, deberan ser iguales pero en
la realidad no lo es. Cada eje tiene un rango de
valores y que vamos a medir con Arduino.

En esta figura vemos, el resumen de cmo actan los


sentidos de la fuerza elstica.

Resmen : -1G, OG, +1G

Continuando con el DataSheet del acelermetro bajo


estudio,
es
fcil
ahora
comprender
estas
especificaciones estticas:

Posiciones de referencia Acelermetro mdulo MMA7361


El sensor, nuestro acelermetro, en la realidad no
tiene bolillas ni resortes pero me pareci ms
didctico para explicarlo. De hecho utiliza un efecto
capacitivo, las bolillas son capacitores y el resorte la
separacin dielctrica.El recinto de cada eje se
compone de dos capacidades que trabajan en
conjunto, una de las capas se desplaza conforme al

sentido e intensidad de las fuerzas G y por lo tanto


cuando aumenta una capacidad, disminuye la otra:

Concepto de la
arquitectura real del Acelermetro MMA7361
Descripcin de los pines del chip (No del mdulo)
1.

Sin conexin.

2.

Salida de tensin Fx

3.

Salida de tensin Fy

4.

Salida de tensin Fz

5.

Vss , masa 0v

6.

VDD alimentacin, mxima 5V, internamente trabaja con


3V3 y es la referencia del transductor.Se lo puede alimentar
directamente con 3v3.

7.

SLEEP: activo bajo, Low: pone a dormir al sensor, HIGH:


Run normal

8.

Sin conexin

9.

OG detect: genera un HIGH cuando detecta 0G en los


tres ejes, situacin de cada libre.

10.

GSelect: LOW: sensibilidad de +/-1.5G , con 800mv/G.

HIGH: sensibilidad de +/-6G con 260 mv/G


11.

Sin conexin

12.

Sin conexin

13.

Selt Test: HIGH: Modo de testeo interno, LOW: normal

14.

Sin conexin

Descripcin del Mdulo acelermetro MMA7361


El mdulo posee los siguientes pines:
o

FX, FY y FZ que son los 3 ejes.

GND . 0v referencia

5V : si lo alimentamos con 5V

3V3 : si lo alimentamos con 3V3, en caso de hacerlo con

5V, este pin ofrece 3V3 de salida.


o
SL : Sleep, ya explicado
o

OGDetect, ya explicado

Self Test, ya explicado

GSelect, ya explicado

Que pretendemos
Lo que se pretende ahora es medir el acelermetro en
sus tres ejes con lo cual lo rotaremos y observaremos
los valores de +/-1G y OG en cada eje. Para esto, las
rotaciones seguirn el mismo patrn de la figura del
chip, son 6 posiciones.
ARMADO

Mdulo Sensor:
o
Fx al canal A0 del Arduino
o

Fy al canal A1

Fz al canal A2

GND: 0V desde GND ARDUINO

5V: 5V desde ARDUINO

3V3: nada o, si se desea se puede conectar a AREF

del Arduino
o
OG: nada
o

ST: LOW=GND

GS: LOW=GND

Arduino:

A0: FX

A1:FY

A2:FZ

AREF: 3V3 desde Arduino, esto es dado que el


modulo entrega tensiones entre 0 y 3V3 con lo cual podemos
aprovechar todo el rango de la conversin.

El cdigo

1
2
3
4
5
6
7
8
9
1
0
1
1
1
2
1
3
1
4
1
5
1
6
1
7
1
8
1
9
2
0
2
1
2
2
2
3
2
4
2
5

int ejeX,ejeY,ejeZ; // Valores instantaneos ejes acelermetro


unsigned int promX,promY,promZ; // PROMEDIO DE LECTURAS
int muestras; // CANTIDAD MUESTRAS
void setup(){
analogReference(EXTERNAL); // 3v3 de referencia para conversor A/D tomados desde
el
//sensor o desde Arduino
Serial.begin(9600);
promX=0; // ACUMULADORES DE LECTURA
promY=0;
promZ=0;
muestras=50;
}
void loop(){
// Lecturas directas de los ejes
for (int i=0;i<muestras;i++){
ejeX= analogRead(A0);
promX+=ejeX;
ejeY= analogRead(A1);
promY+=ejeY;
ejeZ= analogRead(A2);
promZ+=ejeZ;
}
promX/=muestras;
promY/=muestras;
promZ/=muestras;
Serial.print("EjeX: ");
Serial.println(promX);
Serial.print("EjeY: ");
Serial.println(promY);
Serial.print("EjeZ: ");
Serial.println(promZ);
delay(4000);
promX=0;
promY=0;
promZ=0; // LIMPIA PROMEDIOS
}

2
6
2
7
2
8
2
9
3
0
3
1
3
2
3
3
3
4
3
5
3
6
3
7
3
8

Qu esperamos ver?
Sabemos que la sensibilidad del acelermetro
MMA7361 es de 800mv/G ( GS=LOW) y que la salida
ir entre 0 y 3v3 en teora. Si miramos el DataSheet ,
este nos dice que para esta sensibilidad de +/- 1G la
salida va entre 0.85v y 2,45v y que para OG la salida
vale 1,65v. Es decir es una ecuacin lineal de una
recta de la forma y=ax+b
Vout=0.8xG

1.65V

es

nuestra

variable

independiente,

Para G=0, Vout=1,65v Para G=-1G , Vout=1.650.8=0.85 Para G=+1G , Vout=1.65+0.8=2.45V


Nuestro conversor Arduino A/D representa valores de
conversin entre 0 y 1023 y si nuestra VREF=3v3,
entonces la conversiones N=Vin x 1023 / 3v3, Vin es la
seal a convertir y N la conversin de 0 a 1023.
Como Vin ( entrada Ax de Arduino ) es la salida del

mdulo

sensor,

tenemos:N=(0.8G

1.65)x

1023/3v3 Entonces lo que debemos encontrar en este

ensayo , son valores prximos o en el entorno de:


OG

N=512 , +1G N=760, -1G N=260

Ensayo del Acelermetro


Colocamos el sensor en cada una de las 6 posiciones
como lo muestra la figura deStatic Aceleration
indicada un poco mas arriba, luego observamos el
monitor serial y anotamos los datos. Por ejemplo, aca
les muestro para la posicin primera del chip del
mdulo acelermetro

Vemos que en la figura Yout +1G = 2.45vpor lo tanto


debe reflejarse en el monitor serial que la conversin
tendr en N mximo y los otros sern OG. En cada
posicin vemos que solo y solo un eje est
midiendo +/- 1G, ya que en los otros ejes la fuerza de
gravedad es perpendicular y por lo tanto los resortes
no

se

estiran

ni

correspondiente de OG.

se

contraen

miden

el

En cada posicin anotamos todas las mediciones de


cada eje( para el caso de la posicin 1):
o

Posicin: 1 Eje: Y

Gravedad: +1G 792


OG ejeX:

489

OG eje Z: 482
Es de notar que los valores obtenidos del
acelermetro SON LOS QUE ESPERAMOS en forma
aproximada. Hay que notar tambin que uno con la
mano no coloca una posicin perfecta y a nivel. Les
muestro un resmen de todas las posiciones para mi
caso:
o

Posicin: 2 Eje: X

Gravedad: +1G 770


OG ejeY:

544

OG eje Z: 454
o

Posicin: 3 Eje: Y

Gravedad: -1G 290


OG ejeX:

500

OG eje Z: 465
o

Posicin: 4 Eje: X

Gravedad: -1G 244


OG ejeY:

540

OG eje Z: 475
o

Posicin: 5 Eje: Z

Gravedad: +1G 710


OG ejeY:

503

OG eje X: 531
o

Posicin: 6 Eje: Z

Gravedad: -1G 224


OG ejeY:

552

OG eje X: 482
Como vemos, la sensibilidad no es la misma en cada
eje, como lo anticipe. Si comparamos todos los rangos
de OG, +/-1G podemos decir que para los tres ejes,
tenemos un rango dinmico de:
+1G: 710-792 -1G: 224-290 0G: 454-552
Lo cual est dentro de lo que esperbamos.
Para qu sirve esto?
Teniendo los rangos de cada eje podremos MAPEAR
con la funcin MAP de Arduino los rangos de trabajo
del acelermetro que se utilice y adecuarlos a los
rangos de operacin. Por ejemplo lo que hice es
mapear el rango del eje Ycon la salida de un servo
Motor 9G , de esta manera:
Map(promY, 792,290,179,0) para manejarlo copiando
los movimientos del eje Y. Quedar para otra entrada
futura. Esto fue todo, espero les sirva para futuros
proyectos

Anda mungkin juga menyukai