Я работаю над мобильным роботом, управляемым по беспроводной линии связи 2,4 ГГц. Приемник подключен к Arduino Uno, который служит на борту в качестве основного контроллера. Наиболее критичный (и основной) входной канал, поступающий от приемника, производит очень шумный сигнал, который приводит к множеству незначительных изменений в выходной мощности исполнительных механизмов, даже если они не нужны.
Участок ввода Arduino с интервалом 30 секунд.
Я ищу библиотеки, которые могут выполнять эффективное сглаживание. Есть ли какие-либо библиотеки сглаживания сигнала, доступные для Arduino (Uno)?
library
signal-processing
asheeshr
источник
источник
Ответы:
Microsmooth - это облегченная библиотека сглаживания сигналов, которая в настоящее время разрабатывается мной.
Это все еще продолжается, и цель состоит в том, чтобы сделать его легким с точки зрения памяти и быстрым. Библиотека предоставляет несколько фильтров для сглаживания:
Чтобы использовать библиотеку, скачайте и добавьте ее в исходный каталог. Кроме того, добавьте следующую строку в ваш исходный файл:
источник
Я думаю, что вижу много шумовых пиков в вашем шумовом сигнале.
Медианный фильтр лучше избавляется от пиков шума одиночной выборки, чем любой линейный фильтр. (Это лучше, чем любой фильтр нижних частот, скользящее среднее, взвешенное скользящее среднее и т. Д. С точки зрения его времени отклика и его способности игнорировать такие выбросы шума одиночного образца).
На самом деле существует множество библиотек сглаживания сигнала для Arduino, многие из которых включают медианный фильтр.
библиотеки сглаживания сигналов в arduino.cc:
библиотеки сглаживания сигналов в github:
Будет ли что-то подобное в вашем роботе? (Медиана 3 требует очень небольшой мощности процессора, а значит, и быстрой):
источник
Вы пробовали фильтр низких частот? Я нашел пример здесь , другой здесь .
Обе эти библиотеки имеют список данных, считываемых с аналогового датчика по вашему выбору, который усредняется. Каждое новое значение датчика добавляется в список, а последнее выбрасывается следующим образом:
источник
Вы можете отфильтровать это в цифровом виде, используя фильтр нижних частот:
Измените 0,99, чтобы изменить частоту среза (ближе к 1,0 - более низкая частота). Фактическое выражение для этого значения - exp (-2 * pi * f / fs), где f - требуемая частота среза, а fs - частота, с которой производится выборка данных.
Другой тип «цифрового фильтра» - это фильтр событий. Это хорошо работает на данных, которые имеют выбросы; например, 9,9,8,10,9,25,9. Фильтр событий возвращает наиболее частое значение. По статистике это режим.
Статистические средние, такие как среднее значение, режим и т. Д., Могут быть рассчитаны с использованием средней библиотеки Arduino .
Пример, взятый со страницы библиотеки Arduino, относится к:
источник