Меню

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

ОБОРУДОВАНИЕ
ТЕХНОЛОГИИ
РАЗРАБОТКИ

Блог технической поддержки моих разработок

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

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

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

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

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

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

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

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

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

Каналы для мониторинга Биты регистра ADC_CR1
AWDSGL AWDEN JAWDEN
Ни один, режим отключен X
Все инжектированные 1
Все регулярные 1
Все инжектированные и регулярные 1 1
Один инжектированный 1 1
Один регулярный 1 1
Один инжектированный и регулярный 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 // канал 1

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

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

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

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

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

На вход 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°) , датчик температуры имеет отвратительное напряжение смещения. Если пересчитать его в градусы, то получится:

В документации написано, что оффсет может достигать 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 каналы.
  • Подкорректировал вычисление значения температуры.

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

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

Температура у меня получилась -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.

Источник

Русские Блоги

[STM32] Подробное описание функций библиотеки АЦП и общих шагов (пример: эксперимент с внутренним датчиком температуры)

«Китайское справочное руководство по STM32 V10» — Глава 11 Раздел 11.10 Датчик температуры

Значение выборки АЦП

Как получить фактическое значение напряжения, подключенного к выводу ADC модуля ADC STM32?

Какое значение будет прочитано

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

следовательно:Значение АЦП, считываемое STM32, составляет от 0 до 4095 (111111111111). Когда вывод АЦП подключен к GND, считываемое значение равно 0; когда вывод АЦП подключен к VDD, считываемое значение составляет 4095.

Как преобразовать считанное значение в фактическое значение напряжения

Как упоминалось ранее, мы вводим GND, считываемое значение — 0, и вводим VDD, полученное значение — 4095. Затем, когда считывается 2035, как найти входное напряжение в V? Эта проблема, по сути, сводится к математическим координатам XY. Зная координаты двух точек (0,0) (3.3,4095), при любом значении координаты X, проблема нахождения значения Y, верно? Это просто?

Что такое опорное напряжение

Прежде чем обсуждать этот вопрос, возьмите мультиметр, чтобы измерить фактическое напряжение вашего VDDA? Это стандартные 3.300В? Не так ли? Может, 2,296 В, а может 3,312 В. Затем после подключения VDD к выводу АЦП вы получите 4095; то есть, когда вы читаете данные 4095, фактическое значение напряжения не равно 3,300 В, как вы думаете. Некоторые новички думают, что разница напряжений в несколько милливольт не имеет значения, но в практических приложениях несколько милливольт могут представлять большое фактическое рабочее состояние, например, на электронных весах с диапазоном 50 граммов.

Итак, в это время производитель чипов придумал способ,Введем опорное напряжение на модуль АЦП, а также доступ к шпильку опорного напряжения с помощью очень стандартной микросхемы опорного напряжения. Стандартные микросхемы напряжения, мы обычно называем чипы опорного напряжения или чипы опорного напряжения. Например, REF3133 (выход 3.300V), REF3025 (output 2.500V) и так далее.

Какой диапазон входного напряжения вывода АЦП

В общем, входное напряжение на выводе АЦП составляет от 0 до VDD, если есть вывод REF, оно обычно составляет от 0 до Vref, а также бывают случаи от 0 до 2Vref.

Если измеренное напряжение больше входного напряжения АЦП, например, если вы хотите использовать STM32 для измерения напряжения 0

5 В, вы можете добавить резистивный делитель и схему усилителя перед вводом вывода АЦП.

Функции библиотеки конфигурации, связанные с АЦП

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

Роль: настройка включения АЦП.

  • 1 функция преобразования программного обеспечения

эффект:АЦП позволяет преобразовать программное обеспечение(В функции ADC_Init выберите none для режима внешнего запуска).

  • 1 функция настройки обычного канала

эффект:Настроить определенный канал контроллера АЦП для размещения в определенной позиции группы правил с определенной частотой дискретизации.(Четыре параметра соответствующей функции: имя контроллера АЦП, имя канала АЦП, n-я группа правил, частота дискретизации).

  • 1 получить функцию результата преобразования

Функция: получить результат программного преобразования контроллера АЦП.

Общие шаги АЦП

Пример требований: Используйте канал 1 АЦП1 (PA1) для сбора значений внешнего напряжения.

  • Включите часы порта PA и часы ADC1 и установите PA1 как аналоговый вход. Вызов функции: GPIO_Init (); APB2PeriphClockCmd ();
  • Сбросьте ADC1 и одновременно установите коэффициент деления частоты ADC1. Вызов функции: ADC_DeInit (ADC1); RCC_ADCCLKConfig (RCC_PCLK2_Div6);
  • Инициализируйте параметры ADC1, установите рабочий режим ADC1 и соответствующую информацию о последовательности правил. Вызов функции: void ADC_Init ();
  • Включите АЦП и откалибруйте. Вызывающая функция: ADC_Cmd ();
  • Настройте параметры канала правила. Вызывающая функция: ADC_RegularChannelConfig ();
  • Начать преобразование программного обеспечения: ADC_SoftwareStartConvCmd (ADC1);
  • Дождитесь завершения преобразования и прочтите значение АЦП. Вызов функции: ADC_GetConversionValue (ADC1).

Анализ управляющей программы STM32

Функция Adc_Init (): функция инициализации АЦП.

Здесь следует отметить следующие моменты:Функция настройки тактовой частоты АЦП включает два шага, не пропустите разделение частоты АЦП:

Режим GPIO PA1 должен быть настроен как аналоговый вход:

Рекомендуется выполнять калибровку АЦП при включении питания.(Эта часть кода выглядит так, просто скопируйте ее напрямую):

Функция Get_Adc (): получить значение после преобразования АЦП.

Здесь следует отметить, чтоПосле использования ADC_SoftwareStartConvCmd () для включения программного преобразования вам необходимо использовать функцию ADC_GetFlagStatus (), чтобы дождаться завершения преобразования, а затем выполнить вывод ADC_GetConversionValue ().

Функция main (): основная функция, которая реализует вызов функции (сбор значения внешнего напряжения).

Как число, выбранное АЦП, преобразуется в значение напряжения? Этот метод используется здесь для расчета. Принцип объясняется в начале этой статьи.

Внутренний датчик температуры STM32

STM32 имеетВнутренний датчик температуры может использоваться для измерения температуры процессора и его окружения (TA). Датчик температуры внутренне подключен к входному каналу ADCx_IN16, который преобразует выходное напряжение датчика в цифровое значение.

Особенности внутреннего датчика температуры

  • Рекомендуемое время выборки аналогового входа датчика температуры составляет 17,1 мкс;
  • Температурный диапазон, поддерживаемый внутренним датчиком температуры STM32: от -40 до 125 градусов;
  • Точность относительно низкая, около ± 1,5 ° C.

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

Блок-схема внутреннего датчика температуры

Использование внутреннего датчика температуры

Чтобы использовать внутренний датчик температуры STM32, сначала должен быть активирован внутренний канал ADC, который устанавливается битом TSVREFE (бит23) ADC_CR2. Установите этот бит в 1, чтобы включить внутренний датчик температуры.

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

Внутренний датчик температуры STM32 жестко подключен к каналу 16 АЦП.Поэтому после настройки АЦП просто считайте значение канала 16, и это значение напряжения, возвращаемое датчиком температуры. Затем на основе этого значения напряжения мы можем вычислить текущую температуру.

Рассчитывается следующим образом:

В приведенной выше формуле: V25 = значение Vsense при 25 градусах (типичное значение: 1,43), Avg_Slope = средний наклон температуры и кривая Vsense (единица измерения: мВ / ℃ или УФ / ℃) (типичное значение составляет 4,3 мВ / ℃) .

Используя приведенную выше формулу, мы можем легко рассчитать температуру текущего датчика температуры.

Общие действия для внутренних датчиков

  • Выберите входной канал ADC_IN16, установите время выборки больше 17,1 мкс и включите АЦП;
  • Установите бит TSVREFE в ADC_CR2 и включите внутренний датчик температуры;
  • Считайте результат АЦП и рассчитайте температуру.

Отличие этого от предыдущего в том, что необходимо включить внутренний датчик температуры:

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

Интеллектуальная рекомендация

Заметки о машинном обучении — линейная регрессия

Заметки о машинном обучении — линейная регрессия Учебные ресурсы: открытый класс Стэнфордского машинного обучения, автор Эндрю Нг 0 Описание символа m m : Количество обучающих выборок n n : Количество.

JavaParser: генерация кода Java

В этой статье я покажу вам, как использовать . для генерации Java-кода JavaParser. Я не могу найти обширную документацию по генерации кода на javaparser.org или в руководстве. Поэтому я думаю, что е.

Linux выполняет ошибку команд Java: не могу найти или не удалось загрузить основной класс

проблема: Используйте Javac для Compile Test.java на Linux, но используйте Java для запуска Test.Class Tips: Ошибка: Не удается найти или не удалось загрузить основной класс решение: редактировать/etc.

Excel отозвать защиту работы (забыл пароль)

Если вы забыли пароль, вы можете взломать его следующим образом 1. Переименуйте таблицу Excel в файл .rar. 2. Используйте распакованный файл для распаковки, как показано ниже: 3. Откройте каталог и на.

Решите проблему сбоя ноутбука jupyter и измените путь по умолчанию для ноутбука jupyter

Некоторое время назад anaconda на компьютере по умолчанию была обновлена ​​до python3.6, и некоторые часто используемые модули необходимо переустановить. Кроме того, есть такие проблемы, как невозможн.

Источник

Читайте также:  Ламповый стабилизатор напряжения экранной сетки
Adblock
detector