Аналоговый компаратор. Урок 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, то есть компаратор включен.

Читайте также  Стабилизаторы напряжения 5в.

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

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

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

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

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

  1. Александр

    Спасибо за статью.
    Не совсем понятно как использовать компаратор для контроля заряда, ведь для этого нужно иметь контрольное напряжение. Как оптимально его получить? Спасибо.

    1. DamiKK Автор записи

      Здравствуйте!
      Вы имеете ввиду пороговые значения? Их можно найти в интернете,отдельно, для каждого типа аккумуляторов

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

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