Medición de la frecuencia del acelerómetro con un osciloscopio

Tengo un acelerómetro digital VTI CMA3000-D01 y lo controlo a través de SPI desde un chip Texas Instruments CC2540 usando la MCU 8051 integrada.

En la hoja de datos del CMA3000, se menciona que en el modo 2g, la frecuencia de muestreo de salida es de 400 Hz o 100 Hz (dependiendo de cómo esté configurado el acelerómetro). También hay un "Modo de detección de movimiento" que funciona a una frecuencia de muestreo de 10 Hz.

Lo que me gustaría hacer es cambiar la configuración del acelerómetro al modo de 400 Hz o al modo de 100 Hz y medir la frecuencia en un osciloscopio para verificar que realmente hice ese cambio. Esto es principalmente para mí entender mejor cómo hacer mediciones útiles con un osciloscopio y obtener una mejor comprensión de SPI.

Recientemente compré un osciloscopio Rigol DS1052E, por lo que me gustaría saber cómo conectarlo a mi acelerómetro para medir la frecuencia de salida, y qué configuraciones necesito usar en el osciloscopio para hacer tal lectura, y si es incluso posible.

Intenté conectar la sonda (con una atenuación de 10x) en el osciloscopio al cable SCK en el acelerómetro y el cable de tierra de la sonda a tierra en la placa de circuito, luego presioné el botón "Auto" en el osciloscopio, pero da una forma de onda con una frecuencia y voltaje que salta:

ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

Esperaba ver una onda cuadrada con una frecuencia de 100 Hz (esa es la configuración actual del acelerómetro en mi software), pero obtuve una onda sinusoidal. Ahora, las imágenes anteriores pueden ser correctas, pero no sé lo suficiente para determinar si lo son, por lo que esperaba que alguien con más conocimientos sobre SPI y osciloscopios pudiera darme alguna dirección o decirme qué Necesito leer para entender mejor estas cosas.

También sería genial saber cómo leer la salida del puerto MISO en el acelerómetro para ver qué datos se envían de vuelta a la MCU. No estoy seguro de si esto es posible de hacer solo con un alcance, o si necesitaría un analizador lógico para ver estos datos. Gracias de antemano.

¡El botón "AUTO" suena de nuevo!
¿Está en 10ns/div y 100ns/div, y espera ver 100 Hz? Para empezar, rasque el botón automático y configure su visor como desee. 5mV a 10ns/div es prácticamente solo ruido.

Respuestas (2)

El problema es que está utilizando un acelerómetro digital MEMS y lo que está leyendo es el pin SCK (reloj en serie) de la interfaz en serie. Para funcionar, ese sensor debe conectarse con un microcontrolador, que lo establece para la frecuencia de muestreo, el rango, etc.

Por lo tanto, no debe esperar una onda cuadrada con una frecuencia de 100 Hz, sino un pico rápido (dependiendo de la tasa de bits del bus), correspondiente a una transmisión. Al expandir el pico, si el alcance es lo suficientemente rápido, debería ver la onda cuadrada del reloj dentro del pico.

Además, si no configuras correctamente la interfaz SPI, el uC no generará el reloj (el sensor funciona en modo esclavo) y no leerás ningún valor.

Si desea ver una señal de 100 Hz, puede sondear el pin Int, que envía una interrupción al microcontrolador cada vez que hay una medida disponible. Luego, si maneja adecuadamente la interrupción del microcontrolador, verá el pulso correspondiente a la transmisión cada 10 ms (100 Hz).

Pero asegúrese de no estar usando la detección de movimiento; en ese caso, solo cuando se mide una aceleración, generará la interrupción.

Para leer los datos en el puerto SPI, lo más sencillo es configurar la comunicación con el sensor; de lo contrario, no enviará datos en absoluto. Luego, verifique si el microcontrolador está recibiendo las interrupciones y si está leyendo los datos que proporciona el sensor; puede usar un temporizador para agregar una marca de tiempo a los valores y verificar la frecuencia con la que vienen.

(aún WIP)

Posiblemente podría colocar una resistencia de 1 ohmio más o menos en el cable GND de su fuente de alimentación y medir el voltaje con el osciloscopio. Como ese voltaje es proporcional a la corriente que necesita el acelerómetro, probablemente encontrará la frecuencia en su uso de energía.
¡Inteligente! Pero probar los pines es más simple, y medir el consumo requiere una resistencia en serie con el suministro, y en una PCB es difícil hacer eso...

Gracias por la respuesta, clabacchio, probé algunas de sus sugerencias y logré obtener algunas medidas más significativas hoy. Resulta que la aplicación de muestra que estaba usando para probar el pin SCK solo emitirá una señal cuando esté "conectado" a otro dispositivo (esta es una aplicación Bluetooth Low Energy). Una vez que me emparejé con otro dispositivo, el pin SCK en el acelerómetro comenzó a darme las medidas que esperaba.

Como explicó, no eran 100 Hz, sino la velocidad en baudios a la que se había configurado la interfaz SPI en el microcontrolador. Para verificar esto, cambié la tasa de baudios a 230,400 bps, luego tomé una medida con mi osciloscopio. Aquí hay una captura de pantalla del resultado:

ingrese la descripción de la imagen aquí

Como puede ver, la frecuencia es de 230,4 kHz, exactamente lo que esperaba.

También intenté sondear el pin INT y recibí la siguiente ola:

ingrese la descripción de la imagen aquí

Esta onda siguió saltando, pero en su mayoría se mantuvo entre 19 y 20 Hz. No estoy muy seguro de qué hacer con esto, ya que el acelerómetro se configuró para operar en modo de 100 Hz desde mi código, así que no sé por qué obtengo 20 Hz.

Además, aquí hay 2 capturas del puerto MISO, que mostraron una frecuencia de 20 Hz a 100 ms y 480,8 kHz a 1,0 us:

ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

Tengo curiosidad por qué la frecuencia saltó de 20 Hz a 480,8 kHz simplemente cambiando la escala de tiempo. Pensé que la frecuencia podría volverse un poco más precisa a medida que aumentaba la granularidad de la escala de tiempo, pero no esperaba un cambio drástico de 20 Hz a 480 kHz. Estoy pensando que una de estas medidas debe ser incorrecta, pero no estoy seguro de por qué. Probablemente sea el valor de 20 Hz, ya que 480 kHz es similar a la tasa de bps que estaba usando para esa medida en particular (estaba configurada en 480 500 bps en el microcontrolador).

De todos modos, como dije, logré hacer una medición muy precisa, por lo que estoy feliz con los resultados, pero me interesaría mucho escuchar cualquier consejo que pueda tener con respecto a mis lecturas INT o MISO.

Gracias de nuevo por tu ayuda, ¡es muy apreciada!

No está mal: cuando usa una escala de tiempo más grande, el alcance mide solo los picos correspondientes a una transmisión, porque está configurado para muestrear cada N milisegundos (dependiendo de la tasa de sobremuestreo utilizada); cuando usa la escala 1us/div, muestrea más rápido y puede detectar todos los bordes. Recuerda que la frecuencia que muestra solo se mide por lo que ves en la pantalla, no es una verdad absoluta.
Gracias por la respuesta, verifica lo que comencé a asumir después de publicar mi último mensaje. Me equivoqué al pensar originalmente que la medición de la frecuencia es la "verdad absoluta", como usted dice, pero ahora me doy cuenta de que cambia según lo que se muestra en la pantalla.
Sí :) Tuve un curso de laboratorio en la universidad que se centró en los osciloscopios, y el profesor fue realmente fuerte en dos puntos: 1- NUNCA use la escala automática, y 2- Lea la señal, más que los números