En esta ocasión nos ocuparemos de conectar el acelerómetro triaxial analógico ADXL335 al Arduino.
Necesario
- - Arduino;
- - acelerómetro ADXL335;
- - una computadora personal con el entorno de desarrollo Arduino IDE.
Instrucciones
Paso 1
Los acelerómetros se utilizan para determinar el vector de aceleración. El acelerómetro ADXL335 tiene tres ejes, y gracias a esto, puede determinar el vector de aceleración en el espacio tridimensional. Debido al hecho de que la fuerza de la gravedad también es un vector, el acelerómetro puede determinar su propia orientación en el espacio tridimensional con respecto al centro de la Tierra.
La ilustración muestra imágenes del pasaporte (https://www.analog.com/static/imported-files/data_sheets/ADXL335.pdf) para el acelerómetro ADXL335. Aquí se muestran los ejes de coordenadas de la sensibilidad del acelerómetro en relación con la ubicación geométrica del cuerpo del dispositivo en el espacio, así como una tabla de valores de voltaje de 3 canales del acelerómetro según su orientación en el espacio. Los datos de la tabla se proporcionan para un sensor en reposo.
Echemos un vistazo más de cerca a lo que nos muestra el acelerómetro. Deje que el sensor descanse horizontalmente, por ejemplo, sobre una mesa. Entonces la proyección del vector de aceleración será igual a 1g a lo largo del eje Z, o Zout = 1g. Los otros dos ejes tendrán ceros: Xout = 0 y Yout = 0. Cuando el sensor se gira "boca arriba", se dirigirá en la dirección opuesta en relación con el vector de gravedad, es decir. Zout = -1g. Del mismo modo, se toman medidas en los tres ejes. Está claro que el acelerómetro se puede colocar como se desee en el espacio, por lo que tomaremos lecturas distintas de cero de los tres canales.
Si la sonda se agita fuertemente a lo largo del eje Z vertical, el valor de Zout será mayor que "1g". La aceleración máxima medible es "3g" en cada uno de los ejes en cualquier dirección (es decir, ambos con "más" y "menos").
Paso 2
Creo que descubrimos el principio de funcionamiento del acelerómetro. Ahora veamos el diagrama de conexión.
El chip acelerómetro analógico ADXL335 es bastante pequeño y está alojado en un paquete BGA, y es difícil montarlo en una placa en casa. Por lo tanto, usaré un módulo GY-61 listo para usar con un acelerómetro ADXL335. Estos módulos en las tiendas online chinas cuestan casi un centavo.
Para alimentar el acelerómetro, es necesario suministrar voltaje +3, 3 V al pin VCC del módulo. Los canales de medición del sensor están conectados a los pines analógicos del Arduino, por ejemplo, "A0", "A1" y " A2 ". Este es todo el circuito:)
Paso 3
Carguemos este boceto en la memoria Arduino. Leeremos las lecturas de las entradas analógicas en tres canales, las convertiremos a voltaje y las enviaremos al puerto serie.
El Arduino tiene un ADC de 10 bits y el voltaje de pin máximo permitido es de 5 voltios. Los voltajes medidos se codifican con bits que solo pueden tomar 2 valores: 0 o 1. Esto significa que todo el rango de medición se dividirá entre (1 + 1) a la décima potencia, es decir. en 1024 segmentos iguales.
Para convertir las lecturas a voltios, debe dividir cada valor medido en la entrada analógica por 1024 (segmentos) y luego multiplicar por 5 (voltios).
Veamos qué proviene realmente del acelerómetro usando el eje Z como ejemplo (la última columna). Cuando el sensor se coloca horizontalmente y mira hacia arriba, los números vienen (2.03 +/- 0.01). Entonces esto debería corresponder a la aceleración "+ 1g" a lo largo del eje Z y un ángulo de 0 grados. Da la vuelta al sensor. Llegan los números (1, 69 +/- 0, 01), que deberían corresponder a "-1g" y un ángulo de 180 grados.
Paso 4
Tomemos los valores del acelerómetro en ángulos de 90 y 270 grados e introdúzcalos en la tabla. La tabla muestra los ángulos de rotación del acelerómetro (columna "A") y los valores de Zout correspondientes en voltios (columna "B").
Para mayor claridad, se muestra una gráfica de voltajes en la salida Zout versus el ángulo de rotación. El campo azul es el rango en reposo (a 1 g de aceleración). El cuadro rosa en el gráfico es un margen para que podamos medir la aceleración hasta + 3g y hasta -3g.
Con una rotación de 90 grados, el eje Z tiene aceleración cero. Esos. un valor de 1,67 voltios es un Zo cero condicional para el eje Z Entonces puede encontrar la aceleración de esta manera:
g = Zout - Zo / sensibilidad_z, aquí Zout es el valor medido en milivoltios, Zo es el valor a aceleración cero en milivoltios, sensibilidad_z es la sensibilidad del sensor a lo largo del eje Z. calibre el acelerómetro y calcule el valor de sensibilidad específicamente para su sensor usando la fórmula:
sensibilidad_z = [Z (0 grados) - Z (90 grados)] * 1000. En este caso, la sensibilidad del acelerómetro a lo largo del eje Z = (2, 03 - 1, 68) * 1000 = 350 mV. De manera similar, será necesario calcular la sensibilidad para los ejes X e Y.
La columna "C" de la tabla muestra la aceleración calculada para cinco ángulos con una sensibilidad de 350. Como puede ver, prácticamente coinciden con las que se muestran en la Figura 1.
Paso 5
Recordando el curso de geometría básica, obtenemos la fórmula para calcular los ángulos de rotación del acelerómetro:
ángulo_X = arctg [sqrt (Gz ^ 2 + Gy ^ 2) / Gx].
Los valores están en radianes. Para convertirlos a grados, divida por Pi y multiplique por 180.
Como resultado, en la ilustración se muestra un boceto completo que calcula los ángulos de aceleración y rotación del acelerómetro a lo largo de todos los ejes. Los comentarios proporcionan explicaciones para el código del programa.
Cuando se envía al puerto "Serial.print ()", el carácter "\ t" denota un carácter de tabulación para que las columnas sean pares y los valores se ubiquen uno debajo del otro. "+" significa concatenación (concatenación) de cadenas. Además, el operador "String ()" le dice explícitamente al compilador que el valor numérico debe convertirse en una cadena. El operador round () redondea la esquina al grado más cercano.
Paso 6
Entonces, aprendimos cómo tomar y procesar datos del acelerómetro analógico ADXL335 usando Arduino. Ahora podemos usar el acelerómetro en nuestros diseños.