mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Temperatur im Atmega speichern möglich?


Autor: Daniel W. (pegasus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich möchte einen ATMEGA8 für Temperaturmessungen im Garten
benutzen. Einmal stündlich soll die Temperatur gemessen
und gespeichert werden.

Alle paar Tage soll der AVR am PC angeschlossen
und die Daten aus dem Atmega ausgelesen werden.

Frage : Wo speichere ich die Messdaten eigentlich?

Wird der EEProm des AVR's benutzt, um zu speichern?

2.Frage: Besteht wenn der AVR stromlos ist, die Gefahr, dass
der AVR die Daten vergisst?

Autor: Timmo H. (masterfx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Frage : Wo speichere ich die Messdaten eigentlich?
Für sowas ist das EEPROM da

>Wird der EEProm des AVR's benutzt, um zu speichern?
Das hängt von dir ab

>2.Frage: Besteht wenn der AVR stromlos ist, die Gefahr, dass
>der AVR die Daten vergisst?
Nicht wenn sie im EEPROM gespeichert sind.

Autor: PJ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht musst Du den AVR nicht stromlos schalten, sondern kannst ihn 
schlafen legen, wobei viel weniger Strom verbraucht wird.

Dann bleiben die Werte auch im RAM erhalten, solange er nicht stromlos 
wird.

Vielleicht möchtest Du auch nicht einfach nur stündlich messen, sondern 
einen Mittelwert über mehrere Messwerte pro Stunde bilden.

Wenn die Temperaturwerte für benötigten Temperaturbereich und 
Genauigkeit so skaliert werden, dass sie in ein Byte passen, hasst Du 
die maximale Aufzeichnungsdauer.

Vielleicht könntest Du Werte sogar im Flash speichern, wenn es von der 
Dauer her sonst nicht ausreicht (Urlaub...).

Autor: M. H. (doktorgnadenlos)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ganz recht, das EEPROM des ATmega8 ist mit 512 Bytes doch sehr 
übersichtlich. Wenn Du Dich etwas genauer mit den AVRs auskennst, wäre 
es denkbar den Code im Bootbereich laufen zu lassen und die Daten werden 
ins restliche Flash geschrieben. Es gibt dann aber ein paar 
Einschränkungen, so können die Daten nur pageweise gelöscht werden. Ein 
Ringpuffer ist also nur mit Einschränkungen möglich.

Eine (optionale) Checksumme sollte dennoch im EEPROM abgespeichert 
werden.

Autor: Timmo H. (masterfx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ganz recht, das EEPROM des ATmega8 ist mit 512 Bytes doch sehr
>übersichtlich.
Weil:
>Einmal stündlich soll die Temperatur gemessen
>und gespeichert werden.
und
>Alle paar  Tage soll der AVR am PC angeschlossen
>und die Daten aus dem Atmega ausgelesen werden.
da würden die 512 Byte für 3 Wochen reichen wenn 1 Messwert je 1 Byte 
belegt. Die 8 Bit pro Messwert reichen allemal aus.
Wenn du jedoch einen Zeitlichen Bezug haben willst (Datum, Uhrzeit) 
wirds in der Tat sehr eng. Da sollte man sich dann doch überlegen auf 
externe Komponenten zurückzugreifen oder den Flashspeicher dazu zu 
benutzen. Ein 2Kx8 serielles EEPROM kostet auch nur 50 cent oder so.

Autor: Timmo H. (masterfx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mir fällt gerade was ein...
Du kannst natürlich auch einfach die ersten paar Bytes dafür nehmen das 
Datum und Uhrzeit zu speichern und da du ja in festen Abständen die 
Temperatur ausliest kannst du dann ja auf den Zeitpunkt schließen. Von 
daher würden die 512 Bytes inkl. Datum und Uhrzeit immernoch für 3 
Wochen reichen.

Autor: M. H. (doktorgnadenlos)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Timmo H., der Ansatz bedingt aber, dass es keinen Spannungsausfall oder 
sonstigen Reset gibt, sonst ist der Zeitbezug weg. Dann kann aber auch 
gleich das SRAM (mit-)verwendet werden.
Soll's etwas solider sein, empfehle ich dazu eine RTC, beispielsweise 
den DS1307. In Verbindung mit einem seriellen EEPROM sind der 
SW-Entwicklung fast keine Grenzen mehr gesetzt (Übertragung der Echtzeit 
vom PC zum Zielsystem, Temperaturmessung mit exaktem Zeitstempel, nahezu 
unbegrenzte Aufzeichnungsdauer, keine Inkonsistenzen bei Schaltjahren 
etc.)

Autor: Timmo H. (masterfx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja, man kann es ja so machen, dass das Programm generell zu aller erst 
das EEPROM durchguckt, und nachsieht wo die erste "0" steht. An dieser 
Stelle wird dann der Timestamp geschrieben (meinetwegen vom RTC 
ausgelesen) und dann schreibt er fleißig die Temperaturen weiter bis der 
Speicher voll ist.
Bei der Auswertung der Daten muss man dann nur gucken wo ein Timestamp 
ist und ab da gehen die Werte ja immer wieder +1 Stunde.
Nachdem die Daten ausgelesen wurden löscht man das EEPROM wieder und der 
ganze Spaß geht von vorne los.

Autor: Spocki (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alles zu umständlich. Nimm doch einen 24C256, der koste kaum was, ist 
klein und Du musst keine solchen Klimmzüge machen. Hat 32 kByte. Wenn 
das immer noch nicht langt, gibt's auch noch grössere.

Autor: Spocki (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...und Du kommst mit einem viel kleineren AVR aus.

Autor: Timmo H. (masterfx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja wirklich umständlich finde ich das jetzt nicht.
Wahrscheinlich ist der Mega8 ja auch schon vorhanden, dann müsste man 
sich nicht einen "kleineren" kaufen. Das Argument zählt also nur wenn 
die Teile eh noch gekauft werden müssen.
Dann könnte man auch gleich den ATmega88 nehmen, der hat sogar ne RTC 
Funktion, dann würde man sich auch die Echtzeituhr sparen (die kostet 
immerhin über 2€). Das externe EEPROM würde ich aber alleine deswegen 
noch  nehmen, damit man auch noch Möglichkeit hat, an das Teil auch noch 
Luftdruck etc. mitzuloggen.
Aber letzten Endes bleibt es ja jedem selbst überlassen. Wenigstens hat 
der TO jetzt ein paar Anregungen bekommen, falls er das überhaupt alles 
gelesen hat, denn gemeldet hat er sich jetzt ja gar nicht wieder.

Autor: T0 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Super, danke für die Antworten.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.