Tabla de contenido
resumen
Esta guía utiliza código MicroPython para interconectar el acelerómetro ADXL335 de 3 ejes con la Raspberry Pi Pico. El Raspberry Pi Pico es un microcontrolador asequible, versátil y potente, mientras que el ADXL335 es un acelerómetro pequeño y de baja potencia. Al combinar estos dos componentes, puede crear una variedad de proyectos emocionantes, incluidos sistemas de control de gestos, sensores de inclinación e incluso controladores de juegos simples.
A lo largo de esta guía, proporcionaremos instrucciones paso a paso para conectar la Raspberry Pi Pico y el acelerómetro ADXL335. También describe el código necesario para leer e interpretar los datos del acelerómetro. Después de completar este tutorial, tendrá una sólida comprensión del acelerómetro Raspberry Pi Pico y ADXL335 y tendrá el conocimiento que necesita para crear sus propios proyectos utilizando estos componentes.
Anteriormente, usé el ADXL335 para construir algunos proyectos, pero puedo verificarlos antes de continuar.
Componentes requeridos
Esta guía requiere los siguientes componentes:
ADXL335 acelerómetro de 3 ejes
el ADXL335 es un acelerómetro compacto, delgado y de baja potencia de 3 ejes fabricado por Analog Devices, Inc. Está diseñado para medir la aceleración en ± rango de escala completa de 3 g (g es la aceleración debida a la gravedad (aproximadamente 9,81 m/s²)). El ADXL335 puede medir la aceleración en tres ejes ortogonales, X, Y y Z, y detectar movimiento y orientación en el espacio 3D.
El ADXL335 emite una señal de voltaje analógica proporcional a la aceleración sometida al sensor. Estas señales analógicas pueden ser leídas por un microcontrolador u otro dispositivo con un convertidor analógico a digital (ADC), como un Arduino o Raspberry Pi Pico, para procesar e interpretar los datos.
ADXL335 Especificaciones
El ADXL335 es un acelerómetro de 3 ejes con las siguientes especificaciones clave:
- Rango de medición: ±3 g (donde g es la aceleración debida a la gravedad, aproximadamente 9,81 m/s²)
- sensibilidad: Típicamente alrededor de 300 mV/g (milivoltios/g) a temperatura ambiente, con ligeras variaciones dependiendo del eje.
- salida: Voltaje analógico proporcional a la aceleración, una salida en cada eje (X, Y, Z).
- Tensión de la fuente de alimentación: 1.8V a 3.6V, el voltaje de funcionamiento estándar es 3.3V.
- Consumo de energía: Bajo consumo de energía, típico aprox. 350μA en modo de medición.
- ancho de banda: seleccionable por el usuario, hasta 1,6 kHz en los ejes X e Y y hasta 550 Hz en los ejes Z.
- Densidad de ruido: Aprox. 350 μg/√ Hz (microg por hercios de raíz cuadrada).
- Desplazamiento de cero g: salida de 1,5 V (típica) en ausencia de aceleración.
- Deriva de desplazamiento de cero g: Hasta 25 μV/°C (microvoltios/°C) en el rango de temperatura de funcionamiento.
- Rango de temperatura de funcionamiento: -40°C a +85°C (-40°F a +185°F).
Pinout ADXL335.
El acelerómetro ADXL335 de 3 ejes tiene un efecto de 5 derivaciones.
- VCC: Pin de fuente de alimentación (2.8V a 3.6V)
- X_OUT: Salida analógica del eje X.
- Y_OUT: Salida analógica del eje Y.
- Z_OUT: Salida analógica del eje Z.
- Teletipo: Pin de tierra
Acelerómetro ADXL335 e interfaz Raspberry Pico
Para conectar el acelerómetro ADXL335 a la Raspberry Pico usando MicroPython, el ADXL335 debe estar conectado a los pines analógicos del pico y el valor de aceleración debe leerse desde el sensor. Así es como la Raspberry Pi Pico se conecta al acelerómetro ADXL335.
- Conecte el VCC ADXL335 al pin de 3,3 V del pico.
- Conecte el ADXL335 GND al pin GND del pico.
- Conecte el ADXL335 X-OUT al pin GP26 (ADC0) de los picos.
- Conecte el Y-OUT del ADXL335 al pin GP27 (ADC1) de los picos.
- Conecte el ADXL335 Z-OUT al pin GP28 (ADC2) de los picos.
Puede usar cables de placa de pruebas y puentes para la conexión.
Código micropython para leer valores de aceleración
Aquí hay un código micropython de muestra para leer los valores de aceleración: es en la interfaz de los ejes x, y y z con ADXL335 y Raspberry de Pico.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | importación máquina importación Youtime # Pin analógico ADXL335 conectado al canal pico ADC. X_PIN = 26 Y_PIN = 27 Z_PIN = 28 # Crear objetos ADC para cada eje adc_x = máquina.Teletipo(máquina.anclar(X_PIN)) adc_y = máquina.Teletipo(máquina.anclar(Y_PIN)) adc_z = máquina.Teletipo(máquina.anclar(Z_PIN)) Def read_acceleration(Teletipo): # Leer los valores de ADC y convertirlos en voltaje voltaje = Teletipo.read_u16() * 3.3 / 65535 # Convertir voltaje a aceleración (suponiendo una fuente de alimentación de 3.3V) aceleración = (voltaje – 1.65) / 0.330 devolución aceleración mientras verdadero: # Lectura de valores de aceleración del ADXL335 x = read_acceleration(adc_x) y = read_acceleration(adc_y) z = read_acceleration(adc_z)
# Valores de aceleración de impresión Impresión(“X: {:.2f}g, Y: {:.2f}g, Z: {:.2f}g”.formato(x, y, z))
# Espera un momento y lee de nuevo Youtime.dormir(0.1) |
Cuando carga este código en la Raspberry Pi Pico, el valor de aceleración se imprime en la pantalla.
Debido a que la sensibilidad real del ADXL335 puede diferir del valor teórico utilizado en el código (0.330 V / g), es posible que se requiera la calibración del sensor para obtener resultados precisos.
Código micropython para leer valores de ángulo de rotación
Para calcular el ángulo de inclinación (cabeceo y balanceo) a partir del valor de aceleración, puede utilizar la siguiente fórmula:
- pitch = atan(y / sqrt(x^2 + z^2))
- rollo = atan(x / sqrt(y^2 + z^2))
Se actualizó el código de MicroPython para ADXL335 y Raspberry Pi Pico para leer los valores de aceleración X, Y y Z y calcular los ángulos de cabeceo y balanceo.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | importación máquina importación Youtime importación matemáticas # Pin analógico ADXL335 conectado al canal pico ADC. X_PIN = 26 Y_PIN = 27 Z_PIN = 28 # Crear objetos ADC para cada eje adc_x = máquina.Teletipo(máquina.anclar(X_PIN)) adc_y = máquina.Teletipo(máquina.anclar(Y_PIN)) adc_z = máquina.Teletipo(máquina.anclar(Z_PIN)) Def read_acceleration(Teletipo): # Leer los valores de ADC y convertirlos en voltaje voltaje = Teletipo.read_u16() * 3.3 / 65535 # Convertir voltaje a aceleración (suponiendo una fuente de alimentación de 3.3V) aceleración = (voltaje – 1.65) / 0.330 devolución aceleración Def calculate_tilt_angles(x, y, z): alquitrán = matemáticas.Atan 2(y, matemáticas.cuadrado(x**2 + z**2)) rodar = matemáticas.Atan 2(x, matemáticas.cuadrado(y**2 + z**2))
# Convertir ángulo a grado alquitrán = matemáticas.grado(alquitrán) rodar = matemáticas.grado(rodar)
devolución alquitrán, rodar mientras verdadero: # Lectura de valores de aceleración del ADXL335 x = read_acceleration(adc_x) y = read_acceleration(adc_y) z = read_acceleration(adc_z)
# Calcular el ángulo de pendiente alquitrán, rodar = calculate_tilt_angles(x, y, z)
#加速度値と傾斜角度を印刷する Impresión(“X: {:.2f}g, Y: {:.2f}g, Z: {:.2f}g, Pitch: {:.2f}°, Roll: {:.2f}°”.formato(x, y, z, alquitrán, rodar))
# Espera un momento y lee de nuevo Youtime.dormir(0.1) |
Cuando carga este código en su Raspberry Pi Pico, el valor de aceleración se imprime en la pantalla junto con los ángulos de cabeceo y balanceo.
Tenga en cuenta que el ADXL335 es un acelerómetro de 3 ejes. Esto significa que se puede medir la aceleración a lo largo de los ejes X, Y y Z. Si bien puede proporcionar datos valiosos para muchas aplicaciones, no está diseñado para medir directamente los valores de guiñada.
La guiñada es un movimiento de rotación alrededor del eje Z y generalmente se asocia con un cambio en el rumbo o la dirección. Para medir los valores de guiñada, generalmente se usa una combinación de sensores llamada giroscopio o unidad de medición inercial (IMU).