Tabla de contenido:

ADXL345 usando Arduino Uno R3: 5 pasos
ADXL345 usando Arduino Uno R3: 5 pasos

Video: ADXL345 usando Arduino Uno R3: 5 pasos

Video: ADXL345 usando Arduino Uno R3: 5 pasos
Video: Projeto com ARDUINO UNO! Dispenser de Chocolate M&M feito com potes de Yakult. 2024, Noviembre
Anonim
ADXL345 con Arduino Uno R3
ADXL345 con Arduino Uno R3

En esta lección, aprenderemos a utilizar el sensor de aceleración ADXL345.

Paso 1: componentes

- Placa Arduino Uno * 1

- Cable USB * 1

- ADXL345 * 1

- Tablero de pruebas * 1

- Cables de puente

Paso 2: Principio

Se utiliza un acelerómetro para medir la fuerza generada durante la aceleración. La más fundamental es la aceleración de la gravedad comúnmente conocida, que es de 1 g.

Al medir la aceleración causada por la gravedad, puede calcular el ángulo de inclinación del dispositivo a la superficie nivelada. Mediante el análisis de la aceleración dinámica, puede saber la forma en que se mueve el dispositivo. Por ejemplo, una tabla autoequilibrada o una tabla flotante aplica el sensor de aceleración y el giroscopio para el filtro Kalman y la corrección de la postura.

ADXL345

El ADXL345 es un acelerómetro de 3 ejes pequeño, delgado y de baja potencia con medición de alta resolución (13 bits) de hasta ± 16 g. Los datos de salida digital están formateados como complemento a dos de 16 bits y se puede acceder a ellos a través de una interfaz digital SPI (3 o 4 cables) o I2C. En este experimento, se utiliza la interfaz digital I2C.

Es muy adecuado para medir la aceleración estática de la gravedad en aplicaciones de detección de inclinación, así como la aceleración dinámica resultante de movimientos o golpes. Su alta resolución (4 mg / LSB) permite la medición del cambio de inclinación en menos de 1.0 °. Y la excelente sensibilidad (3,9 mg / LSB a 2 g) proporciona una salida de alta precisión de hasta ± 16 g.

Cómo funciona ADXL345

El ADXL345 detecta la aceleración con el componente sensor en la parte delantera, y luego el componente sensor de señal eléctrica la cambia a señal eléctrica, que es analógica. A continuación, el adaptador AD integrado en el módulo convertirá la señal analógica en digital.

X_OUT, Y_OUT y Z_OUT son los valores en los ejes X, Y y Z respectivamente. Coloque el módulo boca arriba: Z_OUT puede alcanzar + 1g como máximo, el mínimo de X_OUT es -1g hacia la dirección del Hacha y el mínimo de Y_OUT es -1g hacia la dirección Ay. Por otro lado, voltee el módulo al revés: el mínimo de Z_OUT es -1g, el máximo de X_OUT es + 1g hacia la dirección Ax, y el máximo de Y_OUT es + 1g hacia la dirección Ay., Como se muestra abajo. Gire el módulo ADXL345 y verá el cambio de tres valores.

cuando el canal A cambia de nivel alto a nivel bajo, si el canal B es de nivel alto, indica que el codificador giratorio gira en el sentido de las agujas del reloj (CW); si en ese momento el canal B está en nivel bajo, significa que gira en sentido antihorario (CCW). Entonces, si leemos el valor del canal B cuando el canal A está en nivel bajo, podemos saber en qué dirección gira el codificador rotatorio.

Principio: consulte el diagrama esquemático del módulo Codificador rotatorio a continuación. En él podemos ver que el pin 3 del codificador rotatorio, a saber CLK en el módulo, es el canal B. El pin 5, que es DT, es el canal A. Para conocer la dirección de rotación de la grabadora, simplemente lea el valor de CLK y DT.

Hay un chip regulador de voltaje de 3.3v en el circuito, por lo que puede alimentar el módulo con 5V o 3.3V.

Dado que SDO se ha conectado a GND, la dirección I2C del ADXL345 es 0x53, 0xA6 para escritura, 0xA7 para lectura

Función de pin del módulo ADXL345.

Paso 3: procedimientos

Paso 1. Construye el circuito.

Paso 2:

Descarga el código de

Paso 3:

Sube el boceto a la placa Arduino Uno

Haga clic en el icono Cargar para cargar el código en el tablero de control.

Si aparece "Carga finalizada" en la parte inferior de la ventana, significa que el boceto se cargó correctamente.

Después de cargar, abra Serial Monitor, donde puede ver los datos detectados. Cuando cambia la aceleración del módulo, la figura cambiará en consecuencia en la ventana.

Paso 4: Código

Código
Código

// ADXL335

/********************************

ADXL335

nota: vcc5v, pero ADXL335 Vs es 3.3V

El circuito:

5 V: VCC

analógico 0: eje x

analógico 1: eje y

analógico 2: eje z

Después de quemar el

programa, abra la ventana de depuración del monitor en serie, donde puede ver los datos detectados que se muestran. Cuando la aceleración varía, la cifra variará en consecuencia.

*********************************

/Correo electrónico:

// Sitio web:www.primerobotics.in

const int xpin =

A0; // eje x del acelerómetro

const int ypin =

A1; // eje y

const int zpin =

A2; // eje z (solo en modelos de 3 ejes)

configuración vacía ()

{

// inicializar las comunicaciones en serie:

Serial.begin (9600);

}

bucle vacío ()

{

int x = analogRead (xpin); // leer desde xpin

retraso (1); //

int y = analogRead (ypin); // leer de ypin

retraso (1);

int z = analogRead (zpin); // leer de zpin

flotar zero_G = 338.0; // Fuente de alimentación ADXL335

por Vs 3.3V: 3.3V / 5V * 1024 = 676/2 = 338

//Serial.print(x);

//Serial.print("\t ");

//Serial.print(y);

//Serial.print("\t ");

//Serial.print(z);

//Serial.print("\n ");

flotador

zero_Gx = 331.5; // la salida zero_G del eje x: (x_max + x_min) / 2

flotador

zero_Gy = 329.5; // la salida zero_G del eje y: (y_max + y_min) / 2

float zero_Gz = 340.0; // el

salida zero_G del eje z: (z_max + z_min) / 2

escala flotante =

67.6; // fuente de alimentación por Vs 3.3V: 3.3v / 5v * 1024 / 3.3v * 330mv / g = 67.6g

flotar scale_x =

65; // la escala del eje x: x_max / 3.3v * 330mv / g

flotar scale_y =

68.5; // la escala del eje y: y_max / 3.3v * 330mv / g

flotar scale_z =

68; // la escala del eje z: z_max / 3.3v * 330mv / g

Serial.print (((flotante) x

- zero_Gx) / scale_x); // imprime el valor x en el monitor de serie

Serial.print ("\ t");

Serial.print (((float) y

- zero_Gy) / scale_y); // imprime el valor y en el monitor de serie

Serial.print ("\ t");

Serial.print (((flotante) z

- zero_Gz) / scale_z); // imprime el valor z en el monitor serial

Serial.print ("\ n");

retraso (1000); // espera 1 segundo

}

Paso 5: Análisis de código

El código para el experimento ADXL345 incluye 3 partes: inicializar cada puerto y dispositivo, adquirir y almacenar los datos enviados desde los sensores y convertir los datos.

Recomendado: