Forum: Mikrocontroller und Digitale Elektronik Attiny 25 Interner Temperatursensor


von Florian S. (tornado) Benutzerseite


Lesenswert?

Hallo zusammen,
Ich versuche gerade, den internen Temperatursensor des Attiny 25 zum 
laufen zu bringen. Soweit funktioniert auch alles - bis auf die 
Ergebnisse.

Es "floatet leicht"... genauer genommen schwanken die Werte so zwischen 
40 und 700!

Grundsätzliche Infos zum Aufbau:

Attiny mit LED am PB4. An PB1 hängt der TX-Pin eines MAX232. 
Stromversorgung läuft über einen Linearregler. Ansonsten ist an 
Bauteilen nur ein Vorwiderstand für die LED, ein 10k Pullup + ein 
Schalter für Reset, die paar Kondensatoren für den MAX und je ein 
Kondensator (100nF) an der Stromversorgung und zw. AREF und GND. Also 
sehr übersichtlich - hier liegt auch nicht das Problem.

Zum Sourcecode:
http://pastebin.com/kRdKHq1j

Die sendRS232Byte funktioniert zuverlässig (anderweitig getestet).

Nun zum eigentlichen Problem: Ein Auszug aus den übertragenen Werten, 
die relativ konstant und ganz grob um die 70 liegen sollten bei 
Zimmertemperatur, schaun folgendermaßen aus:

061 026 053 054 054 052 052 050 054 052 134 054 050 050 054 066 050 015 
052 111 064 050 011 123 027 054 011 066 009 054 011 054

(Bitte beachten: ich viertle den ADC-output, damit er in 1 Byte passt)

Habs auch schon mit einem anderen Tiny probiert, mit sehr ähnlichen 
Ergebnissen.

Hat irgendjemand eine Idee oder sieht den Fehler?

Schonmal Danke
Gruß Florian

von Krapao (Gast)


Lesenswert?

[offtopic]
> Zum Sourcecode:
> http://pastebin.com/kRdKHq1j

Sourcecode (oder sonstiges Beiwerk) extern abgelegt ist oft ein 
Killerkriterium fürs Weiterlesen.
[/offtopic]

von Florian S. (tornado) Benutzerseite


Angehängte Dateien:

Lesenswert?

oh, danke für den Hinweis - ich finde es so angenehmer, deswegen hatte 
ich es so gemacht. Aber das soll ja nicht das problem sein :)

Hier also das gleiche im Anhang.

Gruß

von Florian S. (tornado) Benutzerseite


Angehängte Dateien:

Lesenswert?

Sorry wegen Doppelpost, aber Bearbeiten ging schon nicht mehr.
Hier noch der Schaltplan

Gruß

von Krapao (Gast)


Lesenswert?

Hmm, bin ratlos. Ich sehe keine offensichtlichen Haken in der Software 
oder dem Schaltplan.

von Michael D. (etzen_michi)


Lesenswert?

Versuch mal was passiert wenn du die Optimierung umstellst.

oder den Interrupt aktivierst wo du ein volatile flag+=1 machst nachdem 
du vor den Starten der Rechnung flag=0; gemacht hast.

dann wartest du auf flag!=0.

von Achim M. (minifloat)


Lesenswert?

Florian S. schrieb:
> (Bitte beachten: ich viertle den ADC-output, damit er in 1 Byte passt)

Setz doch ADLAR und nimm dann nur ADCH.

Fragen:
Passt der Prescaler zur Taktfrequenz(hab jetzt nicht gerechnet)?
Warum setzt du das ADIF-Bit(Ist das Interruptflag, was normalerweise 
durch SetBit durch schreiben einer 1 gelöscht wird, jaja ist 
verwirrend)?
Schon mal mit der 2.56V-Referenz probiert(auch mit externem Cap)?

mfg mf

von Florian S. (tornado) Benutzerseite


Lesenswert?

Hallo,
danke für die Antworten.
also erst zu Mini Float:
das mit ADLAR könnte ich mal testen, aber sollte ja keinen direkten 
Unterschied machen, danke trotzdem.

Prescaler is 128, Takt ist 8Mhz ohne Teiler -> 62,5Khz, laut Datenblatt 
solltens zwischen 50 und 200 sein, passt also.

Ich setze das ADIF um es zu löschen, wie du schon festgestellt hast.
Warum? Gute Frage... Gewohnheit ;)

Mit der 2,56-Referenz hab ichs net probiert, weil man laut Datenblatt 
die 1,1er (zwingend) nehmen soll, wenn man ADC4=interner 
Temperatursensor messen möchte.

@Michael D.: Werd mal die andere Optimierung testen. Im Moment is -Os, 
wie üblich.
Interrupt meinst du ADC-Interrupt statt
1
while(ADCSRA&(1<<ADSC));
?

Gruß Florian

von Jonathan S. (joni-st) Benutzerseite


Lesenswert?

Mit der Temperaturmessung vom ATTiny25 hatte ich auch schon seltsame 
Phänomene... Bei mir hatte es nur funktioniert, wenn der ATTiny25 mit 
<3.5V lief. Über 3.5V hatt der Temperatursensor "die aktuelle Mondphase 
gezeigt" - nach ein paar Tagen "Einspielzeit" ging es dann aber auch mit 
5V - komisch. Was passiert, wenn Du den µC mal mit 3V laufen lässt?


Gruß
Jonathan

von Florian S. (tornado) Benutzerseite


Lesenswert?

Hallo Jonathan,
danke für deine Antwort.

Scheint als hättest du recht gehabt! hab ihn jetz grad mal bei 4V 
laufen, da is der Output konstant. Vielen Dank!

Danke auch an den Rest!

Sehr seltsam...

Gruß Florian

von Peter D. (peda)


Angehängte Dateien:

Lesenswert?

Ich hab mal nen ATtiny25 und ATtiny85 bei verschiedenen VCC auf dem 
STK500 ausprobiert.
Große Schwankungen konnte ich nicht feststellen:
1
ATtiny25, Messung alle 5s:
2
5,5V:
3
292 294 294 292 294 294 294 294 292 294 292 294
4
5,0V:
5
296 294 294 294 294 294 294 294 294 294 294 294
6
4,5V:
7
296 296 296 296 296 296 296 296 296 296 296 296
8
4,0V:
9
298 298 298 298 298 297 296 297 298 296 296 297
10
3,5V:
11
300 298 298 298 298 298 298 298 298 298 298 298
12
3,0V:
13
300 300 299 300 298 299 300 300 300 299 299 298
14
15
ATtiny85:
16
5,5V:
17
288 292 294 292 294 292 292 294 294 294 294 294
18
5,0V:
19
294 294 294 294 294 294 294 294 294 296 294 294
20
4,5V:
21
296 296 296 296 296 296 296 296 296 296 296 296
22
4,0V:
23
297 296 296 296 296 296 296 296 296 296 296 296
24
3,5V:
25
298 296 296 297 296 297 296 296 296 296 296 296
26
3,0V:
27
298 297 297 297 297 298 297 297 297 297 296 297

Es fällt nur auf, daß der Wert zu kleinen VCC leicht steigt.
Außerdem werden gerade Werte öfter ausgegeben.
Anbei das Testprogramm.


Peter

von Florian S. (tornado) Benutzerseite


Lesenswert?

Hallo Peter,
danke für die Antwort.

Hab dein Programm mal mit meinem verglichen und konnt keinen großen 
Unterschied feststellen. Testen geht leider nicht mehr, hab das Problem 
inzwischen anderweitig gelöst und fest eingebaut.

War nur irgendwie sehr auffällig, dass bei 5V solche krassen 
Schwankungen drin waren (s.o.), aber bei 4V das ganze bis auf +/-2 
konstant war.

Ich habe übrigens danach mal rein interessehalber weitere Tests gemacht 
und festgestellt, dass der ADC mit 1,1V Referenz bei mir allgemein Mist 
liefert wenn ich mehr als 4V Versorgungsspannung hab - ich vermute also, 
das Problem liegt an der Spannungsreferenz.

Gruß Florian

von Jonathan S. (joni-st) Benutzerseite


Lesenswert?

Hm, ja, ich habe dieses Phänomen auch nur bei einem ATTiny25. Ein 
anderer tut das nicht. Außerdem ist es nur bei fabrikneuen AVRs 
aufgetreten - nach einigen Tagen Betrieb ging es dann über den ganzen 
Versorgungsspannungsbereich (was ein Wort!). Vielleicht hast Du ja noch 
einen unbenutzten ATTiny25?


Gruß
Jonathan

von Peter D. (peda)


Lesenswert?

Florian S. schrieb:
> Hab dein Programm mal mit meinem verglichen und konnt keinen großen
> Unterschied feststellen.

Ich sehe grad, Du gibst ja ein Byte direkt aus.
Dann könnte es gut sein, daß Deine Baudrate bei verschiedenen VCC nicht 
stimmt und Du dadurch Mist liest.

Mein Code gibt den Wert als Text aus. Dadurch merkt man sofort, ob die 
Baudrate oder der Wert nicht stimmt.


Peter

von Jonathan S. (joni-st) Benutzerseite


Lesenswert?

Ja, aber ich habe bei mir den Wert (in °C umgerechnet) auf einer 
7-Segment-Anzeige ausgegeben. Und über 3 - 4 Volt kam nur noch Müll 
raus. Also wird es wohl nicht an der Baudrate liegen...

von Peter D. (peda)


Lesenswert?

Jonathan Strobl schrieb:
> Ja, aber ich habe bei mir den Wert (in °C umgerechnet) auf einer
> 7-Segment-Anzeige ausgegeben.

Hast Du die Anzeige gemultiplext?
Dann muß man sie mit der AD-Wandlung synchronisieren:

Beitrag "ADC mit Multiplexanzeige"

Ich würde auch erst mal den ADC-Wert anzeigen, vielleicht macht ja die 
Umrechnung den Fehler.


Peter

von Florian S. (tornado) Benutzerseite


Lesenswert?

Peter Dannegger schrieb:
> Florian S. schrieb:
>> Hab dein Programm mal mit meinem verglichen und konnt keinen großen
>> Unterschied feststellen.
>
> Ich sehe grad, Du gibst ja ein Byte direkt aus.
> Dann könnte es gut sein, daß Deine Baudrate bei verschiedenen VCC nicht
> stimmt und Du dadurch Mist liest.
>
> Mein Code gibt den Wert als Text aus. Dadurch merkt man sofort, ob die
> Baudrate oder der Wert nicht stimmt.
>
>
> Peter

Hi,
nein, daran kanns nicht liegen bei mir. Hab den Code zum senden getestet 
(mit verschiedenen bekannten werten), das hat 100% zuverlässig 
funktioniert.

Gruß Florian

von Jonathan S. (joni-st) Benutzerseite


Lesenswert?

Peter Dannegger schrieb:
> Jonathan Strobl schrieb:
>> Ja, aber ich habe bei mir den Wert (in °C umgerechnet) auf einer
>> 7-Segment-Anzeige ausgegeben.
>
> Hast Du die Anzeige gemultiplext?
> Dann muß man sie mit der AD-Wandlung synchronisieren:
>
> Beitrag "ADC mit Multiplexanzeige"
>
> Ich würde auch erst mal den ADC-Wert anzeigen, vielleicht macht ja die
> Umrechnung den Fehler.
>
>
> Peter

Das hat schon alles gepasst, ja? ;)

Die Anzeige habe ich über einen DM74LS154N (4-zu-16-Dekoder) 
gemultiplext. Die Anzeige war wärend jeder Messung dunkel. Und außerdem 
MUSS es ja am AD-Wandler oder am Temperatursensor liegen, denn nach ein 
paar Tagen ging es auch mit 5V. Glaubst Du mir jetzt? :P

Ein anderer ATTiny25 (auch fabrikneu) zeigte das selbe Verhalten, obwohl 
ein anderes Programm drauf war (ohne Umwandlung in °C).


Gruß
Jonathan

von Daniel T. (Gast)


Lesenswert?

Ich hatte letzte Woche auch das Problem mit den falschen 
Temperaturwerten. Die Ursache lag darin, dass über den PB0 (alias MOSI, 
AREF) ein Strom -in- den ATTiny geflossen ist. Dies passierte durch ein 
noch angeschlossene 5Volt Programmiergerät (MOSI war High) an einen 
3.5Volt ATTiny.

Gruss Daniel

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.