Medir la frecuencia del acelerómetro con un osciloscopio

4

Tengo un VTI CMA3000-D01 acelerómetro digital y lo estoy controlando a través de SPI desde un chip CC2540 de Texas Instruments usando el 8051 MCU integrado.

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 (según la configuración del 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 haya realizado ese cambio. Esto es principalmente para que yo pueda entender mejor cómo hacer mediciones útiles con un osciloscopio y tener una mejor comprensión del SPI.

Recientemente he comprado 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é ajustes necesito usar en el osciloscopio para realizar dicha lectura. y si es posible.

He intentado conectar la sonda (con una atenuación de 10x) en el alcance al cable SCK en el acelerómetro y el cable de tierra de la sonda al suelo en el tablero de circuitos, luego presionando el botón "Auto" en el osciloscopio, pero me da una forma de onda con una frecuencia y un voltaje que saltan alrededor:

Esperaba ver una onda cuadrada con una frecuencia de 100 Hz (esto es lo que el acelerómetro está configurado actualmente en mi software), pero obtuve una onda sinusoidal. Ahora las imágenes de arriba 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 orientación, o decirme qué Necesito leer para entender mejor estas cosas.

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

    
pregunta adamc

2 respuestas

4

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

Por lo tanto, no tiene que esperar una onda cuadrada con una frecuencia de 100 Hz, sino un pico rápido (según la tasa de bits del bus), correspondiente a una transmisión. Si se amplía 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 configura la interfaz SPI correctamente, la unidad uC no generará el reloj (el sensor funciona en modo esclavo) y no leerá ningún valor.

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

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

Para leer los datos en el puerto SPI, lo más simple 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.

(todavía WIP)

    
respondido por el clabacchio
2

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

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

Comopuedever,lafrecuenciaesde230.4kHz,exactamenteloqueesperaba.

TambiénintentésondearelpinINT,yrecibílasiguienteoleada:

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

También, aquí hay 2 capturas desde el puerto MISO, que mostró una frecuencia de 20 Hz a 100 ms y 480.8 kHz a 1.0 us:

Tengo curiosidad por saber por qué la frecuencia saltó de 20 Hz a 480.8 kHz simplemente cambiando la escala de tiempo. Pensé que la frecuencia podría ser 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 los 480 kHz son similares a la velocidad de bps que estaba usando para esa medida en particular (se estableció en 480,500 bps en el microcontrolador).

De todos modos, como dije, me las arreglé para hacer una medición muy precisa, así que estoy feliz con los resultados, pero me gustaría mucho escuchar cualquier consejo que pueda tener con respecto a mis lecturas de INT o MISO.

Gracias de nuevo por tu ayuda, ¡lo apreciamos mucho!

    
respondido por el adamc

Lea otras preguntas en las etiquetas