Forum: Mikrocontroller und Digitale Elektronik Fragen zu Speicher eines Datenlogger


von UBoot-Stocki (Gast)


Lesenswert?

Hi,

ich denke im Moment über einen Datanlogger nach. Das Gerät soll 
verschiedene Informationen über die Ports (Analog wie digital) ermitteln 
und in Sekunden- oder 5 Sekunden-Intervallen in einem Speicher ablegen. 
Später möchte ich dann über die serielle Schnittstelle die Daten auf 
meinen PC speichern.

Rhetorische Frage: Welchen Chip brauche ich ? Er muß UART, ADC und 
mindestens 3 Ports haben -> Ein Mega8 sollte ausreichen.

Jetzt zu meiner Frage:
Ich kenne mich mit auf dem Markt verfügbaren Speichern überhaupt nicht 
aus. Gehört habe ich von RAMs, seriellen RAMs usw.

Was ist den der für dieses Projekt geeignete Speicher ?

Anforderungen: Möglichst wenig Anschlüsse, Mit möglichst wenig externen 
Bauteilen (idealerweise keine) und natürlich möglichst viel Speicher ...

Wer kann helfen ?

Gruß

UBoot-Stocki

von Manfred Glahe (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
zuerst mußt du einmal ermitteln wie groß Dein Speicher sein soll und ob 
die Daten gegen Spannungsausfall usw. gesichert werden müssen. Ein FRAM 
z.B. mit 256KBit ist im SOP8 verfügbar und benötigt keinerlei 
Erhaltungsaufwand. Die extrem kurzen WR\ Pulse sind daher auch 
Störsicher und WR\ Algoritmen wie bei einem EEProm (wenns nicht in 
Hardware implementiert ist) erhöhen den Programmspeicheraufwand und 
setzen die Schleifenzeit herrunter.
Ich selbst setze nur noch auf serielle ADW (außer wenige 
Spazialanwendungen) da die heute sehr genau, schnell und extrem wenig 
Platz beanspruchen. µP interne ADW benutze ich nur noch für einfache 
Anwendungen. Das serielle ADW- Speicher- System hat den Vorteil, daß 
variable Bytelängen und Speicherkapazitäten möglich sind. Ein fertiger 
funktionierender Datalogger kann also durch Auswechseln eines ADW oder 
Speicher von der Auflösung her auf die neue Anwendung zugeschnitten 
werden. Mit nur einer Platine und dem veränderten Treiberprogramme (z.B. 
Parameter 8=Bit auf 12=12BIT) kann man fast alle Aufgaben lösen.
Im Anhang mal ein aktuelles Projekt (Schaltung und Platine) eines 
Dataloggers für akkustische Gesangsaktivitäten von Heuschrecken im Feld 
und die dazugehörige Aufzeichnung der jeweiligen Temperaturen.
Ich benutze dazu den PIC16F84. Der hat nur 18 Pins und ist im DIL 
Gehäuse untergebracht (diesen Type verwende ich in vielen 
Applikationen). Ich lese über den PC- P- Port ein aber es gibt den PIC 
selbstverständlich auch mit RS232.
Da es hier im Forum häufig zu lesen war was der PIC alles nicht können 
soll nun mal eine Klarstellung. Selbstverständlich kann ich mit dem PIC 
indirekt adressieren um z. B. Tabellen zu bearbeiten oder Datenblöcke zu 
verschieben senden usw ( fsr Register, indf).
Für einen Datalogger ist natürlich die Abtastzeit wichtig! Aus diesem 
Grund wird allzu schnell eine Echtzeituhr benutzt was den 
Speicheraufwand in die Höhe treiben kann. Der PIC macht das sebst und 
stellt die Startzeit fest. Danach nur noch Inkremente in der 
entsprechenden Abtastzeit (z.B. SEK, MIN usw). Damit wird kein Speicher 
verschwendet. Je nach Anwendung können auch nur die Unterschiede opder 
Abstände gespeichert werden. Klartext (nach dem Auslesen) kann dann der 
PC draus machen, der kann das wesentlich effizienter. Die digitalen 
Informationen liest der PIC direkt ein (paralell oder seriell). Wichtig 
ist die Organisation der einzelnen Byt's im seriellen Speicher. Durch 
geschickte Wahl kann viel Platz gespart werden. Da am Start des Loggers 
die Zeitinkremente klein sind kommt man mit nur einem Byte aus gegen 
Ende lassen sich 2 oder mehr Byt's unterbringen (festgelegt in einem 
Config Byte und dem 1. neuen veränderten Block vorrangerstellt). 
Desgleichen kann man auch mit anderen Daten verfahren.

MfG  Manfred Glahe

von Manfred Glahe (Gast)


Angehängte Dateien:

Lesenswert?

Noch die Schaltung.

von Manfred Glahe (Gast)


Angehängte Dateien:

Lesenswert?

Die derzeitige FRAM Organisation der angegebenen Schaltung.

von Markus Burrer (Gast)


Lesenswert?

Hi,
mir schweb auch so ein ähnliches Projekt im Hinterkopf rum. Allerdings 
möchte ich MMC Speicherkarten verwenden. Belegen relativ wenig Ports, 
ist Spannungsausfallsicher und in den aller meisten Fällen schnell 
genug.
Wenn man die Daten dann noch gleich als .txt Datei ablegt kann man die 
Karte sogar einfach in den PC stecken und auslesen
Und mit bis zu 128MB sicher genug Reserve.
Für den AVRco wird es bald eine Bibliothek zu Ansteuerung von MMC Karten 
und eine für das FAT16 Filesystem geben. Damit wird das Auslesen von MMC 
zum Kinderspiel

Gruß
Markus

von MooseChecker (Gast)


Lesenswert?

Hi,

da Du Dich ja nun auch mit AVRs beschäftigst, kannst Du ja auch bei 
Tante Atmel bleiben.
http://www.atmel.com/products/DataFlash/

Aber ansonsten würd ich auch die MMC/SD-Variante vorziehen.
Die laufen an einer 3V-SPI-Schnitte und du kannst sie entnehmen. Das 
Protokoll ist ein wenig tricky, aber läuft wenn man den Bogen raus hat 
sehr sicher. Kannst Du bestimmt bei einem der vielen MP3-Playern 
ergattern.


MooseC

von Peter D. (peda)


Lesenswert?

Wie schon gesagt wurde, es hängt alles von der Datenmenge ab.


Sehr gute Erfahrungen habe ich mit seriellen EEPROMs gemacht, die sind 
auch sehr preiswert. Ich habe den AT24C512 (64kB) verwendet. Man kann 
davon bis zu 8 Stück parallel schalten (=512kB).
Dadurch, daß sie ein serielles Protokoll benötigen, sind sie auch sehr 
störsicher.

Die seriellen EEPROMs unterstützen auch Blockschreiben, d.h. Du kannst 
Datenpakete von 64Bytes in einem Rutsch innerhalb von nur 10ms 
reinschreiben.

Beispielroutinen findest Du hier:

http://www.specs.de/users/danni/appl/hard/i2c/index.htm

http://www.specs.de/users/danni/appl/soft/c51/eeprom/index.htm


Batteriegestützte SRAMs sind dagegen sehr empfindlich. Da reichen 
manchmal schon 10ns kurze Störnadeln auf der /WE-Leitung, um aus Deinen 
Daten Hackfleisch zu machen.

Ich hatte damit auch schon mal schlechte Erfahrungen gemacht.
Insbesondere die Einschalt- und Ausschaltphase ist da sehr kritisch. Man 
benötigt daher einen Supervisor-IC, der in dieser Zeit den SRAM 
zuverlässig disabled und so gegen eine bei Unterspannung verrückt 
spielende CPU schützt.


Peter

von Markus Burrer (Gast)


Lesenswert?

Richtig, alo entweder man braucht einen AVR mit 3,3V oder einen 
Treiberbaustein wie den 74VHC08, der eine Pegelanpassnung vornimmt

von Markus Burrer (Gast)


Lesenswert?

@ Peter: stimmt, serielle EEPROMS sind auch noch eine Möglichkeit. Von 
den 24C512 lassen sich jedoch nur 4 adressieren da sie nur 2 
herausgeführte Adressbits haben. Die 24C1024 haben nur noch 1 Adressbit. 
Soweit ich weiß ist der maximale Adressraum 256kByte

von Peter D. (peda)


Lesenswert?

@Markus,

stimmt, man kann nur 4 Stück parallel schalten.
Aber da man ja nur 2 Leitungen benötigt, kann man leicht mit einer 
3.Leitung 2 * 4 EEPROMS ansprechen.


Die Pagesize des AT24C512 ist nicht 64Byte sondern 128Byte (bzw. 256Byte 
beim AT24C1024).


Peter

von UBoot-Stocki (Gast)


Lesenswert?

Hi,

da hier immer wieder die Frage nach der Speicherkapazität gefragt wurde 
folgende Annahmen/Überlegungen:

Ich nehme mal an, daß ich pro Messintervall 10-20 Byte speichern möchte. 
Bei einer Sekundengenauen Auflösung wären das 20*3600 = 7,1 KB. Mit 
einem 64 kB-Speicher könnte ich (bei Messung alle 100ms !!!) ca. 54 
Minuten Speichern

Das ist mehr als genug !!! Daher 64KB sollten reichen ...

Eine weiter Anforderung habe ich aber noch: Der Speicher sollte ein 
DIL-Gehäuse  haben. Mit SMD habe ich so meine Probleme ...

Gruß und schonmal Danke für die schnellen Infos bisher !

UBoot-Stocki

von MooseChecker (Gast)


Lesenswert?


von Markus Burrer (Gast)


Lesenswert?

Na dann wärst du mit einem AT24C512 als DIP bestens bedient. Allerdings 
wüsste ich im Mom nicht wo man die in einzelstückzahlen bekommen könnte. 
Reichelt hat glaub ich nix

von UBoot-Stocki (Gast)


Lesenswert?

Hi,

ich habe mir mal das Datenblatt der Atmels reingesaugt. Die scheinen 
genau das zu sein, was ich suche !!!

Hat mit denen schon jemand was gemacht ? Wie sind die Erfahrungen? Gibts 
vielleicht sogar einen Beispielcode ?

Gruß

Uboot-Stocki

von Markus Burrer (Gast)


Lesenswert?

Die Ansteuerung von so nem seriellen EEPROM ist total simpel. Kommt nur 
drauf an mit welchem Controller und mit welchem Compiler

von UBoot-Stocki (Gast)


Lesenswert?

Hi,

Controller: Mega8
Sprache: Assembler :-)

Gruß

UBoot-Stocki

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.