Hallo Leute,
Habe soeben 2000 USB Sticks mit einem Temperaturfühler drauf fertigen
lassen.
Nun habe ich aber das Problem, das der uC (ein PIC18F13K50) den
Temperatursensor um ungefähr 2°C erwärmt. Ich könnte nun einen Offset
reinprogrammieren, oder eine findige Idee einsetzen.
Gedankengang: uC wird nach dem Init in den Sleep Modus verbannt. uC
braucht weniger Saft, folglich weniger Erwärmung.
USB löst Interrupt aus, Daten werden eingelesen und an den PC übertragen
danach wieder Sleep. Nur kurzes aufwecken der Peripherie und CPU,
folglich weniger Erwärmung.
Ist mein Gedankengang falsch, oder kann das funktionieren?
Es ist mir klar, das diverse TVS Dioden,.. durch ihren Leckstrom das PCB
genauso aufheizen.
RächerMitDemBecher schrieb:> USB löst Interrupt aus, Daten werden eingelesen und an den PC übertragen> danach wieder Sleep.
Ja, kannst du doch machen - der UART kann doch nen IR auslösen.
RächerMitDemBecher schrieb:> Es ist mir klar, das diverse TVS Dioden,.. durch ihren Leckstrom das PCB> genauso aufheizen.
Ich denke, diese Leckströme werden keine nennenswerte Erwärmung
hervorrufen.
Machen kannst du das natürlich, vielleicht bringt es auch ein bisschen
was.
Aber sicher, dass die Erwärmung vom µC kommt?
Ich würde vielleicht auch mal den USB-Port (bzw. den Rechner selbst) als
"Täter" in Betracht ziehen.
RächerMitDemBecher schrieb:> Ich könnte nun einen Offset> reinprogrammieren
Ein Offset wirds hier nicht bringen, da dieser abhängig von allerlei
Sachen ist, wie z.B. "Wind"geschwindigkeit um den Stick.
Die Sleep Methode könnte aber funktionieren. Benutzt du den µC nur zum
Auslesen des Sensors oder macht der sonst noch einige andere Dinge?
Nach meiner Erfahrung erwärmen sich MCs nicht nennenswert beim
Abarbeiten von Code, sondern hauptsächlich dann, wenn sie an ihren
Ausgängen Strom liefern müssen. Deswegen wird ein Sleep vermutlich
nichts bringen, es sei denn, dabei werden auch die Ausgänge
abgeschaltet.
Beim Sleep werden ja dann alle Pins auf Eingang umgeschalten.
Es wird nur der Sensor ausgelesen.
Pseudocode:
while TRUE
while(HID_Read() = 0)
NOP0
wend
ReadSHT
CopySHTDataIntoBuffer
while(HID_Write(@writebuff,64) = 0)
wend
wend
Der PIC erwärmt sich um etwa 2,7°C. Es hängt nur eine LED drann (low
current 2mA).
ob der Sensor stimmt ist die eine Sache,
ob über das Board, bzw. der USB-Buchse die Wärme an den Sensor kommt,
oder ob der Gehäuselüfter die CPU-Wärme drüber pustet oder Deine
Hand beim Einstecken das Platinchen erwärmt etc. etc.
Welcher Sensor ists denn?
Häng mal Deinen Dongle an ne "Verlängerungsschnur" und miss nochmal.
Wärmebild gäbe genauen Aufschluss
RächerMitDemBecher schrieb:> Nun habe ich aber das Problem, das der uC (ein PIC18F13K50) den> Temperatursensor um ungefähr 2°C erwärmt.
Konstruktionsfehler.
Habe ihn an einem CPU Verlängerungskabel hängen (passiv).
Von da her sollte keine Wärmeübertragung herkommen. Ausserdem im
(leeren) Gurkenglas damit kein Lüftchen stören kann.
Sensor ist der SHT11.
hallo,
und du bist dir sicher das die 2K Erwärmung sind?
Habe mit dem SHT-11 ein sehr interessantes Phänomen:
Wir aktivieren den SHT-11 nur immer ganz kurz (Versorgung an, auslesen
und Versorgung aus) da war die Temperatur auhc immer um ca. 2K daneben.
Uns ist das am Anfang gar nicht so aufgefallen, unser jetzige Lösung,
Einscahteln auslesen 10sec eingeschaltet lassen, auslesen Wert nehmen
ausschalten.
seit dem sind wir ziemlich genau.
mein ... so n µC kann schon n paar mW an Wärme abgeben ... hab mal im
Anhang nen Mega128 auf 5V und 14MHz Takt ... man sieht schon
Temperaturunterschiede
SHT11 hat er geschrieben
Gibts von Sensirion cooles Teil, schweine teuer ... hatt ich vor
Ewigkeiten auch mal verbaut. ... für Temperatur hätts aber auch n LM75B
getan, oder?
Heizung ist aus.
Es sieht tatsächlich aus, das die CPU heizt.
Unbenutzte Pins sind mit Masse fix verbunden auf Ausgang geschalten und
low.
Leider habe ich keine Wärmebildkamera zur Verfügung (Leider nicht bei
Conrd für 10Euro zu haben ;-) ).
Habe mal einen NI/CR/NI Fühler auf die CPU geschnalt, Testprogramm rein
(Alles was über USB rein kommt geht gleich zurück) und siehe da: Von
24°C auf 32°C!!! in einer viertel Stunde. Muss mir also wirklich etwas
mit dem Programm einfallen lassen.
Das mit den 2°k zuviel habe ich auch schon mal gehabt. War damals aber
die erste Generation. Bei den neuen sollte man aber auch etwa 500mS nach
den Power up warten.
Ralli schrieb:> Kann das fast nicht glauben, das sich die CPU so sehr erhitzen würde.
wieso nicht? Steht alles im Datenblatt:
bei 48 Mhz (USB full speed) und 5 V braucht man 13 mA = 65mW. bei 108K/W
(SSOP-Geh) erwärmt sich der Prozessor um ca 7 Grad.
Wenn man das ganze noch in ein kleines Gehäuse sperrt kriegt der
Temperatursensor ordentlich was davon ab.
Gruß Anja
Sollte, ja. Allerdings muß ja offensichtlich die USB-Logik weiterlaufen,
vielleicht lohnt es sich, zu prüfen, was "Sleep mit USB" an
Leistungsaufnahme mit sich bringt. Kenne mich mit PIC da nicht so aus.
Ralli schrieb:> Aha 7°C. Und wie kommst du darauf? 65mW OK, das kann man berechnen.> Aber die 7°C Erwärmung nicht !!!> Weil dann währen es nur 0,02°C im Sleep Mode!!!
wieso kann man das nicht berechnen? Wenn der Chip einen Wärmewiderstand
von 108K/W hat. Dann kommt man mit 108K/W * 0.065W = 7K auf die
Erwärmung.
Sascha