AVR131 Використання високочастотної ШІМ мікроконтролерів AVR

Реклама:

AVR131: Використання високочастотної ШІМ мікроконтролерів AVR

Відмінні риси:

  • Генерація аналогових сигналів за допомогою ШІМ
  • Високочастотна масштабована синхронізація ШІМ

Дані "Рекомендації…" є посібником з використання високочастотного широтно-імпульсного модулятора (ШІМ), який є у деяких мікроконтролерах AVR. До складу "Рекомендацій..." входить приклад асемблерного коду, який демонструє, як використовувати високочастотний ШІМ мікроконтролера ATtiny26. Таймер з високочастотним ШІМ також є ATtiny15.

Для генерації імпульсів використовується режим ШІМ швидкої зі змінним заповненням імпульсів на виході OC1A (PB1). Для отримання із цифрового ШІМ-сигналу сигналу синусоїдальної форми на виході повинен бути передбачений аналоговий фільтр.

Переваги високошвидкісного ШІМ - розширення частотного діапазону аналогового вихідного сигналу та можливість застосування компактніших і недорогих компонентів у фільтрі за рахунок вищої частоти.

1. Принцип дії

ШІМ у поєднанні з аналоговим фільтром можна використовувати для генерації аналогових вихідних сигналів, тобто. як цифро-аналоговий перетворювач (ЦАП). Як основа використовується послідовність прямокутних імпульсів з постійним періодом прямування (фіксована частота перетворення). Для створення різних аналогових рівнів регулюється заповнення імпульсів і, таким чином, змінюється тривалість імпульсів. Якщо потрібно сформувати високий аналоговий рівень, то тривалість імпульсу збільшують і навпаки.

Усереднення аналогового сигналу за період (за допомогою аналогового фільтра) дозволяє згенерувати аналоговий сигнал. Призаповненні імпульсів 50% аналоговий сигнал дорівнює половині напруги живлення, а при 75% заповненні імпульсів - аналоговий сигнал дорівнює 75% від напруги живлення. Приклади фільтрації вихідних сигналів показані наприкінці цього документа.

Наприклад, аналоговий ФНЧ можна здійснити за допомогою простого пасивного RC-фільтра. Фільтр видаляє несучу високу частоту ШІМ і таким чином формує аналоговий сигнал. Настроювальна частота фільтра повинна бути обрана досить високою, щоб не спотворити форму аналогового сигналу. У той же час настроювальна частота має бути досить низькою для мінімізації пульсацій від несучої частоти ШІМ.

Малюнок 1. Низькочастотний RC-фільтр

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

На малюнку 2 показана реальна осцилограма ШІМ-сигналу зі змінним заповненням імпульсів.

avr131
Малюнок 2. ШИМ-сигнал зі змінним заповненням імпульсів

У мікроконтролерах AVR для генерації ШІМ-сигналів використовуються таймери-лічильники. Для зміни несучої частоти ШІМ змінюється частота синхронізації таймера та вершина рахунку. Підвищення частоти синхронізації та/або зниження вершини рахунку призводять до підвищення частоти переповнення таймера і, як наслідок, збільшується частота ШІМ. Максимальної роздільної здатності (вершина рахунку 255) відповідає максимальна частота ШІМ 250 кГц. Подальше збільшення частоти ШІМ можливе шляхом зменшення роздільної здатності, але в цьому випадку скорочується кількість кроків при встановленні заповнення імпульсів від 0 до 100%.

Зміна вмісту регістру порівняння (OCR) впливає заповнення імпульсів.Збільшення OCR збільшує заповнення імпульсів. До досягнення лічильником значення з регістра OCR ШИМ-вихід знаходиться у високому стані, потім переходить у низький стан до досягнення вершини рахунку, після чого лічильник переходить у нульовий стан цикл повторюється. Такий спосіб генерації у AVR-мікроконтролерів отримав назву швидкої ШІМ.

avr131
Малюнок 3. Значення лічильника та ШІМ-вихід

При використанні високочастотної ШІМ для генерації аналогових сигналів ширина аналогових рівнів залежить від роздільної здатності ШІМ. Чим вище несуча частота, тим більше її придушити і тим самим мінімізувати рівень пульсацій. Таким чином, необхідно оптимізувати співвідношення роздільної здатності та несучої частоти.

2. Альтернативні галузі застосування

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

Максимальна тактова частота таймера мікроконтролера ATtiny26 дорівнює 64 МГц (без попереднього розподілу). При частоті ШІМ 16 МГц (вершина рахунку 3) у регістр OCR можна записати значення 0, 1 (заповнення 25%), 2 (заповнення 50%, рисунок 4а) або 3 (заповнення 100%). Цим показується, що зниженням вершини рахунку збільшується несуча частота ШІМ.

Для досягнення максимальної вихідної частоти від таймера необхідно перевести в режим без ШІМ. Вершина рахунку та вміст OCR повинні дорівнювати 0. Лічильник у цьому випадку зависає на 0. Установка дії зі збігу рівним "toggle output" (інвертування виходу) призводить до інвертування (перемикання) виходу кожен такт таймера. В результатідосягається частота 32 МГц (малюнок 4б).

мікроконтролерів
Малюнок 4. Високочастотний цифровий вихід

3. Приклад застосування

Малюнок 4 ілюструє, як генерувати синусоїдальний сигнал високочастотного ШИМ-сигналу.

Програмний код складається з 3 частин: ініціалізація, процедура обробки переривання по переповненню таймера 1 та цикл у режимі сну. У цьому прикладі вважається, що мікроконтролер працює на тактовій частоті 8 МГц.

використання
Малюнок 5. Блок-схема основного циклу програми генерації синусоїдального сигналу

Вихід компаратора таймера 1 (OC1A) необхідно налаштувати виведення.

Далі виконується установка таймера 1: готується тактове джерело таймера - запускається схема ФАПЧ, яка має увійти в синхронізм (захоплення) із системною частотою синхронізації. ФАПЧ вимагає близько 100 мс для захоплення із системною синхронізацією і тому перед виконанням наступних дій необхідно почекати встановлення прапора захоплення ФАПЧ. Як тільки ФАПЧ захоплюється його необхідно вибрати як тактове джерело таймера.

Далі вибирається режим ШІМ з інвертуванням виведення OC1A за збігом і встановлюється вершина рахунку 0xFF. Значення вершини рахунку визначає роздільну здатність і несучу частоту ШІМ- чим вище значення вершини, тим вище роздільна здатність і нижче несуча частота.

Тепер таймер готовий до запуску: встановлення розподільника призводить до запуску таймера. На завершення дозволяється переривання з переповнення таймера.

avr131
Малюнок 6. Процедура ініціалізації (ініціалізує виведення та таймер 1 для роботи в режимі швидкої ШІМ)

3.2. Процедура обробки переривання

Коли таймер 1 досягає значення OCR1C (0xFF) викликається процедура обробки переривання по переповненнютаймер. Оскільки значення OCR1C - константа, то й ця подія виникає з постійною періодичністю. Цей період визначає несучу частоту вихідного ШІМ-сигналу.

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

Для виконання процедури обробки переривання потрібно 13 тактів. На виклик процедури та повернення з неї також витрачається час - всього буде потрібно 21 такт. Оскільки таймер 1 є 8-розрядним, то переривання виникає кожні 256/(Частота_ШІМ/Системна_частота) тактів. У цьому прикладі належить тактування внутрішнім RC-генератором частотою 8 МГц. Якщо використовується максимальна тактова частота ШІМ 64 МГц, то переповнення таймера виникає кожні 32 системні такти.

Незважаючи на можливість тактуватися максимальною частотою 64МГц, у цьому прикладі частота синхронізації таймера прийнята 4...16 МГц, щоб додатково продемонструвати роботу з попереднім дільником.

високочастотної
Малюнок 7. Блок-схема процедура обробки переривання з переповнення таймера

3.3. Холостий хід

У процесі очікування виникнення переривання мікроконтролер перетворюється на економічний режим сну "Холостий хід" (Idle). Після завершення обробки переривання мікроконтролер повертається у режим сну.

На наступних малюнках наведено осцилограмигенерації синусоїдальних сигналів за допомогою мікроконтролера ATtiny26. На осцилограмах представлені два сигнали: цифровий сигнал з виходу OC1A та оброблений/фільтрований ШІМ-сигнал. Для формування аналогового синусоїдального сигналу використовувався простий RC-фільтр з параметрами R = 10 кОм та C = 100 нФ, яким відповідає настроювальна частота фільтра 1 кГц. Таким чином, синусоїда пропускається, а високочастотна несуча частота пригнічується.

високочастотної
Малюнок 8. Фільтрований та нефільтрований вихід OC1A

високочастотної
Малюнок 9. Фільтрований та нефільтрований вихід OC1A (з великим масштабом)