Расчет аналогового нормированного фильтра нижних частот Баттерворта

Содержание

DSPL-2.0 — свободная библиотека алгоритмов цифровой обработки сигналов

Распространяется под лицензией LGPL v3

Страница библиотеки на GitHub

Обнаружили ошибку? Выделите ее мышью и нажмите ctrl+enter
Исходные данные для расчета аналогового нормированного ФНЧ Баттерворта

Аппроксимация квадрата АЧХ нормированного ФНЧ Баттерворта представляется в виде (смотри рисунок 1):

(1)
где – аппроксимирующий полином нормированного ФНЧ Баттерворта, задает неравномерность дБ в полосе пропускания фильтра.

Параметры квадрата АЧХ  нормированного ФНЧ Баттерворта
Рисунок 1. Параметры квадрата АЧХ нормированного ФНЧ Баттерворта

Порядок фильтра Баттерворта рассчитывается из уравнения:

(2)
где рад/c – частота среза нормированного ФНЧ, определяет переходную полосу фильтра, задает требуемый уровень подавления дБ в полосе заграждения фильтра.

Прологарифмируем правую и левую части уравнения и получим:

(3)

Исходными данными для расчета нормированного ФНЧ Баттерворта служат: частота среза рад/c, переходная полоса, задаваемая частотой , допустимое искажение в полосе пропускания (дБ) и требуемое подавление в полосе заграждения (дБ).

На рисунке 1 приведены соотношения параметров АЧХ нормированного ФНЧ, которые используются как исходные данных для синтеза фильтра.

Для расчета передаточной характеристики мы должны получить выражения для нулей и полюсов квадрата модуля передаточной характеристики нормированного ФНЧ Баттерворта.

Нули и полюсы квадрата модуля передаточной характеристики нормированного ФНЧ Баттерворта

Квадрат АЧХ есть сечение квадрата модуля передаточной характеристики при .

Для расчета нулей и полюсов подставим в выражение квадрата АЧХ (1), тогда:

(4)

Очевидно, что ни при каких конечных комплексных выражение (4) не равно нулю, квадрат модуля передаточной характеристики нормированного ФНЧ Баттерворта не имеет конечных нулей.

Для расчета полюсов нормированного ФНЧ Баттерворта приравняем знаменатель (4) к нулю:

(5)

Рассмотрим отдельно четные и нечетные значения порядка фильтра .

При четных имеем:

(6)

Представим минус единицу в правой части (6) через комплексную экспоненту , тогда

(7)

Прологарифмируем левую и правую части уравнения (7) и получим:

(8)

Преобразуем:

(9)
тогда:
(10)

Окончательно можно записать выражение для полюсов квадрата модуля передаточной функции при четных :

(11)
При нечетных из выражения (5) имеем:

(12)

Представим единицу в правой части через комплексную экспоненту тогда

(13)

Прологарифмируем левую и правую части уравнения (13) и получим:

(14)

Преобразуем:

(15)
тогда:
(16)

Окончательно можно записать выражения для полюсов квадрата модуля передаточной функции при нечетных :

(17)

На рисунке 2 показано расположение полюсов квадрата модуля передаточной функции , заданной выражением (4) при четном (слева) и нечетном (справа) порядках фильтра Баттерворта.

Расположение полюсов квадрата модуля передаточной функции при четном   и нечетном  порядках фильтра Баттерворта
Рисунок 2. Расположение полюсов квадрата модуля передаточной функции при четном и нечетном порядках фильтра Баттерворта

Все полюсы квадрата модуля АЧХ фильтра Баттерворта расположены на окружности радиуса , и отстоят друг от друга на угол . В частном случае при все полюсы расположены на единичной окружности.

Передаточная характеристика нормированного ФНЧ Баттерворта

Для получения устойчивого и физически реализуемого фильтра необходимо, чтобы все нули и полюсы передаточной функции располагались в левой полуплоскости комплексной плоскости или на мнимой оси . Тогда для расчета передаточной функции нормированного ФНЧ Баттерворта необходимо из всех полюсов квадрата модуля передаточной функции выбрать только те полюсов, что лежат в левой полуплоскости.

Все полюсов , расположенные в левой полуплоскости могут быть записаны как для четного, так и для нечетного порядка фильтра (смотри рисунок 2):

(18)

Перепишем в тригонометрической форме:

(19)

Таким образом, мы задали все полюсы передаточной функции нормированного ФНЧ Баттерворта порядка . Тогда передаточная функция нормированного ФНЧ Баттерворта может быть представлена:

(20)

Обратим внимание, что все полюсы передаточной функции нормированного ФНЧ Баттерворта четного порядка (смотри рисунок 2) представляют собой комплексно-сопряженные пары, а у фильтра нечетного порядка есть один вещественный полюс.

Тогда можно представить передаточную функцию нормированного ФНЧ Баттерворта при помощи биквадратной формы. Для четного :

(21)

Окончательно можно записать:

(22)

В случае нечетного имеем дополнительный вещественный полюс . Передаточную функцию нормированного ФНЧ Баттерворта можно представить при помощи биквадратной формы для нечетного :

(23)

Окончательно можно объединить выражения (22) и (23). Для любого целого ( может принимать значения 0 или 1) передаточная функцию нормированного ФНЧ Баттерворта имеет вид:

(24)

Коэффициент передачи нормированного ФНЧ Баттерворта на нулевой частоте равен:

(25)

Для нормировки коэффициента передачи на нулевой частоте необходимо передаточную функцию нормированного ФНЧ Баттерворта (24) разделить на . Тогда окончательно:

(26)

Необходимо отметить, что при , и без нормировки. При этом соответствует и выражение для передаточной характеристики фильтра (26) преобразуется к виду:

(27)

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

Пример расчета нормированного ФНЧ Баттерворта

Рассчитаем нормированный ФНЧ Баттерворта при следующих параметрах квадрата АЧХ (смотри рисунок 1):

(28)

Шаг 1. Рассчитываем параметры и :

(29)

Шаг 2. Рассчитываем порядок фильтра согласно выражению (3):

(30)

Округляем до бо́льшего целого. Таким образом, .

Шаг 3. Рассчитываем передаточную характеристику согласно выражению (26). При этом , значит , . Рассчитываем :

(31)

Рассчитываем значения . В нашем случае , поэтому будет только одно значение равное:

(32)

Передаточную функцию фильтра можно записать:

(33)

На этом расчет нормированного ФНЧ Баттерворта окончен.

Комплексный коэффициент передачи полученного фильтра равен:

(34)

На рисунке 3 показаны квадрат АЧХ , ФЧХ , групповая задержка и импульсная характеристика рассчитанного нормированного ФНЧ Баттерворта третьего порядка.

Характеристики
	 рассчитанного нормированного ФНЧ Баттерворта
Рисунок 3. Характеристики рассчитанного нормированного ФНЧ Баттерворта

Обратите внимание, что по оси абсцисс частота представлена в логарифмическом масштабе.

Выводы

Таким образом, в данном разделе мы рассмотрели порядок расчета передаточной функции аналогового нормированного ФНЧ Баттерворта и привели пример расчета фильтра по заданным параметрам АЧХ.

Реализация в DSPL-2.0

В библиотеке DSPL-2.0 реализована функция butter_ap, которая рассчитывает коэффициенты передаточной функции аналогового нормированного фильтра Баттерворта.

Исходный код программы butter_ap_example.c расчета и построения характеристик фильтра (рисунок 3):


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "dspl.h"

#define ORD 3
#define N   1000
#define K   1024

int main(int argc, char* argv[])
{
  void* handle;           /* DSPL handle        */
  void* hplot;            /* GNUPLOT handle     */
  double a[ORD+1], b[ORD+1];
  double Rp = 1.0;
  double w[N], mag[N], phi[N], tau[N];
  double t[K], h[K];
  fft_t pfft = {0};
   
  int k, res;
  
  handle = dspl_load();   /* Load DSPL function */
  if(!handle)
  {
    printf("cannot to load libdspl!\n");
    return 0;
  }
  
  /* Расчет коэффициентов передаточной функции H(s) */
  res = butter_ap(Rp, ORD, b, a);
  if(res != RES_OK)
    printf("error code = 0x%8x\n", res);
  
  /* печать коэффициентов передаточной функции */
  for(k = 0; k < ORD+1; k++)
    printf("b[%2d] = %9.3f   a[%2d] = %9.3f\n", k, b[k], k, a[k]);

  /* расчет АЧХ, ФЧХ, ГВЗ */
  logspace(-2.0, 2.0, N , DSPL_SYMMETRIC, w);
  filter_freq_resp(b, a, ORD, w, N, 
           DSPL_FLAG_ANALOG|DSPL_FLAG_LOGMAG|DSPL_FLAG_UNWRAP, 
           mag, phi, tau);
           
  /* сохранение АЧХ, ФЧХ, ГВЗ в файлы*/
  writetxt(w, mag, N, "dat/butter_ap_test_mag.txt");  
  writetxt(w, phi, N, "dat/butter_ap_test_phi.txt");
  writetxt(w, tau, N, "dat/butter_ap_test_tau.txt");

  /* расчет импульсной характеристики и сохранение в файл */
  memset(&pfft, 0, sizeof(fft_t));
  freqs2time(b, a, ORD, 200.0, K, &pfft, t,h);
  writetxt(t, h, K, "dat/butter_ap_test_time.txt");

  /* plotting by GNUPLOT */
  gnuplot_create(argc, argv, 820, 680, "img/butter_ap_example.png", &hplot);
  gnuplot_cmd(hplot, "set logscale x");
  gnuplot_cmd(hplot, "unset key");
  gnuplot_cmd(hplot, "set grid");
  gnuplot_cmd(hplot, "set xlabel 'w, рад/с'");
  gnuplot_cmd(hplot, "set multiplot layout 2, 2 rowsfirst");
  gnuplot_cmd(hplot, "set ylabel '|H(jw)|^2, дБ'");
  gnuplot_cmd(hplot, "set yrange [-80:5]");
  gnuplot_cmd(hplot, "plot 'dat/butter_ap_test_mag.txt' with lines");
  
  gnuplot_cmd(hplot, "set ylabel 'Ф(w), рад'");
  gnuplot_cmd(hplot, "unset yrange");
  gnuplot_cmd(hplot, "plot 'dat/butter_ap_test_phi.txt' with lines");
  
  gnuplot_cmd(hplot, "set ylabel 'tau(w), с'");
  gnuplot_cmd(hplot, "unset yrange");
  gnuplot_cmd(hplot, "plot 'dat/butter_ap_test_tau.txt' with lines");
  
  gnuplot_cmd(hplot, "unset logscale x");
  gnuplot_cmd(hplot, "set ylabel 'h(t)'");
  gnuplot_cmd(hplot, "set xlabel 't, s'");
  gnuplot_cmd(hplot, "set xrange [0:5]");
  gnuplot_cmd(hplot, "plot 'dat/butter_ap_test_time.txt' with lines");
  
  gnuplot_cmd(hplot, "unset multiplot");
  gnuplot_close(hplot); 
  
  fft_free(&pfft);
  dspl_free(handle);    /* free dspl handle */

  return 0;
}



Список литературы
[1] Лэм Г. Аналоговые и цифровые фильтры. Москва, Мир, 1982, 592 с.

[2] Orfanidis S.J. Lecture notes on elliptic filter design. Rutgers University, 2006. [PDF]

[3] Orfanidis S.J. Introduction to Signal Processing. Rutgers University, 2010. [PDF]

[4] Оппенгейм А., Шаффер Р. Цифровая обработка сигналов. Москва, Техносфера, 2012. 1048 с. ISBN 978-5-94836-329-5

[5] Сергиенко А.Б. Цифровая обработка сигналов СПб, Питер, 2002.

Последнее изменение страницы: 22.10.2020 (19:52:49)