Hi zusammen, ich möchte mir ein kleines Geräte bauen, mit dem ich diverse Spannungen alle 2-3 Sekunden messen kann, um z.B. den Ladevorgang von Akkus Graphisch darstellen kann. Dazu würde ich einen Arduino UNO oder NANO verwenden und einen externen EEPROM, auf dem die Messwerte gespeichert werden sollen, damit ich diese dann später am PC abrufen kann. Ich hätte folgende EEPROM´s zur Auswahl: SDA 2526 SDA 2546 24C08B1 SDA 3526. Ich habe gestern erst mal versucht mit folgender Anleitung http://www.netzmafia.de/skripten/hardware/Arduino/EEPROM.html Werte in den EEPROM zu speichern und anschliessen wieder auszulesen. Jedoch gibt mir der Serielle Monitor immer nur eine 2 aus. Aufgebaut habe ich das wie das Bild im Anhang zeigt, nur mit dem SDA2526. Könnt ihr mir helfen, damit ich wenigstens mal einen Wert auf den EEPROM speichern und wieder auslesen kann. Danke und viele Grüße! Peter #include <EEPROM.h> // Groesse des EEPROMs #define EESIZE 1024 int rnd_nr, i; void setup() { Serial.begin(9600); Serial.println("Schreibe Zufallszahlen ..."); for (i = 0; i < EESIZE; i++) { rnd_nr = random(255); EEPROM.write(i, rnd_nr); } Serial.println("Lese EEPROM ...); for (int a=0; a < EESIZE; a++) { rnd_nr = EEPROM.read(a); Serial.print("Adresse: "); Serial.print(a); Serial.print(" Inhalt: "); Serial.println(rnd_nr); delay(25); } } void loop() { /* Empty loop */ } Das folgende Programm zeigt das Lesen und Schreiben von Float oder Strings. #include <EEPROM.h> void setup() { float f = 123.456; /* Float zum Schreiben */ float g; /* Fuer das Lesen */ char Hello[] = "Hello World!"; /* String */ char Buffer[100] = {0}; /* Fuer das Lesen */ int adresse = 0; /* EEPROM-Startadresse */ Serial.begin(9600); EEPROM.put(adresse, f); /* Float schreiben */ adresse += sizeof(float); /* Groesse eines Float addieren */ EEPROM.put(adresse, Hello); /* String schreiben */ adresse = 0; /* Adresse wieder auf 0 setzen */ EEPROM.get(adresse, g); /* Daten einlesen und Ausgeben */ Serial.println(g, 3); adresse += sizeof(float); EEPROM.get(adresse, Buffer); Serial.println(Buffer); /* Hexdump EEPROM */ for (int i = 0; i < (sizeof(float)+sizeof(Hello)); i++) Serial.println(EEPROM[i],HEX); } void loop() { /* Empty loop */ }
Vorweg: der SDA2526 ist ein sehr altes Device und hat sowieso nur 256 Speicherzellen à 8 Bit. (#define EESIZE 256) Der Schlüssel liegt aber in der Adresse des Chips. Wenn du alle Adressleitungen (A0-A2) mit Masse verbindest, ist die I²C Adresse 0xA0, bzw, in der 7-bit Schreibweise 0x50. Daraufhin überprüfe mal bitte sowohl die Beschaltung des Chips als auch die Datei 'EEPROM.h'. Logischerweise muss der Chip mit SDA und SCL korrekt an den Arduino angeschlossen werden. GND muss verbunden sein und der Chip braucht auch +5V. Dein 'Plan' zeigt das zwar so, aber Kontrolle ist besser. I²C braucht Pullups an SDA und SCL. Du solltest also noch 2 Widerstände mit 1k-2,2k von beiden Leitungen gegen +5V legen.
:
Bearbeitet durch User
Peter H. schrieb: > Graphisch darstellen kann. Dazu würde ich einen Arduino UNO oder NANO > verwenden und einen externen EEPROM, auf dem die Messwerte gespeichert > Ich habe gestern erst mal versucht mit folgender Anleitung > http://www.netzmafia.de/skripten/hardware/Arduino/EEPROM.html Werte in > den EEPROM zu speichern und anschliessen wieder auszulesen. Jedoch gibt Wenn du Daten im externen EEPROM speichern willst, hilft es wenig, wenn du das interne EEPROM der AVR ansprichst... Stichwort ist hier I2C... Ein google nach "EEPROM I2C ARDUINO" liefert z.B. das hier: https://playground.arduino.cc/Code/I2CEEPROM
Peter H. schrieb: > Danke und viele Grüße! Bist seit drei Monaten hier angemeldet und schaffst es nicht dieese einfachen Regeln zu beachten? Der Schaltplan ist unter aller Sau, das kann man besser machen, scho allein als Respekts-Erzeugung gegenüber der Leserschaft (die ja helfen soll). Oder braucht's keinen Respekt?
Mit <EEPROM.h> kannst du nur den internen EEPROM verwenden, der in deinem Atmega verbaut ist.
Dannoch Dashier schrieb: > Bist seit drei Monaten hier angemeldet und schaffst es nicht > dieese einfachen Regeln zu beachten? Antworte einfach nicht, wenn´s dir nicht passt. Punkt. lg. Heiner
Analoge Messwerte haben sinnvollerweise meist mehr als 8bit. Wenn du nun nicht irgendwie packen willst heisst das 2Byte Speicherplatz/Messwert. Alle 2 Sekunden -> für eine Stunde brauchst du schon mal 4kByte, mit deinen Kleckerteilen kommst du da nicht weit. Die gibts auch in "gross" für kleines Geld. Und vielleicht willst du auch mal schneller messen - dann könnte die lange Schreibzeit der herkömmlichen Eeproms stören. Also würde ich an deiner Stelle direkt auf FRAM setzen. Ja, sind teurer. Aber bei einem Stück spielt das wohl kaum ne Rolle.
Du kannst die Messwerte auch im viel größeren internen EEprom des Mikrocontrollers speichern und über die USB Schnittstelle zum PC übertragen.
Hi, danke erstmal für die Antworten. Ich habs auch mal mit dem Sketch im Anhang probiert. http://profhof.com/eeprom-als-externer-speicher/ Damit hats auch nicht geklappt. Zu dem Link von Rainer habe ich noch eine Frage und zwar verstehe ich nicht so ganz wie ich da Werte in den EEPROM speichere und diese wieder auslese. Bräuchte ich da nicht eigentlich einen 2. Sketch? Okay, und wie würde dann so ein sketch aussehen, wo ich den internen EEPROM nutze?
> wie würde dann so ein Sketch aussehen, wo ich den internen EEPROM nutze?
Wir werden Dir hier keine kompletten Programme vorkauen, es sei, wir
haben zufällig was passendes vorliegen.
Wie man auf das interne EEPROM zugreift, ist in der Dokumentation zu
Arduino und in zahlreichen Tutorials (auch Videos) beschrieben.
Ich habe ja schon zur Kenntnis genommen, dass die jungen Leute von heute
immer weniger lesen und auch eine magere Aufmerksamkeitsspanne haben.
Dennoch sollte man sich zuerst selbst informieren, bevor man Fragen
stellt.
Durch Internet und Google ist der Zugang zu Informationen unglaublich
einfach geworden. Warum nutzt du diese Technik nicht?
Peter H. schrieb: > Ich habs auch mal mit dem Sketch im Anhang probiert. > http://profhof.com/eeprom-als-externer-speicher/ > > Damit hats auch nicht geklappt. Auf der Seite ist auch ein Sketch für einen I2C Scanner abgebildet Hast du den schon mal probiert? Wird das EEPROM überhaupt am Bus gefunden?
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.