Ключові висновки
- АЦП широко використовуються для перетворення аналогових сигналів, таких як звук і світло, в цифрові значення, які можна використовувати в різних програмах.
- Частота дискретизації АЦП визначає кількість показань, зроблених за секунду, причому вищі частоти дискретизації дозволяють точніше подавати сигнал.
- Бітрейт АЦП впливає на якість отриманої вибірки, при цьому більша кількість бітів призводить до більш плавних і точних вимірювань. Різні типи АЦП пропонують різні компроміси щодо швидкості, точності та енергоспоживання.
Аналого-цифрові перетворювачі (АЦП) неймовірно корисні для перетворення реальних явищ у значення, які ми можемо використовувати в проектах програмування. Але як АЦП може перетворювати аналогові сигнали в цифрові, які ми можемо використовувати будь-де?
Для чого використовуються АЦП?
Ви знайдете АЦП майже всюди. Вони на вашому телефоні, перетворюючи ваш голос на рядок двійкових значень. Вони у вашому автомобілі, вимірюють обертання ваших коліс. Вони є в осцилографах, допомагаючи вловлювати сигнали та представляти їх. Тим не менш, більшість людей використовувала їх у світі відео та аудіо, де доступ світла та звуку в цифровий простір є фундаментальним.
Що таке частота вибірки? Як частота дискретизації впливає на АЦП?
Однією з найважливіших головних метрик АЦП є частота дискретизації: кількість показань, зроблених кожну секунду.
Осцилограф дуже високого класу може приймати десять мільярдів вибірок за секунду. Відважний маленький АЦП MCP3008 може прийняти відносно скромні двісті тисяч. У світі звуку типовою є частота дискретизації 44 100 за секунду (44,1 кГц).
Чим більше зразків ми беремо, тим точніше ми можемо представити сигнал. Іноді це важливо; іноді це не так. Припустімо, ми створюємо банк фейдерів (призначений для керування електронікою, як ви бачите на освітлювальному чи аудіо столі) з кількома десятками потенціометрів. У цьому випадку значення, які нам потрібно виміряти, навряд чи змінюватимуться мільйони разів на секунду, оскільки наші пальці не можуть рухатися так швидко. Нам просто потрібна достатня кількість зразків, щоб результат був гладким і чуйним.
Що таке бітрейт? Чи впливає бітрейт на якість АЦП?
Ми також повинні думати про якість зразка, який ми отримуємо. Це значною мірою визначається бітрейтом, який говорить нам, скільки станів увімкнення та вимкнення ми можемо використовувати для цифрового представлення напруги. Чим більше бітів ми маємо, тим більше можливих значень ми можемо записати в будь-якому заданому зразку, і тим плавнішим і точнішим буде кінцевий результат.
Ми писали про двійковий код і як він працює, тож якщо ви не впевнені, це гарне місце для початку. Скільки біт нам потрібно? Знову ж таки, це залежить від того, чого ми намагаємося досягти. Іноді ми можемо бути обмежені протоколом, який ми використовуємо. Наприклад, протокол MIDI 1.0 обмежений семибітними (і іноді чотирнадцятибітними) значеннями. В інших випадках обмежуючим фактором може бути людське сприйняття. Якщо підвищена точність не дає відчутного покращення результату, можливо, це не варто.
Як мультиплексування покращує якість АЦП?
Популярні мікросхеми АЦП, такі як ADS1115 і MCP3008 пропонують багато вхідних даних. Але під капотом вони насправді містять лише один АЦП. Це можливо завдяки мультиплексорам, вбудованим у ці пристрої. Мультиплексори є абсолютно скрізь у світі електроніки та телекомунікацій. Це цифрові комутатори, які діють як контроль трафіку для вашого АЦП. АЦП може дискретизувати один канал, а потім наступний, а потім наступний. Отже, якщо у вас є вісім каналів і частота дискретизації 200 000, ви можете чергувати їх усі, беручи 25 000 семплів на канал.
Які існують види АЦП?
АЦП працюють різними способами, залежно від вартості та необхідних можливостей.
Flash ADC працює через дуже складний дільник напруги. Банк резисторів ділить опорну напругу на прирости, які потім перевіряються на вході через банк компараторів. Флеш-АЦП блискавично швидкі, але вони обмежені, коли йдеться про бітову глибину через кількість необхідних компараторів. Вони також жадібні влади з тієї ж причини.
Піддіапазонний АЦП намагається компенсувати ці слабкі сторони, розподіляючи роботу між двома окремими блоками: один для приблизного визначення напруги, а другий – для точного його визначення. Розділивши речі, ми можемо зменшити кількість компараторів. Деякі піддіапазонні АЦП розділяють роботу на три етапи з вбудованим виправленням помилок.
SAR (Регістр послідовного наближення) АЦП виконують свою роботу за допомогою свого роду двійкового пошуку. Припустимо, у нас є вісім бітів для заповнення. SAR буде починатися з 10000000, що є середнім значенням (00000000 є нижнім і 11111111 є верхнім). Якщо напруга перевищує цю середню точку, SAR залишить крайню ліву цифру 1; якщо це не так, SAR встановить крайню ліву цифру на 0. Ми можемо повторити процес із наступною цифрою і так далі рекурсивно. Це спричинить поступове наближення припущеного значення до фактичного:
Таким чином ми постійно звужуємо пошук, розділяючи можливості навпіл і запитуючи, чи є результат вищим або нижчим за середину. У цьому випадку значення знаходиться десь між 0 і 255; після кількох ітерацій ADC визначив, що це приблизно 77.
Сигма-дельта перетворювачі, мабуть, найважчі для розуміння. Вони використовуються для високоточних музичних і сигнальних вимірювань. Вони працюють шляхом передискретизації сигналу та вдосконалення результату за допомогою диявольськи складної фільтрації та математики. Цей процес ефективно зменшує частоту дискретизації, одночасно підвищуючи точність. Ці АЦП чудові, коли шум і точність важливіші за швидкість.
Нарешті, у нас є інтегруючі АЦП, які навіть повільніші, ніж сигма-дельта. Вони працюють за допомогою конденсатора, за швидкістю заряду якого можна визначити вхідну напругу. Частота дискретизації тут часто синхронізується з частотою джерела живлення, що може бути використано для зведення шуму до абсолютного мінімуму.
Що таке теорія Найквіста-Шеннона?
Скажімо, ми хочемо описати аналоговий сигнал цифровим способом. Для цього нам потрібні принаймні дві точки для кожного заданого циклу: одна вгорі та одна внизу. Таким чином, наша частота дискретизації має принаймні вдвічі перевищувати найвищу частоту, яку ми очікуємо виміряти.
Це відоме як частота Найквіста на честь шведсько-американського фізика Гаррі Найквіста. Теорія названа на честь Найквіста та Клода Шеннона (видатного математика та криптографа), але не на честь Едмунда Віттакера, який придумав ідею раніше обох із них.
Кому б ми не приписували цю теорію, з нею є проблема. Неможливо знати заздалегідь, коли з’явиться верхня і нижня частина сигналу. Що, якщо ми візьмемо наші зразки посередині вхідного сигналу? Поспостерігайте, як зміна вхідного сигналу може повністю згладити наш отриманий результат:
Або навіть галюцинувати нові хвилі, яких навіть не існувало раніше:
Ці галюцинації відомі як псевдоніми.
Проблема з псевдонімами
Ви, мабуть, знайомі з ілюзією «колеса вагона», яка іноді виникає, коли знімають обертовий об’єкт. Здається, що колеса автомобіля або лопаті вертольота повертаються назад — дуже повільно. У деяких випадках леза можуть повністю зупинитися (з відверто дивними результатами — перегляньте відео нижче!).
Граючи у стару відеогру, ви також могли помітити, що паралельні лінії іноді створюють дивні артефакти викривлення. Паркани, сходи і смугасті перемички починають виглядати дійсно дуже дивно. А як щодо тих дивних свистячих звуків, які іноді чути, коли хтось говорить через неякісне цифрове з’єднання? Це спотворення, але особливого виду спотворення. Що з усіма тими бридкими частотами, що виникають із шуму? Якщо ви слухаєте насичений гармоніками вміст, наприклад барабанну установку, ефект ще більш очевидний, особливо на високих частотах.
Якщо ви розумієте причину одного з них, ви на шляху до розуміння всіх. У випадку колеса вагона фіксована частота кадрів означає, що ми не можемо правильно зафіксувати рух. Якщо щось повертається на 350° кожного кадру, цілком природно відчути, що воно насправді переміщено назад на 10°. Іншими словами, недостатньо інформації, щоб достовірно відобразити те, що відбувається. Зразки, які ми беремо, не узгоджуються з тим, що ми намагаємося виміряти.
Це не унікальна проблема аналого-цифрового перетворення. У багатьох із цих випадків ми перетворюємо один тип цифрового сигналу в інший.
Отже, яке рішення? Є декілька. Ми могли б застосувати спеціальний фільтр для боротьби з цими артефактами, як це роблять багато АЦП під капотом. Або ми можемо взяти набагато більше зразків, ніж нам потрібно. Чим більше зразків ми беремо, тим точнішою стає наша картина хвилі:
Зразок кращої якості для найкращих результатів
Якщо вам такі речі цікаві, хороша новина полягає в тому, що ми майже не занурилися в цю тему. Тут є глибини: АЦП надзвичайно складні.
Але з точки зору кінцевого користувача чи середнього ентузіаста Arduino, вони також дуже прості. Напруга входить, а цифри виходять. Отже, що б ви не хотіли виміряти — чи то вологість ділянки ґрунту, коливання людського голосового апарата чи потік фотонів, що заломлюються через лінзу — велика ймовірність, що АЦП зробить це. робота.