¿Cómo puedo encontrar la temperatura del microcontrolador?

En algunas placas cuya temperatura ambiente sube, podría causar una temperatura alta en el microcontrolador. Esto tendrá un efecto en micro y puede ocurrir una mala situación. Por ejemplo, he diseñado un dispositivo que se usa en una caja. Esta caja estaba cerca de un motor y después de un poco de carga al motor encontré una temperatura alta cerca del micro. Entonces, ¿alguien podría ayudarme si hay alguna solución para encontrar la temperatura del micro? Este micro podría ser AVR o PIC. Si el micro pudiera encontrar su temperatura, podría dejar de funcionar antes de cualquier daño grave.

Respuestas (3)

Al menos algunos AVR (no sé todos) tienen un sensor de temperatura en el chip, que está conectado al ADC.

La medición de temperatura se basa en un sensor de temperatura en el chip que está acoplado a un canal ADC de un solo extremo. El sensor es un diodo que produce un voltaje dependiente de la temperatura. Este voltaje se mide con el ADC. El voltaje tiene una relación lineal con la temperatura y el resultado tiene una correlación con la temperatura de aproximadamente 1 LSB/°C.

(de esta nota de aplicación )

Varios dispositivos PIC también tienen un indicador de temperatura interna, como PIC16F15xx y 16F18xx.

Esta familia de dispositivos está equipada con un circuito de temperatura diseñado para medir la temperatura de funcionamiento de la matriz de silicio. El rango de temperatura de funcionamiento del circuito se encuentra entre -40 °C y +85 °C. La salida es un voltaje que es proporcional a la temperatura del dispositivo. La salida del indicador de temperatura está conectada internamente al ADC del dispositivo. El circuito se puede utilizar como detector de umbral de temperatura o como indicador de temperatura más preciso, según el nivel de calibración realizado. Una calibración de un punto permite que el circuito indique una temperatura cercana a ese punto. Una calibración de dos puntos permite que el circuito detecte todo el rango de temperatura con mayor precisión.

(de esta hoja de datos )


Lecturas adicionales
AVR122: Calibración de la referencia de temperatura interna del AVR , Nota de la aplicación Atmel,
Uso del sensor de temperatura interna del AVR , Hoja de datos PIC16F15xx ,
p.133 AN1333 :
Uso y calibración del indicador de temperatura interna , Nota de la aplicación Microchip,

¿Cuál es su recomendación para PIC micro? ¿Hay alguna solución para el microcontrolador PIC?
@medhi: actualicé mi respuesta.

Algunos micros vienen con sensores de temperatura incorporados. Hay algunos PIC 16, por ejemplo, pero no recuerdo los números de modelo específicos. En otros PIC, el intervalo del temporizador de vigilancia es una función predecible de la temperatura. Puede determinar la temperatura con una calibración inicial y luego medir el intervalo de vigilancia en tiempo de ejecución. Ninguno de estos métodos es muy preciso, pero si solo necesita una idea aproximada de que está demasiado caliente, entonces podría ser suficiente.

Para cualquier otra cosa, utilice un sensor de temperatura externo. Hay muchos disponibles, tanto digitales como analógicos. Si tiene un pin de entrada analógica de repuesto en el micro, entonces un sensor analógico simple probablemente sea más fácil. De lo contrario, deberá usar algo como IIC, SPI o un cable.

La variación de tiempo suena interesante, pero ¿el perro guardián varía lo suficiente más que la fuente de reloj RC interna para poder medirla? ¿O esto solo funcionaría con un cristal como fuente de reloj?
@Chris: La nota de la aplicación que vi sobre esto hace mucho tiempo puede haber sido antes de que los PIC tuvieran osciladores internos. Mire a su alrededor en el sitio de Microchip y puede encontrarlo, entonces debería darle más información. En realidad, nunca he hecho esto, pero definitivamente recuerdo haber visto una nota sobre este tema. Podría haber sido hace más de 10 años.

El PIC16F1503 es uno que tiene un sensor de temperatura interno. Otros son el PIC16F1526/7/8/9.

Llegas demasiado tarde, León. Acabo de agregar eso a mi respuesta :-)