Фильтрация звуковых частот

Kollname
Offline
Зарегистрирован: 18.10.2016

Помогите разобраться с этой программой. http://t-filter.engineerjs.com/
 

Сгенерировал код, который будет фильтровать низкие частоты. Но как его использовать в скече не пойму. Уже и создавал текстовые файлы в папке библиотека и скачивал...

Клапауций 823
Клапауций 823 аватар
Offline
Зарегистрирован: 13.01.2017

ты заблудился? - здесь не форум техподдержки этой программы.

Волшебник
Offline
Зарегистрирован: 22.12.2016

Забей на фильтры, бери сразу БПФ, сколько полос (бинов) на выходе - такая и полоса, библиотаке тут есть:

http://forum.cxem.net/index.php?/topic/176078-%D0%B4%D0%B5%D0%BB%D0%B0%D0%B5%D0%BC-%D1%81%D0%BF%D0%B5%D0%BA%D1%82%D1%80%D0%BE%D0%B0%D0%BD%D0%B0%D0%BB%D0%B0%D0%B9%D0%B7%D0%B5%D1%80-%D0%B8%D0%B7-%D0%B0%D1%80%D0%B4%D1%83%D0%B8%D0%BD%D0%BE/

Kollname
Offline
Зарегистрирован: 18.10.2016

Волшебник, благодарю за ценную информацию.
А, что вы имели ввиду по : сколько полос на выходе, такая и полоса?

 

Волшебник
Offline
Зарегистрирован: 22.12.2016

Смотрите, прокачав БПФ на 512, на выходе получается 256 полос, или бинов. Если ацп крутили на 20.480 кГц, то каждая полоса получится шириной в 

20.480 / 512 -> 40 Герц. Т.е. БПФ это 256 фильтров по 40 Гц, от 0 до 10 кГц.

Если мне надо фильтр полосовой, от 400Гц до 1.5 кГц, то на до взять 10-й, 11-й ...... 37-й включительно. Всё , ликбез окончен, подробнее в интернете ищите.

Kollname
Offline
Зарегистрирован: 18.10.2016

Ох, ваша информационная щедрость не знает границ ))) премного благодарен))очень понятно и доступно))

Logik
Offline
Зарегистрирован: 05.08.2014

Ага. Только БПФ - не фильтр. Фильтр выдает на выходе в полосе пропускания тот же сигнал что и на входе (ну с временной задержкой), а БПФ - комплексное число (одно на все отсчеты), грубо говоря амплитуду и фазу сигнала в данной полосе. Потому каждое из них для своего применяется и заменить друг друга не могут))) А так тоже штука полезная.

Для интересу сгенерил на том сайте код.

#include "SampleFilter.h"

static double filter_taps[SAMPLEFILTER_TAP_NUM] = {
  -0.02010411882885732,
  -0.05842798004352509,
  -0.061178403647821976,
  -0.010939393385338943,
  0.05125096443534972,
  0.033220867678947885,
  -0.05655276971833928,
  -0.08565500737264514,
  0.0633795996605449,
  0.310854403656636,
  0.4344309124179415,
  0.310854403656636,
  0.0633795996605449,
  -0.08565500737264514,
  -0.05655276971833928,
  0.033220867678947885,
  0.05125096443534972,
  -0.010939393385338943,
  -0.061178403647821976,
  -0.05842798004352509,
  -0.02010411882885734
};

void SampleFilter_init(SampleFilter* f) {
  int i;
  for(i = 0; i < SAMPLEFILTER_TAP_NUM; ++i)
    f->history[i] = 0;
  f->last_index = 0;
}

void SampleFilter_put(SampleFilter* f, double input) {
  f->history[f->last_index++] = input;
  if(f->last_index == SAMPLEFILTER_TAP_NUM)
    f->last_index = 0;
}

double SampleFilter_get(SampleFilter* f) {
  double acc = 0;
  int index = f->last_index, i;
  for(i = 0; i < SAMPLEFILTER_TAP_NUM; ++i) {
    index = index != 0 ? index-1 : SAMPLEFILTER_TAP_NUM-1;
    acc += f->history[index] * filter_taps[i];
  };
  return acc;
}








SampleFilter.h 

#ifndef SAMPLEFILTER_H_
#define SAMPLEFILTER_H_

/*

FIR filter designed with
 http://t-filter.appspot.com

sampling frequency: 2000 Hz

* 0 Hz - 400 Hz
  gain = 1
  desired ripple = 5 dB
  actual ripple = 4.1393894966071585 dB

* 500 Hz - 1000 Hz
  gain = 0
  desired attenuation = -40 dB
  actual attenuation = -40.07355419274887 dB

*/

#define SAMPLEFILTER_TAP_NUM 21

typedef struct {
  double history[SAMPLEFILTER_TAP_NUM];
  unsigned int last_index;
} SampleFilter;

void SampleFilter_init(SampleFilter* f);
void SampleFilter_put(SampleFilter* f, double input);
double SampleFilter_get(SampleFilter* f);

#endif

Чего тут неясно?! Все как божий день. Только от плавающей запятой уйти и годный код будет. Но тяжеловато оно и для ардуино и для любителей, что Вы собственно подтвердили.

ПС. БПФ намного более ресурсоемкое.

Волшебник
Offline
Зарегистрирован: 22.12.2016

Logik пишет:
Ага. Только БПФ - не фильтр. Фильтр выдает на выходе в полосе пропускания тот же сигнал что и на входе (ну с временной задержкой), а БПФ - комплексное число (одно на все отсчеты), грубо говоря амплитуду и фазу сигнала в данной полосе. Потому каждое из них для своего применяется и заменить друг друга не могут))) А так тоже штука полезная.

ПС. БПФ намного более ресурсоемкое.

Логик, оба ваши утверждения неверны. Логически ложные -);

БПФ можно крутить вперёд и назад, реверсивно. Теперь представьте что я прокрутил ваш базар через ардуино, получил 128 полос, выкинул лишние полосы и прокрутил назад. Получим голос шепелявой беззубой старухи ( без обид, для примера).

БПФ "делает" любой фильтр с блеском, более того, фильтр с 10-ю 20-ю режекторными полосками в спектре - да раз плюнуть, обычные низко - высокочастотные - просто детский лепет.

Легко заменяет фильтр любой сложности.

По эффективности ему вообще нет равных. Представьте тот голос шепелявой старухи, на затратах процессорного времени эквивалентных фильтру всего !!!! 4-го порядка. Если вы попробуете на рекурсивных ( IIR ) или на FIR - это 255 порядок фильтров, ардуино ваще не посчитает, не хватит точности плавающей точки ,  а даблы она не тянет

nik182
Offline
Зарегистрирован: 04.05.2015

БПФ не может быть фильтром уже по тому, что он БПФ. Если взять синус частотой не кратной гармоники разложения, то получим гребёнку гармоник. Как бы вы не извращались с обнулением гармоник, вроде как для фильтрации, и последующим обратным преобразованием вы не получите синус прошедший через фильтр. Получите кучу ложных частот. Ну и где здесь фильтр? БПФ позволяет оценить энергию сигнала в полосе частот. Построить спекроанализатор. Всё остальное от лукавого.

Logik
Offline
Зарегистрирован: 05.08.2014

Волшебник пишет:

Logik пишет:
Ага. Только БПФ - не фильтр. Фильтр выдает на выходе в полосе пропускания тот же сигнал что и на входе (ну с временной задержкой), а БПФ - комплексное число (одно на все отсчеты), грубо говоря амплитуду и фазу сигнала в данной полосе. Потому каждое из них для своего применяется и заменить друг друга не могут))) А так тоже штука полезная.

ПС. БПФ намного более ресурсоемкое.

БПФ можно крутить вперёд и назад, реверсивно. 

Крутить обратно - это синтез по спектру. Только нет непрерывного спектра с БПФ.

Вы не волшебник, а сказочник.

БПФ не различает частоты в рамках одной полосы. Поясняю на примере из #5 - "Если мне надо фильтр полосовой, от 400Гц до 1.5 кГц, то на до взять 10-й, 11-й ...... 37-й включительно". Допустим вы синтезируете далее по ним сигнал. Получите гребенку ровно  из 37-10=27 частот в диапазоне от 400 до 1500Гц с шагом 40Гц. Синтезировать соответственно  толком ничего не получится. Будем иметь на выходе следующее при 420Гц на входе (допустим середина нижней 10-й полосы при при выполнении БПФ и синтеза) верные 420Гц, 430Гц не входе - на выходе снова 420Гц ))) 440Гц на входе - на выходе два сигнала 420 и 460Гц равной амплитуды. В нотах это вместо ЛЯ оказалось фальшивые сольдиез и сибимоль. 

В длительности сигнала - таже фигня. Длительности становятся кратные периоду БПФ. Длительности короче одного периода передается как снижение амплитуды.

Волшебник пишет:

Легко заменяет фильтр любой сложности.

С таким количеством искажений сигнала по всем параметрам БПФ ничего не заменит. Чтоб хоть както приблизится прийдется увеличить число полос до десятков тысячь, как в форматах аудиокомпрессии. А этого ардуино никак не обеспечит.

Волшебник пишет:

По эффективности ему вообще нет равных. 

Хватит трепатся! БПФ требует N^2 умножений, плюс еще немного на синтез (если конечно синтез не на обратном БПФ, иначе тоже N^2). Получим при 256 точках 65536 умножений.  КИХ требует количество умножений равное порядку фильтра, для приведеного выше кода 21. БИХ еще экономней, из-за большей крутизны порядок требуется меньше. БИХ потребует в ~3200 раз больше вычислительной мощности. Вот и все "переплюнет" и "сделает". 

Итого по подходу БПФ+синтез (он же БПФ  крутить вперёд и назад, реверсивно): 

1. Для получения приемлемых частотных искажений передачи сигнала (до нескольких герц что различимо на слух) потребуется БПФ очень высоких порядков, не 128-256 а, 8192 и выше. Что недостижимо на ардуине.

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

3. Сложность расчета БПФ в тысячи  (а при 8192 - в миллионы) раз выше чем эквивалентного ФНЧ КИХ.

Потому подход БПФ и синтез на ардуино не применим для фильтрации аудиосигналов.

Волшебник
Offline
Зарегистрирован: 22.12.2016

nik182 пишет:
БПФ не может быть фильтром уже по тому, что он БПФ. Если взять синус частотой не кратной гармоники разложения, то получим гребёнку гармоник. Как бы вы не извращались с обнулением гармоник, вроде как для фильтрации, и последующим обратным преобразованием вы не получите синус прошедший через фильтр. Получите кучу ложных частот. Ну и где здесь фильтр? БПФ позволяет оценить энергию сигнала в полосе частот. Построить спекроанализатор. Всё остальное от лукавого.

Неверно. А теперь по пунктам:

Да, сначала так и есть Не кратная частота сгенерирует спектр по всем полосам, И согласен, что оконная функция, хоть и не упомянута ну я от себя за вас вставлю, коих много, не решает проблему, а только ослабляет, "замазывет" до -43дБ или около того.

А тут включите, силь ву пле,  воображение.

А я и не собирался обнулять гармоники. Гармоники это хорошо.  Прокрутив весь гармонический "букет" назад, как раз и позволит получить "воссоздать" на выходе обратного БПФ преобразования СИНУС с частотой не кратной частоте как вы говорите разложения, а я сэмплирования.  Более того, я могу синтезировать любую форму сигнала, не обязательно синусоидальную, чего ни один фильтр в мире не способен сделать.

Некоторое время назад попадалась мне интересная бумага:

Implementing Real-Time MIDI
Music Synthesis Algorithms,
ABS/OLA, and SMS for the
TMS320C32 DSP
APPLICATION REPORT: SPRA355
Authors: Susan Yim (yim@hc.ti.com)
Yinong Ding (ding@hc.ti.com)
E.Bryan George (george@hc.ti.com)
DSP Research and Development Cente

Ознакомтесь на досуге.

Волшебник
Offline
Зарегистрирован: 22.12.2016

Logik пишет:
Итого по подходу БПФ+синтез (он же БПФ  крутить вперёд и назад, реверсивно): 

1. Для получения приемлемых частотных искажений передачи сигнала (до нескольких герц что различимо на слух) потребуется БПФ очень высоких порядков, не 128-256 а, 8192 и выше. Что недостижимо на ардуине.

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

3. Сложность расчета БПФ в тысячи  (а при 8192 - в миллионы) раз выше чем эквивалентного ФНЧ КИХ.

Потому подход БПФ и синтез на ардуино не применим для фильтрации аудиосигналов.

1. Ответил выше. БПФ позволяет синтезировать не кратные частоты. Ваш "калькуляторный" подход в принципе не верен. Если прокрутить обратное преобразование, то на выходе мы имеем дело с временной (Time Domain) а не частотоной плоскостью, и говорить там есть частота 420, 430 - в корне Не верно, там непрерывнуй временной / аналоговый сигнал, частоты существуют до обратного преобразования, потом нет.

2. Частично, да необходимо перекрывать, overlap- накладывать данные для фиксации разрывов. Максимум требуемого перекрытия 50 проц., т.е. х2 процессорного времени.

3. Ты не понимаешь. Возьмём пример, из того 21-одного умножения что тебе требуется для твоего фильтра. 21-го ДЛЯ КАЖДОГО Сэмплированного образца. Каждого. А БПФ требует для всего банка данных. Не надо путать. Так вот , если ты на калькуляторе умножишь 21 х 512 -> 10572 , я взял 512 образцов, чтобы легче сравнивать, в реале это просто кусок временного интервала - на частоте сэмплирования 20.480 кГц это 25 миллисекунд. Твой фильтр требует 10572-е операции суммирования аккумулирования КАЖДЫЕ 25 миллисекунд. БПФ требует примерно столько же, но это сравнение не верно, потому что БПФ фильтр 512-го порядка, а у тебя всего 21-го.

Logik
Offline
Зарегистрирован: 05.08.2014

///позволит получить "воссоздать" на выходе обратного БПФ преобразования СИНУС с частотой не кратной частоте.

Это не соответствует действительности. Математически невозможно. Восстанавливая сигнал по спектру частот получится сигнал соответствующий  спектру, т.е. набор частот, а не исходный синус.

uni
uni аватар
Offline
Зарегистрирован: 24.09.2015

Какую ардуину используете? Я могу показать оба варианта (в картинках на примере сигналов): БПФ и КИХ фильтр с использованием коэффициентов с сайта. Какие параметры у фильтра? Приветиде пример входного сигнала.

Волшебник
Offline
Зарегистрирован: 22.12.2016

Кому это интересно, тема затронута в двух топиках,  я  выложил видео сегодня и если есть желание посмотреть :

https://youtu.be/2x4RsocSlrQ

http://arduino.ru/forum/apparatnye-voprosy/peremennoe-napryazhenie-0#comment-255704

uni
uni аватар
Offline
Зарегистрирован: 24.09.2015

Сравнивают обычно графически, есть сигнал до фильтра и есть сигнал после фильтра. Можно построить их спектры с сделать сравнение по  неравномерности в полосе пропускания и затуханию в полосе задерживания. Также можно сравнить ширину переходной полосы, т.е. насколько фильтр близок к идеальному. Либо можно подать одну гармонику с разной частотой и оценивать параметры сигнала на выходе фильтров.

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

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

Волшебник
Offline
Зарегистрирован: 22.12.2016

uni пишет:
Вообще, фильтрация при помощи метода БПФ это нелинейная операция, так как в выходной сигнал привносятся дополнительные частоты, которых не было в исходном сигнале. Вы заменяете сигнал на его аппроксимацию с помощью конечного набора синусоид.

А я так не считаю. БПФ линейно, спокольку в алгоритме используются только линейные математические операции: умножение, сложение и вычитание. Там нет логарфмов или корней квадратных. БПФ настолько же линейно как любой цифровой  фильтр. То что операции  умножения в ячейке "бабочка" выполняются с коэфициентами основаными от синус/ косинусоидальных функций ничего не меняет. Это всего лишь коэфициенты и оператор умножения на любое число всегда линеен по своей природе. Программист (и потом процессор который вычисляет) могут и не знать, откуда коэфициенты взяты, для них это какая то таблица данных. 

В выходной сигнал всегда что-то "привносится" - и это не синусоиды. Курс электротехники оставил и в моей памяти свой след, но после него надо двигаться / развиваться дальше. Нет там никаких синосуид на выходе обратного преобразования. оператор интегрирования (мультипликации + суммирования) сделал своё дело, от индивидуальных синосоид не остаётся и следа, всё плавится  и сплавляется в новый материал.  Здесь полная идентичность с цифр. фильтром с конечной импульсной характеристикой - интегральная сумма отдельных образцов помноженных на коэфициенты и есть выходной сигнал. Дискретный сигнал, одна точка, не абсолютно точный а примерное приближение на уровне колличества потраченных ресурсов - длины того интеграла, он не может быть бесконечным, и соответственно точность ограничена

uni
uni аватар
Offline
Зарегистрирован: 24.09.2015

Возьмём такой пример. Есть изображение, на нём есть одна чёткая кривая. Выполним сжатие при помощи jpeg и посмотрим на изображение опять - опа, линия больше не чёткая! А причина та же. Вы работаете с конечным набором точек, полагая их непрерывным бесконечным периодическим сигналом, затем отбрасываете лишние коэффициенты в спектре. Косинусное преобразование в jpeg по сути делает то же самое, что и любые другие подобные - взвешивают сигнал набором ортогональных функций (ядра преобразования). Чтобы сжать изображение нужно убрать вч-коэффициенты, т.к. они мелкие, их много и они как бы не отвечают за основную информацию в изображении. Это НЧ-фильтрация, как нетрудно догадаться. В результате при сжатии искажаются или пропадают резкие переходы, т.к. они ответственны за вч-коэффициенты.

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

И вместо чёткой кривой у вас уже будет размытая, что трудно увидеть в одномерном пространстве.

Волшебник
Offline
Зарегистрирован: 22.12.2016

Ваш пример всего лишь акцентирует внимание на недостатках цифровой обработки, из-за ограниченности ресурсов она (обработка) не совсем точна, об этом я и говорил как о конечности интервала интегрирования.  Там есть цифровой шум на выходе, но это никак не аргумент что она нелинейна. Тут похоже надо на кого то ссылаться, моя точка зрения совпадает с мнением из этой книги:http://www.ozon.ru/context/detail/id/4975702/

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Волшебник пишет:

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

Собственно, цифровая обработка [информации] здесь ни при чем. Это уже особенности самой информации: при аналоговый обработке в конечной полосе частот мы имели бы тот же самый эффект.

Logik
Offline
Зарегистрирован: 05.08.2014

Это не особенность инфы, это особенность обработки. Урезание полосы (аналоговой или цифровой) приводит к потере того, что не влазит в полосу. Только есть типичное урезание - в области высоких, а есть БПФ, нетипичное, кроме высоких еще и урезается "некратных" частот, т.е. замена непрерывного спектра гребенкой. Потому и большие  сложности в его применении для передачи непрерывного спектра в полосе пропускания фильтра.

Волшебник
Offline
Зарегистрирован: 22.12.2016

История кода БПФ. От автора.

http://radiokot.ru/forum/viewtopic.php?f=17&t=141285

Logik
Offline
Зарегистрирован: 05.08.2014

Волшебник пишет:

История кода БПФ. От автора.

http://radiokot.ru/forum/viewtopic.php?f=17&t=141285

Оч. познавательная история. Полностью характеризует автора.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Logik пишет:

Это не особенность инфы, это особенность обработки. Урезание полосы (аналоговой или цифровой) приводит к потере того, что не влазит в полосу.

Это не особенность, это - свойство. Потому как присуще любому виду обработки, на важно, цифровому или аналоговому.

Цитата:

а есть БПФ, нетипичное, кроме высоких еще и урезается "некратных" частот, т.е. замена непрерывного спектра гребенкой.

Отнюдь.

Линейчатый спектр может быть только у бесконечного по времени сигнала. У фрагмента сигнала конечной длины спектр состоит не из набора дискретных частот, а из полос конечной ширины, притом их сумма дает как раз непрерывный спектр. Т.е. непрерывный спектр никуда не девается. Просто в некоторых рассуждениях удобно заменить полосу частот конечной ширины единственной частотой.

Цитата:

Потому и большие  сложности в его применении для передачи непрерывного спектра в полосе пропускания фильтра.

Сложности есть. Но они в большинстве решаются. В частности, 100% перекрытием фрагментов (50% с предыдущим и 50% с последующим) и применением окна специальной формы. Ну и как следствие перекрытия и конечной длительности фрагментов - неизбежная задержка сигнала. Это, действительно, проблема не решаемая.

Волшебник
Offline
Зарегистрирован: 22.12.2016

Ладно, удалили. Сказку я в отвлечённых тамах запостю.

http://arduino.ru/forum/otvlechennye-temy/kolobok-kodovoe-nazvanie-stsenariya-taina-rozhdeniya-koda-bpf

Logik
Offline
Зарегистрирован: 05.08.2014

andriano пишет:

Logik пишет:

Это не особенность инфы, это особенность обработки. Урезание полосы (аналоговой или цифровой) приводит к потере того, что не влазит в полосу.

Это не особенность, это - свойство. Потому как присуще любому виду обработки, на важно, цифровому или аналоговому.

Особенность или свойство - софистика, важно что относится не к инфе а к её обработке.

andriano пишет:

Цитата:

а есть БПФ, нетипичное, кроме высоких еще и урезается "некратных" частот, т.е. замена непрерывного спектра гребенкой.

Отнюдь.

Линейчатый спектр может быть только у бесконечного по времени сигнала. У фрагмента сигнала конечной длины спектр состоит не из набора дискретных частот, а из полос конечной ширины, притом их сумма дает как раз непрерывный спектр. Т.е. непрерывный спектр никуда не девается. Просто в некоторых рассуждениях удобно заменить полосу частот конечной ширины единственной частотой.

Опять таки речь не о сигнале а о преобразовании, я выделил.  Ему пофиг конечный сигнал или нет, оно урежет еще и гребенкой, в отличии от КИХ.

andriano пишет:

Сложности есть. Но они в большинстве решаются. В частности, 100% перекрытием фрагментов (50% с предыдущим и 50% с последующим) и применением окна специальной формы. Ну и как следствие перекрытия и конечной длительности фрагментов - неизбежная задержка сигнала. Это, действительно, проблема не решаемая.

Это полумеры, которые не помогут сохранить длительность коротких сигналов (например тон длинной 25% фрагмента во что превратится?), не решат проблему передачи некратных. А так, теоретически решаемые конечно при очень высоких частотах дискретизации, числе точек БПФ, и перекрытиях все в ажуре. Но все решения имеют одну особенность - рост сложности расчета. Что ставит крест на реализациях ардуиной. Даже БИХ высоких порядков на пределе. Не для того восьмибитные процы. Поому если эквалазером помигать - то пожалуста, точек 128 и с пропусками. Это не вопрос. А для использовании БПФ фильтром аудиодиапазона с нормальным пропусканием явно не на ардуине. И даже пожалуй не на TMS320. Нужно большее

 

 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

С этим - согласен. Вменяемое использование БПФ для Ардуины я тоже себе плохо представляю.

Волшебник
Offline
Зарегистрирован: 22.12.2016

andriano пишет:

С этим - согласен. Вменяемое использование БПФ для Ардуины я тоже себе плохо представляю.

1. Распознавание голосовых команд (автоматика, бытовая техника, робототехника)

2. Определение направления на источник звука (следящие камеры)

3. Идентификация самого источника звука (системы безопасности, контроля доступа )

Пример попроще. Бытовой счётчик электричества. Требования: -1% точность.

Требования не ахти какие, минимальные. Проблема в необходимости ВЧ фильтра, в софте, чтобы от постоянки не зависели показания, и соответственно удовлетворяли требованиям точности. Из того процента получается что фильтр должен иметь 40 дБ ослабление в полосе подавления и 0.086 дБ неравномерность в полосе пропускания. Тот калькулятор что вверху ваще не вмыкает, у меня не получилось задать ему параметры для расчёта, выдаёт какую то хрень.  Полоса пропускания от 50Гц до (!) 1000Гц, потому что по стандарту (проверьте свой ГОСТ) счётчик должен ловить до 20-й гармоники.

У меня есть  своя программа, на методе Кайзера, выдаёт 259 коэфициентов. Ей я доверяю, кто найдёт другой калькулятор он-лайн и поделится - Wellcome, я не нашёл.

Ардуино посчитать КИХ -259 не сможет на 2 кГц самплинга. А вот если БПФ - без проблем, ещё выдаст гармоники раздельно, все их фазы, и реальную реактивную мощность и т.д. и т.п.

 

 

Тед
Offline
Зарегистрирован: 06.11.2017

А как подключить, где пин для входа и выхода ?