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:
//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 }
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!
donde puedo comprarlo en el df me urge
Yo los consigo en mercadolibre: http://listado.mercadolibre.com.mx/acelerometro-adxl335
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?
Ammm no recuerdo.. saludos!
Hola, me esta dando varios errores. ¿Le incluyes alguna librería?
Saludos
los valores minVal = 265 y maxVal = 402, es alguna propiedad del acelerómetro, sino, que lo conlleva a usarlos?
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
Buenas, tengo un problema a la hora de conectar los servos con el acelerómetro. Por lo visto, la medida de los ángulos me da muchos saltos y arruina el proyecto. ¿Podéis ayudarme?
P.D.: hemos usado el mismo código pero le hemos quitado lo de los radianes a los grados centígrados.