цифровая электроника
вычислительная техника
встраиваемые системы

 
» » Как создать фильтр нижних частот в MicroPython



Как создать фильтр нижних частот в MicroPython

Автор: Mike(admin) от 10-04-2023, 03:55

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


Как создать фильтр нижних частот в MicroPython

К счастью, в самой базовой форме фильтр нижних частот очень просто реализовать, и в данном примере мы покажем, как запрограммировать и настроить его с нуля на Python (точнее на MicroPython, например, для Raspberry Pi Pico) и продемонстрируем, как он работает.


Для примера мы будем получать данные с акселерометра в составе датчика MPU6050. Сразу приведем код на MicroPython, а затем объясним его.



#Native libs
from machine import Pin, I2C
import math
import time
from time import sleep

from imu import MPU6050


i2c = I2C(0, sda=Pin(0), scl=Pin(1), freq=400000)
sensor = MPU6050(i2c)
filtered_ax = 0
alpha = 0.85 # must be between 0 and 1 inclusive


def low_pass_filter(prev_value, new_value):
    return alpha * prev_value + (1 - alpha) * new_value


while True:
    ax_new = sensor.accel.x
    filtered_ax = low_pass_filter(filtered_ax, ax_new)
    print("filtered_ax: ", filtered_ax, "raw ax", ax_new)
    time.sleep(1/10)

Сначала мы создаем связь с объектом MPU6050, который является датчиком, с которого мы получаем данные. Во второй части кода мы инициализируем альфа-значение и создаем функцию фильтра нижних частот. Концепция проста: чем выше значение альфа, тем больше мы доверяем предыдущему значению данных, в данном случае нашему ускорению в направлении x. Это означает, что чем выше значение альфа, тем больше фильтрации мы будем выполнять и получим более плавный сигнал. Будьте осторожны, так как слишком высокое значение альфа может сделать ваше приложение слишком медленным, чтобы реагировать на изменения. Это может быть эмпирическим выбором при принятии решения о том, какое значение альфа использовать.


Наконец, мы запускаем цикл while, чтобы получить реальные значения датчиков, и подключаем их к фильтру, чтобы выдать новое отфильтрованное значение. Этот цикл повторяется каждые 1/10 секунды. Вы можете увеличить частоту измерения, если хотите. Этот код и фильтр можно применить к любому потоку данных или языку программирования, и это низкочастотная фильтрация в самом простом виде.


После запуска данного ФНЧ на наших данных ускорения мы получили график, похожий на следующий:


Как создать фильтр нижних частот в MicroPython

Здесь более резкий сигнал – это необработанный сигнал, а более гладкий сигнал – после того, как он был подан на фильтр нижних частот.




© digitrode.ru


Теги: MicroPython, фильтр, MPU6050, акселерометр, Raspberry Pi Pico




Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий