Аналоговый компаратор. Урок 16. AVR для начинающих.

Автор: | 22.02.2017

Очень часто возникает необходимость сравнения аналоговых сигналов. Например, контроль уровня заряда внешнего аккумулятора (батареи). То есть, необходимо сравнить текущее напряжение аккумулятора с неким эталоном, например напряжением при котором аккумулятор будет считаться разряженным. Для решения таких задач можно использовать АЦП контроллера. Однако, данное решение не всегда применимо, так как в некоторых моделях контроллеров AVR Аналого-Цифровой Преобразователь отсутствует, да и тратить драгоценные ресурсы контроллера на такую простую задачу не всегда допустимо. Конечно, можно воспользоваться внешними устройствами (например, операционными усилителями), для сравнения аналоговых сигналов. Однако и этот метод не оптимален, так как влечет за собой усложнение схемы устройства, и финансовые затраты. Здесь нам на помощь и придет встроенный аналоговый компаратор, который есть практически в каждом контроллере AVR.

Аналоговый компаратор сравнивает входное значение “положительного” входа AIN0 с “отрицательным” входом AIN1. Когда напряжение на положительном входе AIN0 выше, чем напряжение на отрицательном входе AIN1 компаратор устанавливает единицу в соответствующем бите. Соответственно, при подаче на AIN0 напряжения меньшего, чем напряжение на AIN1, в данный бит будет записан 0.

То есть, работу компаратора можно представить следующей формулой:

Результат = Напряжение на AIN0 – Напряжение на AIN1;

Если Результат>0, тогда установить бит в “1”

Если Результат<0, тогда установить бит в “0”

Теперь рассмотрим регистры, отвечающие за настройку и работу компаратора:

Основной регистр, отвечающий за работу аналогового компаратора это регистр ACSR (регистр контроля и статуса аналогового компаратора). Рассмотрим подробнее его биты:

  1. ACIS0:ACIS1 — данные два бита выбирают событие, по которому будет установлен флаг прерывания компаратора.

  1. ACIC — при записи единицы в данный бит, компаратор подключается к схеме захвата таймера 1. Данная связка позволяет измерять длительность определенных сигналов.

  2. ACIE — бит разрешения прерывания аналогового компаратора.

  3. ACIфлаг прерывания компаратора. Вызывает генерацию прерывания согласно условию записанному в ACIS0:ACIS1.

  4. ACOбит содержащий результат работы компаратора. Равен 1 при AIN0>AIN1, и равен 0 при AIN0<AIN1.

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

  6. ACDбит выключения аналогового компаратора. При записи 1 в данный бит, компаратор выключается, что позволяет снизить энергопотребление. При запуске контроллера данный бит равен 0, то есть компаратор включен.

Читайте также  AVR. Языки программирования.

Для демонстрации работы аналогового компаратора, соберем в ПО Proteus следующую схему:

Прошивку напишем на C, используя среду Atmel(AVR) Studio:

Теперь, вращая ручку потенциометра, изменяем напряжение, подаваемое на ножку AIN1 микроконтроллера. Когда напряжение станет меньше 1.3 Вольт, состояние порта C контроллера AtMega8 изменится.

Спасибо за внимание!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *