COMO FUNCIONA UN ACELERÓMETRO

en nuestra cotidianidad vivimos rodeados de acelerómetros en los nintendos, en las tablets, en los celulares inteligentes, en los arduinos, en los sistemas embebidos ¡MEJOR DICHO! ¡EN TODOS LADOS! aún así estos dispositivos tienen una importancia la cual considero impresionante porque nos permite hacer y saber muchas cosas como por ejemplo: la orientación que tiene un objeto básicamente porque existe una aceleración en todo momento que se podría considerar permanente y es LA GRAVEDAD de la tierra y tiene como valor: 9.81 metros por segundo al cuadrado. entonces:¡ QUE SUCEDE! pues es muy sencillo y es que si nosotros podemos determinar en que posición o en que eje nuestro acelerómetro está la gravedad podremos determinar en que posición está por ejemplo: NUESTRO CELULAR. Sin embargo un acelerómetro no sirve para lo mencionado anteriormente, de hecho sirve para medir aceleraciones de cualquier tipo. Por ejemplo si tu montas o acoplas el acelerómetro en una moto y deseas saber en que posición está la moto o saber la aceleración que tiene el motor de dicha moto lo puedes predecir a través de la medición ¡y no solo sirve para eso! lo puedes adaptar o empotrar perfectamente en tu vehículo, un helicóptero a control remoto, un drone, un robot movil DONDE TU QUIERAS. Gracias a los avances en electrónica ha sido posible medir aceleraciones a bajo costo y es posible conseguirlos a precios muy cómodos equivalentes a 2 usd dolares americanos y adaptarlos a sistemas de desarrollo como por ejemplo LOS ARDUINOS.
 
MUC-6050 EL MÁS USADO
DIAGRAMA DE CONEXIÓN
 
es un acelerómetro que se controla por comunicación I2C. y para su funcionamiento requiere de 5 cables entre los que destacan..
VCC alimentación 5V
GND tierra
SDA
SCL
INT
con esos pines podemos empezar a recibir información del acelerómetro por medio de la comunicación I2C en los 3 ejes X,Y,Z aparte de ello, este integrado nos proporciona la temperatura en la cual se encuentra y la rotación en los ejes mencionados anteriormente. Imaginemos por un momento que tengo 2 lecturas una en el eje x y la otra en el eje Y de 6.93m/s al cuadrado. si yo tengo esas dos lecturas y se que entre el eje X y el eje Y tengo un ángulo de 90° puedo aplicar trigonometria para determinar la tangente y el arcotangente del angulo. de esta forma puedo decir que la división entre ambos nos dá 1 y calculando el arcotangente nos dá 45° por tanto, puedo determinar que mi acelerómetro está girando sobre el eje Z a 45° y de esta forma puedo determinar cualquier posición bien sea en los ejes X, Y,Z.
 
PARTES DEL ACELEROMETRO
 
 
CODIGO DE PRUEBA EN ARDUINO PARA EL ACELEROMETRO
//Incluimos la librería para I2C
#include <Wire.h>
//Definimos la direccion I2C del MPU
#define MPU 0x68
//Definimos los ratios de conversión
#define A_R 16384.0
#define G_R 131.0
//Definimos la conversion de radianes a grados 180/PI
#define RAD_A_DEG = 57.295779
//El MPU da los valores en enteros de 16 bits
//Declaramos memorias para los valores brutos
int16_t AcX;
int16_t AcY;
int16_t AcZ;
int16_t GyX;
int16_t GyY;
int16_t GyZ;
//Declaramos cadena de caracteres para los ángulos
float Acc[2];
float Gy[2];
float Angle[2];
void setup()
{
//Inicializamos el I2C y el puerto serie
Wire.begin();
Wire.beginTransmission(MPU);
Wire.write(0x6B);
Wire.write(0);
Wire.endTransmission(true);
Serial.begin(9600);
}
void loop()
{
   //Leemos los valores del Acelerometro
   Wire.beginTransmission(MPU);
   Wire.write(0x3B); //Pedimos el registro 0x3B – corresponde al AcX
   Wire.endTransmission(false);
   Wire.requestFrom(MPU,6,true); //A partir del 0x3B, se piden 6 registros
   AcX=Wire.read()<<8|Wire.read(); //Cada valor ocupa 2 registros
   AcY=Wire.read()<<8|Wire.read();
   AcZ=Wire.read()<<8|Wire.read();
   //Leemos los valores del Giroscopio
   Wire.beginTransmission(MPU);
   Wire.write(0x43);
   Wire.endTransmission(false);
   Wire.requestFrom(MPU,4,true); //A diferencia del Acelerometro, solo se piden 4 registros
   GyX=Wire.read()<<8|Wire.read();
   GyY=Wire.read()<<8|Wire.read();
   /Mostramos los valores por el monitor serial
   Serial.print(“Acelerometro bruto X: “); Serial.println(AcX);
   Serial.print(“Acelerometro bruto Y: “); Serial.println(AcY);
   Serial.print(“Acelerometro bruto Z: “); Serial.println(AcZ);
   Serial.print(“Giroscopo bruto Y: “); Serial.println(GyX);
   Serial.print(“Giroscopo bruto X: “); Serial.println(GyY);
   Serial.print(“Giroscopo bruto Y: “); Serial.println(GyZ);
   //Esperamos 1 segundo para poder visualizarlo en el monitor serial
   delay(1000);
}
Summary

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *