Что такое АЦП
АПЦ — это Аналого-Цифровой Преобразователь. По английски ADC (Analog-to-Digital Converter). То есть специальное устройство, которое преобразует аналоговый сигнал в цифровой.
АЦП применяется в цифровой технике. В частности, почти все современные микроконтроллеры имеют встроенный АЦП.
Как вы уже наверняка знаете, микропроцессоры (как и компьютерные процессоры) не понимают ничего, кроме двоичных чисел. Из этого следует, что микропроцессор (который является основой любого микроконтроллера) не может напрямую обработать аналоговый сигнал.
Например, если вы создаёте программу для микроконтроллера, которая отслеживает температуру, то микропроцессор должен каким-то образом понять, что, например, напряжение 1В на его аналоговом входе соответствует температуре 10 градусов, а 5В — температуре 100 градусов (это просто пример, пока не обращайте внимание на числа).
Для того, чтобы объяснить это микропроцессору, который, как мы помним, понимает только двоичные числа, используется АЦП, который, как я уже сказал, преобразует аналоговый сигнал в двоичный код. Далее в общих чертах рассмотрим работу АЦП.
Принцип работы АЦП
Итак, мы узнали, что АЦП преобразует аналоговый сигнал в цифровой. Но как он это делает?
Я не буду рассказывать, как это происходит на уровне электронных схем — это тема для электронщиков. Разработчикам же устройств на микроконтроллерах (особенно начинающим), вполне достаточно знать общий принцип работы АЦП, чтобы понимать, как будет работать создаваемое ими устройство и достаточна ли будет точность измеряемого аналогового значения.
Итак, первым делом АЦП должен преобразовать аналоговый сигнал в дискретный. Для чего это нужно?
Как вы уже знаете, аналоговый сигнал — это непрерывный сигнал. То есть такой сигнал может принимать бесконечное количество значений, и ни у какого процессора не хватит “мозгов” для обработки всех этих значений.
Поэтому первая задача АЦП — это разбить измеряемый диапазон на какое-то конечное количество значений.
Например, мы хотим измерить напряжение в диапазоне от 0 до 9 В. Допустим, нам достаточно точности в 1В. Тогда мы разбиваем этот диапазон на 10 значений и получаем, что каждому значению напряжения соответствует такое же число. То есть 0 — это 0 В, 5 — 5 В и т.п.
А как же, например, напряжение 4,3 В? Да никак. Оно просто округляется, и АЦП преобразует его в число 4. Этот простой пример отображён на рисунке ниже.
Возникает вопрос — а как измерять большие напряжения? Или как повысить точность (например, если мы хотим измерять напряжение с точностью до 0,1В)?
Расскажу и об этом, но сначала о разрядности АЦП.
Разрядность АЦП
Разрядность АЦП — это разрядность его выходного сигнала. То есть количество битов в числе, которое получается на выходе АЦП.
Например, 8-разрядный АЦП может выдать 2 8 = 256 значений — от 0 до 255 (если речь идёт о положительных числах).
Это значит, что измеряемый диапазон (сигнал на входе АЦП или на аналоговом входе микроконтроллера) мы можем разбить на 256 значений. Таким образом мы можем определить точность измеряемого значения, которую может обеспечить данный АЦП. Сделать это можно по формуле:
Где Р — это разрядность АЦП, Д — диапазон измеряемых значений, Х — точность (дискретность).
Например, если вам надо измерять напряжение в диапазоне 0. 9В, то Д = 10. А если в диапазоне -5. 15В, то Д = 21 (не забываем про ноль).
Например, если у нас 8-разрядный АЦП, и мы хотим измерять напряжение в диапазоне 0. 255В, то точность измерений будет:
256 / 2 8 = 256 / 256 = 1 В
Если же мы хотим измерять напряжение с этим же АЦП в диапазоне 0. 15В, то точность измерений будет:
16 / 2 8 = 16 / 256 = 0,0625 В
Из этого следует, что для того, чтобы повысить точность, требуется либо сузить диапазон измеряемых значений, либо повысить разрядность АЦП. Например:
256 / 212 = 256 / 4096 = 0,0625 В
То есть 12-разрядный АЦП обеспечит уже довольно высокую точность даже при измерении сигналов с относительно большим диапазоном значений.
Разумеется, измерять можно не только напряжение, но и другие физические величины — это зависит от датчика, который подключен к АЦП. Но для АЦП безразлично, что измерять. Он всего лишь преобразует аналоговый сигнал в цифровой. А о том, как получить аналоговый сигнал нужной формы на входе АЦП, должен позаботиться разработчик устройства на микроконтроллере.
АЦП микроконтроллера обычно измеряет только напряжение в диапазоне от 0 до напряжения питания микроконтроллера.
Характеристики АЦП
АЦП бывают разные, с разными характеристиками. Основная характеристика — это разрядность. Однако есть и другие. Например, вид аналогового сигнала, который можно подключать к входу АЦП.
Все эти характеристики описаны в документации на АЦП (если он выполнен в виде отдельной микросхемы) или в документации на микроконтроллер (если АЦП встроен в микроконтроллер).
Кроме разрядности, о которой мы уже говорили, можно назвать ещё несколько основных характеристик.
Least significant bit (LSB) — младший значащий разряд (МЗР). Это наименьшее входное напряжение, которое может быть измерено АЦП. Определяется по формуле:
1 LSB = Uоп / 2 Р
Где Uоп — это опорное напряжение (указывается в характеристиках АЦП). Например, при опорном напряжении 1 В и разрядности 8 бит, получим:
1 LSB = 1 / 2 8 = 1 / 256 = 0,004 В
Integral Non-linearity — интегральная нелинейность выходного кода АЦП. Понятно, что любое преобразование вносит искажения. И эта характеристика определяет нелинейность выходного значения, то есть отклонение выходного значения АЦП от идеального линейного значения. Измеряется эта характеристика в LSB.
Иными словами, эта характеристика определяет, насколько “кривой” может быть линия на графике выходного сигнала, которая в идеале должна быть прямой (см. рис.).

Абсолютная точность. Также измеряется в LSB. Иными словами, это погрешность измерения. Например, если эта характеристика равна +/- 2 LSB, а LSB = 0,05 В, то это означает, что погрешность измерений может достигать +/- 2*0,05 = +/- 0,1В.
Есть у АЦП и другие характеристики. Но для начала и этого более чем достаточно.
Подключение АЦП
Напомню, что аналоговые сигналы, в основном, бывают двух видов: токовые и напряжения. Кроме того, сигналы могут иметь стандартный диапазон значений, и нестандартный. Стандартные диапазоны значений аналоговых сигналов описаны в ГОСТах (например, ГОСТ 26.011-80 и ГОСТ Р 51841-2001). Но, если в вашем устройстве используется какой-то самодельный датчик, то сигнал может и отличаться от стандартного (хотя я советую в любых случаях выбирать какой-нибудь стандартный сигнал — для совместимости со стандартными датчиками и другими устройствами).
АЦП в основном измеряют напряжение.
Попробую рассказать о том (в общих чертах), как подключить аналоговый датчик к АЦП и как потом разобраться с теми значениями, которые будет выдавать АЦП.
Итак, допустим, что мы хотим измерять температуру в диапазоне -40…+50 градусов с помощью специального датчика со стандартным выходом 0. 1В. Допустим, что у нас есть датчик, который может измерять температуру в диапазоне -50…+150 градусов.
Если температурный датчик имеет стандартный выход, то, как правило, напряжение (или ток) на выходе датчика изменяется по линейному закону. То есть мы можем легко определить, какое напряжение будет на выходе датчика при заданной температуре.
Что такое линейный закон? Это когда диапазон значений на графике выглядит как прямая линия (см. рис.). Зная, что температура от -50 до +150 даёт на выходе датчика напряжение, изменяемое по линейному закону, мы, как я уже сказал, можем вычислить это напряжение для любого значения температуры на заданном диапазоне.

В общем, чтобы в нашем случае диапазон температур преобразовать в диапазон напряжений, нам надо каким-то образом сопоставить две шкалы, одна из которых является диапазоном температур, а другая — диапазоном напряжений.
Определить напряжение по температуре визуально можно по графику (см. рис. выше). Но микроконтроллер глаз не имеет (хотя, конечно, можно поразвлекаться и создать устройство на микроконтроллере, способное распознавать образы и определять значение температуры по напряжению на графике, но оставим эти развлечения фанатам робототехники)))
Первым делом определяем диапазон температур. Он у нас от -50 до 150, то есть 201 градус (не забываем про ноль).
А диапазон измеряемых напряжений — от 0 до 1 В.
То есть в шкалу от 0 до 1 нам надо впихнуть диапазон от 0 до 200 (всего 201).
Находим коэффициент преобразования:
К = U / Tд = 1 / 200 = 0,005 (1)
То есть при изменении температуры на 1 градус напряжение на выходе датчика будет меняться на 0,005 В. Здесь Тд — это температурный диапазон. Не значения температуры, а количество единиц измерения (в нашем случае градусов) на температурной шкале, сопоставляемой со шкалой напряжения (ноль не учитываем для упрощения, так как в диапазоне напряжений тоже есть ноль).
Проверяем характеристики АЦП микроконтроллера, который мы планируем использовать. Значение LSB не должно быть более К (более 0,005 в нашем случае, точнее, это допустимо, если вас устроит погрешность более 1 единицы измерения — более 1 градуса в нашем случае).
По сути К — это вольт на градус, то есть так мы узнали, на какое значение изменяется напряжение при изменении температуры на 1 градус.
Теперь у нас есть все необходимые данные, чтобы в программе микроконтроллера преобразовать значение на выходе АЦП в значение температуры.
Мы помним, что мы сместили диапазон температур на 50 градусов. Это надо учитывать при преобразовании значения на выходе АЦП в температуру.
А формула будет такая:
Например, если на выходе АЦП 0,5 В, то
Т = (U / К) — 50 = (0,5 / 0,005) — 50 = 100 — 50 = 50 градусов
Теперь нам надо определить дискретность, то есть желаемую точность измерений.
Как вы помните, абсолютная погрешность может составлять несколько LSB. К тому же ещё существуют нелинейные искажения, которые обычно равны 0,5 LSB. То есть общая погрешность АЦП может доходить до 2-3 LSB.
В нашем случае это:
Uп = 3 LSB * 0,005 = 0,015 В
Если в вашем случае не так всё гладко, то снова используем формулу, выведенную из (1):
Тд = Uп / K = 0,015 / 0,005 = 3
Если погрешность в 3 градуса вас устраивает, то можно ничего не менять. Ну а если нет, то придётся подобрать АЦП с большей разрядностью либо подыскать другой датчик (с другим температурным диапазоном или с другим выходным напряжением).
Например, если вам удастся найти датчик с диапазоном -40…+50, как мы и хотели, и с таким же выходом 0. 1В, то
Тогда абсолютная погрешность будет:
Тд = Uп / K = 0,015 / 0,01 = 1,5 градуса.
Это уже более-менее приемлемо. Ну а если у вас будет датчик с выходом 0. 5В (это тоже стандартный сигнал), то
А абсолютная погрешность будет:
Тд = Uп / K = 0,015 / 0,05 = 0,3 градуса.
Это уже вообще ништяк.
Но! Не забывайте, что здесь мы рассматриваем только погрешность АЦП. Но и у самого датчика тоже есть погрешность, которую также надо учитывать.
Но всё это уже из области электроники и метрологии, поэтому данную статью я здесь и закончу.
А в конце на всякий случай приведу формулу обратного преобразования температуры в напряжение:
4.3. Процесс преобразования аналогового сигнала в цифровой
Процесс аналого-цифрового преобразования состоит из следующих этапов:
сигнал с ограниченной полосой дискретизируется, т.е. аналоговый сигнал преобразуется в дискретный по времени сигнал с непрерывной амплитудой;
амплитуда каждого дискретного элемента сигнала квантуется в один из уровней, где число битов, которым дискретная выборка представлена в АЦП;
дискретные уровни амплитуды кодируются в виде различных бинарных слов, каждое из которых имеет длину бит.
Описанный процесс показан на рис.4.17. На рис.4.17 можно выделить три различных типа сигнала. Аналоговый входной сигнал непрерывен как по времени, так и по амплитуде. Дискретный сигнал непрерывен по амплитуде, но определяется только в дискретных точках во времени. Цифровой сигнал существует только в дискретных точках во времени и в каждой временной точке может иметь одно из значений (дискретный во времени сигнал с дискретной амплитудой).

Рис.4.17. Графическое представление процесса преобразования аналогового сигнала в цифровой
Дискретизация – это определение значений непрерывного сигнала в дискретные моменты времени , по которым сигнал может быть востановлен.
Если самый высокочастотный компонент сигнала, то, чтобы элементы выборки полностью описывали сигнал, дискретизация должна осуществляться с частотой не ниже :
,
где частота дискретизации ( ); интервал времени, через который берутся значения непрерывного сигнала, называется шагом дискретизации. Например, если максимальная частота аналогового сигнала составляет 4 кГц, то для того, чтобы сохранить всю информацию, содержащуюся в сигнале, его дискретизация должна осуществляться с частотой 8 кГц и более. Дискретизация с меньшей частотой приведет к появлению перегибов или наложению зеркальных частот в интересующей частотной области.
На рис.4.18 показан пример наложения во временных координатах, при дискретизации сигнала в определенной временной области с интервалом . Оба сигнала имеют одинаковые значения в одних и тех же временных точках, хотя их частоты различны. При восстановлении дискретного сигнала в аналоговую форму может появиться наложенный сигнал. На практике, наложение исследуют в частотных координатах. На рис.4.19 показан процесс дискретизации, который можно рассматривать как умножение аналогового сигнала на выборочную функцию .

Рис.4.18. Пример наложения в дискретные моменты времени
Функция состоит из импульсов единичной амплитуды с шириной и периодом . Умножение во временных координатах двух функций и эквивалентно свертке в частотных координатах. Для дискретного сигнала можно отметить следующие моменты (рис.4.19, г). Спектр дискретного сигнала идентичен исходному аналоговому спектру, только повторяется в точках, кратных частоте дискретизации . Компоненты более высокого порядка с центрами в точках, кратных , называют зеркальными частотами. Если частота дискретизации недостаточна высока, то зеркальные частоты с центром в будут накладываться на частоты основной полосы (рис.4.20). Сигналы в области наложения не поддаются восстановлению. Частоту равную половине частоты дискретизации, называют частотой Найквиста. Перекрывание происходит в районе точки .
Выборка с запасом по частоте означает дискретизацию входного сигнала с частотой намного большей, чем частота Найквиста. Отношение частоты дискретизации к частоте Найквиста называется коэффициентом перевыборки:
Чем выше частота дискретизации, тем дальше друг от друга находятся зеркальные компоненты.
После дискретизации амплитуда аналоговых выборок может в зависимости от приложения подвергаться однородному и неоднородному квантованию и кодированию.
При однородном квантовании и кодировании каждой аналоговой выборке присваивается одно из значений (рис.4.21), где количество битов АЦП. Процесс квантования вносит неустранимую погрешность. Уровень этой погрешности является функцией числа битов АЦП, которое приблизительно равно половине МЗР. Например, у 12-битного АЦП с диапазоном входных напряжений В МЗР будет равен В, т.е. 4.9 мВ, а ошибка квантования – 2.45 мВ.

Рис.4.19. Описание процесса дискретизации во временной и частотной областях: а) – операция свертки; б) – исходный аналоговый сигнал и его спектр ; в) – выборочная функция и ее спектр; г) — дискретный сигнал и его свертка во временной и частотной областях

Рис.4.20. Спектр сигнала, прошедшего процесс дискретизации, на котором показано наложение



Рис.4.21. Квантование выборок аналогового сигнала с помощью 3-х разрядного АЦП: а) – аналоговый сигнал; б) – квантованный сигнал; в) – ошибки квантования
Для АЦП с двоичными цифрами количество уровней квантования равно , а расстояние между уровнями, т.е. размер шага квантования , задается как:
где полный диапазон АЦП со входом в виде биполярного сигнала. Максимальная ошибка квантования, когда значения округляются до ближайшего большего или меньшего числа, равна . Для синусоидального входного сигнала с амплитудой размер шага квантования определяется как: .
Ошибка квантования для каждой выборки полагается случайной и однородно распределенной на отрезке с нулевым средним значением. Дисперсия шума квантования при преобразовании аналогового сигнала в цифровой задается как:
где спектральная плотнось мощности шума квантования.
Для синусоидального входного сигнала средняя мощность сигнала равна . Для идеального АЦП отношение сигнал-шум квантования равно:
У биполярного линейного 16-ти битового АЦП, например, с входным диапазоном В, величина шага квантования мВ, максимальная ошибка квантования мкВ, а дБ. C увеличением разрядности АЦП отношение возрастает, но увеличение разрядности ограничивают практические факторы, такие как скорость, затраты и др.
Эффективное разрешение АЦП можно увеличить, дискретизируя входные данные с высокой частотой, чтобы энергия шума квантования распределялась по более широкой полосе частот, снижая уровень шума в важной полосе (рис.4.22). В обоих случаях (рис.4.22) мощность шума, которая задается площадью, одинаковая, но в случае с выборкой с запасом по частоте мощность шума распределяется по намного большему частотному диапазону, что приводит к снижению уровня мощности шума в полосе частот.

Рис.4.22. Спектральная плотность мощности шума квантования: а) – для преобразования с частотой Найквиста; б) – для выборки с запасом по частоте
Мощность шума в полосе при выборке с запасом по частоте задается как:
Если, сигнал с ограниченной полосой частот дискретизировать с запасом по частоте, то энергия шума в полосе сигнала уменьшается на коэффициент перевыборки. Например, при частоте Найквиста ( ) нормированная мощность шума квантования в полосе для 12- и 16-битового АЦП соответственно равна:
Для достижения 16-битового качества с 12-битовым АЦП вход 12-разрядного преобразователя нужно дискретизировать с запасом по частоте, чтобы снизить мощность шума квантования в полосе на величину, равную коэффициенту перевыборки. Приравнивая новый шум кантования 12-разрядного АЦП с выборкой с запасом по частоте к шуму 16-разрядного АЦП, получим:
Коэффициент перевыборки задается как . Например, для сигналов, основная полоса частот которых лежит в диапазоне 0 – 20 кГц (система записи и воспроизведения звука) минимальная частота дискретизации при использовании 12 – битового АЦП для достижения 16-битового качества составляет МГц.
Аналого-цифровое преобразование сигнала для начинающих
Для того, что бы компьютер мог выполнить обработку сигнала необходимо выполнить преобразование сигнала из аналоговой формы в цифровую.
После обработки выполняется обратное преобразование, поскольку большинство бытовых устройств управляются аналоговыми сигналами.
Структурная схема цифровой обработки сигнала в общем виде выглядит следующим образом:

Аналого-цифровое преобразование сигнала
- Дискретизация сигнала (во времени или пространстве)
- Квантование по уровню
Процесс получения отсчёта входного сигнала должен занимать очень малую часть периода дискретизации, что бы снизить динамические ошибки преобразования, обусловленные изменением сигнала за время снятия отсчёта.
Частота дискретизации выбирается из теоремы Котельникова. В ней утверждается, что для того что бы по отсчётам сигнала можно было бы сколь угодно точно восстановить непрерывный сигнал необходимо что бы частота дискретизации не менее чем в два раза превосходила верхнюю частоту спектра дискретизируемого сигнала.
Любой сигнал имеет своё спектральное представление. Любое представление сигнала – это представление в виде суммы (или интеграла) гармонических составляющих (синусоид и косинусоид), различных частот взятых с определёнными весовыми коэффициентами (имеющими определённую амплитуду)
Для периодических сигналов это сумма, для непериодический – интеграл.
Переход к спектру сигнала осуществляется с помощью прямого преобразования Фурье.
Рассмотрим переход к спектральному представлению в виде периодической функции:

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

По формуле Эйлера любое выражение можно представить в виде
— частота первой гармоники
— частота n-ой гармоники
— круговая частота n-ой гармоники
— комплексная амплитуда гармоники, где
— фазовый спектр.
Совокупность амплитуд гармоник ряда Фурье называется амплитудным спектром, а совокупность их фаз называется фазовым спектром.


Для непериодический функции
, а
тогда
заменяется непрерывно изменяющейся частотой => сумма заменяется интегралом.

Прямое преобразование Фурье для непериодического сигнала

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

Количество уровней квантования определяется по формуле
n — количество разрядов
N — уровень квантования
Выбор количества уровней квантования сигналов производится на основе компромиссного подхода, учитывающего с одной стороны необходимость достаточно точного представления сигнала, что требует большого числа уровней квантования, а с другой стороны количество уровней квантования должно быть меньше, что бы разрядность кода была минимальной.
На этом я закончу свою статью, что бы не перегружать читателя лишней информацией. Удачи в начинаниях!
Как происходит преобразование аналогового сигнала в цифровой
В электронике сигналы делят на: аналоговые, дискретные и цифровые. Начнем с того, что все, что мы чувствуем, видим, слышим в большинстве своем является аналоговым сигналом, а то, что видит процессор компьютера – это цифровой сигнал. Звучит не совсем понятно, поэтому давайте разбираться с этими определениями и с тем как один вид сигналов преобразовывается в другой.
Содержание статьи

Типы сигналов
В электрическом представлении аналоговый сигнал, судя по его названию, является аналогом реальной величины. Например, вы чувствуете температуру окружающей среды постоянно, на протяжении всей жизни. Нет никаких перерывов. При этом вы чувствуете не только два уровня «горячо» и «холодно», а бесконечное число ощущений, которые описывают эту величину.
Для человека «холодно» может быть по разному, это и осенняя прохлада и зимний мороз, и легкие заморозки, но не всегда «холодно» это отрицательная температура, как и «тепло» — не всегда положительная температура.

Отсюда следует, что у аналогового сигнала две особенности:
1. Непрерывность во времени.
2. Число величин сигнала стремится к бесконечности, т.е. аналоговый сигнал нельзя точно поделить на части или проградуировать, разбив шкалу на конкретные участки. Способы измерения – основаны на единице измерений, и их точность зависит лишь от цены деления шкалы, чем она меньше, тем точнее измерение.
Дискретные сигналы – это сигналы, которые представляют собой последовательность отчетов или измерений какой-либо величины. Измерения таких сигналов не непрерывны, а периодичны.
Попытаюсь объяснить. Если вы установили термометр где-нибудь он измеряет аналоговую величину – это следует из вышеописанного. Но вы, фактически следя за его показаниями, получаете дискретную информацию. Дискретный – значит отдельный.
Например, вы проснулись и узнали, сколько градусов на термометре, в следующий раз вы на него посмотрели на градусник в полдень, и третий раз вечером. Вы не знаете, с какой скоростью изменялась температура, равномерно, или резким скачком, вы знаете только данные в тот момент времени, который наблюдали.
Цифровые сигналы – это набор уровней, типа 1 и 0, высокий и низкий, есть или нет. Глубина отражения информации в цифровом виде ограничена разрядностью цифрового устройства (набора логики, микроконтроллера, процессора etc.) Получается что для хранения булевых данных он подходит идеально. Пример, можно привести следующий, для хранений данных типа «День» и «Ночь», достаточно 1 бита информации.
Бит – это минимальная величина представления информации в цифровом виде, в нём может храниться только два типа значений 1 (логическая единица, высокий уровень), или 0 (логический ноль, низкий уровень).
В электронике бит информации представляется в виде низкого уровня напряжения (близкое к 0) и высокого уровня напряжения (зависит от конкретного устройства, часто совпадает с напряжением питания данного цифрового узла, типовые значения – 1.7, 3.3. 5В, 15В).

Все промежуточные значения между принятыми низким и высоким уровнем являются переходной областью и могут не обладать конкретным значением, в зависимости от схемотехники, как устройства в целом, так и внутренней схемы микроконтроллера (или любого другого цифрового устройства) могут иметь разный переходный уровень, например для 5-тивольтовой логики за ноль могут приниматься значения напряжения от 0 до 0.8В, а за единицу от 2В до 5В, при этом промежуток между 0.8 и 2В – это неопределенная зона, фактически с ее помощью отделяется ноль от единицы.
Чем более точные и ёмкие значения нужно хранить, тем больше нужно бит, приведем таблицу-пример с отображением в цифровом виде четырёх значений времени суток:
Ночь – Утро – День – Вечер
Для этого нам нужно уже 2 бита:

Аналогово-цифровое преобразование
В общем случае аналогово-цифровым преобразованием называется процесс перевода физической величины в цифровое значение. Цифровым значением является набор единиц и нолей воспринятых обрабатывающим устройством.
Такое преобразование нужно для взаимодействия цифровой техники с окружающей средой.
Так как аналоговый электрический сигнал повторяет своей формой входной сигнал, он не может быть записан в цифровом виде «так как есть» поскольку он имеет бесконечное число значений. Примером можно привести процесс записи звука. Он в первичном виде выглядит так:

Он представляет собой сумму волн с различными частотами. Которые, при разложении по частотам (подробнее об этом смотрите преобразования Фурье), так или иначе, можно приблизить к похожей картинке:

Теперь попробуйте это представить в виде набора типа «111100101010100», довольно сложно, не так ли?
Другим примером необходимости преобразования аналоговой величины в цифровую, является её измерение: электронные термометры, вольтметры, амперметры и прочие измерительные приборы взаимодействую с аналоговыми величинами.
Как происходит преобразование?
Сначала посмотрите на схему типового преобразования аналогового сигнала в цифровой и обратно. Позже мы к ней вернемся.

Фактически это сложный процесс, который состоит из двух основных этапов:
1. Дискретизация сигнала.
2. Квантование по уровню.
Дискретизация сигнала это определения промежутков времени, на которых измеряется сигнал. Чем короче эти промежутки – тем точнее измерение. Периодом дискретизации (Т) называется отрезок времени от начала считывания данных до его конца. Частота дискретизации (f) – это обратная величина:
После считывания сигнала происходит его обработка и сохранение в память.
Получается, что за время, которое считываются и обрабатываются показания сигнала, он может измениться, таким образом, происходит искажение измеряемой величины. Есть такая теорема Котельникова и из нее вытекает такое правило:
Частота дискретизации должны быть как минимум в 2 раза больше чем частота дискретизируемого сигнала.
Это скриншот из википедии, с выдержкой из теоремы.

Для определения численного значение необходимо квантование по уровню. Квант – это определенный промежуток измеряемых значений, усреднено приведенный к определенному числу.
Т.е. сигналы величиной от X1 до X2, условно приравнивается к определенному значению Xy. Это напоминает цену деления стрелочного измерительного прибора. Когда вы снимаете показания, зачастую вы их равняете по ближайшей отметке на шкале прибора.
Так и с квантованием по уровню, чем больше квантов, тем более точные измерения и тем больше знаков после запятой (сотых, тысячных и так далее значений) они могут содержать.
Точнее сказать число знаков после запятой скорее определяется разрядностью АЦП.

На картинке изображен процесс квантования сигнала с помощью одного бита информации, как я описывал выше, когда при превышении определенного предела принимается значение высокого уровня.
Справа показано квантование сигнала, и запись в виде двух бит данных. Как видите, этот фрагмент сигнала разбит уже на четыре значения. Получается, что в результате плавный аналоговый сигнал превратился в цифровой «ступенчатый» сигнал.
Количество уровней квантования определяется по формуле:
Где n — количество разрядов, N — уровень квантования.
Вот пример сигнала разбитого на большее число квантов:

Отсюда очень хорошо видно, что чем чаще снимаются значения сигнала (больше частота дискретизации), тем точнее он измеряется.

На этой картинке изображено преобразование аналогового сигнала в цифровой вид, а слева от оси ординат (вертикальной оси) запись в цифровом 8-битном виде.
Аналогово-цифровые преобразователи
АЦП или Аналогово-цифровой преобразователь может выполняться в виде отдельного устройства или быть встроенным в микроконтроллер.
Ранее в микроконтроллеры, например семейства MCS-51, не содержали в своем составе АЦП, использовалась для этого внешняя микросхема и возникала необходимость писать подпрограмму обработки значений внешней ИМС.

Сейчас они есть в большинстве современных микроконтроллеров, например AVR AtMEGA328, который является основой большинства популярных плат Ардуино, он встроен в сам МК. На языке Arduino чтение аналоговых данных осуществляется просто – командой AnalogRead(). Хотя в микропроцессоре, который установлен в той же не менее популярной Raspberry PI его нет, так что не все так однозначно.
Фактически существует большое число вариантов аналогово-цифровых преобразователей, у каждого из которых есть свои недостатки и преимущества. Описывать которые в пределах этой статьи не имеет особого смысла, так как это большой объём материала. Рассмотрим лишь общую структуру некоторых из них.
Самым старым запатентованным вариантом АЦП, является патент Paul M. Rainey, «Facsimile Telegraph System,» U.S. Patent 1,608,527, Filed July 20, 1921, Issued November 30, 1926. Это 5-ти битный АЦП прямого преобразования. Из названия патента приходят мысли о том, что использование этого прибора было связано с передачей данных через телеграф.

Если говорить о современных АЦП прямого преобразования имеют следующую схему:

Отсюда видно, что вход представляет собой цепочку из компараторов, которые на выходе своем выдают сигнал при пересечении какого-то порогового сигнала. Это и есть разрядность и квантование. Кто хоть немного силен в схемотехнике, увидел этот очевидный факт.
Кто не силен, то входная цепь работает таким образом:
Аналоговый сигнал поступает на вход «+», на все сразу. На выходы с обозначением «-» поступает опорное напряжение, которое раскладывается с помощью цепочки резисторов (резистивного делителя) на ряд опорных напряжений. К примеру, ряд для этой цепи выглядит наподобие такого соотношения:
Urefi=(1/16, 3/16, 5/16, 7/16, 9/16, 11/16, 13/16)*Uref
В скобках через запятую указано, какую часть от общего опорного напряжения Uref подают на вход каждого входного напряжения.
Т.е. каждый из элементов имеет два входа, когда напряжение на входе со знаком «+» превышает напряжение на входе со знаком «-», то на его выходе появляется логическая единица. Когда на положительном (неинвертирующем) входе напряжение меньше, чем на отрицательно (инвертирующем), то на выходе – ноль.

Напряжение делиться таким образом, чтобы входное напряжение разбить на нужное количество разрядов. При достижении напряжения на входе на выходе соответствующего элемента появляется сигнал, схема обработки выводит «правильный» сигнал в цифровом виде.
Такой компаратор хорош скоростью обработки данных, все элементы входной цепи срабатывают параллельно, основная задержка этого вида АЦП формируется из задержки 1 компаратора (все же одновременно параллельно срабатывают) и задержки шифратор.
Однако есть огромный недостаток параллельных цепей – это необходимость большого числа компараторов, для получения АЦП высокой разрядности. Чтобы получить, например 8 разрядов, нужно 2^8 компараторов, а это целых 256 штук. Для десятиразрядного (в ардуино 10-разрядный АЦП, кстати, но другого типа) нужно 1024 компаратора. Судите сами о целесообразности такого варианта обработки, и где он может понадобиться.
Есть и другие виды АЦП:
Преобразование аналогового сигнала в цифровой нужно для считывания параметров с аналоговых датчиков. Есть отдельный вид цифровых датчиков, они представляют собой либо интегральные микросхемы, например DS18b20 – на его выходе уже цифровой сигнал и его можно обрабатывать любыми микроконтроллерами или микропроцессорами без необходимости применения АЦП, или аналоговый датчик на плате на которой уже размещен свой преобразователь. У каждого типа датчиков есть свои плюсы и минусы, такие как помехоустойчивость и погрешность измерений.
Знание принципов преобразование обязательно для всех кто работает с микроконтроллерами, ведь не в каждой даже современной системе встроены такие преобразователи, приходится использовать внешние микросхемы. Для примера можно привести такую плату, разработанную специально под GPIO-разъём Raspberry PI, с прецизионным АЦП на ADS1256.
Обучение программированию и созданию устройств на микроконтроллерах AVR
У электронщиков, специализирующихся на проектировании микроконтроллерных устройств, существует термин «быстрый старт » . Относится он к случаю, когда надо в короткий срок опробовать микроконтроллер и заставить его выполнять простейшие задачи.
Цель состоит в том, чтобы, не углубляясь в подробности, освоить технологию программирования и быстро получить конкретный результат. Полное представление, навыки и умения появятся позже в процессе работы.
Освоить работу с микроконтроллерами в режиме «быстрый старт», научиться их программировать и создавать различные полезные умные электронные устройства можно легко с помощью обучающих видеокурсов Максима Селиванова в которых все основные моменты разложены по полочкам.
Методика быстрого изучения принципов работы с микроконтроллерами основывается на том, что достаточно освоить базовую микросхему, чтобы затем достаточно уверенно составлять программы к другим ее разновидностям. Благодаря этому первые опыты по программировании микроконтроллеров проходят без особых затруднений. Получив базовае знания можно приступать к разработке собственных конструкций.
На данный момент у Максима Селиванова есть 4 курса по созданию устройств на микроконтроллерах, построенные по принципу от простого к сложному.

Курс для тех, кто уже знаком с основами электроники и программирования, кто знает базовые электронные компоненты, собирает простые схемы, умеет держать паяльник и желает перейти на качественно новый уровень, но постоянно откладывает этот переход из-за сложностей в освоении нового материала.
Курс замечательно подойдет и тем, кто только недавно предпринял первые попытки изучить программирование микроконтроллеров, но уже готов все бросить от того, что у него ничего не работает или работает, но не так как ему нужно (знакомо?!).
Курс будет полезен и тем, кто уже собирает простенькие (а может и не очень) схемы на микроконтроллерах, но плохо понимает суть того как микроконтроллер работает и как взаимодействует с внешними устройствами.
Курс посвящен обучению программирования микроконтроллеров на языке Си. Отличительная особенность курса — изучение языка на очень глубоком уровне. Обучение происходит на примере микроконтроллеров AVR. Но, в принципе, подойдет и для тех, кто использует другие микроконтроллеры.
Курс рассчитан на подготовленного слушателя. То есть, в курсе не рассматриваются базовые основы информатики и электроники и микроконтроллеров. Но, что бы освоить курс понадобятся минимальные знания по программированию микроконтроллеров AVR на любом языке. Знания электроники желательны, но не обязательны.
Курс идеально подойдет тем, кто только начал изучать программирование AVR микроконтроллеров на языке С и хочет углубить свои знания. Хорошо подойдет и тем, кто немного умеет программировать микроконтроллеры на других языках. И еще подойдет обычным программистам, которые хотят углубить знания в языке Си.
Этот курс для тех, кто не хочет ограничиваться в своем развитии простыми или готовыми примерами. Курс отлично подойдет тем, кому важно создание интересных устройств с полным пониманием того, как они работают. Курс хорошо подойдет и тем, кто уже знаком с программированием микроконтроллеров на языке Си и тем, кто уже давно программирует их.
Материал курса прежде всего ориентирован на практику использования. Рассматриваются следующие темы: радиочастотная идентификация, воспроизведение звука, беспроводной обмен данными, работа с цветными TFT дисплеями, сенсорным экраном, работа с файловой системой FAT SD-карты.
Дисплеи NEXTION представляют собой программируемые дисплеи с тачскрином и UART для создания самых разных интерфейсов на экране. Для программирования используется очень удобная и простая среда разработки, которая позволяет создавать даже очень сложные интерфейсы для различной электроники буквально за пару вечеров! А все команды передаются через интерфейс UART на микроконтроллер или компьютер. Материал курса составлен по принципу от простого к сложному.
Этот курс рассчитан на тех, кто хотя бы немного имеет опыта в программировании микроконтроллеров или arduino. Курс отлично подойдет и для тех, кто уже пытался изучать дисплеи Nextion . Из курса вы узнаете много новой информации, даже если думаете, что хорошо изучили дисплей!

Приближается осень, а вместе с ней наступит День знаний! Это отличная пора для новых дел, идей и начинаний и самое время для обучения. Используйте это время с пользой для прокачки своих знаний!
Полный курс обучения программированию микроконтроллеров со скидкой: Все 4 курса со скидкой
Надеюсь, что эта статья была для вас полезной. Смотрите также другие статьи в категории Электрическая энергия в быту и на производстве » Практическая электроника
Подписывайтесь на канал в Telegram про электронику для профессионалов и любителей: Практическая электроника на каждый день
