Как узнать температуру микроконтроллера?

В некоторых платах повышение температуры окружающей среды может привести к перегреву микроконтроллера. Это повлияет на микро и может возникнуть плохая ситуация. Например, я разработал устройство, которое используется в коробке. Эта коробка стояла возле мотора и после некоторой нагрузки на мотор я столкнулся с высокой температурой возле микро. Итак, кто-нибудь может мне помочь, если есть какое-либо решение для определения температуры микро? Этот микро может быть AVR или PIC. Если бы микро мог определить его температуру, он мог бы прекратить работу до того, как возникнут какие-либо серьезные повреждения.

Ответы (3)

По крайней мере, некоторые (не знаю, как все) AVR имеют встроенный датчик температуры, который подключен к АЦП.

Измерение температуры основано на встроенном датчике температуры, подключенном к однотактному каналу АЦП. Датчик представляет собой диод, вырабатывающий напряжение, зависящее от температуры. Это напряжение измеряется АЦП. Напряжение имеет линейную зависимость от температуры, а результат имеет корреляцию с температурой приблизительно 1 LSB/°C.

(из этой заметки по применению )

Некоторые устройства PIC также имеют индикатор внутренней температуры, например PIC16F15xx и 16F18xx.

Это семейство устройств оснащено температурным контуром, предназначенным для измерения рабочей температуры кремниевого кристалла. Диапазон рабочих температур контура составляет от -40°C до +85°C. Выход представляет собой напряжение, пропорциональное температуре устройства. Выход индикатора температуры внутренне подключен к АЦП устройства. Схема может использоваться как пороговый детектор температуры или более точный индикатор температуры, в зависимости от уровня выполненной калибровки. Калибровка по одной точке позволяет схеме отображать температуру вблизи этой точки. Калибровка по двум точкам позволяет цепи более точно определять весь диапазон температур.

(из этого техпаспорта )


Дополнительная литература
AVR122: Калибровка эталона внутренней температуры AVR, Замечания по применению Atmel,
Использование датчика внутренней температуры AVR ,
Техническое описание PIC16F15xx ,
стр. 133 AN1333: Использование и калибровка индикатора внутренней температуры , Замечания по применению Microchip,

Что вы порекомендуете для PIC micro? Есть ли решение для микроконтроллера PIC?
@medhi - обновил мой ответ.

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

Для всего остального используйте внешний датчик температуры. Есть много доступных, как цифровых, так и аналоговых. Если у вас есть запасной аналоговый входной контакт на микроконтроллере, то проще всего будет использовать простой аналоговый датчик. В противном случае вам нужно будет использовать что-то вроде IIC, SPI или one-wire.

Вариация синхронизации звучит интересно, но достаточно ли вариации сторожевого таймера по сравнению с внутренним источником RC-синхронизации, чтобы иметь возможность измерять его? Или это будет работать только с кристаллом в качестве источника часов?
@Chris: Примечание к приложению, которое я видел давным-давно, возможно, было до того, как в PIC обычно были внутренние генераторы. Посмотрите на сайте Microchip, и вы можете найти его, тогда он должен рассказать вам больше. На самом деле я никогда этого не делал, но точно помню, что видел приложение на эту тему. Это могло быть более 10 лет назад.

PIC16F1503 имеет внутренний датчик температуры. Другие — PIC16F1526/7/8/9.

Ты просто опоздал, Леон. Я просто добавил это к своему ответу :-)