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.
8
Jawaban:
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
sumber
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.
sumber
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.
sumber
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 .
sumber
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.
sumber
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
sumber
Saya memutuskan untuk pergi dengan "ds1307 RTC". Karena memiliki 54byte SRAM yang didukung daya. yang memungkinkan siklus baca / tulis tanpa batas.
sumber
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.
sumber
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.
sumber