Forum: Mikrocontroller und Digitale Elektronik Temperaturmessung mit ATmag88 intern ADC8 (Assembler)


von pacer (Gast)


Lesenswert?

Hallo,

der Mega88 hat ja einen internen Temperatursenor, mit diesem möchte ich 
die Raumtemperatur messen. Laut Datenblatt soll ich dem Aref pin mit 
einem Kondensator bestücken. Soll das heißen es reicht den Kondensator 
mit einem Pin an Aref anzuschließen und den zweiten Pin auf Masse zu 
legen oder muss der Arefpin zusätzlich auf Vcc legen?

Gruß, pacer

von spess53 (Gast)


Lesenswert?

Hi

>der Mega88 hat ja einen internen Temperatursenor

Nö, hat er nicht. Kenne ich eigentlich nur von einigen ATTinys.

MfG Spess

von max power (Gast)


Lesenswert?

der neue atmega88pa hat einen temp. sensor.
die alte version atmega88(V) hat sowas nicht.

von max power (Gast)


Lesenswert?

sorry antwort vergessen! :)

wenn es wirklich ein atmega88pa ist :), reicht ein kondensator von aref 
nach gnd.

>Arefpin zusätzlich auf Vcc legen?
da man über die register die 1,1volt interne referenz zuschalten muss um 
den sensor zu benutzen, wäre ein anders potenzial am aref pin 
schlecht(kurzschluss).

von pacer (Gast)


Lesenswert?

Zur Zeit habe ich den Mega88 PU im Einsatz.
Derzeit bekomme ich nur den Wert 1023 zurück. Da ich den Pin vorher auf 
Vcc hatte, hoffe ich mal, dass ich das Teil nicht geschrottet habe.

Wäre denn dann die 1.1V Referenzsspannung am Aref-Pin messbar?

von Jean P. (fubu1000)


Lesenswert?

pacer schrieb:
> Wäre denn dann die 1.1V Referenzsspannung am Aref-Pin messbar?

Jo.

von max power (Gast)


Lesenswert?

>Zur Zeit habe ich den Mega88 PU im Einsatz.
das ist der alte atmega88 ohne temp. sensor, das "pu" ist nur der 
gehäuse typ.

>Da ich den Pin vorher auf
>Vcc hatte, hoffe ich mal, dass ich das Teil nicht geschrottet habe.
habe es jetzt im datenblatt gesehen das der referenz pin einen 
eingangswiderstand von ca. 32k ohm hat.
dadurch sollte eigentlich nichts passieren wenn aref 5 volt hat und die 
1,1 volt interne referenz zugeschalten ist.

von pacer (Gast)


Lesenswert?

Na so alt ist der Mega88 nu auch nicht, ich hab ihn Ende letzten Jahres 
bei Reichelt gekauft (ATMEGA 88-20 PU).
Die 1,1V liegen am Ref-Pin an. Trotzdem liefert mir mein Programm 1023 
zurück.

Da es immer noch ein Fehler in der Software sein kann hier mal meine 
Initroutine:
1
 
2
ldi     temp, (1<<REFS0) | (1<<REFS1) | (0<<ADLAR) | (1<<MUX3)    ; Kanal 8, interne Referenzspannung 1.1V
3
sts     ADMUX, temp ; Bits rechts ausgerichtet (10Bit)
4
ldi     temp, (1<<ADEN) | (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0)    ; ADC enable, Teiler 128
5
sts     ADCSRA, temp

und mein Hauptprogramm:
1
Hauptschleife:          
2
 GetSampleADC8:
3
  lds    temp, ADCSRA
4
  ori    temp, (1<<ADSC) 
5
    sts     ADCSRA, temp          ; den ADC starten
6
7
 wait_adc8:
8
  lds    temp, ADCSRA
9
  sbrc    temp, ADSC            ; wenn der ADC fertig ist, wird dieses Bit gelöscht
10
    rjmp    wait_adc8
11
12
; ADC mit 10 Bit einlesen:
13
    lds      ADClow,  ADCL        ; immer zuerst LOW Byte lesen
14
    lds      ADChigh, ADCH        ; danach das mittlerweile gesperrte High Byte
15
16
;ADC-Wert in ASCII umwandeln und ausgeben
17
  rcall ChangeIntoASCII
18
  rcall warte_1s
19
  rcall warte_1s
20
  rcall warte_1s
21
;SendNewLine
22
  ldi temp, 1
23
  rcall Befehl_an_LCD
24
25
rjmp Hauptschleife

vielleicht findet ja jemand einen Fehler?

Gruß, pacer

von Justus S. (jussa)


Lesenswert?

pacer schrieb:
> Na so alt ist der Mega88 nu auch nicht, ich hab ihn Ende letzten Jahres
> bei Reichelt gekauft (ATMEGA 88-20 PU).

egal wann gekauft, rein von der Bezeichnung her ist es der µC ohne 
TempSensor...aber was steht denn drauf?

von Karl H. (kbuchegg)


Lesenswert?

pacer schrieb:
> Na so alt ist der Mega88 nu auch nicht, ich hab ihn Ende letzten Jahres
> bei Reichelt gekauft (ATMEGA 88-20 PU).

Hinweis:
Da ein Chip nicht 'schlecht wird' wenn er länger liegt, ist mit 'altem 
Prozessor' bzw. 'neuem Prozessor' NICHT die Lagerzeit gemeint :-)

von pacer (Gast)


Lesenswert?

stimmt schon, hätte aber nicht geglaubt, dass Reichelt die Teile für 
Jahre einkauft. Bezeichnung so wie ich schon geschrieben hatte.
was anderes steht leider nicht drauf.
Also doch ohne? :-(

von Hannes L. (hannes)


Angehängte Dateien:

Lesenswert?

Gibt es den "Neuen" überhaupt schon???
Ich habe noch nichtmal das Datenblatt dazu eingekellert, so neu ist der.

Mit Tiny24 habe ich mal ein Thermometer gebaut (siehe Anhang). Die 
Hardware ist hier beschrieben:
http://www.hanneslux.de/avr/divers/pm24/index.html

...

von pacer (Gast)


Lesenswert?

Ähm, wo finde ich denn das Änderungsprotkoll zu den Mega88?

von Chris (Gast)


Lesenswert?

>Gibt es den "Neuen" überhaupt schon???
Habe ihn schon vor Monaten mal bei Digikey oder Mouser gekauft.


>Ähm, wo finde ich denn das Änderungsprotkoll zu den Mega88?
Nirgendwo. Muss man wohl die Datenblätter vergleichen :-)

von Hannes L. (hannes)


Lesenswert?

> Habe ihn schon vor Monaten mal bei Digikey oder Mouser gekauft.

Nagut, für mich gibt es den erst, wenn er bei normal zugänglichen 
Elektronik-Versendern zum fairen Preis erhältlich ist.

...

von pacer (Gast)


Lesenswert?

Aha, da habe ich jetzt also noch den allerersten Mega88 und ich bräuchte 
einen mit der Bezeichnung Mega88PA-PU?
Kann man die Revision des Chips auch anhand der Signatur erkennen?

von Chris (Gast)


Lesenswert?

Was heißt normal zugänglich? Dort kann jeder bestellen. Im Gegensatz zu 
den großen deutschen Distributoren ist es bei denen kein Problem auch 
als Privatkunde zu bestellen. Die Lieferung erfolgt nur etwas langsamer 
(ca. 3 Werktage). Und im Vergleich zu Farnell und RS finde, zumindest 
ich persönlich, es dort vergleichsweise günstig.

von max power (Gast)


Lesenswert?

>;Kanal 8, interne Referenzspannung 1.1V
der atmega88 hat keinen kanal 8 der ist laut datenblatt "reserved" 
weshalb auch ein falsches ergebnis ausgelesen wird.

>ich bräuchte einen mit der Bezeichnung Mega88PA-PU?
so ist es.

>Kann man die Revision des Chips auch anhand der Signatur erkennen?
ja kann man.
der atmega88pa hat laut datenblatt : 1E930F
und die alte version atmega88      : 1E930A

>Ähm, wo finde ich denn das Änderungsprotkoll zu den Mega88?
http://www.atmel.com/dyn/products/app_notes.asp?family_id=607#Migration_Notes

AVR512: Migration from ATmega48/88/168 to ATmega48P/88P/168P
AVR528: Migrating from ATmega48P/88P/168P to ATmega48PA/88PA/168PA

die atmega88P version gab es auch noch die wurde dann von der atmega88pa 
version abgelöst.

von Hannes L. (hannes)


Lesenswert?

> ... Und im Vergleich zu Farnell und RS finde, zumindest
> ich persönlich, es dort vergleichsweise günstig.

Schlechter Vergleich, für mich zählt da eher reichelt, CSD, Darisus und 
Ähnliche...

...

von Volker U. (volkeru)


Lesenswert?

Nur mal so zur Information: Laut Datenblatt beträgt die Genauigkeit des 
internen Temperatursensors +/-10°C. Ich kenne niemanden, der mit einer 
auf 10 Grad genauen Temperaturmessung zufrieden wäre! Dieser Sensor ist 
lediglich dazu gedacht, die Prozessortemperatur in etwa abschätzen zu 
können, um ihn bei drohender Überlastung runterzutakten, Warnmeldungen 
auszugeben oder andere Maßnahmen zur Abkühlung zu treffen. Einen anderen 
Zweck hat dieser Sensor nicht!!!

Nachteilig ist es übrigens, dass die interne 1,1 Volt Referenzspannung 
nicht genutzt werden kann, wenn man eine externe Spannung an Aref 
anliegen hat, mit der man andere ADC Messungen durchführt. D.h. in 
diesem Fall kann die Messung mit dem internen Temperatursensor nicht bei 
1,1 Volt Referenzspannung stattfinden, sondern muss mit der Spannung an 
Aref stattfinden, was aber auch geht. Die ausgelesenen 
(Temperatur-)Werte sind dann "zu klein", wenn die Spannung an Aref > 1,1 
Volt ist. Man muss sie daher entsprechend skalieren mit dem Faktor 
(Uaref/1,1V). Bei 5 Volt an Aref beträgt dieser Faktor also 4,55. Das 
bedeutet auch, dass in diesem Fall der Temperaturwert "nur" auf 4,55 
Grad genau ist. Aber das ist völlig egal, weil der Sensor ja eh nur mit 
einer Genauigkeit von 10 Grad misst.

Wenn ich bei meinem Atmega328P an Aref z.B. 5 Volt Referenzspannung 
anliegen habe und eine Temperaturmessung durchführe, erhalte ich einen 
Wert von 76-77 bei 25 Grad Chip-Temperatur. Mit dem Faktor 4,55 
skaliert, ist das also ein Wert um 350 (Achtung! Das sind KEINE 
Millivolt, sondern ADC-Werte, also LSB). Umgerechnet ist diese Spannung 
also ca. 370 mV.

Wenn man diese Regeln beachtet, kann man auch mit 5 Volt 
Referenzspannung (oder anderen Vcc) eine gute Abschätzung der 
Prozessortemperatur erreichen.

Gruß, Volker

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.