Welk type geheugen voor datalogger ?

Hoi,

Ik wil een datalogger maken en ik kom met 4Mbit toe. Ik dacht een flash ic te gebruiken. Meerbepaald een LE25U40CMDTWG van On semiconductor.

Nu is mijn vraag: is dit een goede keuze?
Aangezien deze 100.000 write cycles heeft, betekent dit dat elke bit 100.000 keer overschreven kan worden ?

Volgens mijn berekeningen kom ik uit op een levensduur van 2222 jaar.
Ongeveer elke de 8 dagen wordt het complete geheugen 1 keer overschreven. Dit komt op 360/8=34keer per jaar. 100.000/34=2222jaar.

Klopt deze redenering ?

Arco

Special Member

Die 100.000x geldt voor een sector erase/rewrite, je kunt individuele bits/bytes niet erasen...
Iedere 8 dagen 4Mb vol is nogal wat!...

[Bericht gewijzigd door Arco op maandag 5 maart 2018 20:07:26 (18%)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Bedankt voor je antwoord Arco.

Het is niet 4Mb maar 4Mbit.

4Mbit = 0,5Mb

De logger komt in een lasapparaat

Elke keer de machine wordt gebruikt, worden er 25 bytes aan data weggeschreven. Datum, uur, stroom, spanning en nog wat reserve.
Stel dat er per dag 2000 keer gelast wordt, komt dit op 25x2000=500kbyte per dag. Dit 10 dagen lang komt dus op het volledige geheugen van 500kbyte.

Ik moet de datasheet nog uitpluizen, maar als ik je goed begrijp, moet ik per sector gaan schrijven ? Gen idee hoe groot een sector is... ik heb nog nooit gewerkt met flash ic's....

benleentje

Golden Member

We kunnen eigenlijk stellen dat het geheugen zelfs als je het meerdere keren per dag geheel opnieuw schrijft het nog steeds langer meegaat dan het lasapparaat.

Ik heb er nog geen ervaring mee maar heb ze op ebay al wel besteld een SD kaart houder en een losse SD kaart. Dan kan je makkelijk van kaart wisselen

Mensen zijn soms net als een gelijkrichter, ze willen graag hun gelijk hebben.

Op 5 maart 2018 20:32:23 schreef kohen:
4Mbit = 0,5Mb

4Mb = 4Mbit = 0.5MB = 500kB

Heb je al aan een SD kaartje gedacht? Is makkelijk via SPI te schrijven.

"We cannot solve our problems with the same thinking we used when we created them" - Albert Einstein

Ik dacht dat Mb stond voor megabyte..

In ieder geval, het flash ic uit de startpost is 0,5Mbyte. Toch ? ;-)

Ja, ik had ook gedacht aan een sd kaartje. Ik vind er echter weinig info over op het net. Ik bedoel een echte datasheet om deze met spi aan te sturen... met bitpatronen enzo. Een complete datasheet met de hele rimram hoe je moet schrijven, lezen, wissen, command register,...

Mijn oog is ook gevallen op eeprom... deze gaan maar tot 2Mbit, maar ze zijn wel per byte beschrijfbaar, wat ik een voordeel vind, en kunnen 4miljoen keer overschreven worden.

Zal nog wat zoeken naar sd kaartjes met een goede beschrijving.

Tips altijd welkom !

Ook bedankt benleentje en flip voor de nuttige antwoorden

Flash kun je prima per byte beschrijven, maar alleen per sector wissen. Hoe groot een sector is, is afhankelijk van het exacte type. Als je altijd alle data lees de het hele flash wist, maakt dat weinig uit.

Een SD kaart interfacen is VEEL ingewikkelder dan een flash IC, maar daar zijn wel libraries voor te vinden (o.a. voor Arduino en zo). Als je het zelf wilt implementeren (ik heb het niet zo op black-box libraries), zou ik dus niet voor een SD kaart gaan.

Als je toch een SD kaart gaat gebruiken, zou je die RAW kunnen gebruiken, dus als één grote array van bytes, zonder filesystem. Het uitlezen moet je dan met rawread of zo doen (of dd onder linux), maar het is voor de microcontroller gemakkelijker.

Er zijn ook genoeg microcontrollers met 512kB of zelfs 1024kB interne flash (o.a. STM32F4 en zo); dat is nog veel gemakkelijker te lezen en schrijven.

Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken
Arco

Special Member

Een pic24 met 1Mbyte aan flash kost maar een paar euro...

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Op 5 maart 2018 22:04:17 schreef kohen:

Mijn oog is ook gevallen op eeprom... deze gaan maar tot 2Mbit, maar ze zijn wel per byte beschrijfbaar, wat ik een voordeel vind, en kunnen 4miljoen keer overschreven worden.

Per byte schrijven kan flash eigenlijk ook. Je moet het alleen wissen per "sector".

Ik ben met een logger bezig. SD kaartje er in. Met 800 bytes per seconde, en NOOIT data overschrijven, gaat de SD kaart (16Gbyte) de levensduur van de machine mee (4000 uur).

Ik denk dat ik toch iets gedetailleerder ga loggen. Dan iets van de helft van de capaciteit voor gedetailleerde logs (waarschijnlijk iets van 4k/sec) en dan een samenvatting maken van de oudste data naar 10x minder data als de 8G bereikt is.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
buckfast_beekeeper

Golden Member

@TS: Hoe je schrijft via SPI kan je op het internet vinden. De datasheets en andere info staat op de website van de overkoepelende organisatie. Even zoeken dus.

Van Lambiek wordt goede geuze gemaakt.

SD is weer zo'n "standaard" die niet echt openbaar is. De overkoepelende organsiatie moet geld verdienen door grote spelers te forceren om lid te worden om de standaard te krijgen.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

Precies, "even" een library schrijven voor SD kaarten is er niet bij, terwijl "even" iets schrijven voor het lezen en schrijven van interne flash prima te doen is, voor een redelijk ervaren programmeur met een datasheet.

Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken
Arco

Special Member

SD is weer zo'n "standaard" die niet echt openbaar is.

Ik zie niet in wat er openbaar aan is? De specs zijn gewoon te downloaden.
Dit is versie 2.00, laatste versie nu is 6.00, ook te downloaden.

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Er mist een "niet" in je posting.

Hmm. Kennlijk verkeerd onthouden, of het is sindsdien veranderd. Mooi zo.

Edit: Waarom post je een link naar een door jou geupload bestand en niet naar de officiele site? Dat er wel eens illegale copieen op het net te vinden zijn is bekend.

[Bericht gewijzigd door rew op dinsdag 6 maart 2018 17:00:40 (14%)

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
Arco

Special Member

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Van de site van sdcard.org wordt ik niet veel wijzer.

Voor de geïnteresseerden, hieronder 2 verschillende bronnen, die vrij gedetailleerd uitleggen hoe je moet communiceren met sd cards.

De laatste is een product manual van sandisk in pdf formaat.

https://openlabpro.com/guide/interfacing-microcontrollers-with-sd-card…

https://www.google.be/url?sa=t&source=web&rct=j&url=http://www.convict…

Hoe je juist per byte schrijft, heb ik nog niet gevonden, maar dat komt vast omdat ik erover heb gekeken :-)

Arco

Special Member

Normaliter schrijf je ook niet per byte, maar per sector (meestal 512 bytes) naar de kaart.
Die Sandisk pdf is hetzelfde als de specs van sdcard.org, alleen merkspecifiek...
(alles staat er toch echt wel in; de 6.00 specs zijn in totaal 263 blz... :) )

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Op 6 maart 2018 18:37:50 schreef kohen:
Voor de geïnteresseerden, hieronder 2 verschillende bronnen, die vrij gedetailleerd uitleggen hoe je moet communiceren met sd cards.

Ben je niet een beetje te diep aan het duiken? Stel je gebruikt een Arduino, dan hoef je de ins en outs van de SD card zelf niet te weten, maar gebruik je eenvoudig de SD library:
https://www.arduino.cc/en/Tutorial/Datalogger

Voor veel andere platforms zullen er ook wel libraries zijn, of voorbeeldcode.

@TS hieronder: aha, een SM liefhebber :-) Het kan je hobby maar zijn.

"We cannot solve our problems with the same thinking we used when we created them" - Albert Einstein

Op 6 maart 2018 20:25:43 schreef flipflop:
[...]
Ben je niet een beetje te diep aan het duiken? Stel je gebruikt een Arduino, dan hoef je de ins en outs van de SD card zelf niet te weten, maar gebruik je eenvoudig de SD library:
https://www.arduino.cc/en/Tutorial/Datalogger

Voor veel andere platforms zullen er ook wel libraries zijn, of voorbeeldcode.

Hey flip, je hebt gelijk... zo goed als elk platform gebruikt voorgekauwde libraries. Handig, maar ik hou daar niet zo van.

De processoren waar ik mee werk zijn gebaseerd op de 8051 architectuur. Bijvoorbeeld een AT89C2051 of een AT89C51CC03. Ik ben dus nog van de oude stempel en schrijf nog in assembly. Ik weet het...
Ik ben bijna toegespuwd hier op CO, toen ik dit vermelde vroeger. :-) Lach maar...toch heb daar al mooie dingen mee gemaakt. Ook kleine toepassingen voor de industrie. En ja ik weet het... als ik mijn kaas laat, weet geen kat hoe die dingen te repareren, laat staan te herprogrammeren.

Ik ga dus met bitbanging een SPI maken... geen idee of het gaat werken op SD kaartjes. Ik ga alvast een poging doen.. ik besef dat het niet zo simpel zal zijn. Wish me luck :-)

Op 6 maart 2018 18:47:15 schreef Arco:
Normaliter schrijf je ook niet per byte, maar per sector (meestal 512 bytes) naar de kaart.
Die Sandisk pdf is hetzelfde als de specs van sdcard.org, alleen merkspecifiek...
(alles staat er toch echt wel in; de 6.00 specs zijn in totaal 263 blz... :) )

Bedankt Arco. Ik vind dat je heel behulpzaam bent op CO. Net zoals de meesten hier trouwens. Dat meen ik echt.

Arco, ik heb gemerkt in oude posts dat je ervaring hebt met de esp-wroom-02. Heb deze vandaag aangekregen en volgende week ga ik vast vragen hebben...ik heb er totaal geen ervaring mee, dus hou jezelf al een beetje klaar voor mijn noobvragen hieromtrent ;-)
Ik zal ze wel stellen in een nieuw topic.

Inderdaad, zo'n Flash IC, en het interne flash van een microcontroller, kun je per byte (of soms per word, dus 2 bytes) schrijven, maar een SD kaart niet. Dit betekend dus ook dat het verstandig is om een microcontroller met vrij veel RAM te nemen (geen 2kB of zo), aangezien je een schrijfbuffer van 512 bytes moet bijhouden, en eigenlijk 2 omdat de schrijfactie relatief lang kan duren en je in de tussentijd geen data wilt kwijtraken. Daarbij heb je nog wat RAM nodig voor FAT tabellen en andere interne variabelen en buffers.

Die AT89C2051 heeft 128 bytes RAM. Dat gaat dus nooit lukken.

Waarom zou je bit bangen, er zijn toch genoeg 8051 controllers met een echte SPI periferal? http://www.mouser.com/catalog/catalogusd/645/197.pdf

Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken
Thevel

Golden Member

Op 5 maart 2018 20:32:23 schreef kohen:
25x2000=500kbyte per dag.

Bij mij is 25x2000=50kB!
Scheelt toch een factor tien :)

Inderdaad een SD kaart aan een 8051 of variant is een kleine ramp. De kaarten moeten per sector geschreven worden, dus je moet ook een forse buffer hebben (relatief in 8051 begrippen).
Vaak staat er ook een gewoon filesysteem op en moet je dat er ook nog bij maken als je het ding op een PC wilt lezen.

Een alternatief wat ik hier nog niet gezien heb zijn zgn FRAM's. Zijn wel erg prijzig voor grotere sizes (tot 2Mbit). Maar supersnel en vrijwel geen wareout (2^14 oid).

Anders kun je ook nog normaal eeprom geheugen met I2C of SPI interface gebruiken, dat cyclisch schrijven met vaste record sizes eventueel. Dan is je wareout minimaal.

1-st law of Henri: De wet van behoud van ellende. 2-nd law of Henri: Ellende komt nooit alleen.
Arco

Special Member

Als je speciaal aan de 8051 wilt vasthouden, dan heeft Silabs een aantal mooie moderne varianten...
Met 128k flash, en 8k ram: https://www.digikey.com/product-detail/en/silicon-labs/C8051F583-IQR/C…

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Op 6 maart 2018 23:43:24 schreef SparkyGSX:

Waarom zou je bit bangen, er zijn toch genoeg 8051 controllers met een echte SPI periferal?

Inderdaad, net gezien dat de at89c51cc03, die ik plande te gebruiken, ook spi heeft 8)7

Op 7 maart 2018 00:00:08 schreef Thevel:
[...]Bij mij is 25x2000=50kB!
Scheelt toch een factor tien :)

Rekenfout van me... dat begint al goed haha.
dan kom ik met een 2Mbit eeprom toe voor 5 a 10 dagen, want ik veronderstel dat een lasser ook geen 2000 lasjes per dag legt. :-)

Op 6 maart 2018 23:43:24 schreef SparkyGSX:
Inderdaad, zo'n Flash IC, en het interne flash van een microcontroller, kun je per byte (of soms per word, dus 2 bytes) schrijven, maar een SD kaart niet. Dit betekend dus ook dat het verstandig is om een microcontroller met vrij veel RAM te nemen (geen 2kB of zo), aangezien je een schrijfbuffer van 512 bytes moet bijhouden, en eigenlijk 2 omdat de schrijfactie relatief lang kan duren en je in de tussentijd geen data wilt kwijtraken. Daarbij heb je nog wat RAM nodig voor FAT tabellen en andere interne variabelen en buffers.

De at89c51cc03 heeft 2kB interne ram dat ik zuiver en alleen als buffer kan gebruiken. Daar zou ik dan toch mee toekomen als ik per 512 byte ga schrijven ?

Maar ik overweeg dus om het sd card hoofdstuk voorlopig opzij te leggen. Ook omdat ik met 2Mbit of 250kByte wel ga toekomen. ;-)