Діапазон перетворення АЦП мікроконтролера можна розширити вдвічі без втрати точності
Electronic Design Europe
Багато мікроконтролерів мають вбудований аналого-цифровий перетворювач (АЦП), як правило, багатоканальний, з мультиплексованими входами. Однак, у більшості випадків, ці АЦП, здатні оцифровувати тільки уніполярні сигнали, діапазон яких укладено між позитивним і негативним рівнями опорної напруги (+VREF і -VREF), причому, за рідкісним винятком, -VREF = 0. Для роботи з негативними напругами необхідно якийсь пристрій узгодження сигналів.
Найчастіше для цієї мети використовують схему зміщення рівня на операційному підсилювачі, що зсуває сигнал догори на половину напруги +VREF, завдяки чому сигнал не виходить з позитивної області і, відповідно, може оброблятися АЦП. Але такий метод має дві серйозні недоліки. По-перше, діапазон напруг, що перетворюються, скорочується вдвічі. По-друге, для компенсації зсуву потрібна додаткова програмна обробка результатів оцифрування, що може збільшити, можливо, дуже значний загальний час перетворення.
Альтернативний метод заснований на поділі та незалежному оцифруванні позитивних і негативних складових сигналу. Для цього знадобляться два канали АЦП мікроконтролера, два діоди Шоттки, і обидві половини здвоєного операційного підсилювача.
Враховуючи, що джерело сигналу для АЦП повинен мати низький вихідний опір (у типовому випадку хоча б 10 кОм) практично в будь-якій схемі для узгодження імпедансів необхідний операційний підсилювач. Це означає, що здвоєний ОУ, що використовується в схемі, можна виключити зі списку «витрат» на реалізацію запропонованої ідеї.
Приклад подібної схеми, зробленої на мікроконтролері середньої продуктивності PIC16F876 (U3), зображено на малюнку 1. На схеміпоказані ті висновки контролера, які безпосередньо ставляться до теми статті. На одній половині ОУ (U1A) зроблено повторювач напруги з коефіцієнтом посилення +1, інший (U1B) – інвертор, з коефіцієнтом посилення –1. Вихід U1A підключений до аналогового входу AN0 (U3, висновок 2) через резистор R1, що обмежує. Аналогічно U1B пов'язаний з AN1 через резистор R4.
![]() | |
| Малюнок 1. | Виділені з сигналу позитивна та негативна складові оцифровуються окремо, що дозволяє мікроконтролеру з уніполярним АЦП обробляти біполярні сигнали в подвоєному вхідному діапазоні без втрати дозволу. |
Коли вхідна напруга позитивно (скажімо, +4.00 В), з виходу U1A на вхід AN0 надходить напруга +4.00 В. При цьому напруга на виході U1B дорівнює -4.00, а на вході AN1 (U3, висновок 3), за рахунок обмеження діодом Шоттки з низьким прямим падінням напруги, буде близько 0.24 В. Так само, якщо VIN дорівнює -4.00 В, на виході U1B і вході AN1 буде +4.00, а напруга -4.00 В потрапить на вхід AN0 обмеженим приблизно до -0.24 В.
Обмежувачі сигналу запобігають появі на входах АЦП негативної напруги менше -0.3 В. Інжекція струму при нижчій напрузі може призвести до спотворення результатів в інших каналах. На Малюнку 2 наведені осцилограми симетричної синусоїди з розмахом 8 пік-пік на вході VIN і відповідних сигналів на висновках АЦП. Будь-яка напруга, що дорівнює або менше 0, АЦП сприймає як нуль.
| Клікніть, щоб збільшити | |
| Малюнок 2. | Кожен канал АЦП оцифровує одну напівхвилю вхідного синусоїдального сигналу. |
Програма, що керує зчитуваннямвхідного сигналу спочатку повинна вибрати канал 0 (AN0) і почекати завершення вибірки приблизно 40 мкс, після чого запустити перетворення. Якщо результат відрізняється від нуля, вхідний сигнал VIN позитивний. Оскільки VREF=4.096, або 4×1024 мВ, зчитувані з АЦП значення будуть представляти кількість 4-мВ дискретів сигналу. Отже, помноживши на 4 отримане в результаті перетворення число, ми отримаємо вимірювану напругу у вольтах. Щоб зберегти це значення в пам'яті, знадобиться два байти.
При нульовому результаті перетворення входу AN0, програма повинна вибрати канал АЦП AN1 і чекати ще 40 мкс до завершення другого перетворення. Якщо результат не дорівнює нулю (наприклад, 1.5 В), то вхідна напруга VIN є негативною (–1.50 В), і програма перед записом повинна інвертувати результат. Випадок, коли AN0 і AN1 дорівнюють нулю, означає, що VIN = 0 В.
Наведена схема може оцифровувати сигнали від +4.092 до -4.092 (8.184 пік-пік). При опорній напрузі +VREF = 5 В діапазон вимірів можна розширити до 10 В пік-пік, щоправда, при цьому, через дробовий крок дискретизації, перетворення лічених значень стане складнішим. Отже, ми побачили, як без втрати дозволу можна подвоїти довжину шкали перетворення АЦП.
В описаній конструкції слід використовувати операційні підсилювачі з малою напругою усунення та rail-to-rail входами та виходами. Якщо швидкість перетворення буде недостатньо, можна вибрати більш широкосмуговий ОУ і знайти мікроконтролер з більш швидким АЦП. Ну, і як завжди, шукайте компроміс між швидкістю, точністю та потужністю споживання.
Переклад: AlexAAN на замовлення РадіоЛоцман
