Устройство, преобразующее входной аналоговый сигнал в дискретный код. Как правило, АЦП — электронное устройство, преобразующее напряжение в двоичный цифровой код. Тем не менее, некоторые неэлектронные устройства с цифровым выходом следует также относить к АЦП, например, некоторые типы преобразователей угол-код. Простейшим одноразрядным двоичным АЦП является компаратор.
Статья для общего представления есть на habre:
АЦП бывают линейными и нелинейными, мы будем работать только с линейными АЦП
-
Разрешение
-
Разрядность
-
Эффективная разрядность
-
-
Передаточная характеристика АЦП
-
Точность
-
Нелинейность
-
Ошибки квантования
-
Частота дискретизации
Разрешение АЦП — минимальное изменение величины аналогового сигнала, которое может быть преобразовано данным АЦП.
В случае единичного измерения без учёта шумов разрешение напрямую определяется разрядностью АЦП.
Разрядность АЦП характеризует количество дискретных значений, которые преобразователь может выдать на выходе.
В двоичных АЦП измеряется в битах. Например, двоичный 8-разрядный АЦП способен выдать 256 дискретных значений (0…255), 2^8=256.
Разрешение по напряжению равно разности напряжений, соответствующих максимальному и минимальному выходному коду, делённой на количество выходных дискретных значений.
Пример :
-
Диапазон входных значений = от 0 до 3 вольт
-
Разрядность двоичного АЦП 12 бит: 2^12 = 4096 уровней квантования
-
Разрешение двоичного АЦП по напряжению: (3-0)/4096 = 0,0007324 вольт = 0,7324 мВ
На практике разрешение АЦП ограничено отношением сигнал/шум входного сигнала. При большой интенсивности шумов на входе АЦП различение соседних уровней входного сигнала становится невозможным.
При этом реально достижимое разрешение описывается эффективной разрядностью (англ. effective number of bits, ENOB), которая меньше, чем реальная разрядность АЦП.
При преобразовании сильно зашумлённого сигнала младшие разряды выходного кода практически бесполезны, так как содержат шум. Для достижения заявленной разрядности отношение сигнал/шум входного сигнала должно быть примерно 6 дБ на каждый бит разрядности (6 дБ соответствует двукратному изменению уровня сигнала).
Передаточная характеристика АЦП — зависимость числового эквивалента выходного двоичного кода от величины входного аналогового сигнала.
Для линейных АЦП всегда возможно провести такую прямую линию, чтобы все точки передаточной характеристики, соответствующие входным значениям delta*2^k где delta — шаг дискретизации, k лежит в диапазоне 0..N, где N — разрядность АЦП, были от неё равноудалены.
Имеется несколько источников погрешности АЦП.
Ошибки квантования и нелинейности присущи любому аналого-цифровому преобразованию.
Апертурные ошибки, которые являются следствием джиттера (англ. jitter) тактового генератора, они проявляются при преобразовании сигнала в целом (а не одного отсчёта).
Эти ошибки измеряются в единицах, называемых МЗР — младший значащий разряд (LSB англ.).
Для 12-битного двоичного АЦП ошибка в 1 МЗР составляет 1/4096 от полного диапазона сигнала, то есть 0,0244 %.
Ошибки квантования являются следствием ограниченного разрешения АЦП. Этот недостаток не может быть устранён ни при каком типе аналого-цифрового преобразования.
Абсолютная величина ошибки квантования при каждом отсчёте находится в пределах от нуля до половины МЗР. В общем случае можно считать, что ошибка квантования равна половине МЗР.
Всем АЦП присущи ошибки, связанные с нелинейностью, которые являются следствием физического несовершенства АЦП.
Это приводит к тому, что передаточная характеристика (в указанном выше смысле) отличается от линейной (точнее от желаемой функции, так как она не обязательно линейна). Такие ошибки могут быть уменьшены путём калибровки.
Аналоговый сигнал является непрерывной функцией времени, в АЦП он преобразуется в последовательность цифровых значений. Следовательно, необходимо определить частоту выборки цифровых значений из аналогового сигнала.
Частота, с которой производятся цифровые значения, получила название частота дискретизации АЦП.
Непрерывно меняющийся сигнал с ограниченной спектральной полосой подвергается оцифровке (то есть значения сигнала измеряются через интервал времени T — период дискретизации), и исходный сигнал может быть точно восстановлен из дискретных во времени значений путём интерполяции. Точность восстановления ограничена ошибкой квантования. Однако в соответствии с теоремой Котельникова — Шеннона точное восстановление амплитуды возможно, только если частота дискретизации выше, чем удвоенная максимальная частота в спектре сигнала.
Поскольку реальные АЦП не могут произвести аналого-цифровое преобразование мгновенно, входное аналоговое значение должно удерживаться постоянным от начала до конца процесса преобразования (этот интервал времени называют время преобразования).
Эта задача решается путём использования специальной схемы на входе АЦП — устройства выборки-хранения (УВХ).
УВХ, как правило, хранит входное напряжение на конденсаторе, который соединён со входом через аналоговый ключ: при замыкании ключа происходит выборка входного сигнала (конденсатор заряжается до входного напряжения), при размыкании — хранение.
-
АЦП прямого(параллельные АЦП) преобразования
-
АЦП последовательного приближения
-
Сигма-дельта АЦП
-
АЦП дифференциального кодирования
-
АЦП сравнения с пилообразным сигналом
-
АЦП с уравновешиванием заряда
-
Оптические АЦП
Ацп последовательного приближения работает методу половинного деления.
Пример для 8 битного двоичного АПЦ:
-
На компаратор подается значение вначале равное половине опорного напряжения(Uоп/2) (соответствующее установленном старшем бите 1000 0000b)
-
Если компаратор сработал старший бит скидывается, выставляется 1/4 опорного напряжения (Uоп/4) ( 0100 0000b)
-
Если компаратор не сработал старший бит остается, и выставляется 3/4 опорного напряжения (Uоп/4) ( 1100 0000b)
-
И так далее до самого младшего бита.
АЦП(макс 12 разрядов) микроконтроллера STM32F411 работает по принципу последовательного приближения.
-
Основные элементы АЦП:
-
Наличие регулярных и инжектированных каналов – отличие только в том, что инжектированные каналы могут писать данные в 4 регистра с 4 каналов сразу, а регулярный только в один регистр
-
19 аналоговых каналов, 16 из которых которые могут сконфигурированы на работу от внешних источников или 3 внутренних.
-
Внешние каналы поступают на мультиплексор, где выбирается только один из них. Т.е. в один момент времени может быть измерено напряжение только с одного канала.
-
Результат преобразования сохраняется в регистрах данных. Для регулярных каналов это только один 16 битный регистр. Для инжектированных – 4.
-
Запуск преобразования может быть как программным, так и внешним. Внешний запуск может происходить от таймеров или с двух внешних входов.
-
-
Разрядность АЦП можно изменять
-
6, 8, 10, или 12 разрядов.
-
-
Для одного канала можно задать разные режимы:
-
однократно измерить аналоговую величину
-
запустить канал в режиме непрерывного измерения.
-
-
Режим сканирования
-
Можно задать группу каналов и порядок следования каналов в группе. Тогда измерения будут идти последовательно друг за другом, входной мультиплексор будет подключать внешние каналы к АЦП по очереди, в соответствии с запрограммированным порядком.
-
-
Функция внешнего запуска для регулярных и инжектированных каналов.
-
Режим “прерывистых” преобразований.
-
Время одного преобразования зависит от частоты тактирования АЦП и времени скорости дискретизации , которое можно настроить.
-
Tconv = Sampling time + 12 cycles. При 1 МГц, а время дискритизации 3 циклам, то полное время преобразование будет 15 тактов или 15 мкс.
-
-
Размах входного сигнала не должен выходить за пределы опорного напряжения Vref.
-
Возможность введения временной задержки, автоматически вставляемой между преобразованиями. Длительность задержки программируется.
-
Генерация запроса для прямого доступа к памяти (режим DMA) во время преобразования в регулярном канале.
В этом режиме АЦП находится сразу после сброса. Бит CONT регистра ADC_CR2 равен 0.
-
Для начала работы с АЦП в этом режиме нужно
-
Настроить нужный порт, подключенный к нужному каналу АЦП на аналоговый вход
-
Подать тактирование на АЦП
-
Выбрать нужный канал для измерения
-
Настроить канал АЦП на нужную частоту преобразования
-
Включить АЦП
-
Начать преобразование
-
Дождаться флага готовности преобразования
-
Считать преобразованное значение
-
В этом режиме опрашивается группа каналов.
-
Режим выбирается установкой бита SCAN в регистре ADC_CR1.
-
АЦП опрашивает все каналы, выбранные в регистрах ADC_SQRx (регулярные каналы)
-
Для каждого канала группы выполняется одиночное преобразование. После окончания каждого преобразования следующий канал в группе опрашивается автоматически.
-
Если установлен режим непрерывного преобразования (CONT = 1), то после последнего преобразования в группе, преобразования не прекращаются, а заново начинаются от первого выбранного канала в группе.
-
Если установлен бит DMA, то данные из регистра ADC_DR пересылаются в память после каждого преобразования.
-
В регулярных каналах флаг окончания преобразования EOC может устанавливаться либо в конце каждого преобразования, либо только по окончании всей последовательности. Для этого в регистре ADC_CR2 предусмотрен управляющий бит EOCS
-
EOCS = 0 – бит окончания преобразования EOC устанавливается после завершения всей последовательности регулярных преобразований.
-
EOCS = 1 – бит окончания преобразования EOC устанавливается после завершения каждого регулярного преобразования
-
-
- Bit5: OVR
-
Переполнение. Бит указывает, что данные преобразования регулярного канала были потеряны, т.е. программа не успела считать регистр данных регулярного канала, до следующего преобразования.
-
0: было переполнение
-
1: переполнения не было
-
- Bit4: STRT
-
Флаг начала преобразования регулярного канала
-
0: преобразование начато
-
1: преобразование не начато
-
- Bit1: EOC
-
Преобразование регулярных каналов закончено. Можно считывать регистр данных.
-
0: преобразование не закончено
-
1: преобразование закончено
-
- Bits25..24: RES[1:0]
-
разрядность АЦП
-
00: разрядность 12 бит (время преобразования 12 + 4 = 16 тактов)
-
01: разрядность 10 бит (время преобразования 11 + 4 = 15 тактов)
-
10: разрядность 8 бит (время преобразования 9 + 4 = 13 тактов)
-
11: разрядность 6 бит (время преобразования 7 + 4 =11 тактов)
-
- Bit8: SCAN
-
Включение режима сканирования. В этом режиме опрашивается группа каналов. АЦП опрашивает все каналы, выбранные в регистрах ADC_SQRx (регулярные каналы) Для каждого канала группы выполняется одиночное преобразование. После окончания каждого преобразования следующий канал в группе опрашивается автоматически. Если установлен режим непрерывного преобразования (CONT = 1), то после последнего преобразования в группе, преобразования не прекращаются, а заново начинаются от первого выбранного канала в группе.
-
0: режим сканирования выключен
-
1: режим сканирования включен
-
- Bit5: EOCIE
-
Разрешает прерывание по установке флага окончание преобразования EOC
-
0: прерывание запрещено
-
1: прерывание разрешено
-
|
|
- Bits0..26 SMPx[2:0]
-
Выбор времени дискретизации для канала от x.
-
000: 3 cycles
-
001: 15 cycles
-
010: 28 cycles
-
011: 56 cycles
-
100: 84 cycles
-
101: 112 cycles
-
110: 144 cycles
-
111: 480 cycles
-
- Bits20..23: L[3:0]
-
Длина последовательности преобразований
-
0000: 1 преобразование
-
0001: 2 преобразований
-
…………
-
1111: 16 преобразований
-
- SQx
-
Номер канала для х преобразования
- Bits0..15: DATA[15:0]
-
Данные преобразования регулярного канала
- Bits23: TSVREFE
-
Подключить сенсор температуры и Vref
-
0: Отключить сенсора температуры и Vref
-
1: Включить сенсор температуры и Vref
-
- Bits16:17: ADCPRE
-
установить частоту работы АЦП
-
00: частота равна PCLK2/2
-
01: частота равна PCLK2/4
-
10: частота равна PCLK2/6
-
11: частота равна PCLK2/8
-
-
Подключить АЦП к источнику тактирования – устанавливаем бит ADC1EN в регистре RCC::APB2ENR (АЦП тактируется от шины APB2).
-
Сконфигурировать порты. Определиться по каким каналам будут проводиться измерения, затем соответствующие выводы портов настроить для работы в аналоговом режиме.
-
Сконфигурировать АЦП.
-
Установить разрядность в регистре ADC::CR1
-
Установить режим одиночного преобразование в регистре ADC::CR1 (биты CONT и EOCS установить в нужное значение)
-
Установить количество измерений 1 в регистре ADC1::SQR1 бит L
-
Выбрать канал для первого преобразования в регистре ADC1::SQR3 биты SQ1
-
Установить скорость дискретизации в регистре SMPRx для нужного канала
-
-
Включить АЦП. Это делается установкой бита ADON в регистре ADC::CR2.
-
Запустить АЦП на преобразование установкой бита SWSTART в регистре ADC::CR2 для регулярных каналов
-
Дождаться готовности бита EOC в регистре ADC::SR
-
Считать данные из регистра ADC::DR
Измерить температуру микроконтроллера с помощью встроенного датчика темпертуры.
-
Прочитать все АЦП в библии все про встроенный датчик температуры на странице 225
-
Включить измерение датчика температуры
-
Сконфигурировать АЦП
-
12 бит
-
Одиночное преобразование
-
Регулярные каналы
-
Время дискретизации 84 цикла
-
Установка EOC после каждого измерения регулярного канала
-
Установить первое измерение с канала куда подключен датчик температуры
-