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
Hi
>der Mega88 hat ja einen internen Temperatursenor
Nö, hat er nicht. Kenne ich eigentlich nur von einigen ATTinys.
MfG Spess
der neue atmega88pa hat einen temp. sensor. die alte version atmega88(V) hat sowas nicht.
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).
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?
pacer schrieb:
> Wäre denn dann die 1.1V Referenzsspannung am Aref-Pin messbar?
Jo.
>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.
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
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?
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 :-)
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? :-(
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 ...
Ähm, wo finde ich denn das Änderungsprotkoll zu den Mega88?
>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 :-)
> 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.
...
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?
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.
>;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.
> ... 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... ...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.