Wie finde ich die Temperatur des Mikrocontrollers?

Bei einigen Platinen kann eine steigende Umgebungstemperatur zu einer hohen Temperatur im Mikrocontroller führen. Dies wirkt sich auf das Mikro aus und es kann zu einer schlechten Situation kommen. Zum Beispiel habe ich ein Gerät entworfen, das in einer Box verwendet wird. Diese Box befand sich in der Nähe eines Motors und nach einer gewissen Belastung des Motors stieß ich auf eine hohe Temperatur in der Nähe des Mikros. Also, könnte mir jemand helfen, ob es eine Lösung gibt, um die Temperatur des Mikros zu finden? Dieses Mikro könnte AVR oder PIC sein. Wenn das Mikro seine Temperatur finden könnte, könnte es die Arbeit beenden, bevor es zu schweren Schäden kommt.

Antworten (3)

Zumindest einige (ich kenne nicht alle) AVRs haben einen Temperatursensor auf dem Chip, der mit dem ADC verbunden ist.

Die Temperaturmessung basiert auf einem On-Chip-Temperatursensor, der mit einem unsymmetrischen ADC-Kanal gekoppelt ist. Der Sensor ist eine Diode, die eine temperaturabhängige Spannung erzeugt. Diese Spannung wird mit dem ADC gemessen. Die Spannung hat eine lineare Beziehung zur Temperatur und das Ergebnis hat eine Korrelation von ungefähr 1 LSB/°C zur Temperatur.

(aus diesem Anwendungshinweis )

Eine Reihe von PIC-Geräten haben auch eine interne Temperaturanzeige, wie der PIC16F15xx und 16F18xx.

Diese Gerätefamilie ist mit einem Temperaturschaltkreis ausgestattet, der die Betriebstemperatur des Siliziumchips misst. Der Betriebstemperaturbereich der Schaltung liegt zwischen -40 °C und +85 °C. Der Ausgang ist eine Spannung, die proportional zur Gerätetemperatur ist. Der Ausgang des Temperaturindikators ist intern mit dem Geräte-ADC verbunden. Die Schaltung kann je nach durchgeführter Kalibrierung als Temperaturschwellenwertdetektor oder als genauerer Temperaturindikator verwendet werden. Eine Ein-Punkt-Kalibrierung ermöglicht es der Schaltung, eine Temperatur anzuzeigen, die diesen Punkt eng umgibt. Eine Zweipunktkalibrierung ermöglicht es der Schaltung, den gesamten Temperaturbereich genauer zu erfassen.

(aus diesem Datenblatt )


Weiterführende Literatur
AVR122: Calibration of the AVR’s internal temperature reference , Atmel Application Note,
Using the AVR internal temperature sensor ,
PIC16F15xx datasheet , p.133
AN1333: Use and Calibration of the Internal Temperature Indicator , Microchip application note,

Was ist Ihre Empfehlung für PIC micro? Gibt es eine Lösung für PIC-Mikrocontroller?
@medhi - meine Antwort aktualisiert.

Einige Mikros sind mit eingebauten Temperatursensoren ausgestattet. Es gibt zum Beispiel einige PIC 16, aber ich erinnere mich nicht an die spezifischen Modellnummern. Bei anderen PICs ist das Watchdog-Timer-Intervall eine vorhersagbare Funktion der Temperatur. Sie können die Temperatur mit einer anfänglichen Kalibrierung bestimmen und dann das Watchdog-Intervall zur Laufzeit messen. Keine dieser Methoden ist sehr genau, aber wenn Sie nur eine ungefähre Vorstellung von zu heiß benötigen, ist dies möglicherweise gut genug.

Verwenden Sie für alles andere einen externen Temperatursensor. Es gibt viele verfügbare, sowohl digital als auch analog. Wenn Sie einen freien analogen Eingangspin am Mikro haben, ist ein einfacher analoger Sensor wahrscheinlich am einfachsten. Andernfalls müssen Sie etwas wie IIC, SPI oder One-Wire verwenden.

Timing-Variation klingt interessant, aber variiert der Watchdog stärker als die interne RC-Taktquelle, um dagegen messen zu können? Oder würde dies nur mit einem Quarz als Taktquelle funktionieren?
@Chris: Die App-Notiz, die ich vor langer Zeit dazu gesehen habe, war möglicherweise, bevor PICs üblicherweise interne Oszillatoren hatten. Schauen Sie sich auf der Microchip-Website um und Sie werden es vielleicht finden, dann sollte es Ihnen mehr sagen. Ich habe das noch nie gemacht, aber ich erinnere mich definitiv, eine Appnote zu diesem Thema gesehen zu haben. Es könnte vor über 10 Jahren gewesen sein.

Der PIC16F1503 hat einen internen Temperatursensor. Andere sind der PIC16F1526/7/8/9.

Du bist einfach zu spät, Leon. Ich habe das gerade zu meiner Antwort hinzugefügt :-)