Розрахунок кроку LSB та параметрів квантування
Аналого-цифровий перетворювач (ADC) трансформує безперервний аналоговий сигнал у дискретні цифрові відліки. Точність цього представлення фундаментально обмежена розрядністю перетворювача та опорною напругою, які разом визначають мінімальний крок напруги — значення молодшого значущого розряду (LSB).
Для швидкого аналізу параметрів перетворення використовуйте онлайн-інструмент "Калькулятор розрядності ADC". Він обчислює крок LSB, рівні квантування, максимальну теоретичну помилку та ідеальне відношення сигналу до шуму (SNR). Інструмент також дозволяє виконувати конвертацію між напругою та цифровими кодами в обох напрямках і визначати необхідну розрядність для заданого кроку напруги.
Кожне введене вами число залишається в цьому браузері — нічого не завантажується на сервер. Усі обчислення виконуються локально на вашому пристрої.
Вхідні параметри та конфігурація
Для проведення розрахунків у калькуляторі передбачено такі поля введення:
- Розрядність N (біт): Ціле число від 1 до 32 — номінальна розрядність перетворювача.
- Опорна напруга: Позитивне число, що задає опорний потенціал.
- Одиниця опорної напруги: Одиниця вимірювання для опорної напруги (наприклад, V, mV, µV).
- Вхідний діапазон: Вибір між варіантами "Однополярний · від 0 до Vref" та "Двополярний · від −Vref до +Vref".
- Знаків після коми: Кількість десяткових знаків для відображення результатів.
- Перетворити (опціонально): Вибір режиму конвертації між "Напруга → код" та "Код → напруга".
- Вхідна напруга (опціонально): Значення напруги для перетворення в цифровий код.
- Код (відліки) (опціонально): Ціле число від 0 до верхнього коду перетворювача для конвертації у напругу.
- Одиниця напруги: Одиниця вимірювання для вхідної напруги або напруги коду.
- Найменша зміна для розрізнення (опціонально): Цільовий крок напруги для розрахунку необхідної розрядності.
- Одиниця кроку: Одиниця вимірювання для цільового кроку напруги.
Для швидкого ознайомлення з роботою інтерфейсу передбачено кнопки "Завантажити приклад" та "Очистити".
Теоретичні основи та математичні формули
Калькулятор моделює ідеальний квантувач, де перший перехід коду відбувається на половині кроку (½ LSB), а крок LSB визначається як відношення діапазону повної шкали (FSR) до загальної кількості рівнів квантування.
Нижче наведено математичні формули, які використовуються для розрахунків, та схему їхньої підстановки в інтерфейсі інструменту:
Розмір кроку та рівні
- Рівні квантування: Рівні = 2^N
- Діапазон повної шкали (FSR):
- Для однополярного діапазону: FSR = Vᵣef.
- Для двополярного діапазону: FSR = 2 × Vᵣef.
- Розмір кроку LSB:
LSB = FSR / (2^N)
Формула підстановки:
LSB = FSR ÷ 2^N
Показники шуму та динамічного діапазону
- Макс. помилка квантування (±½ LSB): Найбільша теоретична помилка, що виникає через округлення аналогової величини до найближчого дискретного рівня.
Формула підстановки:
Макс. помилка квантування = ±LSB ÷ 2 - Шум квантування (rms): Середньоквадратичне значення напруги шуму квантування для ідеального лінійного перетворювача.
Формула підстановки:
Шум квантування (rms) = LSB ÷ √12 - Ідеальне SNR (синусоїда повної шкали): Теоретична межа відношення сигналу до шуму в децибелах.
Формула підстановки:
SNR = 6.02 × N + 1.76 - Динамічний діапазон: Теоретичний динамічний діапазон ідеального перетворювача.
Формула підстановки:
Динамічний діапазон = 6.02 × N
Конвертація у точці вимірювання
При аналізі конкретної робочої точки калькулятор виконує двостороннє перетворення за такими правилами:
Напруга → код
Для визначення цифрового коду за вхідною напругою (Vᵢₙ) виконується округлення до найближчого цілого числа:
- Однополярний режим:
code = round(Vin ÷ LSB). - Двополярний режим:
code = round((Vin + Vref) ÷ LSB).
Код → напруга
Для зворотного перетворення цифрового коду в аналогову напругу використовуються формули:
- Однополярний режим: V = code × LSB.
- Двополярний режим: V = code × LSB - Vᵣef.
Помилка квантування у точці вимірювання
Різниця між відновленою напругою коду та фактичною вхідною напругою:
- Формула підстановки:
Помилка квантування = напруга коду − вхідна напруга
Скільки біт вам потрібно?
У полі «Найменша зміна для розрізнення» можна вказати цільовий крок, і калькулятор визначить мінімальну кількість біт, потрібну для його розрізнення:
- Формула підстановки:
N ≥ log₂(FSR ÷ крок)
Результат завжди заокруглюється вгору до цілого числа біт. Далі вимога порівнюється з обраною розрядністю: якщо перетворювач покриває ціль, інструмент підтверджує це, а якщо ні — показує, який крок здатен розрізнити поточний перетворювач.
Обмеження та крайові випадки
При роботі з реальними сигналами та граничними значеннями калькулятор застосовує такі правила:
- Обмеження зверху (High Rail Clipping): Якщо вхідна напруга перевищує верхню межу діапазону, вихідний код обмежується максимальним значенням (2^N - 1). При цьому виводиться попередження: "Вхідне значення лежить вище верхньої межі: вихід насичується на верхньому коді, а показана помилка є справжньою залишковою помилкою — межа ±½ LSB більше не застосовується.". У розрахунках зазначається, що вхідне значення лежить поза межами діапазону, тому код обмежується.
- Обмеження знизу (Low Rail Clipping): Якщо вхідна напруга нижча за нижню межу діапазону, код обмежується значенням 0. Виводиться попередження: "Вхідне значення лежить нижче нижньої межі: вихід насичується на коді 0, а показана помилка є справжньою залишковою помилкою — межа ±½ LSB більше не застосовується.".
- Точно середина шкали: Якщо вхідна напруга відповідає точній середині шкали, калькулятор виводить повідомлення, що це точно середина шкали: половина діапазону відображається на цей код із нульовою помилкою квантування.
Практичний приклад розрахунку
При натисканні кнопки "Завантажити приклад" калькулятор використовує такі параметри: розрядність 12 біт, опорна напруга 3.3 V, однополярний діапазон.
Результати розрахунку для цього прикладу:
- Рівні квантування: 2¹² = 4096.
- Верхній код: 4095.
- Розмір кроку LSB: 3.3 V ÷ 4096 ≈ 805.6641 µV.
- Макс. помилка квантування (±½ LSB): ± 402.832 µV.
- Шум квантування (rms): ≈ 232.5752 µV rms.
- Ідеальне SNR (синусоїда повної шкали): ≈ 74.01 dB.
- Динамічний діапазон: ≈ 72.25 dB.
Якщо задати вхідну напругу 1.65 V (точно середина шкали), вона відобразиться на код 2048 (двійковий: 1000 0000 0000, шістнадцятковий: 0x800) з нульовою помилкою квантування.
Помилки введення та валідація
Калькулятор перевіряє коректність введених даних і виводить відповідні повідомлення про помилки:
- Нечислове введення:
"‹field›: «‹token›» не є числом.". - Некоректна розрядність:
"Розрядність має бути цілим числом біт від 1 до 32.". - Некоректна опорна напруга:
"Опорна напруга повинна бути більшою за нуль.". - Нецілий код:
"Код має бути цілим числом відліків.". - Код поза межами діапазону:
"Код має бути від 0 до ‹max› для ‹bits›-бітного перетворювача.". - Некоректний крок для розрізнення:
"Найменша зміна для розрізнення повинна бути більшою за нуль.". - Переповнення обчислень:
"Значення або проміжний результат перевищує підтримуваний діапазон чисел.".
Часті питання (FAQ)
Чи означає 12-бітна розрядність 12-бітну точність?
Ні. Розрядність — це лише ширина коду, тобто те, наскільки дрібно розділений діапазон. Точність обмежена параметрами INL та помилками зміщення/підсилення перетворювача, допуском і шумом опорної напруги, а також схемою навколо нього. Саме тому в специфікаціях вказують ENOB: 12-бітний SAR зазвичай забезпечує 10–11 ефективних біт. Ідеальне SNR 74 dB, показане тут, є теоретичною межею, якої не досягає жоден реальний 12-бітний перетворювач.
Як вхід ±Vref змінює математику?
Діапазон подвоюється до 2 × Vref, тому той самий перетворювач розрізняє кроки вдвічі більшої ширини: LSB = 2 × Vref ÷ 2^N. Коди йдуть від негативної шини живлення до позитивної — код 0 відповідає −Vref, середній код 2^(N−1) дорівнює 0 V, а верхній код знаходиться на один крок нижче за +Vref. Виберіть двополярний діапазон вище, і нуль вольт потрапить точно на середній код.
Чому в одних джерелах ділять на 2^N, а в інших — на 2^N − 1?
Це дві різні моделі одного й того ж перетворювача. Специфікації та класична теорія квантування визначають LSB = FSR ÷ 2^N з першим переходом коду на половині кроку — саме цю модель використовує ця сторінка. Формула Vref ÷ (2^N − 1) виникає при прив'язці верхнього коду точно до Vref, що часто зустрічається в посібниках з мікроконтролерів. При 12 бітах різниця між ними становить близько 0.02%, що набагато менше за допуск будь-якого реального джерела опорної напруги; просто не змішуйте ці два підходи при звірці чисел з різних джерел.
Що робити, якщо розмір кроку занадто великий?
Передискретизація та усереднення дозволяють підвищити розрядність, якщо сигнал містить трохи шуму: усереднення у 4× рази більшої кількості відліків дає приблизно один додатковий ефективний біт, у 16× разів — два, за умови, що шум є білим та некорельованим — ідеально чистий, нерухомий сигнал просто повторюватиме один і той самий код. Крім цього, слід перейти на перетворювач із більшою розрядністю або додати каскад із програмованим підсиленням, щоб сигнал заповнював більшу частину діапазону.