Термосенсор

Материал из MIK32 микроконтроллер

Введение

Сенсор преобразует электрические величины, прямо пропорционально зависящие от температуры кристалла, в двоичное представление этой температуры.

Технические характеристики:

  • точность измерения температуры ±0,1 ℃;
  • погрешность измерения температуры в диапазоне [–40 °C; 125 °C] не превышает 1 %;
  • наличие спящего режима с пониженным потреблением тока;
  • функция подстройки для уменьшения влияния разброса техпроцесса.
  • Тактовая частота 32КГц-100КГц

Состав и принцип работы сенсора

Структурная схема представлена на рисунке ниже. Сенсор состоит из блока формирования опорного тока, блока формирования двух напряжений база-эмиттер, сигма-дельта АЦП и регистра накопления результатов АЦП.

Структурная схема сенсора
Структурная схема сенсора

Блок сенсора основан на биполярных транзисторах, так как их технологический разброс параметров мал по сравнению с альтернативами. Для генерации данных о температуре достаточно всего двух транзисторов в диодном включении, управляемых разными токами. Напряжение база-эмиттер Vbe обратно пропорционально температуре (CTAT), а разница напряжений ΔVbe прямо пропорциональна (PTAT). Эти напряжения линейны, а линейная комбинация создает температурно-независимое постоянное напряжение Vref (рисунок и формулы далее), соответствующее ширине запрещенной зоны.

TEMP3.png
Принцип работы сенсора
Принцип работы сенсора

Основное преимущество такой схемы, что формируемое PTAT напряжение не зависимо от технологического процесса и  вычисляется по формуле:

TEMP4.png

Эти напряжения переводятся в базис заряда и используются сигма-дельта АЦП на переключающихся конденсаторах. Плотность потока на выходе АЦП меняется от 0 до 1 в зависимости от температуры и равна согласно равенству зарядов по формуле 16. Сама температура вычисляется в градусах Цельсия по формуле 17, при A= 619,2 и В= -273,15 (константы, следующие из формул далее)

TEMP5.png

Регистры управления

Список регистров

Регистры управления температурным сенсором
Обозначение Смещение Начальное значение Назначение Доступ
TSENS_CFG 0x1C 0x0 Регистр настроек RW
TSENS_TRESHOLD 0x20 Регистр пороговых значений RW
TSENS_IRQ 0x24 0x0 Регистр прерываний RW
TSENS_CLEAR_IRQ 0x28 0x0 Регистр сброса прерываний W1C
TSENS_VALUE 0x2C 0x0 Регистр данных RO
TSENS_SINGLE 0x30 0x0 Регистр запуска однократного измерения WO
TSENS_ CONTINIUS 0x34 0x0 Регистр запуска непрерываного измерения WO
REF_CLB 0x38 0x01 Управление калибруемыми источниками тока и напряжения RW

Описание регистров

TSENS_CFG

Смещение: 0x1C - регистр настройки термодатчика. Значение после подачи сброса: 0x00000000;

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Зарезервировано
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Div Clk_mux Nreset Npd_Clk Npd
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Биты 15:6 Div - Значение делителя тактового сигнала. Частота сенсора определяется как  TSENS = FIN/(Div + 1)

Биты 5:3 Clk_mux - Выбор источника тактирвоания сенсора (FIN):

  • 0x0 – системная частота (sys_clk);
  • 0x1 – частота шины AHB (hclk);
  • 0x2 – частота внешнего осцилятора 32 МГц;
  • 0x3 – частота HSI32M;
  • 0x4 – частота внешнего осцилятора 32 кГц;
  • 0x5 – частота LSI32K

Бит 2 Nreset - Управление сбросом сенсора, активный уровень «0»

Бит 1 Npd_Clk - Управление тактированием сенсора:

  • 0 – тактирование сенсора выключено;
  • 1 –  тактирование сенсора включено

Бит 0 Npd - Управление питанием сенсора:

  • 0 – сенсор выключен;
  • 1 – сенсор включен
TSENS_TRESHOLD

Смещение: 0x20 - пороговый регистр. Значение после подачи сброса: 0x3865B ;

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Зарезервировано Low_ Threshold
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Low_ Threshold Hi_ Threshold
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Биты 19:10 Low_ Threshold - При значении выхода сенсора менее  Low_Threshold  будет формироваться прерывание. Значение по умолчанию соответсвует температуре -40  оС. Начальное значение 225.

Бит 9:0 Hi_ Threshold - При значении выхода сенсора больше  Hi_Threshold  будет формироваться прерывание. Значение по умолчанию соответсвует температуре 125  оС. Начальное значение 603.

TSENS_IRQ

Смещение: 0x24 - регистр управления прерываниями. Значение после подачи сброса: 0x00000000;

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Зарезервировано
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Зарезервировано Low_Irq Hi_Irq Eoc_Irq Low_Mask Hi_Mask Eoc_Mask
rw rw rw rw rw rw rw rw rw rw ro ro ro rw rw rw

Бит 5 Low_Irq - Статус прерывания события «выход сенсора меньше порогового значения Low_Threshold»

Бит 4 Hi_Irq - Статус прерывания событии «выход сенсора больше порогового значения Hi_Threshold»

Бит 3 Eoc_Irq - Статус прерывания по окончанию преобразования

Бит 2 Low_Mask - Маска прерывания при событии «выход сенсора меньше порогового значения Low_Threshold»

Бит 1 Hi_Mask - Маска прерывания при событии «выход сенсора больше порогового значения Hi_Threshold»

Бит 0 Eoc_Mask - Маска прерывания по окончанию преобразования

TSENS_CLEAR_IRQ

Смещение: 0x28 - регистр калибровочных данных. Значение после подачи сброса: 0x00000000;

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Зарезервировано
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Зарезервировано Low_ Clear Hi_ Clear Eoc_Clear
rw rw rw rw rw rw rw rw rw rw rw rw rw W1C W1C W1C

Бит 2 Low_Clear - Сброс прерывания события «выход сенсора меньше порогового значения Low_Threshold»

Бит 1 Hi_Clear - Сброс прерывания событии «выход сенсора больше порогового значения Hi_Threshold»

Бит 0 Eoc_Clear - Сброс прерывания по окончанию преобразования

TSENS_VALUE

Смещение: 0x2С - регистр данных. Значение после подачи сброса: 0x00000000;

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Зарезервировано
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Зарезервировано Eoc Value
rw rw rw rw rw ro ro ro ro ro ro ro ro ro ro ro

Бит 10 Eoc - Текущее значение выхода окончания преобразования

Биты 9:0 Value - Последнее измереннное значение сенсором

TSENS_SINGLE

Смещение: 0x30 - регистр запуска однократного измерения. Значение после подачи сброса: 0x00000000;

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Зарезервировано
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Зарезервировано Single
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Бит 0 Single - Запуск одного измерения

TSENS_ CONTINIUS

Смещение: 0x34 - регистр запуска непрерывного измерения. Значение после подачи сброса: 0x00000000;

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Зарезервировано
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Зарезервировано Continius
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw

Бит 0 Continius - Управление непрерывным измерением:

  • 1 - запуск
  • 0 - остановка
REF_CLB

Смещение: 0x38 - регистр калибровочных данных. Значение после подачи сброса: 0x00000100;

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Зарезервировано
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Зарезервировано EN Coef_RefIclb Coef_RefVclb
rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw ro

Бит 8 EN - Включение калибровки настройки опорного

Бит 7:4 Coef_RefIclb - Коэффициент настройки тока

Бит 3:0 Coef_RefVclb - Коэффициент настройки напряжения