50 оттенков ПНЯ* АЦП и АЦП с вычислителем микроконтроллеров Microchip

в 17:36, , рубрики: diy или сделай сам, microchip, pic16, микроконтроллеры, Электроника для начинающих
  • ПНЯ — Периферия Независимая от Ядра в микроконтроллерах Microchip, известная так же как CIP — Core Independent Peripheral.

Часть 3

Предыдущие статьи [1] и [2] были посвящены таким частям (ПНЯ) Периферии Независимой от Ядра микроконтроллеров (МК) Microchip как конфигурируемым логическим ячейкам и портам ввода/вывода с новой полезной функцией ограничения тока.

Сейчас рассмотрим Аналого-Цифровой Преобразователь (АЦП) и в особенности новый АЦП с поствычислителем. Как вы наверное уже привыкли  новые особенности периферии могут помочь в реализации специфических функций и упростить код под PIC микроконтроллеры.

В отличие от предыдущих частей, в этой будет чуть больше теории и чуть меньше примеров.

Содержание

  • Обзор возможностей АЦП
    • Триггер запуска
    • УВХ, CVD, Двойное преобразование
    • Поствычислитель, фильтрация, усреднение

  • Примеры конфигурирования
    • Автозапуск, фильтрация
    • Автозапуск, CVD, усреднение, прерывание по сравнению с порогами
    • Автозапуск, дифференциальный CVD, серия преобразований, усреднение

  • Итоги

Обзор возможностей АЦП

АЦП с полной уверенностью можно назвать Периферией Независимой от Ядра, так как АЦП имеет вариант тактирования от встроенного RC-генератора и может выполнять преобразование в режиме сохранения энергии Sleep. Но этим независимость не ограничивается. Многие семейства PIC16F1xxx имеют АЦП с возможностью старта по событиям, а совсем новые семейства PIC16F188xx получили еще и поствычислитель.

Рассмотрим возможности АЦП на примере МК семейства PIC16F18855/75

АЦП контроллеров этого семейства имеет:

  • 8-и битный таймер предвыборки (Acquisition Timer)
  • Аппаратную поддержку Емкостного делителя напряжения (Capacitive Voltage Divider, CVD):
    • 8-и разрядный таймер предзаряда
    • Массив конденсаторов подстройки емкости УВХ
    • Выходной драйвер защитного кольца (Guard ring)

  • Автоматическое повторение операций и последовательностей (Automatic repeat and sequencing):
    • автоматизированное двойное преобразование для CVD
    • Два набора регистров результата (результат и предыдущий результат)
    • Триггер автопреобразования
    • Внутренний «ретриггер» (Internal retrigger)

  • Возможности вычислителя:
    • Усреднение и Фильтр Низких Частот
    • Сравнение с опорным значением
    • 2-х уровневое пороговое сравнение
    • Выбираемые прерывания

АЦП с поствычислителем состоит из нескольких блоков (рис.1):

50 оттенков ПНЯ* АЦП и АЦП с вычислителем микроконтроллеров Microchip - 1

Рис. 1. Структура АЦП с вычислителем в семействе PIC16F18855.

Триггер запуска АЦП

Прошли те времена, когда для запуска измерения АЦП нужно было «вручную» установить бит. Теперь АЦП может запускаться ещё по следующим событиям:

  • внешний вход;
  • срабатывание таймеров (общего назначения и SMT – 24-х битных таймеров измерения сигналов);
  • выход модуля сравнения и ШИМ;
  • срабатывание компаратора;
  • изменение состояния входов настроенных как прерывание по изменению состояния;
  • выход логических ячеек;
  • чтение результата измерения АЦП;
  • изменение номера канала АЦП.

УВХ и CVD

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

Microchip предлагает определять емкость сенсора с помощью емкостного делителя напряжения (Capacitive Voltage Divider, CVD).

Суть метода сводится к следующему. На первом шаге (см.рис. 2) вход сенсора подключается к «земле» (его емкость разряжается), а канал АЦП к напряжению питания, емкость УВХ заряжается.
Затем вход сенсора подключается к УВХ АЦП, происходит перераспределения заряда между емкостью сенсора и емкостью УВХ. Затем производится измерение напряжения на емкости УВХ.

управление входом при CVD форма сигналов CVD
50 оттенков ПНЯ* АЦП и АЦП с вычислителем микроконтроллеров Microchip - 2 50 оттенков ПНЯ* АЦП и АЦП с вычислителем микроконтроллеров Microchip - 3

Рис. 2. Диаграммы поясняющие измерение емкости с помощью емкостного делителя напряжения.

При касании сенсора будет изменяться его емкость, а значит мы будем фиксировать разные установившиеся значения напряжения на емкости УВХ.
Для уменьшения влияния наведенных помех на сенсор и/или оператора, применяется дифференциальный CVD, состоящий из двух последовательных измерений с помощью CVD, но на второй стадии инвертируем заряды на сенсоре и УВХ (сенсор заряжаем до напряжения питания, а емкость УВХ разряжаем, см. рис.3).

50 оттенков ПНЯ* АЦП и АЦП с вычислителем микроконтроллеров Microchip - 4

Рис.3. Диаграмма сигналов при дифференциальном CVD.

Подробно про емкостные сенсоры, метод дифференциального CVD и управление защитным проводником можно почитать по ссылке [2].

Новый АЦП с поствычислителем для поддержки и автоматизации CVD имеет следующие функции:

  • таймер предзаряда (precharge)
  • управление последовательностью заряда (нужной полярности), запуск измерения;
  • подключение дополнительных внутренних емкостей к УВХ;
  • два последовательных измерения;
  • вычисление разницы между двумя измеренными значениями;
  • управление драйвером «защитным кольцом» (guard ring).

Таким образом, АЦП в автоматическом режиме может выполнить дифференциальный CVD и предоставить нам готовый результат.

Функции поствычислителя

Поствычислитель осуществляет несколько функций.

Фильтрация

Модуль АЦП может работать в одном из пяти режимов:

Базовый режим. В этом режиме АЦП может производить одно или два измерения, после каждого может выставляться флаг прерывания.

Накопление. По каждому измерению результат суммируется с аккумулятором и инкрементируется счетчик измерений.

Усреднение. По каждому измерению результат суммируется с аккумулятором и инкрементируется счетчик измерений. По достижению заданного числа повторений результат делится и попадает в модуль сравнения, а следующее измерение сбросит счетчик в 1 и значение аккумулятора замениться на результат первого измерения.

Усреднение очередью. По запуску АЦП происходит очистка аккумулятора и счетчика измерений и производится серия измерений заданное число раз, после чего результат делится и поступает в модуль сравнения.

Фильтр Нижних частот. Каждое измеренное значение проходит через ФНЧ. По завершению заданного числа измерений результат попадает в модуль сравнения.

Вычисление ошибки

По завершению каждого вычисления результат фиксируется до окончания следующего измерения. Так же вычисляется разница между:

  • текущим и предыдущим измерением (первая производная от одиночного измерения);
  • двумя результатами в режиме измерения CVD (вычисляется дифференциальный CVD);
  • текущим результатом и константой (setpoint);
  • текущим результатом и фильтрованным значением;
  • текущим и предыдущим фильтрованными значениями (первая производная фильтрованного результата);
  • фильтрованным значением и константой (setpoint).

Если вычислять разницу не нужно, то можно выбрать вычисление разницы между константой равной нулю.

Сравнение с пороговыми значениями

Результат вычисления ошибки сравнивается с верхним и нижним порогом. Дополнительно может формироваться прерывание если:

  • ошибка меньше чем нижний порог;
  • ошибка больше или равна нижнему порогу;
  • ошибка лежит между порогами;
  • ошибка за пределами порогов;
  • ошибка меньше или равна верхнему порогу;
  • ошибка больше верхнего порога;
  • формирование прерывания вне зависимости от результата сравнения с порогами (этот режим может быть полезен для фиксации самого факта сравнения, т.е. когда, например, нужно получить данные фильтрации/усреднения после N-измерений, а не прерывание после каждого измерения).

Примеры конфигурирования АЦП

Автозапуск, Фильтрация

Данный пример показывает конфигурацию АЦП в плагине Mplab Code Configurator (MCC) для выполнения следующих действий:

  • таймер Timer2 настроен на срабатывание раз в 1 мс;
  • АЦП запускается по срабатыванию таймера. АЦП осуществляет предвыборку и измерение, результат попадает в фильтр. После накопления 32-х фильтрованных измерений производится сдвиг на 5 бит (деление на 32) и выставляется запрос на прерывание.
    Программе нужно лишь по прерыванию считать из регистра полученное фильтрованное значение.

50 оттенков ПНЯ* АЦП и АЦП с вычислителем микроконтроллеров Microchip - 5

Рис. 4. Настройки АЦП с вычислителем.

50 оттенков ПНЯ* АЦП и АЦП с вычислителем микроконтроллеров Microchip - 6

Рис. 5. Считывание «сырых» и фильтрованных данных с АЦП.

Автозапуск, CVD, усреднение, прерывание по сравнению с порогами

За основу этого примера взята реализация «быстрое создание емкостного сенсора» из microchip.wikidot.com [5].

Выбрана следующая конфигурация:

  • таймер Timer2 настроен на срабатывание раз в 10мс
  • АЦП запускается по срабатыванию таймера Timer 2. АЦП производит измерения методом CVD и вычисляет среднее значение 32-х измерений. После выполнения 32-х измерений и накопления результата выполняется деление на 32 (сдвиг на 5) и если итоговое значение лежит вне пороговых значений, то формируется запрос на прерывание, таким образом сообщается о «касании» и «отпускании» сенсорной кнопки (на самом деле в данном примере прерывание формируется каждый раз, так как кнопка либо нажата, либо нет и не имеет промежуточных состояний))

50 оттенков ПНЯ* АЦП и АЦП с вычислителем микроконтроллеров Microchip - 7

Рис. 6. Настройки АЦП для CVD.

50 оттенков ПНЯ* АЦП и АЦП с вычислителем микроконтроллеров Microchip - 8

Рис.7. Реакция на касание сенсорной кнопки при одиночном CVD.

Настройка порога нам может дать прерывание не по каждому измерению/серии измерений с фильтрацией, а по касанию «кнопки».

Автозапуск, дифференциальный CVD, серия преобразований, усреднение

В данном примере используется следующая конфигурация периферии:

  • таймер Timer2 настроен на срабатывание раз в 10мс
  • АЦП запускается по срабатыванию таймера (см.рис 8, п.1). АЦП производит последовательные измерения методом дифференциального CVD (п.2) с изменением полярности (п.3), вычисляет производную (разницу между 2-я CVD) (п.4), АЦП настроен на вычисление среднего значения (п.5) 32-х измерений (п.6). После выполнения 32-х пар измерений и накопления результата выполняется деление на 32 (п.7) и запрос на прерывание (п.8), последовательные измерения останавливаются (п.9) до следующего срабатывания триггера запуска (Timer2)

50 оттенков ПНЯ* АЦП и АЦП с вычислителем микроконтроллеров Microchip - 9

Рис. 8. Настройки АЦП для варианта дифференциального CVD.

50 оттенков ПНЯ* АЦП и АЦП с вычислителем микроконтроллеров Microchip - 10

Рис. 9, Диаграмма на входе сенсора с дифференциальным CVD

50 оттенков ПНЯ* АЦП и АЦП с вычислителем микроконтроллеров Microchip - 11

Рис.10. Реакция на касание сенсорной кнопки при дифференциальном CVD

Из сравнения CVD (рис.7) и дифференциального CVD (рис.10) видно, что второй отличается более «чистым» сигналом с большей амплитудой.

Вся описанная последовательность действий выполняется полностью автоматически и независимо от ядра – в это время МК может выполнять какие-то другие действия или находиться в режиме микропотребления Sleep. По прерыванию остается считать усредненное значение результата измерений.

Итоги

Мы рассмотрели еще одну часть Периферии Независимой от Ядра — АЦП с вычислителем в микроконтроллерах Microchip. Некоторые возможности, например запуск по триггеру, или CVD присутствуют во многих семействах PIC16F1xxx, но новая “фича” – ADCC (АЦП с вычислителем), появилась в семействе PIC16F188xx (PIC16F18855 и др.).

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

P.S.
Вопрос к читателям. Стоит ли выкладывать исходники к примерам под какую-то конкретную (дешевую) демо-плату или из описаний и так все понятно и примеры кода не нужны?

Литература:

  1. Конфигурируемые Логические Ячейки в PIC контроллерах
  2. 50 оттенков ПНЯ. Порты ввода/вывода
  3. Технология mTouch(tm). Создание емкостных клавиатур, сенсоров и экранов.
  4. PIC16(L)F18855/75 Data Sheet. www.microchip.com

Автор: ariz0na

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js