EEPROM dengan daya tahan tinggi

8

Saat ini saya sedang mengerjakan satu proyek tertanam di mana saya memiliki satu penghitung yang akan aktif sepanjang waktu. Jika daya turun maka saya juga harus menyimpan status penghitung terakhir dan memuatnya kembali di startup berikutnya. Sehingga saya berencana untuk menggunakan EEPROM di mana saya akan terus menulis nilai penghitung saya. Tetapi saya telah membaca di suatu tempat bahwa EEPROM telah membaca / menulis ketahanan sekitar 100.000 dan saya akan memperbarui penghitung itu mungkin 120.000 per 24 jam. Jadi saya mencari alternatif untuk menyelesaikan tugas ini. tolong beri saya saran Anda untuk melakukan hal yang sama.

Nishant Kathiriya
sumber
4
Gunakan eprom besar dan lakukan leveling pakai?
PlasmaHH
5
Kemungkinan penggandaan keausan pada EEPROM mikrokontroler
PlasmaHH
6
Bisakah Anda menggunakan RAM + deteksi kehilangan daya? Itu yang biasanya dilakukan.
Bryan Boettcher
1
EEPROM mungkin bukan solusi yang paling cocok. Selain itu Anda dapat mencoba menurunkan frekuensi penulisan jika persyaratan Anda mengizinkan ini. Anda juga mungkin ingin melakukan penulisan ke alamat acak / menjalankan alih-alih yang sama (pasti Anda harus datang dengan beberapa struktur data yang dapat mengambilnya setelah itu.)
Eugene Sh.
2
Ada beberapa jenis NVRAM selain EEPROM atau flash. Coba cari keripik FRAM atau MRAM - ini memiliki beberapa pesanan dengan daya tahan lebih tinggi.
Turbo J

Jawaban:

12

Solusi lain bisa menggunakan mikrokontroler dengan FRAM non-volatile. FRAM tidak mengalami keterbatasan yang sama pada siklus tulis seperti EEPROM.

Beberapa produk MSP430 dari TI tersedia dengan FRAM, berikut ini tautan ke aplikasi yang mirip dengan yang Anda jelaskan:

MSP430 dengan status penyimpanan FRAM pada kegagalan daya

Inilah artikel Wikipedia tentang FRAM: FRAM

John D
sumber
Itu bukan solusi sama sekali, karena penulisan multi-byte masih akan rusak karena kegagalan daya. Atau Anda menyarankan OP untuk membatasi dirinya pada satu byte?
ultimA
1
@ultimA Perpustakaan NVS menjamin penulisan 16 bit, OP tidak mengatakan seberapa besar counter-nya. Ini hanya sebuah contoh, teknik lain mungkin memungkinkan penyimpanan struktur data yang lebih besar: Penyimpanan Non-Volatile (NVS): Perpustakaan yang membuat penanganan data yang tidak mudah menguap menjadi mudah dan kuat terhadap kehilangan daya yang terputus-putus atau pengaturan ulang perangkat asinkron. Perangkat MSP430 dengan jaminan memori FRAM non-volatile menulis 16-bit di semua skenario. Seringkali data yang disimpan adalah struktur yang lebih besar. NVS berisi fungsi yang menyimpan data dengan cara yang dijamin untuk memulihkan entri yang sah terakhir tanpa korupsi.
John D
5
FRAM adalah solusi terbaik untuk masalah ini. Saya senang melihat jawaban di sini yang menyarankan penggunaannya. Jika belum ada saya akan menulis jawaban yang sama. Solusi saya menggunakan FRAM selalu menyimpan dua salinan data secara berurutan. Hanya satu dari mereka yang mungkin akan rusak. FRAM juga menulis jauh lebih cepat daripada EEPROM. Setiap salinan data memerlukan cara untuk memvalidasi bahwa itu benar. Itu bisa dilakukan dengan menggunakan XOR CRC sederhana atau untuk kumpulan data kecil Anda cukup menyimpan data dan pelengkapnya di setiap kumpulan data. Saat startup, Anda hanya memeriksa salinan data yang disimpan yang divalidasi.
Michael Karas
Kebetulan beberapa orang bercanda menyarankan penggunaan memori inti. FRAM adalah versi teknologi modern yang bekerja mirip dengan cara memori inti dioperasikan.
Michael Karas
1
Jika ruang yang memadai tersedia, menjaga penghitung dengan cara yang dapat diperbarui dengan aman dapat dilakukan dengan sejumlah cara langsung. Salah satu cara sederhana adalah memiliki dua salinan penghitung serta indikator yang salinannya valid; jika indikator hanya diubah ketika kedua salinan valid, dan sebelum mengubah salah satu kode salin mengatur indikator untuk menunjukkan salinan lainnya valid (dan setelah penulisan menetapkan indikator untuk menunjukkan keduanya valid), maka tidak masalah apa pun nilainya. dibaca dari sesuatu yang sedang ditulis saat power-down.
supercat
11

Saya memiliki masalah ini dalam proyek saat ini.

Cara saya menghadapinya adalah menjaga nilai langsung penghitung dalam RAM. Saya menambahkan sedikit perangkat keras sehingga mikrokontroler dapat mendeteksi bahwa tegangan daya input mentah rendah. Jika demikian, itu menghentikan apa yang dilakukannya, menyimpan nilai penghitung langsung di EEPROM, kemudian menunggu menonton tegangan daya mentah. Jika naik kembali, dengan beberapa histeresis, maka mikro pada dasarnya restart. Jika tidak, jika daya terus turun, mikro pada akhirnya akan berhenti. Pada restart berikutnya, nilai penghitung dimuat dari EEPROM, kemudian digunakan hidup dalam RAM lagi sampai power-down berikutnya.

Tidak butuh waktu lama untuk menulis nilai kecil ke EEPROM. Kemungkinan besar sistem catu daya Anda saat ini memiliki penyimpanan energi yang cukup sehingga Anda dapat mendeteksi voltase yang semakin rendah, dan masih memiliki waktu berjalan yang terjamin sebelum daya ke mikro turun di bawah ambang operasi atau tulis EEPROM.

Dalam kasus saya, satu-satunya perangkat keras tambahan adalah dioda Schottky untuk mencegah catu daya DC dari mengisap muatan dari reservoir lokal di jalan turun, dan dua resistor sebagai pembagi tegangan sehingga mikro dapat membaca tegangan input mentah. Sisanya adalah firmware.

Penting untuk dicatat bahwa Anda harus memperhatikan tegangan pada input ke suplai daya akhir apa pun yang mikro, bukan tegangan daya mikro secara langsung. Pada saat yang terakhir menjadi rendah, mungkin sudah terlambat. Mudah-mudahan ada rentang tegangan yang berada di bawah kasus terburuk ketika semuanya beroperasi dengan benar, dan di atas apa yang dibutuhkan catu daya mikro untuk menjamin tegangan yang diatur ke mikro. Dalam kasus saya, suplai mikro adalah regulator uang dari 48 V, jadi ada kisaran besar yang di bawah normal tetapi di mana mikro masih dapat beroperasi dengan andal.

Olin Lathrop
sumber
4

Solusi lama lama, penghitung cmos + baterai lithium atau baterai Ram + lithium.

Catu daya untuk elemen penyimpanan berasal dari catu daya normal saat tersedia atau baterai tidak.

Banyak mikro modern dalam tidur akan mempertahankan keadaan mereka dengan pasokan arus sangat rendah. Jadi Anda dapat menggunakan teknik ini dengan deteksi mati untuk pergi tidur kemudian gunakan baterai untuk mempertahankan keadaan selama periode tidur saat pasokan utama mati.

RoyC
sumber
2
Solusi yang lebih lama adalah memori inti magnetik.
glen_geek
Hanya ingin menjawab yang sama :) Inilah perangkat untuk menggunakan datasheets.maximintegrated.com/en/ds/DS1307.pdf
Anonim
1
@glen_geek Bahkan saya tidak ingat menggunakan itu. :)
RoyC
4

Microchip memiliki serangkaian I 2 C "EERAM" yang akan memungkinkan data disimpan dalam SRAM, kemudian menulisnya ke EEPROM (menggunakan energi yang disimpan dalam kapasitor) ketika daya hilang, untuk dimuat ketika daya kembali. Sepertinya ini akan sempurna untuk aplikasi Anda.

Contoh representatif dari bagian ini adalah 47L04 .

duskwuff -inactive-
sumber
3

Solusi lain.

Deteksi daya turun dan gunakan supercap atau non super cap untuk menjaga daya tetap selama beberapa milidetik. Gunakan waktu ini untuk menulis nilai penghitung Anda ke EPROM. Hanya tulis ke EPROM saat listrik mati. Jumlah siklus EPROM = tidak ada siklus daya mati.

RoyC
sumber
3

Gunakan chip FRAM seperti FM24C04B. Mereka memiliki ketahanan tulis yang sangat tinggi dan tidak mudah menguap.

https://www.mouser.com/ds/2/100/001-84446_FM24C04B_4_KBIT_512_X_8_SERIAL_I2C_F-RAM-477782.pdf

Anda juga bisa menggunakan modul SRAM yang didukung baterai. Misalnya M48Z02-150PC1

https://www.mouser.com/ds/2/389/m48z02-955115.pdf

pengguna4574
sumber
Saya tidak yakin tentang di daerah lain, tetapi di sini di Inggris digikey jauh lebih murah daripada mouser untuk bagian FRAM. Dan seperti biasa, selama Anda dapat menemukan pemasok yang dapat Anda andalkan (atau jika Anda hanya perlu menjalankan usaha kecil dan dapat hidup dengan peluang berurusan dengan pemasok yang berpotensi tidak dapat dipercaya), ada banyak pemasok Cina yang secara substansial dapat meningkatkan kualitasnya. keduanya harga.
Jules
1

Saya memutuskan untuk pergi dengan "ds1307 RTC". Karena memiliki 54byte SRAM yang didukung daya. yang memungkinkan siklus baca / tulis tanpa batas.

Nishant Kathiriya
sumber
0

Jika proyek Anda yang tertanam memiliki NIC di dalamnya, kirimkan penghitung Anda ke komputer / server jarak jauh. Tampaknya 120.000 iterasi dalam 24 jam adalah sekitar satu iterasi dalam 0,72 detik, harus OK untuk lalu lintas jaringan.

Server akan selalu memiliki nilai terakhir dari penghitung yang disimpan. Tidak ada nilai kontra korupsi pada kehilangan daya karena paket yang valid perlu dikeluarkan untuk memperbarui nilai di server; namun membutuhkan konektivitas yang konstan, atau protokol time-out khusus harus dirancang. Selain itu, sebagai bonus, Anda akan dapat mengontrol perangkat Anda dari jarak jauh jika diperlukan.

Anonim
sumber
1
Jika persyaratannya adalah untuk menerapkan penghitung bingkai untuk mencegah serangan replay dan jika tidak menjamin kepatuhan protokol, bagaimana Anda akan mengirim nilai ke perangkat?
0

A) Gunakan kapasitor 100 μF (atau lebih besar) untuk menyalakan penghitung waktu mati. Atau logika apa pun yang diperlukan untuk memegang nilai penghitung.

B) Gunakan memori inti-magnetik , mungkin agak rapuh untuk dipasang.

C) Buat potensiometer yang dikendalikan motor (seperti servo), pada titik tertentu penghitung Anda akan meluap, bukan? Petakan itu hingga 360 derajat. Kemudian buat loop umpan balik sehingga Anda dapat mengatur nilai potensiometer secara digital dan membacanya secara digital.

D) Kirim nilai penghitung Anda sekali setiap menit ke beberapa server, atau biarkan server mengingat nilai untuk Anda selama waktu tidak aktif. Kemudian setelah daya muncul kembali, ambil kembali nilai penghitungnya.

Harry Svensson
sumber
1
Bisakah Anda masih membeli memori inti?
BeB00
@ BeB00 Saya tidak tahu, itu sebelum waktu saya. Tapi saya akan menggunakan mur hex untuk batang berulir 2 mm dengan beberapa kabel melewatinya seperti kumparan toroidal. - Dan kemudian kembali ke sirkuit apa pun yang biasa digunakan dengan memori inti. Saya berasumsi bahwa hanya ADC yang cukup baik untuk dibaca, ketika histeresis inti berjalan sebaliknya dan melepaskan energi.
Harry Svensson
Maksud saya ... mungkin sebagai percobaan itu akan menyenangkan, tetapi saya pasti tidak akan pernah menggunakannya dalam sistem yang saya perlukan untuk bekerja
BeB00
@ BeB00 ebay.com/bhp/vintage-core-memory Oh well, sepertinya ada jika seseorang menginginkan barang-barang berkualitas tinggi.
Harry Svensson
: P Saya tidak yakin itu
dijamin