adxl335

Arduino, ADXL335 Sensor

Este diminuto componente de baja potencia, es un aceleró metro analógico completo de 3 ejes con señales reguladas de voltaje de salida. Mide la aceleración con una escala de ± 3G y utiliza un nivel de tensión de 3.3 V. Se puede medir la aceleración de la gravedad estática en aplicaciones de detección de inclinación, así como la aceleración dinámica resultante del movimiento, choque o vibraciones.  ( hoja de datos ).
¿Que es un Aceleró metro?
Un aceleró metro es un  es un tipo de sensor analógico transductor que detecta el movimiento o el giro, es decir, es capaz de responder con una señal eléctrica ante una perturbación inducida por la aplicación de una fuerza o la gravedad. Este dispositivo es capaz de detectar si está en horizontal o vertical o por ejemplo si los agitamos en el aire.

El ADXL335 proporcionará a Arduino, tres voltajes proporcionales a la aceleración de cada eje X, Y y Z. Algo muy importante es que se trata de un dispositivo que se alimenta a 3.3 V, por lo que hay que tener cuidado al conectarlo a nuestro Arduino de no hacerlo a la salida de 5v, ya que dañaríamos el sensor.

Conexión:

Código:

//Pines analogicos de lectura
 const int xPin = 0;     
 const int yPin = 1;
 const int zPin = 2;

// Valores mínimos y máximos del acelerometro en reposo
 int minVal = 265;     
 int maxVal = 402;

// para guardar los valores calculados
 double x;    
 double y;
 double z;

void setup ( ) {
 Serial.begin(9600);
 }

void loop ( ) {

//Lee los valores analogicos del acelerometro
 int xRead = analogRead(xPin);    
 int yRead = analogRead(yPin);
 int zRead = analogRead(zPin);

// mapea los valores leidos a un rango  -90 a 90 grados (-π  a  π )
 int xAng = map(xRead, minVal, maxVal, -90, 90);
 int yAng = map(yRead, minVal, maxVal, -90, 90);
 int zAng = map(zRead, minVal, maxVal, -90, 90);

//Convertimos los radianes a grados
 x = RAD_TO_DEG * (atan2(-yAng, -zAng) + PI);
 y = RAD_TO_DEG * (atan2(-xAng, -zAng) + PI);
 z = RAD_TO_DEG * (atan2(-yAng, -xAng) + PI);

//Imprimimos en el monitor serial los caluculos
 Serial.print("x: ");
 Serial.print(x);
 Serial.print(" | y: ");
 Serial.print(y);
 Serial.print(" | z: ");
 Serial.println(z);

delay(100);       //Espera 1 decima de segundo
 }

 

8 comentarios en “Arduino, ADXL335 Sensor

  1. Amigo, buenos días.
    Tengo varias consultas:
    1- los valores minVal = 265 y maxVal = 402, es alguna propiedad del acelerómetro, sino, que lo conlleva a usarlos?
    2- Conoce alguna forma de ver gráficamente estos valores?, no se, tal ves un tipo de onda senoidal?
    Agradezco!

  2. Hola, muy útil el post muchas gracias solo tengo un problema, y es que no me da siempre los mismos valores, tengo puesto el acelerómetro en una inclinación fija pero los valores oscilan entre un mínimo y un máximo, ¿es normal?

  3. Al mover de forma horizontal me imprima la distancia y al mover de forma vertical me imprima la distancia en serial ….espero de su ayuda porfavor

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