А давайте еще раз задачу. Вам необходимо замерять какой-то техпроцесс чтобы либо делать какие-то выводы, либо на ходу вносить корректировку. Сложилось впечатление, что замер частоты для вас не важен - вы просто озвучили диапазон колебания детали. Вам важна амплитуда. То есть вам в принципе не важна синусоида, вам важны максимальные и минимальные показания отклонений в пределах небольшого временного окна. А эта задача решается немножко иначе.
Как минимум, для фиксированной частоты вам не нужно выводить дискретизацию каждого отсчета. Ловите амплитуду каждого периода и выводите с частотой 50 отсчетов в секунду. Если скорость затуханий позволяет, можно реже - между отсчетами линейная интерполяция.
Не тех.процесс. Измерительная задача (не на постоянке, а как поставил, измерил, отключил). Главное необходимы амплитуды колебаний (на сколько падает по вершинам и впадинам). Определение скорости затухания. При этом частота является желательным параметром
С одной стороны согласен, если просто брать амплитуды, но здесь надо больше разбираться в языке программирования ардуинки (C++). Я в нем не силен к сожалению. Можно поискать конечно, но исходя из наличия желания определить частоту колебания, на мой взгляд лучше вывести данные в порт и дальше с ними для меня не сложно работать
Выводите в порт данные по каждому периоду колебаний. Текущую частоту и амплитуду. Два числа на период вместо 50. Если ограничиться вашим диапазоном частот, то скорее всего с допустимой точностью хватит дискретизации на 8 бит. И вам не нужно выводить полное показание датчика (сколько то там цифр после запятой). Ваши колебания тоже в пределах известного диапазона. Определитесь с точностью и тоже кодируйте амплитуду по настроенному максимуму 8 битами. Итого, каждый отчет - 2 байта. Условно, 100 байт в секунду.
Это все решается цифровыми методами обработки сигналов. Если оцифровать сигналы с частотой превышающей раз в 50 необходимые для анализа частоты то сделав фурье, а лучше вэйвлет преобразование, то можно сразу получим все требуемые параметры сигналов и их эволюцию во времени.
По математике тогда надо в ардуинке (+АЦП) брать большую частоту и выводить с меньшей. Но насколько нужен такой велосипед, если уже сразу сделать вывод на комп в байтовом формате? Скорости в байтовом формате за глаза - проверил. Ограничителем частоты теперь является только ADS1115. Но здесь тоже есть варианты выше.
Если с малой битностью брать сигнал сразу на ардуинку без АЦП, то есть вероятность неточности получения зависимости. Фурье уже не помню от слова совсем)) Давно учился
Насчет суфикса думаю не надо. В принципе, если взять заголовок условно два байта FF, то таких не будет в результатах работы датчика - показаниях. А после заголовка пойдет уже явные байты измерения. Программно на ПК легко заголовок выловить
Заголовок один на фрейм. После фрейма контрольная сумма. Фрейм содержит пачку отсчетов. Если сумма не сошлась, фрейм потерян. Если вы можете повторять замеры (судя по вашей задаче), то потеря определяемая “на лету” не критична. Размер фрейма подбирается по пропускной способности канала (чтобы на мелких фреймах не терять на оверхеде заголовка и суммы) и по надежности. Чем меньше ошибок в процессе тестирования и наладки, тем больше можно делать фрейм, но тогда дольше время синхронизации.
Блин, что-то не подумал фреймами отправлять. Хороший вариант. Спасибо. Позже посмотрю, что будет на ПК прилетать. По контрольной сумме тогда уже тоже гляну
Скетч работает, но пока информацию смотрел только через Advanced Serial Port Monitor. Числа менялись в зависимости от расстояния по датчику. Ручками байты в числа не стал переводить. Скрин как пример работы (заголовком пока сделал, как и говорил два байта по FF). Датчик двигал.
Проблема была для меня лично, что примеры, что есть в инете, они по ходу были по старой библиотеке. Но в файлике Adafruit_ADS1X15.h нашел, что поменять в скетче. Надо потом проверить только будет ли нормально именно числа меняться.
Второй скрин это датчик неподвижен. Шумы есть, но датчик просто лежит и поверхность не пойми какая)
Здесь было сделано 100 мсек задержка, просто для скрина. Запускал с 1 мсек, тоже нормально шло, но пока нет хорошей записи не пробую максимум. Без задержки не запускал вообще пока что, да и не нужно, т.к. этот ацп дает все равно только 860 sps по пределу