Je travaille actuellement sur un projet embarqué dans lequel j'ai un compteur qui sera actif tout le temps. Si l'alimentation tombe en panne, je dois également enregistrer le dernier état du compteur et le recharger au prochain démarrage. Alors que je prévoyais d'utiliser l'EEPROM dans laquelle j'écrirai en continu ma valeur de compteur. Mais j'ai lu quelque part que l'EEPROM a une endurance en lecture / écriture à environ 100 000 et je mettrai à jour ce compteur probablement 120 000 par 24 heures. Je trouve donc des alternatives pour accomplir cette tâche. veuillez me donner votre suggestion pour faire de même.
8
Réponses:
Une autre solution pourrait être d'utiliser un microcontrôleur avec FRAM non volatile. FRAM ne souffre pas des mêmes limitations sur les cycles d'écriture que l'EEPROM.
Certains des produits MSP430 de TI sont disponibles avec FRAM, voici un lien vers une application similaire à ce que vous décrivez:
MSP430 avec état de sauvegarde FRAM en cas de panne de courant
Voici l'article Wikipedia sur FRAM: FRAM
la source
J'ai ce problème dans un projet en cours.
La façon dont je traite est de garder la valeur en direct du compteur dans la RAM. J'ai ajouté un peu de matériel pour que le microcontrôleur puisse détecter que la tension d'alimentation d'entrée brute est faible. Si c'est le cas, il arrête ce qu'il fait, enregistre la valeur du compteur en direct dans l'EEPROM, puis attend de regarder la tension d'alimentation brute. S'il remonte, avec une certaine hystérésis, le micro redémarre essentiellement. Sinon, si l'alimentation continue de baisser, le micro finira par s'arrêter. Au redémarrage suivant, la valeur du compteur est chargée à partir de l'EEPROM, puis réutilisée en direct dans la RAM jusqu'à la prochaine mise hors tension.
Il ne faut pas longtemps pour écrire une petite valeur dans l'EEPROM. Il est fort probable que votre système d'alimentation électrique actuel dispose d'un stockage d'énergie suffisant pour détecter la tension en baisse, tout en ayant suffisamment de temps de fonctionnement garanti avant que l'alimentation du micro ne descende sous le seuil de fonctionnement ou d'écriture EEPROM.
Dans mon cas, le seul matériel supplémentaire était une diode Schottky pour empêcher l'alimentation en courant continu de sucer la charge du réservoir local en descendant, et deux résistances comme diviseur de tension afin que le micro puisse lire la tension d'entrée brute. Le reste est un firmware.
Il est important de noter que vous devez surveiller la tension à l'entrée de l'alimentation finale qui alimente le micro, pas directement la tension d'alimentation du micro. Au moment où ce dernier descend, il est peut-être trop tard. Espérons qu'il existe une plage de tension qui est inférieure au pire des cas lorsque tout fonctionne correctement et au-dessus de ce dont l'alimentation du micro a besoin pour garantir une tension régulée au micro. Dans mon cas, l'alimentation du micro était un régulateur abaisseur alimenté à partir de 48 V, il existe donc une large plage inférieure à la normale mais où le micro peut toujours fonctionner de manière fiable.
la source
Vieille vieille vieille solution, compteur cmos + batterie au lithium ou batterie au lithium Ram +.
L'alimentation de l'élément de stockage provient de l'alimentation normale lorsqu'elle est disponible ou de la batterie lorsqu'elle ne l'est pas.
Beaucoup de micros modernes en veille maintiendront leur état avec une très faible alimentation en courant. Vous pouvez donc utiliser cette technique avec détection de mise hors tension pour vous endormir, puis utiliser une batterie pour maintenir l'état pendant la période de sommeil alors que l'alimentation principale est coupée.
la source
Microchip possède une série de pièces I 2 C "EERAM" qui permettront de stocker les données dans SRAM, puis de les écrire dans l'EEPROM (en utilisant l'énergie stockée dans un condensateur) en cas de coupure de courant, à charger lors du retour de l'alimentation. Cela semble être parfait pour votre application.
Un exemple représentatif de ces pièces est le 47L04 .
la source
Une autre solution.
Détectez la mise hors tension et utilisez un supercap ou un non super cap pour maintenir le courant pendant quelques millisecondes. Utilisez ce temps pour écrire la valeur de votre compteur dans l'EPROM. N'écrivez sur l'EPROM qu'à la mise hors tension. Nombre de cycles EPROM = nombre de cycles de mise hors tension.
la source
Utilisez une puce FRAM telle que la FM24C04B. Ils ont une très grande endurance en écriture et sont non volatils.
https://www.mouser.com/ds/2/100/001-84446_FM24C04B_4_KBIT_512_X_8_SERIAL_I2C_F-RAM-477782.pdf
Vous pouvez également utiliser un module SRAM (NVRAM) alimenté par batterie. Par exemple M48Z02-150PC1
https://www.mouser.com/ds/2/389/m48z02-955115.pdf
la source
J'ai décidé d'aller avec "ds1307 RTC". Parce qu'il dispose de 54 octets de mémoire SRAM alimentée. qui permet un cycle de lecture / écriture infini.
la source
Si votre projet intégré contient une carte réseau, envoyez votre compteur à un ordinateur / serveur distant. Il semble que 120 000 itérations en 24 heures soit environ une itération en 0,72 seconde, devrait être OK pour le trafic réseau.
Le serveur aura toujours la dernière valeur du compteur stockée. Aucune corruption de valeur de compteur en cas de perte d'alimentation car un paquet valide doit être émis pour mettre à jour la valeur sur le serveur; nécessite cependant une connectivité constante, ou un protocole spécial de temporisation doit être conçu. De plus, en prime, vous pourrez contrôler votre appareil à distance si nécessaire.
la source
A) Utilisez un condensateur de 100 µF (ou plus) pour alimenter le compteur pendant le temps d'arrêt. Ou quelle que soit la logique requise pour conserver la valeur du compteur.
B) Utilisez des mémoires à noyau magnétique , elles peuvent être un peu difficiles à configurer.
C) Faites un potentiomètre commandé par moteur (comme un servo), à un moment donné votre compteur va déborder, non? Mappez cela à 360 degrés. Ensuite, faites une boucle de rétroaction afin que vous puissiez définir la valeur du potentiomètre numériquement et la lire numériquement.
D) Envoyez votre valeur de compteur une fois par minute à un ou plusieurs serveurs, et laissez-les se souvenir de la valeur pour vous pendant le temps d'arrêt. Ensuite, une fois le courant rétabli, récupérez la valeur du compteur.
la source