Измерение частоты акселерометра с помощью осциллографа

У меня есть цифровой акселерометр VTI CMA3000-D01 , и я управляю им через SPI с чипа Texas Instruments CC2540, используя встроенный микроконтроллер 8051.

В даташите на CMA3000 упоминается, что в режиме 2g частота дискретизации на выходе составляет 400 Гц или 100 Гц (в зависимости от того, как настроен акселерометр). Также есть «Режим обнаружения движения», который работает с частотой дискретизации 10 Гц.

Что я хотел бы сделать, так это изменить конфигурацию акселерометра на режим 400 Гц или режим 100 Гц и измерить частоту на осциллографе, чтобы убедиться, что я действительно сделал такое изменение. Это в основном для меня, чтобы лучше понять, как проводить полезные измерения с помощью осциллографа, и лучше понять SPI.

Я недавно купил осциллограф Rigol DS1052E, поэтому я хотел бы знать, как подключить его к моему акселерометру для измерения выходной частоты, и какие настройки мне нужно использовать на осциллографе, чтобы сделать такие показания, и если это даже возможно.

Я пробовал подключить щуп (при 10-кратном затухании) на осциллографе к проводу SCK на акселерометре и проводу заземления от щупа к земле на печатной плате, затем нажать кнопку «Авто» на осциллографе, но это дает мне сигнал с частотой и напряжением, которые прыгают вокруг:

введите описание изображения здесь введите описание изображения здесь

Я ожидал увидеть прямоугольную волну с частотой 100 Гц (это то, на что в настоящее время настроен акселерометр в моем программном обеспечении), но я получил синусоидальную волну. Теперь приведенные выше изображения могут быть на самом деле правильными, но я недостаточно знаю, чтобы определить, так ли это, поэтому я надеялся, что кто-то, более осведомленный в отношении SPI и осциллографов, сможет дать мне какое-то направление или сказать мне, что Мне нужно читать, чтобы лучше понять этот материал.

Также было бы здорово узнать, как читать выходные данные порта MISO на акселерометре, чтобы увидеть, какие данные отправляются обратно в MCU. Я не уверен, можно ли это сделать только с помощью области, или мне понадобится логический анализатор, чтобы увидеть эти данные. Заранее спасибо.

Кнопка "АВТО" снова бьет!
У вас 10 нс/дел и 100 нс/дел, и вы надеетесь увидеть 100 Гц? Для начала сотрите кнопку авто и настройте свой прицел так, как вы хотите. 5 мВ при 10 нс/дел — это просто шум.

Ответы (2)

Проблема в том, что вы используете цифровой акселерометр MEMS, и то, что вы читаете, является выводом SCK (последовательные часы) последовательного интерфейса. Чтобы функционировать, этот датчик должен быть связан с микроконтроллером, который устанавливает для него частоту дискретизации, диапазон и так далее.

Таким образом, вы не должны ожидать прямоугольную волну с частотой 100 Гц, а быстрый (в зависимости от битрейта шины) всплеск, соответствующий передаче. Расширяя шип, если прицел достаточно быстрый, вы должны увидеть прямоугольную волну часов внутри шипа.

Более того, если вы неправильно настроите интерфейс SPI, UC не будет генерировать часы (датчик работает в ведомом режиме), и вы не будете считывать никаких значений.

Если вы хотите увидеть сигнал частотой 100 Гц, вы можете проверить контакт Int, который отправляет прерывание на микроконтроллер каждый раз, когда доступна мера. Затем, если вы правильно обработаете прерывание от микроконтроллера, вы увидите импульс, соответствующий передаче, каждые 10 мс (100 Гц).

Но убедитесь, что вы не используете обнаружение движения; в этом случае прерывание будет генерироваться только при измерении ускорения.

Для чтения данных на порту SPI самое простое — настроить связь с датчиком; в противном случае он вообще не будет отправлять данные. Затем проверьте, получает ли микроконтроллер прерывания и считывает ли он данные, которые дает датчик; вы можете использовать таймер, чтобы добавить метку времени к значениям и проверить частоту их появления.

(все еще в процессе)

Возможно, вы могли бы подключить резистор сопротивлением 1 Ом или около того к проводу GND вашего источника питания и измерить напряжение на нем с помощью прицела. Поскольку это напряжение пропорционально току, который требуется акселерометру, вы, вероятно, найдете частоту в его энергопотреблении.
Умный! Но прощупывать контакты проще, а для измерения потребления требуется резистор, включенный последовательно с источником питания, а на печатной плате это сделать сложно...

Спасибо за ответ, clabacchio, я попробовал некоторые из ваших предложений и сегодня смог получить более значимые измерения. Выяснилось, что пример приложения, которое я использовал для проверки вывода SCK, будет выводить сигнал только тогда, когда оно «подключено» к другому устройству (это приложение Bluetooth с низким энергопотреблением). Как только я подключился к другому устройству, контакт SCK на акселерометре начал давать мне ожидаемые измерения.

Как вы объяснили, это была не 100 Гц, а скорость передачи данных, на которую был установлен интерфейс SPI на микроконтроллере. Чтобы убедиться в этом, я изменил скорость передачи данных на 230 400 бит/с, а затем провел измерения с помощью осциллографа. Вот скриншот результата:

введите описание изображения здесь

Как видите, частота составляет 230,4 кГц, именно то, что я и ожидал.

Я также попытался проверить контакт INT и получил следующую волну:

введите описание изображения здесь

Эта волна продолжала прыгать, но в основном оставалась между 19 и 20 Гц. Я не совсем уверен, что с этим делать, поскольку акселерометр был настроен на работу в режиме 100 Гц из моего кода, поэтому я не знаю, почему я получаю 20 Гц.

Кроме того, вот 2 снимка с порта MISO, которые показали частоту 20 Гц при 100 мс и 480,8 кГц при 1,0 мкс:

введите описание изображения здесь введите описание изображения здесь

Мне любопытно, почему частота подскочила с 20 Гц до 480,8 кГц только за счет изменения временной шкалы. Я думал, что частота может стать немного более точной, когда я увеличил детализацию шкалы времени, но я не ожидал резкого изменения с 20 Гц до 480 кГц. Я думаю, что одно из этих измерений должно быть неправильным, но я не уверен, почему. Это, вероятно, значение 20 Гц, поскольку 480 кГц аналогичны скорости передачи бит/с, которую я использовал для этого конкретного измерения (в микроконтроллере она была установлена ​​на 480 500 бит/с).

В любом случае, как я уже сказал, мне удалось провести одно очень точное измерение, поэтому я доволен результатами, но мне было бы очень интересно услышать какие-либо советы относительно моих показаний INT или MISO.

Еще раз спасибо за вашу помощь, это очень ценится!

В этом нет ничего плохого: когда вы используете большую временную шкалу, осциллограф измеряет только пики, соответствующие одной передаче, потому что он настроен на выборку каждые N миллисекунд (в зависимости от используемой частоты передискретизации); когда вы используете шкалу 1 мкс/дел, выборка выполняется быстрее и она способна обнаруживать все края. Помните, что частота, которую он отображает, измеряется только тем, что вы видите на экране, это не абсолютная правда.
Спасибо за ответ, он подтверждает то, что я начал предполагать после того, как опубликовал свое последнее сообщение. Я ошибался, изначально думая, что измерение частоты является «абсолютной истиной», как вы выразились, но теперь я понимаю, что оно меняется в зависимости от того, что отображается на экране.
Да :) У меня был лабораторный курс в университете, посвященный осциллографам, и профессор был действительно силен в двух пунктах: 1- НИКОГДА не используйте автомасштабирование и 2- читайте сигнал, а не числа.