Аналоговый и цифровой сигнал: различия, АЦП и ЦАП

Аналоговый и цифровой сигнал: различия, АЦП и ЦАП

Чем непрерывный сигнал отличается от потока нулей и единиц, в чём сильные стороны каждого и как их преобразуют друг в друга.

Непрерывная волна

Аналоговый сигнал порождается физическим процессом, параметры которого можно измерить в любой момент. В каждый момент времени он имеет конкретное значение из множества возможных, от минимального до максимального. Классический пример — звук: давление воздуха на барабанную перепонку непрерывно меняется, образуя волну. В застывшем виде её можно разглядеть под микроскопом на дорожке виниловой пластинки.

Дорожка виниловой пластинки под микроскопом

Если записать звук через микрофон и открыть в подходящей программе, получится график: по горизонтали отложено время, по вертикали звуковое давление.

Запись звука в программе
Звуковая волна: время и звуковое давление

У электрического аналогового сигнала роль давления играет напряжение. Родство этих величин позволяет легко превращать звук в электрические колебания и обратно; на этом построены первые телефоны и переговорные устройства, проволочные и ленточные магнитофоны.

Нули и единицы

У аналогового сигнала есть слабое место: он хрупок. Искажения и затухание накапливаются, магнитная лента размагничивается, пластинка изнашивается, а сохранять и передавать значения с точностью до сотых и тысячных долей вольта трудно. Электронике удобнее однозначность. Так появился цифровой сигнал: наличие напряжения принято за единицу, отсутствие за ноль. Для устройств поток нулей и единиц понятен, а человек воспринял бы его на слух просто как шум.

Цифровой сигнал: последовательность нулей и единиц

Сильные стороны цифры

  • Простота и надёжность: отличить «есть напряжение» от «нет напряжения» куда легче, чем одну сотую вольта от двух сотых.
  • Точное копирование: копия файла полностью совпадает с оригиналом, тогда как каждая перезапись аналогового сигнала добавляет потери.
  • Естественность для процессоров и контроллеров, которые в основном состоят из транзисторов-триггеров с двумя состояниями.
  • Удобство шифрования и защиты данных.
  • Предсказуемый размер данных и малая зависимость от качества носителя; сами носители почти избавились от подвижных механических частей и стали надёжнее, компактнее и дешевле.

Что остаётся за аналогом

Аналоговая техника проще: переговорное устройство собирается из нескольких радиодеталей и мотка провода, магнитофон ремонтируется дома. У повреждённой аналоговой записи больше шансов сохраниться хотя бы на уцелевшем участке носителя, а частичное повреждение цифрового файла обычно означает его полную потерю. Теоретически аналоговый сигнал передаёт больше информации за единицу времени, поскольку принимает не два, а очень много значений. Наконец, многие датчики исходно выдают аналоговую величину: термопара, датчики влажности и давления.

Итог таков: в современной технике аналог применяют там, где сигнал нельзя сделать цифровым (воспроизведение звука, датчики аналоговых процессов), либо там, где это упрощает и удешевляет оборудование.

Логические уровни в реальной линии

В проводе цифровой сигнал далёк от ровных прямоугольников: на осциллограмме обмена по RS-485 видно, как уровни отклоняются от идеальных. Поэтому в каждой системе заданы границы напряжений для нуля и единицы. У пятивольтовых Arduino (Uno, Nano, Mega) UART близок к логике TTL: на приёме всё, что выше 3 В, считается единицей, ниже 1,5 В нулём. Промежуточные значения трактуются по предыстории: рост с 0,5 до 2 В означает единицу, падение с 4 до 2 В означает ноль. К исходящему сигналу требования жёстче, чтобы оставить запас на искажения в линии.

Превращать зашумлённый сигнал в чёткие нули и единицы помогает триггер Шмитта. У контроллеров с логикой 3.3 В уровни пропорционально ниже, а для дальних линий, таких как RS-232 и RS-485, напряжения повышают до 12 В и более: чем шире диапазон, тем слабее влияние помех. Между системами уровни переводят специальные микросхемы, например MAX3232, MAX485, MAX487.

АЦП и ЦАП

Аналоговую величину в число превращает аналого-цифровой преобразователь (АЦП, ADC). Преобразователи различаются скоростью и разрядностью, то есть числом шагов между минимальным и максимальным напряжением. В Arduino встроены десятиразрядные АЦП на пинах, обозначенных буквой A; они измеряют напряжение от 0 до 5 В. Благодаря этому переменные резисторы, фоторезисторы, датчики тока и другие аналоговые датчики подключаются к плате напрямую. Внешние АЦП быстрее: чип MCP3008 выполняет до 200 тысяч измерений в секунду на восьми каналах и передаёт результат по шине SPI.

Обратную задачу решает цифро-аналоговый преобразователь (ЦАП, DAC), который выдаёт напряжение заданного уровня или строит из его изменений аналоговый сигнал. Без него не обходится воспроизведение звука с цифровых носителей; его же применяют для регулировки подсветки без ШИМ и управления аналоговыми моторами. В классической Arduino ЦАП отсутствует, возможна только частичная имитация средствами ШИМ. Пример внешнего решения — двенадцатибитный MCP4725 с интерфейсом I2C, выпускаемый в виде готового модуля. Треугольный сигнал на полном диапазоне он выдаёт с частотой до 100 Гц, и это ограничение стоит учитывать.

Однозначно лучшего вида сигнала нет: выбор зависит от требований, условий и оборудования. В компьютерных системах господствует цифра, но почти все природные процессы аналоговые, и в цифровую форму их переводят лишь ради удобства обработки.

← Все статьи