Moin, für einen Klimalogger möchte ich minütlich Daten aufnehmen und die Zeit mitspeichern. Als µC dachte ich mir dazu einen ATmega8515. Wie aber sollte ich die minütliche Aufnahme anstellen? Am liebsten wäre mir ein IC, das einen Interrupt erzeugt und von dem die Zeit relativ einfach abgerufen werden kann. Bisher habe ich nur den DS1307 gefunden(elektor 1/04), dessen Zeitdaten über einen I2C-Bus erreicht werden. Ist dessen Einsatz sinnvoll oder gibt es einen besseren Weg? Gruß, Jörn
Hallo Es gibt viele Möglichkeiten. Dein uC hat meht als einen Timer, oder sind die schon belegt oder defekt. Was spricht gegen die Verwendung dieser. Timer können deinen uC auch aus dem Schlaf wecken, falls das Gerät mit Batterien laufen soll. Klar ein RTC geht auch. MFG Dieter
Timer besitzt er schon, defekt sind sie auch nicht und belegt ebenfalls nicht. Allerdings halte ich die für relativ ungenau, außerdem soll er ja auch die Uhrzeit mitspeichern, so dass man diese immer wieder neu einstellen müßte, wenn der µC zum Beispiel zur Datenübertragung an den PC angeschlossen wurde. Obendrein wäre mir ein Minutentakt am liebsten, der mit den Timern schwierig zu realisiern ist. Gibt es keine elegantere Lösung? Gruß, Jörn
Timer besitzt er schon, defekt sind sie auch nicht und belegt ebenfalls nicht. Allerdings halte ich die für relativ ungenau, außerdem soll er ja auch die Uhrzeit mitspeichern, so dass man diese immer wieder neu einstellen müßte, wenn der µC zum Beispiel zur Datenübertragung an den PC angeschlossen wurde. Obendrein wäre mir ein Minutentakt am liebsten, der mit den Timern schwierig zu realisiern ist, meine ich. Gibt es keine elegantere Lösung? Gruß, Jörn
hat dein datenlogger einen grossen speicher und arbeitet unabhaengig vom PC ? falls PC immer -on- ist, kann er doch minuetlich die daten abfragen.
Hallo Hier ein paar RTC IC von http://www.dse-faq.elektronik-kompendium.de/dse-faq.htm RTC-ICs: M41T00 (ST,0.8uA), PCF8563/8573/8583 PCA8565 (10-200uA, Alarm) PCF8593 (wenig Strom, Alarm, Philips), DS1307 (Dallas) Von Dallas gibt es aber auch fertige Datenlogger IC z.B. http://para.maxim-ic.com/compare.asp?Fam=RTC&Tree=Sensors&HP=Sensors.cfm&ln=&SORD=638&FT_638=7251&ITEMLIST=121465,121466,121503,128290 MFG Dieter
Danke für die Hilfe! Der Datenlogger soll über mindestens 32 KB Datenspeicher verfügen, eventuell 64 KB. Er ist, wenn überhaupt, nur kurzzeitig an den PC angeschlossen, so dass eine minütliche Abfrage durch den PC nicht funktioniert. Wie funktioniert die Zeitdatenübertragung bei einer Funkuhr? Könnte man daraus vielleicht die Zeit aufnehmen und es dann doch mit dem internen Timer realisieren? Gruß, Jörn
@Jörn, "...Allerdings halte ich die für relativ ungenau..." "...Minutentakt am liebsten, der mit den Timern schwierig zu realisiern ist..." Wo hast Du denn bloß diese Märchen her ? Die Timer arbeiten wie ein TTL-Zähler auf den Takt genau, bloß man kann sie viel universeller an seine Anforderungen anpassen. Mit nur 8 Bytes als zusätzliche Zählerstellen kannst Du sogar Giga-Jahre zählen, Minuten sind daher völlig problemlos. Sieh Dir mal diverse Uhrenprogramme an, wie einfach da alles ist. Daß meine Uhrenprogramme nur bis zum 28.2.2100 den genauen Wochentag und damit die genaue Sommerzeit machen, düfte heutzutage noch niemanden stören. Externe RTC-Steine machen ausschließlich dann Sinn, wenn geringste Stromaufnahme im Batteriebetrieb gefordert ist. Aber viele moderne µC haben schon Anschlüsse für ein 32kHz Quarz um damit im Schlafmodus (wenige µA) selber die Zeit weiter zu zählen. Peter
Davon mal abgesehen, ich vermute das dein Datenlogger fast exakt immer im gleichen Interval die Daten loggt, richtig ? Also ist die Speicherung der Zeit zum Log garnicht nötig. Es reicht dann neben den normalen Daten-Log-Packeten ein Zeit-Loh-Packet ins log zu speichern. Ausgehende von dieser Startzeit hat der AVR dann zB. alle 100ms ein neues Datenpacket geloggt. Die auswertende Software "rekalibriert" dann beim sequentielle Lesen des Logs bei einem Zeit.Log-Packet dann nur die interne virtuell Uhr. Bei jedem Daten-Log-Packet wird dann dieses Zeit um ein festes Intervall erhöht, und schon hat man die Zeit des Packetes. Dies spart natürlich ne Menge Speicher. Denn überlege mal genau, bei einem RTC haste Jahr/Monat/Tag Stunde/Minute/Sekunde, also meisten schonmal 6 Bytes, wenn du keine Tricks anwenden willst. Sollten die Datenpacket nicht im gleichen Intervall kommen dann könnte man einen Offset in Millisekunden/100 zum letzten Zeit-Packet speichern. Angenommen 16 Bit wird dafür verwendet, so hast du dann 2^16 Millisekunden/100 (ca. 100 Minuten) zeitspanne bis du das nächste Zeit-Log-Packet im Log speichern müsstest. Gruß Hagen
sehe gerade >> möchte ich minütlich Daten aufnehmen und die Zeit Also würde 1 Byte Zeitoffset in Sekunden von einem Datenpacket zum nächsten ausreichen. D.h. im Log steht als erstes ein Zeitpacket das die Beginzeit angibt. Dann wird nur der sekündliche Abstand von Datenpacket zu Datenpacket als 1 Byte in den Datenpacketen gespeichert. Somit verlagerst du den Aufwand und Speicherbrauch in die auswertende Software. Die liest das Log sequentiell ein und addiert zu internen virtuellen Zeit einfach die Sekunden aus dem Datenpacketen drauf. Die Ermittlung des Abstandes in Sekunden zwischen zwei Packeten kannst nun entweder absolut durch das Auslesen einer externen RTC berechnen, oder einfach mit dem internen Timer. Ich würde den internen Timer nehmen so wie Peter es schon vorgeschlagen hat. Überlege mal, du hast zB. einen externen Quarz von 4.987.654 Hz am AVR dann ist der immer "genauer" in seiner Auflösung als ein 32.768 Hz RTC Quarz. Gruß Hagen
also ich hab mit einem 8515 eine uhr für einen laugenweckzähler realisiert und die läuft schon seit anfang des jahres und hat so gut wie keine zeitfehler ( wenige sec) der 8515 laeuft mit einem 8mhz quarz
>Überlege mal, du hast zB. einen externen Quarz von 4.987.654 Hz am > AVR dann ist der immer "genauer" in seiner Auflösung als ein 32.768 > Hz RTC Quarz. Rechnerisch ist aber der kumulierte Fehler in Sekunden pro Jahr exakt der gleiche wenn relativ zueinander die Quarze die gleiche Fehlerabweichung besitzen ! Es dürfte also theroetisch keinerlei Unterschiede machen ob man einen RTC Quarz oder jeden beliebig anderen nimmt. Der Unterschied im tatsächlichen Fehler kommt nur daher das sich die minimalen Taktabweichung in der Software kumulieren. D.h. jede RTC ist wenn der Quarz, egal welche Taktfrequenz er hat, absolut exakt läuft auch immer exakt. Es macht also, wie Peter treffend sagte, keinen Unterschied ob man die RTC mit dem AVR oder externem RTC Baustein baut. Ich würde den AVR als Uhr benutzen und sicherstellen das exakt 1 mal pro Minute ein Datenpacket geloggt wird. Nun brauch man beim Begin des Loggings nur einmalig ein Zeit-Packet loggen, und die Zeiten der Datenpackete in Minuten ergeben sich einfach durch Addition der Datenpackete seit dem Zeit-Packet. Sollte mal beim AVR ein Aussetzer vorkommen oder Zeitungenauigkeiten ausgeglichen werden, dann speichert der AVR im Log einfach ein neues Zeit-Packet. Gruß Hagen
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.