Аналогові та цифрові смугові фільтри
1. Вступ
Смугові фільтри дозволяють вибрати діапазон частот у сигналі. Вони особливо використовуються в радіозв'язку (телебаченні, телефонії тощо) для вибору діапазону частот, що містить інформацію, яку потрібно декодувати. При обробці звукового сигналу вони використовуються в еквалайзерах, які, наприклад, дозволяють збалансувати сигнали, що надходять від різних мікрофонів під час звукозапису.

Смугові фільтри вже давно реалізовані в аналоговій формі. Сьогодні ці фільтри витіснені цифровим еквівалентом, набагато простішим у налаштуванні та чудовою вибірковістю.
У цьому документі представлений приклад аналогового смугового фільтра, який дає можливість вибрати дуже вузьку смугу частот. Ми побачимо вплив цього фільтра на періодичний сигнал.
По-друге, ми побачимо, як зробити цифровий смуговий фільтр у вигляді фільтру кінцевої імпульсної характеристики.
2. Аналоговий фільтр
2.а. Визначення
Використовується фільтр типу Sallen і Key. Ось його схема:
Повне вивчення цього фільтра див. У документі Активні фільтри від Sallen and Key. Блок, що складається з підсилювача, двох резисторів і потенціометра праворуч - це підсилювач з коефіцієнтом посилення K, що регулюється потенціометром від 4,3 до 5,3. Частота, для якої коефіцієнт підсилення становить:
Максимальний коефіцієнт посилення:
Співвідношення смуги пропускання (частоти відсічення, визначені при -3 децибела) до максимальної частоти становить:
Виведемо співвідношення між максимальним коефіцієнтом підсилення та m:
Максимальне значення K - 5; крім цього, схема нестабільна. Для цього значення виграш в принципі нескінченний.
2.b. Дослідження смуги пропускання
Експериментальне дослідження проводиться в синусоїдальному режимі. Для різних положень потенціометра ми відзначаємо частоту максимального посилення з його невизначеністю, максимальним коефіцієнтом посилення та двома частотами відсікання. Дані вводяться в таблицю за допомогою Libre Office. Ширина смуги пропускання та коефіцієнт m обчислюються для того, щоб побудувати максимальний коефіцієнт підсилення A як функцію m. Після введення файл зберігається у формі CSV (роздільник поля: таблиця).
Масив отримується в python. Для цього вам потрібно перетворити коми десяткових роздільників у крапки:
Зверніть увагу на використання StringIO, який дозволяє обробляти рядок символів як файл. Перший рядок файлу пропускається, оскільки він містить заголовки стовпців. Опція розпакування дозволяє отримати таблицю в транспонованому вигляді зі стовпцями, розташованими в рядки.
Розраховуємо смугу пропускання та коефіцієнт m:
Побудуємо максимальний коефіцієнт підсилення як функцію від m, експериментальних точок та теоретичної кривої:
figA.pdf
Фільтр може бути дуже селективним, з дуже вузькою смугою пропускання, коли K близький до 5 (будьте обережні, щоб не потрапити в нестабільну зону). З іншого боку, коефіцієнт підсилення тоді є дуже високим, що робить необхідним використовувати сигнали з дуже низькою амплітудою на вході. Генератори сигналів для цього мають функцію ослаблення -20 децибел.
Центральну частоту (максимальне посилення) підвищено до 1014 Гц плюс-мінус 2 Гц. Це значення може варіюватися від одного прикладу фільтра до іншого через дисперсію значень опору та ємності.
2.с. Фільтрування періодичного сигналу
Сигнал генерується на аудіовиході комп'ютера за допомогою програми Pure Data syntheseHarmonique.pdf, яка створює сигнал з основною та 3 гармоніками (ви можете легко додавати блоки, якщо хочете більше гармонік).
Коефіцієнт посилення K регулюється за допомогою потенціометра, щоб отримати максимальний коефіцієнт посилення приблизно A = 100 .
Основна частота сигналу вибирається на половині частоти фільтра f0, тобто 507 Гц, що дозволяє розмістити другу гармоніку в центрі смуги пропускання, де коефіцієнт підсилення максимальний. Спочатку ми відзначаємо посилення в децибелах для частот 507 Гц і 2028 щодо максимального коефіцієнта посилення: ми отримуємо -33 децибела. Це означає, що гармоніки порядку 1 і 3 послаблюються на -33 децибела порівняно з порядком 2.
Для проведення спектрального аналізу сигнали вони отримуються за допомогою блоку управління Sysam SP5, використовуючи модуль інтерфейсу python, представлений в CAN Eurosmart: інтерфейс для Python. Наступна програма виконує зйомку з частотою дискретизації 20 кГц, що в основному достатньо, і загальною тривалістю T = 5 с. Він будує графік сигналу на вході та виході фільтра та відповідних спектрів. Дані зберігаються у файлі.
Наступна функція зчитує файл даних і складає графіки вхідного та вихідного сигналу. Вхідний сигнал множиться на 10 для графіку.
Наступна функція відображає спектри від 0 до 2 кГц:
Ось результат для сигналу, що містить 4 гармоніки однакових амплітуд (0,039 В):
figB.pdf figC.pdf
Ми помічаємо, що гармоніки порядку 1,3 та 4 практично зникли на виході, що пояснює синусоїдальну форму вихідного сигналу з частотою 1014 Гц. Тому цей фільтр вибирає 2-ю гармоніку.
Давайте подивимось результати зі зменшенням амплітудної гармоніки:
figD.pdf figE.pdf
Наступний результат отримується із сигналом, гармоніка якого зменшується, із вихідною насиченістю (насиченість обумовлена аналого-цифровим перетворювачем, а не фільтром):
figF.pdf figG.pdf
Насичення - це нелінійний ефект, що призводить до появи нових гармонік у спектрі. Спектральний аналіз також є дуже чутливим засобом виявлення нелінійних ефектів.
3. Цифровий фільтр
3.а. Смуговий фільтр FIR
Зробити дуже селективний аналоговий фільтр, як попередній, порівняно просто, але його центральна частота фіксована. Більше того, дуже складно створити широкосмуговий фільтр, в якому зменшення коефіцієнта посилення в ослабленій смузі відбувається дуже швидко. Дивіться документ Аналогові та цифрові фільтри низьких частот для того, щоб зрозуміти це поняття посилення в послабленому діапазоні.
Цифрові фільтри мають велику гнучкість регулювання і дозволяють дуже сильні спади в ослабленому діапазоні, пов'язані з дуже рівними відгуками в смузі пропускання.
Ми побачимо, як розрахувати цифровий FIR-фільтр (кінцева імпульсна характеристика). Огляд цифрової фільтрації див. У документі Вступ до цифрових фільтрів та Приклади FIR-фільтрів для розрахунку фільтрів FIR.
Вироблений фільтр повинен вибирати діапазон навколо частоти 1000 Гц, з частотою відсікання 900 Гц та 1100 Гц. Щоб визначити цифровий фільтр, розглянемо відношення частот відсічення до частоти дискретизації:
Ці співвідношення не повинні бути занадто малими. Тут значення приблизно 1/20 є розумним. Для значення приблизно 1/100 було б кращим зменшити частоту дискретизації.
Ідеальний смуговий фільтр повинен мати коефіцієнт підсилення G (x) 1 в смузі пропускання, нуль в іншому місці, де x - відношення частоти до частоти дискретизації. Для обчислення імпульсної характеристики такого фільтра функцію G (x) розширюють періодичністю (періоду 1) та обчислюють її коефіцієнти Фур'є. Отримана таким чином імпульсна характеристика дорівнює ([1]):
Щоб отримати кінцевий імпульсний відгук, його потрібно зрізати до рангу P, тобто зберігати лише індекси. Індекс усічення повинен бути тим вищим, чим більше бажана висока селективність і низькі коефіцієнти a і b. Ось розрахунок імпульсної характеристики для P = 200 .
figH.pdf
Перш ніж застосовувати цей фільтр, необхідно вивчити його частотну характеристику, тобто його коефіцієнт підсилення та фазовий зсув як функцію частоти. Спосіб зробити це пояснюється у Вступі до цифрових фільтрів. Ось функція, яка дозволяє це робити:
Примітка: функція scipy.signal.freqz забезпечує АЧХ даного фільтра у вигляді передавальної функції в Z.
Ось АЧХ фільтра:
figI.pdf
Ми, звичайно, досить далекі від ідеального фільтра, тому що імпульсна характеристика була усічена в рангу P. Найбільше дратує наявність пульсацій в смузі пропускання. Щоб їх зменшити, ми використовуємо прогресивне вікно імпульсної характеристики, наприклад вікно Хеммінга:
figJ.pdf
Більше немає брижі. Зверніть увагу, що коефіцієнт підсилення при відсіченні становить 1/2. Якщо ми хочемо знайти визначення граничного значення, що використовується в аналоговій фільтрації, ми повинні змінити параметри a та b .
3.b. Застосування
Ми збираємось застосувати попередній фільтр до періодичного сигналу з попереднього експерименту, отриманого шляхом отримання за допомогою центрального блоку Sysam SP5. Почнемо з відновлення зразків:
Для фільтрування зразків (тут u0) необхідно виконати продукт згортки з кінцевою імпульсною характеристикою. На практиці цифрові фільтри виконують це обчислення в режимі реального часу, оскільки дані надходять від аналого-цифрового перетворювача. За допомогою python ми можемо явно програмувати продукт згортки або, простіше, використовувати функцію scipy.signal.convolve:
Опція mode = 'valid' дозволяє обчислити згортку лише для дійсних точок, тобто з точки індексу 2P. Отже, результат згортки має 2P + 1 бал менше, ніж початкова таблиця. Дійсно, для обчислення результату потрібно щонайменше 2P + 1 балів, доступних на вході. Тому необхідно перевизначити часову шкалу для відстеження сигналу. Є кілька способів зробити це. Ми змоделюємо ефект цифрового фільтра в режимі реального часу, для якого перша обчислена точка відповідає моменту t = (2P + 1) Te:
figK.pdf
Ефектом фільтрації є вибір другої гармоніки, як для аналогового фільтра, вивченого вище. Давайте подивимося спектр виходу:
figL.pdf
Ми бачимо, що гармоніки порядку 1, 3 і 4 повністю зникли. З попереднім аналоговим фільтром вони все ще були видимі в цьому спектрі. Щоб побачити це детальніше, побудуємо амплітуду в логарифмічному масштабі (децибели):
figM.pdf
Гармоніки порядку 1, 3 і 5 присутні, але на рівні, що не перевищує -70 децибел, порівняно з гармонікою порядку 2. Тому вони надзвичайно слабкі. Такий результат дуже важко отримати за допомогою аналогового фільтра, для якого зменшення коефіцієнта посилення в ослабленій смузі відбувається недостатньо швидко.