Статьи

Аналізатор спектра на мікроконтролері ATmega32

У статті розглядається конструкція простого аналізатора спектра (0 - 10 кГц) на мікроконтролері Atmel AVR ATmega32 . Як пристрій відображення використовується двухстрочний символьний ЖК індикатор. Основним моментом при реалізації даного проекту є не апаратна частина, а програмна, точніше реалізація дискретного перетворення Фур'є (ДПФ) на 8-розрядному мікроконтролері. Відразу слід зазначити, що автор не є експертом в цій області і тому почав з основ - з простого дискретного перетворення Фур'є. Алгоритм швидкого перетворення Фур'є є не тільки швидким, але і досить складним.

Дискретне перетворення Фур'є (в англомовній літературі DFT, Discrete Fourier Transform) - це одне з перетворень Фур'є, широко застосовуваних у алгоритмах цифрової обробки сигналів (його модифікації застосовуються в стисненні звуку в MP3, стиску зображень в JPEG і ін.), А також в інших областях, пов'язаних з аналізом частот в дискретному (наприклад, оцифрованному аналоговому) сигналі. Дискретне перетворення Фур'є вимагає в якості входу дискретну функцію. Такі функції часто створюються шляхом дискретизації (вибірки значень з безперервних функцій).

Принципова схема аналізатора спектра звукового сигналу дуже проста і умовно її можна розділити на цифрову частину і аналогову.

Цифрова частина утворена мікро контролером і підключеним до нього ЖК індикатором. Мікроконтролер тактується від кварцового резонатора 16 МГц, як опорного напруги для АЦП мікроконтролера використовується напруга живлення +5 В.
Шина даних РК індикатора підключена до порту C мікроконтролера (лінії введення / виведення PC0-PC3), шина управління підключена до порту D (PD5, PD6) мікроконтролера. Індикатор працює в 4-бітному режимі. Змінний резистор номіналом 4.7 кОм використовується для регулювання контрастності. Для роботи з індикатором були створені для користувача символи для відображення 8 горизонтальних стовпчиків аналізатора, ці призначені для користувача символи займають все 64 Байта ОЗУ ЖК індикатора.

Для роботи з індикатором були створені для користувача символи для відображення 8 горизонтальних стовпчиків аналізатора, ці призначені для користувача символи займають все 64 Байта ОЗУ ЖК індикатора

Мікроконтролер працює від зовнішнього кварцового резонатора 16 МГц.

Аналогова частина пристрою - це найважливіша частина і являє собою попередній підсилювач сигналу електретного мікрофона, вихід якого підключається до каналу ADC0 вбудованого в мікроконтролер АЦП. Рівень нуля на вході АЦП нам необхідно встановити рівним точно половині опорного напруги, тобто 2.5 В. В цьому випадку ми зможемо використовувати позитивну і негативну півхвилю сигналу, але його амплітуда не повинна перевищувати встановлену межу, тобто коефіцієнт посилення повинен бути точно налаштований для запобігання перевантаження. Всім вищевказаним умовам відповідає поширена мікросхема низькоспоживаючі операційного підсилювача LM324 .

Алгоритм ДПФ трохи повільніше в порівнянні з швидким перетворенням Фур'є. Але наш аналізатор спектру не вимагає високої швидкості, і якщо він здатний забезпечити швидкість оновлення близько 30 кадрів в секунду, цього буде більш ніж достатньо для візуалізації спектру звукового сигналу. У будь-якому випадку, в нашому варіанті можливо досягти швидкості 100 кадрів в секунду, але це вже занадто високе значення параметра для дворядкового символьного РК індикатора і воно не рекомендується. Частота дискретизації дорівнює 20 кГц для 32 точкового дискретного перетворення Фур'є і оскільки результат перетворення симетричний, нам потрібно використовувати тільки першу половину, тобто перші 16 результатів. Отже, ми можемо відображати частотний спектр в діапазоні до 10 кГц і дозвіл аналізатора становить 10 кГц / 16 = 625 Гц.

Автором конструкції були зроблені спроби збільшення швидкості обчислення ДПФ. Якщо це перетворення має N точок, то ми повинні знайти N2 / 2 значень синуса і косинуса. Для нашого 32 точкового перетворення необхідно знайти 512 значень синуса і косинуса. Але, перш ніж знайти їх нам необхідно обчислити кут (градуси), що займають некториє процесорний час, тому було вирішено використовувати для цих обчислень таблиці значень. При розрахунках в програмі мікроконтролера не використовуються обчислення з плаваючою точкою і числа подвійної точності (double), так як це займе більше часу на обробку на 8-розрядному мікроконтролері. Замість цього значення в таблицях пошуку використовуються 16-розрядні дані цілочисельного типу (integer), помножені на 10000. Потім після виконання перетворення результати діляться на 10000. При такому підході є можливість виконувати 120 32-точкових перетворень в секунду, що більш ніж достатньо для нашого пристрою.

Демонстрація роботи аналізатора спектра на мікроконтролері ATmega32

завантаження

Вихідний код (програма мікроконтролера, таблиці даних синуса, косинуса і кута) - завантажити

blog.vinu.co.in

Новости


 PHILIP LAURENCE   Pioneer   Антистресс   Аромалампы   Бизнес   Игры   Косметика   Оружие   Панно   Романтика   Спорт   Фен-Шуй   Фен-Шуй Аромалампы   Часы   ЭКСТРИМ   ЭМОЦИИ   Экскурсии   визитницы   подарки для деловых людей   фотоальбомы  
— сайт сделан на студии « Kontora #2 »
E-mail: [email protected]



  • Карта сайта