Семисмуговий спектроаналізатор звуку на мікроконтролері. Семисмуговий спектроаналізатор звуку на мікроконтролері 10 смуговий аналізатор спектру на операційних підсилювачах

Головна / Google Play

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

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

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

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

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

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

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

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

Давно мріяв зібрати графічний аналізатор спектра, але зупиняло безліч компонентів у схемі, підбір елементів фільтрів тощо. І тут мені попався польський журнал із описом цифрового аналізатора, серцем якого є мікроконтролер. Схема дуже проста, у ній відсутні ті фільтри, які я не хотів збирати, підбирати для них компоненти, налаштовувати. Усе це покладено мікроконтролер. До того ж цей аналізатор має кілька режимів роботи! Що дуже ускладнило схему на дискретних елементах.

Аналізатор має 4 режими індикації: Лінія з індикацією піків та без, та "точка", так само з індикацією піків і без.

Технічні характеристики:

  • Індикація частот: 31Hz, 62Hz, 125Hz, 250Hz, 500Hz, 1kHz, 2kHz, 4kHz, 8kHz, 16kHz;
  • Розмір матриці: 10х10;
  • Режими: точка, лінія, піки;
  • Напруга живлення: 12V;
  • Споживана потужність: Залежить від використовуваних світлодіодів у матриці, основна плата споживає близько 20мА

Індикатор складається з двох частин, основного блоку та діодної матриці.


Основний блок побудований на мікроконтролері ATmega8, дешифраторі К176ІД1(Закордонний аналог CD4028) та вхідного підсилювача-обмежувача, виконаному на операційному підсилювачі TL071. Кварцовий резонатор можна застосувати на частоту 16-20мГц.

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









Фьюзи в Algorithm Builder:

Фьюзи в PonyProg:


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

Зібрав схему, прошив мікроконтролер, підключив живлення та подав на вхід звуковий сигнал. Пристрій запрацював відразу, без налаштувань та налагодження. Ця конструкція мене дуже порадувала.

У цій статті наведено принципова схема 10-ти смугового аналізатора спектра (індикатора), яку можна застосувати при конструюванні будь-яких підсилювачів, якщо не влаштовують лампові, прості світлодіодні, або стрілочні індикатори. Взагалі в мережі можна знайти безліч схем подібного призначення, ну а ми з вами зупинимося на більш складному варіанті, дана схемапобудована із застосуванням мікроконтролера Atmega8. Давайте розглянемо схему:

Крім мікроконтролера є ще пара мікросхем, це операційний підсилювач TL071, на нього приходить лінійний сигнал, і дешифратор CD4028, аналогом останньої є вітчизняна мікросхема К176ІД1. Живиться пристрій блоку живлення, реалізованого на інтегральному стабілізаторі 7805. Кварц має частоту 18 MHz. Також на схемі ми бачимо купу транзисторних ключів, що управляють світлодіодною матрицею. Схема матриці показана нижче:

100 світлодіодів утворюють матрицю 10х10. Частоти, на які реагує кожен стовп матриці:

31Hz, 62Hz, 125Hz, 250Hz, 500Hz, 1kHz, 2kHz, 4kHz, 8kHz, 16kHz

За допомогою J4 і J5 можна встановити режим роботи індикації, тобто робота в лінійному режимі, в лінійному режимі з індикацією піків, в режимі точок, і режимі точок з індикацією піків. Замість цих джамперів для оперативності зміни режимів можна встановити будь-які мініатюрні перемикачі.

Друковані плати пристрою.

З друкованою платоюу форматі LAY довелося трохи повозитись, жоден елемент на ній був не підписаний, плата просто мала купу контактних майданчиків, з'єднаних доріжками, тому довелося її переробити використовуючи свої шаблони деталей (макроси), повністю відмалювати шар шовкографії із зазначенням номіналів елементів.

У переробленому вигляді плати мають такий вигляд:

Дросель за живленням мікросхеми CD4028 встановлений для коректної роботидешифратора, в принципі замість нього можна поставити перемичку (дивись нижній лівий кут плати).

Стабілізатор 7805 встановлюється на невеликий радіатор:

Плата у зборі виглядає так:

Всі необхідні матеріали для повторення індикатора, у тому числі прошивку мікроконтролера та інформаційний файл встановлення фьюзів для програми Algorithm Builder ви знайдете в архіві. Також у ньому є оригінальна стаття із зарубіжного журналу, в якій розглядається цей спектроаналізатор, і друковані плати блоків у форматі LAY6. Розмір файлу – 6 Мб.

Як ви вважаєте, що роблять дівчата, коли збираються разом? Йдуть магазинами, фотографуються, ходять салонами краси? Так, так і є, але так роблять не всі. У цій статті йтиметься про те, як дві дівчини вирішили зібрати радіоелектронний пристрій своїми руками.

Чому саме аналізатор-візуалізатор спектру?

Адже програмних розв'язків цього завдання досить багато і варіантів апаратної реалізації так само чимало. По-перше, дуже хотілося попрацювати з великою кількістюсвітлодіодів (т.к. ми вже збирали led-куб, кожен для себе, але в невеликих розмірах), по-друге, застосувати на практиці отримані знання з цифрової обробки сигналів і, по-третє, вкотре попрактикуватися в роботі з паяльником .

Розробка пристрою

Т.к. брати готове рішення і робити строго за інструкцією – це нудно та нецікаво, тому ми вирішили розробляти схему самі, лише трохи спираючись на вже створені пристрої.

Як дисплей вибрали світлодіодну матрицю 8х32. Можна було використовувати готові led-матриці 8х8 і збирати з них, але ми вирішили не відмовляти собі в задоволенні посидіти ввечері з паяльником, і тому збирали дисплей самі зі світлодіодів.

Для управління дисплеєм ми не винаходили велосипеда і використовували схему управління з динамічною індикацією. Тобто. вибрали один стовпець, запалили його, решта стовпців у цей момент погасили, потім вибирали наступний, запалили його, інші погасили і т.д. Зважаючи на те, що людське око не ідеальне, ми можемо спостерігати статичну картинку на дисплеї.
Підійшовши шляхом найменшого опору було вирішено, що це обчислення розумно перенести на контролер Arduino.

Увімкнення того чи іншого рядка у стовпці здійснюється за допомогою відкриття відповідного ключа. Для зменшення кількості вихідних пінів контролера вибір стовпця відбувається через дешифратори (отже, ми можемо скоротити кількість керуючих ліній до 5).

Як інтерфейс підключення до комп'ютера (або іншого пристрою, здатного передавати аудіо сигнал), було обрано роз'єм TRS (mini-jack 3.5 mm).

Складання пристрою

Складання пристрою починаємо з того, що робимо макет лицьової панелі пристрою.

Матеріалом для лицьової панелі було обрано чорний пластик товщиною 5мм (т.к. діаметр лінзи діода також 5мм). За розробленим макетом розмічаємо, вирізаємо лицьову панель під необхідний розмір та просвердлюємо отвори у пластику під світлодіоди.

Таким чином отримуємо готову лицьову панель, де можна вже збирати дисплей.

Як світлодіоди для матриці були використані двоколірні (червоний-зелений) із загальним катодом GNL-5019UEUGC. Перед початком складання матриці, керуючись правилом "зайвий контроль не зашкодить" усі світлодіоди, а саме 270 шт. (брали із запасом про всяк випадок), були перевірені на працездатність (для цього було зібрано тестуючий пристрій, що включає роз'єм, резистор 200Ом і джерело живлення на 5В).

Далі розгинаємо світлодіоди в такий спосіб. Аноди червоного та зеленого діодів відгинаємо в один бік (вправо), катод відгинаємо в інший бік, при цьому стежимо, щоб катод був нижчим ніж аноди. І потім під 90 ° загинаємо катод вниз.

Складання матриці починаємо з правого нижнього кута, складання проводимо по стовпцях.

Згадуючи про правило "зайвий контроль не зашкодить", після одного-двох спаяних стовпців, перевіряємо працездатність.

Готова матриця виглядає так.

Вид ззаду:

За розробленою схемою паяємо схему управління рядками та стовпцями, розпаюємо шлейфи та місце під Arduino.

Було вирішено також виводити не тільки амплітудно-частотні, а й фазо-частотний спектр, а також вибирати кількості відліків для відображення (32,16,8,4). Для цього були додані 4 перемикачі: один на вибір типу спектру, два на вибір кількості відліків, і один на включення та вимкнення пристрою.

Написання програми

Вкотре керуємося нашим правилом і переконуємось, що наш дисплей повністю у робочому стані. Для цього пишемо просту програмуяка повністю запалює всі світлодіоди на дисплеї. Звичайно, за законом Мерфі, декільком світлодіодам не вистачало струму, і їх потрібно було замінити.

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

Складання кінцевого пристрою

Наприкінці ми маємо лицьову панель, а під нею купа дротів, які потрібно чимось закрити, та й перемикачі потрібно на чомусь закріпити. До цього були думки зробити корпус із залишків пластику, але ми не цілком уявляли, як це конкретно виглядатиме і як це зробити. Вирішення проблеми прийшло досить несподівано. Прогулявшись будівельним магазином, ми виявили пластиковий квітковий горщик, який напрочуд ідеально підійшов за розміром.

Справа залишалася за малим, розмітити отвори під роз'єми, кабелі та перемикачі, а також вирізати дві бічні панелі із пластику.

У результаті, зібравши все докупи, підключивши пристрій до комп'ютера ми отримали наступне:

Амплітудно-частотний спектр (32 відліки):

Амплітудно-частотний спектр (16 відліків):

Амплітудно-частотний спектр (8 відліків):

Амплітудно-частотний спектр (4 відліки):

Фазочастотний спектр:

Вид задньої панелі:

Відео роботи пристрою

Для більшої наочності відео знімалося у темряві. На відео пристрій виводить амплітудно-частотний спектр, а потім на 7 секунд перемикаємо його в режим фазо-частотного спектру.

Список необхідних елементів

  1. Світлодіоди GNL-5019UEUGC - 256 шт. (Для дисплея)
  2. Транзистори n-p-n KT863A – 8 шт. (Для управління рядками)
  3. Транзистори p-n-p С32740 - 32 шт. (Для управління стовпцями)
  4. Резистори 1кОм - 32 шт. (Для обмеження струму бази p-n-pтранзисторів)
  5. Дешифратори 3/8 IN74AC138 - 4 шт. (Для вибору стовпця)
  6. Дешифратори 2/4 IN74AC139 - 1 шт. (Для каскадування дешифраторів)
  7. Монтажна плата 5х10см – 2 шт.
  8. Шлейфи
  9. Arduino Pro micro – 1 шт.
  10. Роз'єм mini-jack 3.5мм – 1 шт.
  11. Перемикач – 4 шт.
  12. Чорний пластик 720*490*5 мм – 1 аркуш. (Для лицьової панелі)
  13. Горщик квітковий чорний 550 * 200 * 150 мм - 1 шт. (Для корпусу)

Цей проект є логічним продовженням проекту "Темброблок з мікроконтролерним керуванням на TDA8425". Для розширення функціоналу я пропоную вам зібрати простий спектроаналізатор звуку. Аналізатор спектру обробляє сигнал і на світлодіодних шкалах показує його інтенсивність у певних частотних діапазонах. Отже, нижче схема пристрою.

Серцем пристрою є мікроконтролер фірми MICROCHIP. Це новий представник сімейства 8-ми вивідних Flash-мікроконтролерів. Фірма MICROCHIP продовжує розробку та виробництво передових продуктів, що надають користувачеві велику функціональність та надійність. Контролер PIC12F675 об'єднав усі переваги архітектури мікроконтролерів PICmicro та гнучкість Flash програмної пам'яті. При низькій ціні та малих розмірах цей контролер забезпечують функціональність та зручність використання, які були недоступні раніше.

Аудіо сигнал подається на вхід мікросхеми – симмулосний фільтр японської корпорації ROHM. BA3834F має сім смугових фільтрів: 68 Гц, 170 Гц, 420 Гц, 1000 Гц, 2400 Гц, 5900 Гц, 14400 Гц. Вибір відповідного фільтра здійснює мікроконтролер PIC12F675.

Вихідний сигнал з кожного смугового фільтра оцифровується мікроконтролером і передається на мікросхеми-драйвери (послідовний регістр зсуву з вихідним блокуванням). У свою чергу комбінація сигналів на 74HC595 включає відповідні світлодіоди. Світлодіоди згруповані в матрицю з 7 стовпців "X" та 16 рядків "Y" із загальним анодом. Усього 112 світлодіодів.

Спектроаналізатор конструктивно зібраний на двох платах - управління та індикації. Нижче малюнок та фото плати управління.


Малюнки друкованих плат; виготовляються будь-яким доступним способом, наприклад, ЛУТ. Зверніть увагу – мікросхема BA3834F у корпусі SOP18. Вона змонтована із боку доріжок способом поверхневого монтажу. Далі малюнок та фото плати індикації.

Аноди світлодіодів з'єднані між собою над поверхнею плати та підпаяні до контактних майданчиків. Для зручнішого з'єднання були використані штирьові роз'єми типу PLS (однорядні з кроком 2,54 мм); відповідно, для кабелю знадобляться гнізда з контактами типу BLS (однорядні з кроком 2,54 мм) та кримпер 6PK-301U (кліщі обтискні) для закладення роз'ємів на кабель.

© 2022 androidas.ru - Все про Android