Pages: [1]   Go Down
Author Topic: Wie würde man die Kilometerlaufleistung eines digitalen Tachos speichern ?  (Read 1063 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Sr. Member
****
Karma: 11
Posts: 457
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi,
Meine Frage ist nur theoretisch, inspiriert durch diesen Thread http://forum.arduino.cc/index.php?topic=172506.0

Normalerweise werden die Kilometer aufaddiert und dauerhaft gespeichert.
Klar in einen EEprom, nur die Speicherstelle des internen EEproms ist nach 100.000 Zyklen kaputt.
Man könnte die EEprom Adressen wechseln, nur muss man dann die Adresse vorher speichern.
Die Katze beisst sich in den Schwanz 

Man muss auch bei jeden Kilometer einen EEprom Zugriff machen, da man nie weiß wann die Bordspannung ausfällt, z.b Unfall etc.

Das es funktioniert sieht man in unseren Autos.
Kommen da spezielle EEproms zum Einsatz ? , oder ein Algo der die Standart EEprom's schont
Logged

Arduino UNO,MEGA,Pro Mini Ethernet Shield

Germany S-H
Offline Offline
Faraday Member
**
Karma: 134
Posts: 2854
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Meine Frage ist nur theoretisch, inspiriert durch diesen Thread http://forum.arduino.cc/index.php?topic=172506.0

Normalerweise werden die Kilometer aufaddiert und dauerhaft gespeichert.
Klar in einen EEprom, nur die Speicherstelle des internen EEproms ist nach 100.000 Zyklen kaputt.

Am besten speicherst Du den Kilometerstand in einen batteriegepufferten RAM-Speicher, der beliebig oft beschreibbar ist.

Z.B. hat ein DS1307 Uhrenchip 56 Bytes RAM-Speicher, die von der Pufferbatterie der Uhr mitgepuffert werden.

Und wenn Du einen DS1307 in Deinen Arduino-Tacho einbaust, kannst Du gleich noch eine Funktion "Uhrzeit" für den Tacho vorsehen.
Logged

Offline Offline
Full Member
***
Karma: 1
Posts: 161
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Mein Fahrrad Computer verliert alle Daten wenn die Batterie leer ist. Die hält aber sehr lange.


Micky
Logged

Germany
Offline Offline
Newbie
*
Karma: 4
Posts: 33
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi,
Meine Frage ist nur theoretisch, inspiriert durch diesen Thread http://forum.arduino.cc/index.php?topic=172506.0

Normalerweise werden die Kilometer aufaddiert und dauerhaft gespeichert.
Klar in einen EEprom, nur die Speicherstelle des internen EEproms ist nach 100.000 Zyklen kaputt.
Man könnte die EEprom Adressen wechseln, nur muss man dann die Adresse vorher speichern.
Die Katze beisst sich in den Schwanz 

Man muss auch bei jeden Kilometer einen EEprom Zugriff machen, da man nie weiß wann die Bordspannung ausfällt, z.b Unfall etc.

Das es funktioniert sieht man in unseren Autos.
Kommen da spezielle EEproms zum Einsatz ? , oder ein Algo der die Standart EEprom's schont

Die EEPROM-Adresse, die den aktuellen Zähler enthält, kann man durchaus im EEPROM speichern. Diese Angabe ändert sich ja nicht 100.000 mal, sondern nur, wenn man auf eine neue Speicherzelle wechselt. Ich würde es z. B. so machen:
- in den EEPROM-Zellen 0 und 1 die Kilometer zählen. Das geht mit 16 bit bis zum Kilometerstand 65535,
- wenn der Zähler überläuft, also wieder auf 0 springt, in den Zellen 2 und 3 von vorne anfangen zu zählen,
- der Sketch kann erkennen, dass die Zellen 0 und 1 eine Null enthalten und die "echten" Kilometer folglich in 2 und 3 stehen und 65536km addiert werden müssen,
- kann man beliebig fortsetzen, bis alle 1024 Zellen in Gebrauch waren, das sind dann immerhin über 33 Mio. km
- es würde sogar genügen, immer nur um eine Zelle "weiterzuschalten", da die Zelle, die das high byte enthält, erst 256 mal beschrieben wurde
Logged

Forum Moderator
BZ (I)
Online Online
Brattain Member
*****
Karma: 249
Posts: 21181
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Du kannst auch die km kontinuirlich in immer neue Speicherplätze schreiben. (2 oder 4 Bit pro km Stand) um zu wissen welchen Speicherort neu zu beschreiben suchst Du einfach die älteste (kleinste) km-Angabe und überschreibst die. So verliert man bei einem Schreibfehler nur wenige (am besten Fall nur einen) km.

Die Rechnung mit den 33 mill möglichen km pro 100000 Schreibzyklen für ein 1024  byte EEprom stimmt nicht ganz da meines Wissens immer Blöcke gelöscht und geschrieben werden. Dennoch erreicht man bei normaler nutzung eines Fahrrades kaum jemals die max löschzyklen des EEproms. Wer macht schon als nicht hauptberuflicher Radfahrer schon 65000 km?

Man kann auch die km ins RAM der RTC schreiben und zur Sicherheit beim einschalten bzw alle Stunde oder x km mal ins EEprom.

Grüße Uwe
Logged

Offline Offline
Faraday Member
**
Karma: 97
Posts: 3507
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Gab es auch nicht Tests wo erst bei über einer Million Zyklen die ersten Fehler auftraten? 100.000 ist nur worst case, nicht der Normalfall.
Logged

Forum Moderator
BZ (I)
Online Online
Brattain Member
*****
Karma: 249
Posts: 21181
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Das EEPROM im ATmega ist für 100 000 Schreib/Löschzyklen garantiert. Für andere EEPROMS garantieren die Hersteller auch 1 000 000 Zyklen (zb http://de.rs-online.com/web/p/speicherbausteine-eeprom/0511058/ ). Wenn das nicht reicht dann ein FRAM mit 10^12 Schreibzyklen ( http://de.rs-online.com/web/p/speicherbausteine-fram/7332269/ )

Das fiese bei den EEproms ist daß die Probleme nicht gleich auftreten müssen. Ein Bit das nach etlichen Tagen seinen Zustand verliert ist bei normalen, von User durchführbaren Tests nicht zu erkennen.  Das EEprom muß ja beschreibbar sein und die Daten für längere Zeit behalten.  smiley-wink smiley-wink 

Der Hersteller garantiert x Schreibzyklen und daß die Daten dann noch x Jahre halten.

Grüße Uwe
Logged

Offline Offline
Edison Member
*
Karma: 38
Posts: 1152
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Uwe hat recht, die 10000Zyklen gelten nur für interne EEPROM, weil  das (zumindest bei anderen Controllern) kein EEPROM ist, sondern im Flash ein EEPRom Emuliert wird.

externe "echte" EEPROMs haben alle 1,000,000 Program/Erase Cycles und 100 Year Data Retention.
Für den spezielle Fall des KM-Standes im Auto wird der Wert  verschlüsselt abgelegt, natürllich über Checksumme abgesichert, und ausserdem redundant.
Für manche Fahrzeughersteller heißt redundant in dem Falle: in zwei getrennten Bausteinen.
Logged

Grüße
Gunther

Offline Offline
Faraday Member
**
Karma: 97
Posts: 3507
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Auch das Arduino Flash halt unter Umständen länger. Siehe hier:

http://tronixstuff.wordpress.com/2011/05/11/discovering-arduinos-internal-eeprom-lifespan/


Erster Fehler nach 1.2 Millionen Zyklen (1 Zyklus = die Bits aller Zellen rumdrehen)
Logged

Offline Offline
Sr. Member
****
Karma: 11
Posts: 457
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Es geht hier nicht um einen Fahrrad Computer, sondern um eine Theoretische Frage wie sowas in einen KFZ Kombiinstrument realisiert wird.

externe "echte" EEPROMs haben alle 1,000,000 Program/Erase Cycles und 100 Year Data Retention.
Für den spezielle Fall des KM-Standes im Auto wird der Wert  verschlüsselt abgelegt, natürllich über Checksumme abgesichert, und ausserdem redundant.
Für manche Fahrzeughersteller heißt redundant in dem Falle: in zwei getrennten Bausteinen.

Klingt so als ob du in der Automotiven Entwicklung tätig bist ?

Ich bin KFZ-Elektriker mit Schwerpunkt Fehlersuche, und mein privates Interesse an Mikrocontrollern (und Entwicklen eigene Projekte) ist in meinem Beruf sehr vorteilhaft.
Für mich ist ein Steuergerät keine BlackBox wie für viele meiner Kollegen.

Habe vor einiger Zeit mal ein Kombi eines 3B Passat (Bj ca. 2002) zerlegt, dort war vermutlich kein externes EEprom verbaut (vermutlich deshalb weil manche Bauteile kein orginale Bezweichnung haben).     

Aktuelle Autos speichern den Kilometerstand in diversen Steuergeräten, ist auch einen Art von redundanz.

Dank der Erklärung von Uwe kann ich mir vorstellen wie der Algo in etwa ausschaut, eine Art Bytehopping. 
Logged

Arduino UNO,MEGA,Pro Mini Ethernet Shield

Forum Moderator
BZ (I)
Online Online
Brattain Member
*****
Karma: 249
Posts: 21181
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Erster Fehler nach 1.2 Millionen Zyklen (1 Zyklus = die Bits aller Zellen rumdrehen)

Dieser Test ist nicht Aussagekräftig da laut Datenblatt http://www.atmel.com/Images/doc8161.pdf :
Quote
Write/Erase Cycles: 10,000 Flash/100,000 EEPROM
Data retention: 20 years at 85 °C/100 years at 25°C

Der Test im Video schreibt das EEprom und liest es sofort wieder. Laut Hersteller muß das EEprom nach 100000 Programmier/Löschvorgängen die Daten noch 20 bzw 100 Jahre ohne Fehler behalten.

Zum Video kann man nur sagen: netter Versuch, aber sagt nichts aus.

Grüße Uwe
Logged

Forum Moderator
BZ (I)
Online Online
Brattain Member
*****
Karma: 249
Posts: 21181
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Aktuelle Autos speichern den Kilometerstand in diversen Steuergeräten, ist auch einen Art von redundanz.

Würde auch sagen damit es etwas schwieriger ist den Tachostand zurückzudrehen  smiley-wink smiley-wink

Grüße Uwe
Logged

0
Online Online
Faraday Member
**
Karma: 23
Posts: 3470
20 LEDs are enough
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Uwe hat das alles schon sehr gut auf den Punkt gebracht. Einen Zähler im EEPROM mit wear leveling habe ich hier http://blog.blinkenlight.net/experiments/counting-resets/wear-leveling/ breitgetreten. Man kann so einen Zähler benutzen um dann die Werte im Rest des EEPROMs zu adressieren.

Allerdings ist es bei einem reinen Zähler vermutlich einfacher so vorzugehen wie Uwe vorschlägt. Einmal alle Zellen mit 0 initialisieren und dann successive hochzählen. Der höchste Wert muß ja der aktuellste sein. Falls man dazwischen rückstellen können will, dann wäre ein Ringpufferansatz mit Index (wie oben angedeutet) allerdings wieder besser.
Logged

Check out my experiments http://blog.blinkenlight.net

Offline Offline
Edison Member
*
Karma: 38
Posts: 1152
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Klingt so als ob du in der Automotiven Entwicklung tätig bist ?
Aktuell nicht mehr in der Entwicklung, aber ich habe viele Jahre Elektroniken für KFZ entwickelt, richtig (bei dem grossen Zulieferer mit dem orangen Pferd)

Habe vor einiger Zeit mal ein Kombi eines 3B Passat (Bj ca. 2002) zerlegt, dort war vermutlich kein externes EEprom verbaut (vermutlich deshalb weil manche Bauteile kein orginale Bezweichnung haben).     

Aktuelle Autos speichern den Kilometerstand in diversen Steuergeräten, ist auch einen Art von redundanz.
Dass der km-Stand verteilt gespeichert wird, kenne ich nicht, aber ich weiß, dass der KM-Stand oft nicht im Instrument gespeichert wird, sondern nur über CAN übermittelt. Das kann sich aber in den letzten Jahres geändert haben. Die Wegfahrsperren sind auch immer komplexer geworden!
Logged

Grüße
Gunther

Offline Offline
Sr. Member
****
Karma: 11
Posts: 457
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Allerdings ist es bei einem reinen Zähler vermutlich einfacher so vorzugehen wie Uwe vorschlägt. Einmal alle Zellen mit 0 initialisieren und dann successive hochzählen. Der höchste Wert muß ja der aktuellste sein.
Dies wäre sogar relativ einfach zu machen.

Aktuelle Autos speichern den Kilometerstand in diversen Steuergeräten, ist auch einen Art von redundanz.

Würde auch sagen damit es etwas schwieriger ist den Tachostand zurückzudrehen  smiley-wink smiley-wink

Grüße Uwe

Der  smiley-wink fehlte bei meinem Posting.
Klar das ist der eigentliche Zweck, es werden auch andere Fahrzeugdaten gespeichert ( z.b die Fin)
Und wenn man bestimmte Steuergeräte aus anderen Autos einbauen will funktionieren die nur eingeschränkt.
Man muss diese freischalten, geht alles Online über den Server des Herstellers.

Hatte neulich einen Fall:
Kunde kauft gebrauchtes Steuergerät in der Bucht, und wollte es eingebaut haben.
Natürlich waren etliche Funktionen gesperrt, und das Freischalten schlug fehl. Ich hatte da schon einen Verdacht warum das so ist  smiley
Ein paar Stunden später war die Kripo in unserer Firma...


Es gibt aber auch  für moderne Autos immer wieder entsprechende Geräte zu kaufen um die diversen Sperren zu umgehen.
Und ich frage mich ob da nicht undichte Stellen in der Entwicklung gibt, ansonsten müssten die "Hersteller" dieser illegalen Geräte die Firmware dumpen,disassemblieren und den Asm Code dann auch noch verstehen.     
Wenn einer soviel drauf hat dies zu tun, hat sowas wohl nicht nötig.
« Last Edit: June 25, 2013, 12:35:39 pm by rudirabbit » Logged

Arduino UNO,MEGA,Pro Mini Ethernet Shield

Pages: [1]   Go Up
Jump to: