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
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
Die derzeitige FRAM Organisation der angegebenen Schaltung.
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
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
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
Richtig, alo entweder man braucht einen AVR mit 3,3V oder einen Treiberbaustein wie den 74VHC08, der eine Pegelanpassnung vornimmt
@ 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
@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
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
dann doch eher einen SPI oder I2C EEPROM http://www.microchip.com/download/lit/pline/memory/ic/21189f.pdf http://www.microchip.com/download/lit/pline/memory/spi/21223e.pdf MooseC
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
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
Die Ansteuerung von so nem seriellen EEPROM ist total simpel. Kommt nur drauf an mit welchem Controller und mit welchem Compiler
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.