Урок 30. Работа АЦП в режиме оконного компаратора. Внутренние датчик температуры и ИОН. Основные электрические и метрологические характеристики АЦП STM32.

аналогово-цифровой преобразователь STM32

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

Предыдущий урок     Список уроков     Следующий урок

Для полноты освещения всех ресурсов АЦП STM32 осталось описать режим оконного компаратора и работу с внутренними компонентами, расширяющими возможности АЦП:  датчиком температуры и ИОН.

 

Режим оконного компаратора.

Из предыдущих уроков мы узнали, что модуль АЦП STM32 способен сам запускать преобразования входных сигналы в заданной последовательности. Остается только обрабатывать результаты измерений.

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

Если значение входного сигнала меньше нижнего порога или больше верхнего, то вырабатывается прерывание.

Оконный компаратор STM32

Пороги задаются в 16ти разрядных регистрах ADC_LTR (нижний) и ADC_HTR (верхний порог). Результаты сравнения не зависят от режима выравнивания, заданного битом ALIGN в регистре ADC_CR2.

Режим оконного компаратора может быть установлен для мониторинга одного или всех каналов согласно следующей таблице.

Каналы для мониторинга Биты регистра ADC_CR1
AWDSGL AWDEN JAWDEN
Ни один, режим отключен X 0 0
Все инжектированные 0 0 1
Все регулярные 0 1 0
Все инжектированные и регулярные 0 1 1
Один инжектированный 1 0 1
Один регулярный 1 1 0
Один инжектированный и регулярный 1 1 1

В последних трех случаях номер канала задается в поле AWDCH[4:0] регистра ADC_CR1.

Еще раз. При выходе измеренного значения сигнала за пределы, заданные в регистрах ADC_LTR и ADC_HTR, происходит:

  • Устанавливается бит AWD регистра состояния ADC_SR. Бит должен быть сброшен программно.
  • Формируется прерывание, если оно разрешено битом AWDIE в регистре ADC_CR1.

В документации не указано, что функция оконного компаратора работает только в непрерывном режиме.

 

Проверка режима оконного компаратора.

Для демонстрации работы оконного компаратора давайте подкорректируем программу Lesson27_4 из урока 27 так, чтобы при выходе напряжения сигнала канала 1 за область 1 … 2 В его значение на LCD-дисплее начинало мигать.

Напомню, что в этом уроке мы разработали программу 4х канального вольтметра. В непрерывном режиме работает регулярный канал 0, а к нему “прицеплены” инжектированные каналы.

В блоке инициализации АЦП добавляем установку конфигурации оконного компаратора.

// установки оконного компаратора
ADC1->LTR = (uint32_t)(4096. / VREF * 1.);  // нижний порог 1 В
ADC1->HTR = (uint32_t)(4096. / VREF * 2.);  // верхний порог 2 В
ADC1->CR1 |= ADC_CR1_AWDSGL | ADC_CR1_JAWDEN; // один инжектированный канал
ADC1->CR1 &= ~ ADC_CR1_AWDEN;
ADC1->CR1 |= 1 << ADC_CR1_AWDCH_Pos; // канал 1

А при выводе данных канала 1 на LCD-дисплей проверяем признак AWD и через раз стираем значение напряжения этого канала.

if( ((blink & 1) == 0) && ((ADC1->SR & ADC_SR_AWD) != 0) ) print_str_LCD("     ");
else print_str_LCD(str);

ADC1->SR &= ~ ADC_SR_AWD; // сброс
blink++;

Проект можно загрузить по ссылке:

  Зарегистрируйтесь и оплатите. Всего 40 руб. в месяц за доступ ко всем ресурсам сайта!  

У меня работает.

 

Работа со встроенным датчиком температуры и внутренним источником опорного напряжения.

Датчик температуры подключен к входу IN16 мультиплексора АЦП 1.

Датчик температуры и ИОН STM32

На вход IN17 подается напряжение 1,2 В от внутреннего источника опорного напряжения (ИОН).

Для работы этих двух узлов необходимо установить бит TSVREF в регистре ADC_CR2.

Бит 23 TSVREFE. Разрешение работы внутренних датчика температуры и ИОН. Бит присутствует только в АЦП 1.

Измерение напряжений на выходах датчика температуры и ИОН происходит как для обычного аналогового входа.

Разработчики STM32 рекомендуют устанавливать время выборки для этих узлов не менее 17,1 мкс.

Выходное напряжение датчика температуры связано с температурой линейной зависимостью. Температура вычисляется по формуле:

T = ( V25 – Vsense ) / Avg_Slope + 25

Где:

  • T – температура в C°,
  • V25 –значение напряжения при 25 C° (мВ),
  • Avg_Slope – масштабный коэффициент (мВ/ C°).

В документации на микроконтроллер STM32F103C8T6 указаны следующие значения для этих параметров.

Обозначение Параметр Миним.
значение
Типовое
значение
Макс.
значение
Единица
измерения
TL Линейность
характеристики
преобразования
- ± 1 ± 2
Avg_Slope Усредненный
коэффициент
преобразования
4 4,3 4,6 В
V25 Выходное
напряжение
при 25 C°
1,34 1,43 1,52 мВ/ C°

Видно, что при достаточно высокой линейности (1-2 C°) , датчик температуры имеет отвратительное напряжение смещения. Если пересчитать его в градусы, то получится:

(1430 – 1340) / 4 = 22,5 C°

В документации написано, что оффсет может достигать 45 C°.

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

 

Внутренний источник опорного напряжения.

Несколько слов о внутреннем ИОН. У него нет внешнего выхода. Его невозможно подключить к входу источника опорного напряжения АЦП. Он может быть использован только для вычислительной коррекции результатов измерения АЦП.

Например. Микроконтроллер питается от батарейки, напряжение на выходе которой со временем падает. Внешний вход Vref (ИОН) АЦП подключен к источнику питания. Значит опорное напряжение АЦП также нестабильно.

В этом случае необходимо измерить напряжение внутреннего ИОН и в соответствии с ним масштабировать результаты преобразования АЦП.

Разработчики гарантируют следующие точностные характеристики внутреннего ИОН.

Обозначение Параметр Миним.
значение
Типовое
значение
Макс.
значение
Единица
измерения
VREFINT Выходное напряжение 1,16 1,2 1,26 В
TS_VREFINT Время выборки - 5,1 17,1 мкс
VRERINT Отклонение напряжения
во всем диапазоне температур
- - 10 мВ
TCoeff Температурный коэффициент - - 100 ppm/ C°

 

Практический пример измерения внутренних температуры и напряжения ИОН.

Разработаем программу, которая выводит на LCD-дисплей значения температуры микроконтроллера и напряжения внутреннего ИОН.

  • Я взял проект из урока 28.
  • Оставил без изменений то, что касается измерений каналов 0 и 1.
  • При инициализации АЦП разрешил работу термодатчика и ИОН - установил бит TSVREFE.
  • Время выборки для 16 и 17 каналов установил 239,5 циклов.
  • В регистре JSQR задал для 3 и 4 преобразований 16 и 17 каналы.
  • Подкорректировал вычисление значения температуры.

Загрузить проект можно по ссылке:

  Зарегистрируйтесь и оплатите. Всего 40 руб. в месяц за доступ ко всем ресурсам сайта!  

Измерение температуры и напряжения ИОН STM32

Температура у меня получилась -7 C°, хотя реальная окружающая +23…24 C°. Офсет действительно громадный. При нагревании корпуса микроконтроллера значение температуры на дисплее повышается.

А вот напряжение ИОН у моего микроконтроллера почти идеальное - 1,204 В.

 

Электрические и метрологические характеристики АЦП STM32.

Любой АЦП – далеко неидеальное устройство. Результат измерений аналоговых сигналов может быть искажен как за счет неправильного подключения внешних сигналов, так и за счет внутренних погрешностей преобразований.

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

Из электрических характеристик, т.е. требований к внешним сигналам.

  • Напряжение на входе Vref+ (вход ИОН) не должно превышать напряжение питания микроконтроллера и быть менее 2,4 В. При меньшем напряжении микроконтроллер не сгорит, но правильную работу АЦП никто не гарантирует.
  • Потребляемый входной ток ИОН достигает 0,22 мА. Это достаточно большое значение. Например, при подключении внешнего ИОН через резисторный делитель с эквивалентным сопротивлением 1 кОм, погрешность напряжения будет 0,22 В. Использование делителей на входе Vref практически недопустимо.
  • Диапазон напряжения преобразования АЦП от 0 до напряжения ИОН (Vref).
  • Максимальное выходное сопротивление источника аналогового сигнала 50 кОм. Об этом рассказано в уроке 26 в разделе “Выборка аналогового сигнала”.

 

Метрологические характеристики АЦП STM32.

Речь идет о внутренних ошибках АЦП, когда все требования к характеристикам внешних сигналов выполнены.

  • Ошибка смещения нуля – не более 1,5 единиц младшего разряда, т.е 0,037 %.
    Параметр показывает значение сигнала на входе АЦП при выходном коде равном 0.
  • Ошибка коэффициента преобразования – не более 1,5 единиц младшего разряда, т.е 0,2 %.
    Показывает насколько наклон прямой между первой и последней точками реальной характеристики преобразования соответствует идеальному значению.
  • Дифференциальная нелинейность - не более 1 единицы младшего разряда, т.е 0,024 %.
    Параметр характеризует отклонение между серединами соседних шагов квантования на реальной и идеальной характеристиках. Т.е. показывает насколько одинаковые ступеньки характеристики.
  • Интегральная нелинейность – не более 1,5 единицы младшего разряда, т.е 0,037 %.
    Характеризует отклонение реальной характеристики АЦП от идеальной в середине шага квантования.
  • Общая ошибка преобразования не более 2 единиц младшего разряда, т.е 0,05 %.

Параметры гарантируются после калибровки АЦП.

Это максимальные значения погрешностей. Типовые погрешности, как правило, в полтора раза меньше.

 

В следующем уроке будем работать с АЦП через функции библиотеки HAL.

Предыдущий урок     Список уроков     Следующий урок

0

Автор публикации

не в сети 2 часа

Эдуард

196
Комментарии: 1652Публикации: 169Регистрация: 13-12-2015

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

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

Нажимая кнопку "Отправить" Вы даёте свое согласие на обработку введенной персональной информации в соответствии с Федеральным Законом №152-ФЗ от 27.07.2006 "О персональных данных".