Цифровой акселерометр и антиалайзинговый фильтр

Тема в разделе "Схемотехника, компоненты, модули", создана пользователем Muk, 28 ноя 2017.

  1. Muk

    Muk Нерд

    Добрый день, уважаемые участники форума.

    Начал недавно заниматься темой Ардуино и смежными вопросами. Осваиваю платы Uno, Mega и модули, большинство модулей от Амперки. Сейчас изучаю возможность применения этой платформы для решения текущих задач предприятия - мониторинга ИТ-инфраструктуры и производственного оборудования.

    Возник вопрос по модулю Акселерометр (Troyka-модуль). Пробую с помощью него классифицировать режим работы станка с ЧПУ. Для этого планирую считывать показания акселерометра по 3-м осям с частотой выборки 1кГц (это максимальный "data rate" по паспорту LIS331DLH).

    Меня волнует проблема наложения спектров. В случае аналоговых датчиков можно применить ФНЧ (антиалайзинговый фильтр) на половину частоты дискретизации. В случае цифровых датчиков, как я понимаю, такой фильтр может быть реализован только производителем в аналоговой части схемы датчика. А мне остается только увеличить до предела частоту дискретизации и применить цифровую постобработку сигнала. Но это может уменьшить проблему наложения спектров, но не устранит совсем.

    Может кто-нибудь хорошо знаком с цифровыми акселерометрами MEMS, в частности продуктами STM? Есть ли в них (в каких-нибудь из них) встроенные средства антиалайзинга? В документации пока не нашел, может плохо искал?
    Какую максимальную частоту выборки c акселерометра LIS331DLH стоит применять для уменьшения эффекта наложения спектров, но чтобы это не привело к другим проблемам, например снижению точности измерения?

    P.S. Прошу не отсылать к профессиональным аналоговым акселерометрам ICP, пока хочу набить шишки на более бюджетных вариантах.))
     
  2. rkit

    rkit Гуру

    ФНЧ там есть, читайте еще.
     
  3. Muk

    Muk Нерд

    rkit,
    Спасибо, кажется нашел. В таблице 20 мануала на чип указано значение low-pass filter cut-off frequency равное 780 Гц. Я рассчитывал на значение в 500 Гц, но производителю виднее. Буду разбираться с прерываниями.
     
    Последнее редактирование: 29 ноя 2017
  4. Muk

    Muk Нерд

    Продолжение вопросов по акселерометру (Troyka-модуль).
    Правильно ли я понимаю, что если мне нужно выполнять считывание показаний на максимальной частоте выборки чипа LIS331DLH (равной 1кГц), я должен включить соответствующий режим чипа акселерометра через его регистры и выполнять чтение показаний акселерометра по возникновению Data Ready Signal?
    А для получения этого сигнала как прерывания в программе Ардуино, мне нужно соединить выход чипа акселерометра INT1 или INT2 с одним из цифровых пинов Ардуино? (с конвертацией уровней)

    Но на схеме модуля акселерометра от Амперки соединения выходов INT1 (11я нога) и INT2 (9я нога) не обозначены. Мне не хотелось бы самому изобретать велосипед и пытаться паять соединения для этих ног, учитывая отсутствие опыта и маленький размер чипа акселерометра. Вывод INT2 звонится на одну из площадок в центре модуля, INT1 надежно никуда не прозвонился.

    Может представители Амперки порекомендуют правильный способ ловли Data Ready Signal от чипа LIS331DLH на их модуле акселерометра? Хотелось бы быть уверенным, что не сожгу модуль, пытаясь присоединиться непосредственно к 9й или 11й ногам чипа в отсутствии у меня полной схемы модуля Амперки.

    Уважаемые участники форума, можно ли организовать гарантированное получение показаний на максимальной частоте выборки чипа акселерометра 1кГц без использования Data Ready Signal и прерываний Ардуино?
    Моя программа не может заниматься только считыванием показаний, их нужно еще успевать куда-то сбрасывать, не пропуская моменты считывания (пока я сохраняю их в циклический буфер и сбрасываю на SD). Вариант с использованием программного таймера для считывания показаний я рассматривал, но есть сомнения в успешной синхронизации работы акселерометра на 1кГц и программного таймера Ардуино.
     
    Последнее редактирование: 29 ноя 2017
  5. Muk

    Muk Нерд

    Подумал, раз мне нужна частота выборки 1кГц, это однозначно "normal mode" чипа без возможности засыпания, поэтому я могу просто вычитывать данные по программному таймеру Ардуино с частотой больше 1кГц. В обработчике прерывания таймера проверять STATUS_REG.XDA, STATUS_REG.YDA и STATUS_REG.ZDA и считывать показания только по готовности. Тогда я гарантировано буду сохранять все замеры, которые делает чип. Ну и включить CTRL_REG4.BDU, чтобы не случайно получить в одном цикле чтения половинки из разных замеров.

    Но вопрос по использованию выводов INT1 и INT2 чипа акселерометра в модуле Амперки по прежнему интересен, вдруг в другой задаче спящий режим акселерометра понадобится.