Использование АЦП в микроконтроллере AVR ATmega16

Материал из me-robotics wiki

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

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

Для рассмотрения принципа работы АЦП используем встроенный в микроконтроллер AVR ATmega16 аналого-цифровой преобразователь. Практически все микроконтроллеры семейства AVR имеют встроенный АЦП. Однако есть микроконтроллеры, у которых нет собственных АЦП – в этом случае необходимо использовать внешние АЦП, выпускаемые в виде одной микросхемы.

АЦП в микроконтроллере AVR ATmega16

Отличительные особенности

  • 10-разрядное разрешение
  • Интегральная нелинейность 0.5 мл. разр.
  • Абсолютная погрешность ±2 мл. разр.
  • Время преобразования 13 - 260 мкс. -Частота преобразования до 15 тыс. преобр. в сек. при максимальном разрешении
  • 8 мультиплексированных однополярных каналов (входов)
  • 7 дифференциальных каналов (входов)
  • 2 дифференциальных канала (входа) с подключаемым усилением на 10 и 200
  • Представление результата с левосторонним или правосторонним выравниванием в 16-разр. слове
  • Диапазон входного напряжения ADC 0…VCC
  • Выборочный внутренний ИОН (Reference Voltage) на 2.56 В
  • Режимы одиночного преобразования и автоматического перезапуска
  • Прерывание по завершении преобразования ADC
  • Механизм подавления шумов в режиме сна

Микроконтроллер ATmega16 имеет встроенный 10-битный 8-канальный АЦП. Разрядность 10 бит означает, что каждый входной аналоговый сигнал (для ATmega16 он должен быть в диапазоне 0-5В) представляется 1024 уровнями дискретного сигнала (2 в степени 10 = 1024), то есть дискретизируется с точностью Uвх/1024. 8-канальный означает что АЦП может быть задействован на 8 контактах микроконтроллера одновременно.

АЦП в ATmega16

Весь порт A (GPIO33-GPIO40) может быть использован для операций АЦП. По умолчанию выводы порта А являются контактами ввода/вывода общего назначения. Чтобы задействовать на них функции АЦП необходимо сконфигурировать специальные регистры, ответственные за функции аналого-цифрового преобразования в микроконтроллере. Поэтому их и называют регистрами АЦП.

ATmega16 содержит 10-разрядный АЦП последовательного приближения. АЦП связан с 8-канальным аналоговым мультиплексором, 8 однополярных (недифференциальных) входов которого связаны с ножками порта A, то есть весь порт А (GPIO33-GPIO40) может быть использован для операций АЦП. Недифференциальные входы измеряют потенциал напряжения относительно провода GND.

ADC также поддерживает 16 вариантов конфигурации для дифференциальных входов. Два дифференциальных входа (ADC1, ADC0 и ADC3, ADC2) содержат каскад со ступенчатым программируемым усилением: 0 дБ (1x), 20 дБ (10x), или 46 дБ (200x) – непосредственно перед аналого-цифровым преобразованием. Семь дифференциальных аналоговых каналов используют общий инвертирующий вход (ADC1), а все остальные входы ADC выполняют функцию неинвертирующих входов.

Принцип действия АЦП в ATmega16

Установка регистров АЦП в микроконтроллере ATmega16

Регистр ADMUX (регистр выбора и мультиплексирования канала АЦП) - предназначен для выбора канала АЦП и опорного напряжения (reference voltage). Структура данного регистра представлена на следующем рисунке.

Регистры ATmega16

Биты 0-4 используются для выбора канала

Выбор канала.png

Бит 5 используется для коррекции результата преобразования вправо или влево.

Бит5.png

Биты 6-7 используются для выбора опорного напряжения АЦП.

Биты6-7.png