Atmega328 и ADXL335 - это правильный выбор для анализа вибрации?

Я планирую использовать акселерометр ATMEGA328 и ADXL335 для контроля вибрации подшипников и шестерен промышленного экстрактора, который работает с максимальной скоростью 3000 об / мин при 380VAC - 50Hz .

Основная область этого мониторинга состоит в том, чтобы постоянно получать показания вибрации и применять преобразование БПФ, чтобы определить, есть ли что-то, что работает плохо.

Мои основные проблемы связаны со скоростью дискретизации ATMEGA328P: я попытался определить необходимую скорость дискретизации, но меня немного смущает соотношение скорости двигателя/шестерни и скорости дискретизации АЦП ATMEGA...кроме того, ADXL-правильный выбор?

, 👍1

Обсуждение

Согласно Найквисту-Шеннону, вы должны сэмплировать с максимальной интересной частотой в 2 раза. Это, вероятно, то же самое, что и ваши максимальные обороты в минуту, то есть 6000sps. Вам нужно снимать 6000 показаний в секунду с ADXL, а если вам нужны все три оси, то это 18 000 sps (если вам нужны значения одновременно). Arduino может (из быстрого google) управлять примерно 9615sps., @Majenko

С помощью этого вы могли бы управлять 1 осью. Я думаю, вы можете прокрутить цикл по трем осям, взять по образцу блока из каждой и БПФ по очереди., @Majenko

Однако ADXL335 может работать только до 1600 Гц, поэтому не сможет приблизиться к необходимым частотам дискретизации. Возможно, вам лучше думать о звуке, а не о вибрации., @Majenko

Я бы сказал, что это зависит от того, как вы определяете, что "что-то работает не очень хорошо". Какие частоты вы ожидаете найти тогда? Вы провели какое-то исследование? Кроме того, ADXL335 представляет собой устройство с радиометрическим аналоговым выходом с отрицательными напряжениями. Вы планировали, как это прочитать с помощью arduino?, @Peter Paul Kiefer

И где же выполняют БПФ? На Arduino? ;-), @Peter Paul Kiefer

На самом деле ADXL - это только один датчик-кандидат, что-то вроде этого может быть лучше: https://www.pcb.com/products?m=639a91, @Symon

@PeterPaulKiefer, моя первоначальная цель - получить "вибрационный отпечаток", когда экстрактор в порядке и работает хорошо, а затем контролировать его во времени и соотносить результат частотного анализа с типичным частотным отпечатком контролируемых компонентов (например, подшипников)., @Symon

Я боюсь, что подход arduino не самый лучший, если вы ловите рыбу в темноте. Вы не знаете, каких частот (отпечатков пальцев) вам следует ожидать. Для исследовательских целей вы должны использовать оборудование с более широким и глубоким взглядом на предметную область. Допустим, ошибка приводит к обертоновым частотам 23.000 Гц. Тогда ни один из упомянутых вами датчиков не будет достаточным для того, чтобы печатная плата даже вошла в резонанс. И arduino выбыл бы из гонки. Выяснить, что вам нужно, значит найти условие, которое вы должны искать. Вы можете найти некоторые результаты исследований. Стоя на плечах гигантов. ;-), @Peter Paul Kiefer

@Majenko, ATmega328 может дискретизировать до 50 Кбит / с, ускоряя АЦП за счет немного уменьшенного разрешения. Я делаю это в своей библиотеке в этом случае переключателя здесь: https://github.com/ElectricRCAircraftGuy/eRCaGuy_analogReadXXbit/blob/Version_2/eRCaGuy_NewAnalogRead.cpp#L66 50kps - это своего рода "сладкое пятно", где вы получаете в 5 раз быстрее, чем обычная скорость дискретизации, с очень небольшой потерей разрешения. Вы можете сэмплировать еще быстрее, еще больше ускоряя ckock АЦП, но потери разрешения увеличиваются все больше и больше, в конечном итоге вплоть до чего-то вроде 7 бит по сравнению с 10 битами Arduino по умолчанию., @Gabriel Staples

Для тех, кто задается вопросом о том, как аналоговая выборка может повлиять на напряжение на линии, когда выборка слишком быстрая, см. [мой ответ здесь] (https://electronics.stackexchange.com/a/452200/26234 ) в разделе, озаглавленном "Какое время дискретизации АЦП я должен выбрать?", ближе к концу моего ответа., @Gabriel Staples

Габриэль, по поводу датчика и желаемых измерений у вас есть какие-то советы?, @Symon

@Symon, не могли бы вы опубликовать ссылку на таблицу данных ADXL? Я ничего об этом не знаю. Что касается частоты дискретизации, то любая частота дискретизации> 2x максимальных вибрационных частот вас волнует достаточно, чтобы сделать постанализ БПФ, как говорит Найквист. Итак, какие вибрационные частоты вас волнуют? Если ADXL является аналоговым, то самая быстрая выборка одноканального АЦП в ATmega328 составляет около 10 кГц по умолчанию или около 50 кГц, если вы ускоряете тактовую частоту АЦП. Если ADXL цифровой, то все по-другому. Вы также должны подумать о том, как вы будете регистрировать или передавать поток данных в прямом эфире., @Gabriel Staples

Наконец, вам может потребоваться настроить АЦП так, чтобы он выполнял непрерывную выборку без джиттера, а не блокировал выборку, которая используется Arduino по умолчанию при вызове функции analogRead (). Я уверен, что у @nickgammon есть несколько примеров этого (непрерывная выборка без джиттера) на его сайте. Все детали низкого уровня будут указаны в спецификации ATmega328, но ожидайте, что вы прочтете ее в течение нескольких дней, чтобы понять это, и попросите опытного разработчика встраиваемых систем провести вас через нее в течение часа или двух для начала., @Gabriel Staples

@Symon, я оставил ответ. Пожалуйста, не забудьте всегда оставлять ссылки на покупку, ссылки на технические характеристики и т. Д. Для любого конкретного устройства, о котором вы спрашиваете в будущем. Надеюсь, мой ответ прольет некоторый свет на ситуацию. Звуковая карта потенциально может быть отличным способом, так как она предназначена для сэмплирования до сотен килогерц, как правило, для сэмплирования высококачественного голоса, музыки и аудио., @Gabriel Staples

Спасибо за поддержку @GabrielStaples, для полноты картины это датчик, который я выбрал: https://www.analog.com/media/en/technical-documentation/data-sheets/adxl335.pdf, @Symon


2 ответа


Лучший ответ:

3

Мои основные проблемы связаны со скоростью дискретизации ATMEGA328P

ATmega328 может производить дискретизацию до ~10 кбит / с (килограммовые выборки в секунду) в нормальной конфигурации и с 10-битным разрешением АЦПили надежно и с хорошим (почти 10-битным) разрешением до ~50 кбит / с, если вы ускоряете тактовую частоту АЦП. Вы можете стать еще быстрее, если хотите сильно пожертвовать разрешением выборки, но на более высоких скоростях этот процессор слишком медленный, чтобы даже надежно захватывать данные и передавать их или хранить,поэтому вам следует перейти к гораздо более мощному и качественному микроконтроллеру, такому как 32-битный Arduino Zero. Portenta, или не-Arduino STM32, или что-то в этом роде.

Пример ускорения ATmega328 для дискретизации до ~50 кГц:

Смотрите мою библиотеку здесьи мою первоначальную статью о ней здесь.

#include <eRCaGuy_NewAnalogRead.h>

void setup()
{
    adc.setADCSpeed(ADC_FAST); // теперь analogRead() будет работать до ~50 кГц
}

void loop()
{
    // теперь эти показания могут быть сделаны до ~50 кГц
    uint16_t reading = analogRead(A3); 
}

Я не помню точных деталей настройки часов АЦП, но все это есть в спецификации ATmega328 и в моем коде, который вы можете изучить по ссылке библиотеки выше, и вы можете посмотреть на сайте Ника Гэммона здесь: https://www.gammon.com.au/adc.

Как быстро вам нужно сделать пробу? Только вы можете ответить на этот вопрос.

Возможно, вы читали какую-то академическую статью, в которой говорится, что вибрации 102 кГц на двигателе диаметром 5 см из материала X могут вызвать микротрещины в материале, если он будет подвергаться воздействию в течение 100 часов. Ну, в этом случае вам нужно пробовать по крайней мере 204 кГц (в 2 раза больше интересующей частоты), чтобы увидеть, существуют ли вибрации 102 кГц.

Или, возможно, вы просто хотите использовать БПФ для определения оборотов двигателя, так как он почти наверняка будет иметь доминирующую частоту на своей частоте вращения из-за несовершенного баланса двигателя. В этом случае достаточно выборки при 2-кратном максимальном обороте в минуту (но в выборках в секунду, а не в минуту). Вы указали максимальную скорость вращения 3000 об/мин, так что это 3000 оборотов в минуту х 1 мин/60 сек = 50 Гц. Поэтому, чтобы определить свои обороты в минуту по выборке вибрации, вам нужно пробовать по крайней мере в 2 раза быстрее, чем сейчас, или 100 Гц или выше.

Помните, что все это-частотные штучки Найквиста. Все, что говорит частота Найквиста, это [моими собственными словами]:

вы можете обнаружить только частоту до 1/2 от вашей частоты дискретизации

...или иначе сказано [моими собственными словами]:

вы должны пробовать с частотой 2x независимо от того, какую частоту вы пытаетесь измерить

Любая частота дискретизации ниже этой, и вы получаете сглаживание, и математически и физически невозможно определить, существует ли более высокая частота. Любые частоты выше 1/2 вашей частоты дискретизации, которые, по-видимому, существуют в вашем анализе БПФ, должны быть выброшены, так как они недействительны.

Итак, какую максимальную частоту колебаний вам нужно измерить? Это тебе предстоит выяснить. Если вы хотите найти износ зубьев шестерни (например, сломанный, треснувший или отсутствующий зуб шестерни), вы можете сделать некоторые оценки, основанные на количестве зубьев на оборот и зная максимальную скорость вращения вашего двигателя в оборотах в секунду.

Пример: предполагая, что 32 зуба за оборот, вы будете вращаться со скоростью 3000 оборотов/мин / 60 сек/мин = 50 оборотов/сек х 32 зуба/гниль = 1600 зубьев/сек. Но, чтобы идентифицировать сломанный зуб, возможно, вам нужно сделать анализ формы волны над этим сломанным зубом, поэтому вы должны пробовать с 5x до 10x такой скоростью, или, возможно, 1600 зубов/сек x 10 образцов/зуб = 16000 образцов/сек = 16 kSps. But...5 образцов на зуб может быть достаточно, или только 8 KSP...

Видите, как некоторые из этих анализов могут работать? Вы должны выяснить, что именно вы пытаетесь выяснить, и соответственно сделать выборку. Если вы не знаете, что пытаетесь выяснить, просто попробуйте как можно быстрее, а затем с помощью этих данных попытайтесь увидеть, что вы можете выяснить из того, что вы только что выбрали! Таковы пути инженерии и любопытных умов! :)


С учетом сказанного, предполагая, что вы используете adc.setADCSpeed моей библиотеки(ADC_FAST); трюк, вы можете сэмплировать 1 канал до 50 кГц или 3 канала до 50/3 = ~16 кГц, что означает, что максимальная частота колебаний, которую вы можете обнаружить с помощью FFT для 3 каналов, составляет ~8 кГц с ATmega328. достаточно?

НО у вас будут проблемы с дрожанием, если вы не переведете АЦП в режим непрерывной дискретизации с фиксированным интервалом, и вы не сможете дискретизировать все 3 канала сразу, поэтому, естественно, между ними будет смещение, так как они происходят последовательно один за другим.


Как быстро может быть получен образец ADXL335? (то есть: какова его "пропускная способность" или частотная характеристика?)

Что касается ADXL335, то его технические характеристики показывают, что это аналоговый 3-осевой акселерометр, а не цифровой, поэтому вы ограничены:

  1. как быстро АЦП, который у вас есть на вашем микроконтроллере, может дискретизировать датчик (мы уже придумали ~16 кГц (kSps)/канал, для 3 каналов, выше) и
  2. какова пропускная способность ADXL335, или максимальная частотная характеристика.

В таблице данных (см. Изображение ниже) говорится, что вы получаете полосу пропускания от 0,5 Гц до 1600 Гц для осей X и Y и от 0,5 Гц до 550 Гц для оси Z, все это зависит от выбранных байпасных конденсаторов cx, cyи cz, которые вы выбираете для него. изображение и подсветка ниже.

Пропускная способность означает просто [по моим собственным словам]:

Полоса пропускания-это максимальная частота, с которой устройство может реагировать на изменения в том, что оно измеряет (например, акселерометр на изменения ускорения).

По определению, полоса пропускания фильтра нижних частот или датчика, реагирующего на высокочастотный вход, равна частоте, на которой измерение измеряемого объекта ослабляется на 3 дБ, или, другими словами, равна 1/sqrt(2) = 0,707 раза. большой, как сама измеряемая вещь. Таким образом, если полоса пропускания акселерометра составляет 50 Гц, то это означает, что если он пытается измерить вибрацию 50 Гц, то измерение, которое он выводит на этой частоте, ослабляется до 0,707 x больше, чем фактическая амплитуда этой вибрации. Поэтому говорят, что этот датчик не может быть надежно использован для измерения более высоких частот, чем эта. Обратите внимание, что поскольку мощность = V^2/R, а правило 0.707 применяется к напряжению, то затухание составляет 0.707^2 = 0.5 для мощности.

Если вы купили свой датчик ADXL335 у Adafruit здесь за $15 (https://www.adafruit.com/product/163), они утверждают:

Конденсаторы фильтра XYZ составляют 0,1 мкФ для полосы пропускания 50 Гц

...это означает, что они выбрали конденсаторы, чтобы придать ему полосу пропускания 50 Гц, или частотную характеристику. Это означает, что датчик ограничен надежным измерением вибраций только до 50 Гц. Затем вы должны сэмплировать по крайней мере в 2 раза эту полосу пропускания, чтобы адекватно захватывать частоты до этого значения, опять же, основываясь на Найквисте. Это означает, что для этой версии устройства Adafruit и с этими выбранными байпасными конденсаторами вы можете производить выборку на частоте 100 Гц или выше, чтобы обнаружить вибрации до 50 Гц (это Герц, а не килогерц!). Даже если вы производите выборку намного быстрее, максимальная надежная частота, которую может измерить это устройство, составляет всего до 50 Гц, прежде чем затухание его измерений станет серьезной проблемой. Независимо от того, осуществляется ли выборка при 100 Гц или 1000 Гц, частота, которую этот датчик может измерять, в этой конфигурации составляет только до 50 Гц, что составляет всего 50/сек x 60сек/мин = 3000 об / мин,если ваша цель состоит в том, чтобы просто определить частоту вращения, но не какие-либо высокочастотные режимы вибрации. для вашего устройства.

Полоса пропускания 50 Гц (максимальная частотная характеристика), к вашему сведению, оптимизирована для снижения шума выборки для портативных игровых контроллеров на основе наклона, поскольку она намеренно ослабляет любые частоты выше 50 Гц, а 50 Гц, поступающий от человека, является хорошим ожиданием для сигналов управления человеком. Вы можете попробовать этот датчик для такого игрового контроллера в диапазоне от 50 Гц до 1 кГц, но опять же, он не может обнаруживать вибрации быстрее, чем примерно 50 Гц. Таким образом, версия Adafruit ADXL335 оптимизирована для создания самодельных ручных контроллеров на основе наклона для игр, игрушек, интеллектуальных устройств, устройств радиоуправления и т. Д.

Дополнительное примечание по частоте дискретизации

Несмотря на то, что частота Найквиста говорит, что вам нужно только сэмплировать в 2 раза интересующую частоту, чтобы обнаружить интересующую частоту с помощью БПФ или чего-то подобного, вы должны понимать, что если вы когда-нибудь захотите построить данный сигнал или проверить его форму или форму волны, вы должны сэмплировать по крайней мере в 5-10 раз быстрее, чем сам сигнал. частота сигнала, который вы пытаетесь записать и проверить.

Именно так оцениваются осциллографы. Осциллограф с полосой пропускания "100 МГц" будет иметь частоту дискретизации не менее чем в 5-10 раз больше, или от 500 Мс / с (мега-сэмплы в секунду) до 1 Гсп / с (Гига-сэмплы в секунду). Это имеет смысл, потому что целью осциллографа является построение формы сигнала, а для этого требуется не менее 5-10 точек за период или 5-10-кратная частота дискретизации номинальной полосы пропускания, чтобы отобразить достаточно хорошее изображение формы сигнала.

Для чистого БПФ или частотного анализа, где вы просто хотите знать частоту измеряемой вещи, но не должны знать, как выглядит форма волны, частота дискретизации точно в 2 раза или выше частоты измеряемой вещи физически и математически достаточна.

,

Спасибо Габриэль, это один из самых полных ответов, которые мне все давали за всю мою жизнь! хорошего дня, парень! Спасибо! Теперь остается только один вопрос: глядя на коммерческие датчики MEMS, у вас есть некоторые рекомендации о том, где мне нужно указать, чтобы сэмплировать и более высокие частоты...возможно, этот датчик - правильный выбор: http://static6.arrow.com/aropdfconversion/c9b572888f3b1329b19ec85b0ef62a2d2c923af5/adcmxl3021.pdf, @Symon

@Symon, да, это выглядит как отличный датчик! Это цифровой датчик с собственным встроенным АЦП до 220 КСП, КИХ-фильтрами, внутренними возможностями БПФ и т.д. Я вижу, что он использует контакты CS (Chip Select), SCLK (Serial Clock), DIN (Data In --MOSI (Master Out Slave In)), DOUT (Data Out--MISO (Master In Slave Out), что означает, что он взаимодействует через SPI. Вам придется выяснить, как это сделать. Конечно, это будет кривая обучения, но обязательно возьмите ее и приступайте к делу!, @Gabriel Staples


2

Во - первых, 3000 об / мин-это всего лишь 50 Гц, поэтому дискретизация не является проблемой для основной частоты. Но обычно вы хотите увидеть гармоники, выявить проблемы с зубьями зубчатых колес и т. Д. Я предлагаю использовать мое программное обеспечение Daqarta со звуковой картой для первоначального тестирования. Он уже делает все, что вам нужно, включая отображение формы волны, спектра и спектрограммы, а также многое другое. Вы можете использовать его бесплатно в течение 30 сеансов или 30 дней, после чего входы звуковой карты больше не поддерживаются. К тому времени у вас должно быть хорошее представление о том, что вам нужно. Как оказалось, Daqarta также поддерживает Arduino, и на этом пробный период не заканчивается. Таким образом, вы можете сделать все с помощью Arduino бесплатно. На сайте Daqarta также есть контактная страница, и я рад ответить на вопросы и оказать конкретную помощь по любым возникающим вопросам. Это включает в себя бесплатных пользователей.

,