acelerómetros de 3 ejes

17
Acelerómetros de 3 ejes, lo que necesitas saber febrero 12, 2015 Gustavo Circelli Arduino , Proyectos El siguente “Post” tiene como objetivo la comprensión de los acelerómetros, 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 cómo 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 están 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/s 2 (depende también del lugar geográfico), y más aún, ya en la superficie de la misma, continúa siendo acelerado y es lo que permite medir el peso de una persona o cualquier objeto.

Upload: carlos-alberto-nh

Post on 30-Jan-2016

216 views

Category:

Documents


0 download

DESCRIPTION

uni

TRANSCRIPT

Page 1: Acelerómetros de 3 Ejes

Acelerómetros de 3 ejes, lo que necesitas saber febrero 12, 2015  Gustavo Circelli  Arduino, Proyectos

 El siguente “Post” tiene como objetivo la comprensión de los acelerómetros, 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 cómo 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 están 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 también del

lugar geográfico), y más aún, ya en la superficie de la misma, continúa 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 ecuación de Newton F=mg (fuerza es igual al producto de la masa por la aceleración), siendo m la masa del objeto. Es muy común confundir masa con peso, es erróneo decir que por ejemplo Juan pesa 78 Kg, en realidad la balanza mide cuanto el producto dem·g , y los 78kg son una unidad de masa.

Page 2: Acelerómetros de 3 Ejes

El peso de Juan sería 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 revolución francesa, y es un prototipo internacional de una aleación de Platino e Iridio. Dicho elemento patrón pesa 9.8 N. Es decir, no se eligió cualquier patrón de masa, sino aquella que represente 9,8 N.

La masa es una característica 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 vehículo. Si el vehículo está en reposo, la masa de los pasajeros están en equilibrio, de igual manera que si viajasen a 150 Kmt/h. Pero si se frena bruscamente, la fuerza de frenado se aplica al vehículo y no a los pasajeros, por lo tanto los mismos continuarán 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 aceleración producen Fuerzas G. Por ejemplo supongamos que un vehículo viaja a 100 Km/h y se estrella contra un muro y pasa a velocidad cero en 1 seg. Si suponemos que la aceleración ( 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 ,

Page 3: Acelerómetros de 3 Ejes

si 1G= 9.8 , sería una fuerza de casi 3G , es decir 3 veces la gravedad. Nuestro cuerpo está sometido a 1g , es decir que nuestro peso podríamos decir que posee 1g, este impacto genera entonces una fuerza 3 veces nuestro peso.Recordar que F=mxa, donde la aceleración 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 aceleración, Acelerómetro   MMA7361

 

Acelerómetro MMA7361

Los acelerómetros, como el sensor MMA7361 son capaces de medir la aceleración 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

Page 4: Acelerómetros de 3 Ejes

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 módulo o intensidad de la fuerza se calcula aplicando el teorema de Pitágoras en tres dimensiones:

R2 = Rx2+Ry2+Rz2   

Diagrama de componentes de Fuerza en 3 DEl 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)

Page 5: Acelerómetros de 3 Ejes

De esta manera, si nuestro acelerómetro sensor nos está indicando cierta medida de magnitud aplicada en cada eje, podremos realizar estos cálculos para determinar intensidad y ángulos de la Fuerza. Al adquirir nuestro módulo acelerómetro, es importante leer su Datasheet para conocer la referencia de sus ejes y su orientación. Por ejemplo el MMA7361 tiene la siguiente disposición: Es decir, colocado de esta manera vemos como nombra los ejes y su signo, el cual es de suma importancia.

referencia ejes acelerometroPensemos ahora  ,y a los efectos didácticos, que el Acelerómetro está conformado por un receptáculo en su centro de masa, y dentro del mismo tres pequeñas “bolillas” de masa xx, donde cada una está sujeta a cada eje X+, Y+, Z+ , a través de un resorte minúsculo capaz de registrar la fuerza elástica. Ahora, viene lo divertido, tal cual está colocado el chip del acelerómetro, como lo muestra anteriormente, la gravedad actúa 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:

Page 6: Acelerómetros de 3 Ejes

Representación de +1G del acelerómetro

 

El estiramiento genera una fuerza con sentido Y+ igual aK (I-I0), donde (I-I0) es el estiramiento y K una constante de fabricación. I0 es el resorte sin estirar, es decir sin aplicación 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 actúa 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).

 

 

 

Representación de -1G del Acelerómetro

Page 7: Acelerómetros de 3 Ejes

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 proporción a la fuerza de -1G   Con el resto de los ejes sucede lo mismo con sus respectivas “bolillas” y resortes. La teoría indica que las salidas de tensión proporcional a la magnitud en cada eje, deberían 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 cómo actúan los sentidos de la fuerza elástica.

 

Resúmen : -1G, OG, +1G

 

 

 

 

 

Page 8: Acelerómetros de 3 Ejes

Continuando con el DataSheet del acelerómetro bajo estudio, es fácil ahora comprender estas especificaciones estáticas:

Posiciones de referencia Acelerómetro módulo MMA7361El sensor, nuestro acelerómetro, en la realidad no tiene “bolillas” ni resortes pero me pareció más didáctico para explicarlo. De hecho utiliza un efecto

capacitivo, las bolillas son capacitores y el resorte la separación dieléctrica.El recinto de cada eje se compone de dos capacidades que trabajan en conjunto, una de las capas se desplaza conforme al

Page 9: Acelerómetros de 3 Ejes

sentido e intensidad de las fuerzas G y por lo tanto cuando aumenta una capacidad, disminuye la otra:

Concepto de la arquitectura real del Acelerómetro MMA7361Descripción de los pines del chip (No del módulo)

1. Sin conexión.

2. Salida de tensión Fx

3. Salida de tensión Fy

4. Salida de tensión Fz

5. Vss , masa 0v

6. VDD alimentación, máxima 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 conexión

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

ejes, situación de caída libre.

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

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

11. Sin conexión

12. Sin conexión

Page 10: Acelerómetros de 3 Ejes

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

14. Sin conexión

Descripción del Módulo acelerómetro MMA7361

El módulo posee los siguientes pines:

o FX, FY y FZ que son los 3 ejes.

o GND . 0v referencia

o 5V : si lo alimentamos con 5V

o 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

o Self Test, ya explicado

o GSelect, ya explicadoQue pretendemos

Lo que se pretende ahora es medir el acelerómetro en sus tres ejes con lo cual lo rotaremos y observaremos los valores de +/-1G y OG en cada eje. Para esto, las rotaciones seguirán el mismo patrón  de la figura del chip, son 6 posiciones.

ARMADOMódulo Sensor:

o Fx al canal A0 del Arduino

o Fy al canal A1

o Fz al canal A2

o GND: 0V desde GND ARDUINO

o 5V: 5V desde ARDUINO

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

Arduino

o OG: nada

o ST: LOW=GND

Page 11: Acelerómetros de 3 Ejes

o GS: LOW=GNDArduino:

o A0: FX

o A1:FY

o A2:FZ

o 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 conversión.El código

123456789101112131415161718192021222324252

int ejeX,ejeY,ejeZ; // Valores instantaneos ejes acelerómetrounsigned int promX,promY,promZ; // PROMEDIO DE  LECTURAS int muestras; // CANTIDAD MUESTRASvoid 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 }

Page 12: Acelerómetros de 3 Ejes

6272829303132333435363738

¿Qué esperamos ver?Sabemos que la sensibilidad del acelerómetro MMA7361 es de 800mv/G ( GS=LOW) y que la salida irá entre 0 y 3v3 en teoría. 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 ecuación lineal de una recta de la forma y=ax+b

Vout=0.8xG + 1.65V , G es nuestra variable

independiente, 

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

Nuestro conversor Arduino A/D representa valores de conversión entre 0 y 1023 y si nuestra VREF=3v3, entonces la conversiones N=Vin x 1023 / 3v3, Vin es la

señal a convertir y N la conversión de 0 a 1023.

Como Vin ( entrada Ax de Arduino ) es la salida del módulo sensor, tenemos:N=(0.8G + 1.65)x

Page 13: Acelerómetros de 3 Ejes

1023/3v3 Entonces lo que debemos encontrar en este ensayo , son valores próximos o en el entorno de:OG   N=512 ,  +1G N=760,  -1G N=260Ensayo del AcelerómetroColocamos el sensor en cada una de las 6 posiciones como lo muestra la figura de“Static Aceleration” indicada un poco mas arriba, luego observamos el monitor serial y anotamos los datos. Por ejemplo, aca les muestro para la posición primera del chip del módulo acelerómetro  

 

Vemos que en la figura Yout +1G = 2.45vpor lo tanto debe reflejarse en el monitor serial que la conversión tendrá en N máximo y los otros serán OG. En cada posición 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 se contraen y miden el

correspondiente de OG.

 

 

Page 14: Acelerómetros de 3 Ejes

En cada posición anotamos todas las mediciones de cada eje( para el caso de la posición 1):

o Posición: 1 Eje: Y

Gravedad: +1G 792

OG ejeX:        489

OG eje Z: 482

Es de notar que los valores obtenidos del acelerómetro SON LOS QUE ESPERAMOS ¡¡¡¡¡¡ en forma

aproximada. Hay que notar también que uno con la mano no coloca una posición perfecta y a nivel. Les muestro un resúmen de todas las posiciones para mi caso:

o Posición: 2 Eje: X

Page 15: Acelerómetros de 3 Ejes

Gravedad: +1G 770

OG ejeY:        544

OG eje Z: 454

o Posición: 3 Eje: Y

Gravedad: -1G 290

OG ejeX:        500

OG eje Z: 465

o Posición: 4 Eje: X

Gravedad: -1G 244

OG ejeY:        540

OG eje Z: 475

o Posición: 5 Eje: Z

Gravedad: +1G 710

OG ejeY:        503

OG eje X: 531

o Posición: 6 Eje: Z

Gravedad: -1G 224

OG ejeY:        552

Page 16: Acelerómetros de 3 Ejes

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 dinámico de:

+1G: 710-792 -1G: 224-290 0G: 454-552

Lo cual está dentro de lo que esperábamos.

¿Para qué sirve esto?Teniendo los rangos de cada eje podremos MAPEAR con la función MAP de Arduino los rangos de trabajo del acelerómetro que se utilice y adecuarlos a los rangos de operación. 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