1ビット永久メモリ回路を作るには?

1ビットのデータを保存または保存するための簡単な回路を作りたいです。回路は、電源が回路から切断されていてもLEDの状態(オンまたはオフ)を記憶できなければなりません。携帯電話のハードドライブ、フラッシュメモリ、またはSDメモリカードのように動作させる必要があります。

写真のように回路を作りました。出力は470オームの抵抗と直列のLEDです。 2つのブッシュボタンを使ってコンデンサを充電または放電するので、出力LEDが点灯または消灯します。

電源を切るか、または電気を切った後、回路は数分間LEDの状態を記憶することができました。

2分または3分後、コンデンサは完全に放電し、回路はデータを失いました。

enter image description here How can I stop the capacitor from discharging ? or how can I slow the rate of discharging so that the circuit lose its data after a week or more ?

この回路で私は555をインバーター(ゲートではない)として使っていますが、他のICを使っても構いません。私の目的は単純な永久メモリを作ることです。

10
@MichaelGeorge:いいえ、ラッチングリレーの大きなポイントは、外部電源をかけなくても永久磁石を使ってその状態を維持することです。あなたはただその状態を変えるために電気のパルスを必要とします。
追加された 著者 GSerg,
最も初期の電子計算機の1つ、 Atanasoff-Berry Computer が使用されています一番最初のDRAMのコンデンサ。それらは、書き込み、読み取り、およびリフレッシュ(1秒に1回)のためにそれらを順次コンタクトのセットに接続するために回転する1対のドラムに取り付けられました。
追加された 著者 GSerg,
@ IgnacioVazquez-Abramsラッチングリレーを使用できます。
追加された 著者 Ryan Ginstrom,
コインセルを使うことにどの程度嫌いですか?マクロレベルでEEPROM /フラッシュ/ FRAMセルを複製する方法はありません。
追加された 著者 Dan,
メモリセルは簡単です。不揮発性メモリセルはそうではありません。
追加された 著者 Dan,
あなたは、慎重な設計と構造で、1週間その電荷を保持するためのコンデンサを得ることができます。 m.electronicdesign.com/analog/…
追加された 著者 jns,
コンデンサの放電について:正しく接続されていないと、長時間電圧がかかる場合があります。 robotroom.com/Capacitor-Self-Discharge-1.html
追加された 著者 Carlos.V,
@ IgnacioVazquez-Abrams私は何も複製したくありません、私はそれがどのように動作するかを知り、そして一つの単純なメモリセルを作りたいのです。または1つのメモリセルの同じ仕事をする何か。エレクトロニクスを学ぶためだけに
追加された 著者 PNG,

10 答え

オリジナルの電子不揮発性メモリはフェライトコアをベースにしています。このようなコアを一方向または他方向に磁化して1または0を格納するのは比較的簡単ですが、確実にそれを読み返すにはかなり高度な回路が必要です。

最近の不揮発性チップは電荷の蓄積に依存していますが、これを機能させるには、本質的にリークがゼロのコンデンサとその電荷を読み出す方法を作成できる必要があります。これは、コンデンサがガラス(二酸化ケイ素)で完全に覆われた小さな金属片(「フローティングゲート」)であり、近くのトランジスタへの影響によって読み出されるマイクロエレクトロニクスの状況でのみ可能です。 。

他の選択は強誘電体RAM(FRAM)であり、これは2つの異なる安定した分極状態を有する特別な誘電体材料を使用する。繰り返しますが、これはマイクロエレクトロニクスでのみ機能します。

したがって、あなたは自分の情報を保存するために他の物理現象を選ぶ必要があります。 1つの明らかな選択はラッチングリレーです、それはその電機子の物理的な位置に情報を格納します。そして、それは永久磁石またはばねによって2つの安定した位置のどちらかに保持されます。位置は比較的短いパルスの電流を印加することによって変えることができ、読み出しは電機子に電気接点を取り付けることによって達成される。

29
追加された
@ immibis:簡単ではありません。磁場はコア自体の中にほぼ完全に閉じ込められており、外部漏れはほとんどありません。
追加された 著者 GSerg,
追加された 著者 Cebjyre,
コアは1つしかないので、ホール効果センサーなどで読み取れませんか。
追加された 著者 immibis,

機械的なスイッチを点滅させる回路を作ります。無駄な箱。回路は、状態を変更/読み取りするために電源を入れる必要がありますが、その間はそれを維持します。

7
追加された

純粋な電子機器は永久的なメモリセルを作ることはありませんが、コンデンサの電荷はそれに近づくことができます(定期的なリフレッシュが必要になるでしょう)。 EEPROM /フラッシュメモリはこの要求を数十年に延長するので、実用的な目的のためにそれは永久的と呼ばれる。しかし、これは通常のコンポーネントでは実現できないことです。

本当の永久記憶はある種の物理的双安定現象を使います。 Daveによって言及されたフェライトコアの磁化は、広く使用されていました(「コアダンプ」について聞いたことがありますか?)。 helloworld922で言及されている双安定(またはラッチ)リレーの方が使いやすいです。

これが初期のコンピューターでどのように行われたかを見ると、単一セルの複雑さと駆動回路の複雑さの間にはバランスがあることを認識しなければなりません。フェライトコアは非常に単純ですが、駆動、特に読み出し回路は非常に複雑です。双安定リレーの場合は逆です。リレーはビットごとにかなり複雑ですが、制御回路は非常に単純です。

あなたの目的は何ですか?

  • 1つのセルを作るためには、双安定リレーを使用します。

  • 実用的ではなく実際に行われる方法(DRAM/Flash)をデモする場合は、コンデンサに蓄えられた電荷を使用して定期的に更新します。

  • 実用的なものを作りたい場合は、EEPROMを内蔵した(またはそのFLASHを自己プログラムすることができる)小型のマイクロコントローラを使用してください。

6
追加された

簡単な解決策は、8ピンで利用可能な PIC12F635 のようなマイクロコントローラです。 DIP以下で、内蔵のクロックおよび電圧低下リセット回路を備えています(後者はEEPROM不揮発性ストレージの整合性を維持するために重要です)。

必要なコードはそれほど多くはありませんが、良いスタータープロジェクトです。

必要な外付け部品は、LED用のバイパスコンデンサと電流制限抵抗だけです。

最も簡単な解決策は、おそらく2コイルラッチング信号リレーです。

6
追加された

William Priceによって与えられたヒューズ/ブレーカーの答えから、最も明白な解決策が生まれました。

スイッチ

ランプを取りなさい。差し込みます。電源を入れます。それを抜いてください。ハワイにそれを動かしなさい。差し込みます。
また点灯します。

消して。それを抜いてください。それを家に持ち帰る。差し込みます。
それは止まります。

あなたがコンピュータにLEDを有効/無効にさせたいのであれば、それほど役に立ちません。ただし、プッシュボタン式のトグルスイッチと電子的に作動するソレノイドを使用すれば、仕事を終わらせることができます。ボタンを押すとLEDが点灯し、ソレノイドが作動し、LEDが点灯します。もう一度押すと、LEDが消灯します。取り外しても、ボタンは機械的にオンまたはオフに設定されています。

明示的な「これが確実にオンの場合、それは絶対にオフです」機能(トグルではなく)を保持したい場合は、フリップスイッチの上部を押す1つのソレノイドを上部のボタンでアクティブにすることができます。それから、一番下のボタンはフリップスイッチの一番下を押す2番目のソレノイドを作動させます。

これをリモートで実行するのが最善の方法であるとは言わないが、機能的です。

3
追加された
あなたは正しいかもしれません、しかし、OPがそれについて議論するために戻ってこなかったので、私たちは決して確実ではないでしょう - 彼は私の答えを「受け入れた」のですが。 「回路はLEDの状態を記憶できるはずです」に基づいて、質問の全体的な意図を電子的に書き換え可能なメモリに言及するように解釈しました。これにより、読み取り専用メモリ(スイッチ、ジャンパ、ダイオードなど)とライトワンスメモリ(ヒューズ)が除外されます。
追加された 著者 GSerg,
あなたがしたことは双安定リレーを作る方法を説明することだけです、それは提案された最初の解決策のうちの1つでした。
追加された 著者 GSerg,
2番目の部分は、はい、不格好な双安定リレーの説明です。彼が自分自身のリレーを構築することに興味がある場合にはおそらく有用です。しかし、最初の部分はそうではありません。私はそれが質問の意図と一致するとは思いません(私は彼が可能な限り簡単な設計を構築するのではなく電子工学を学ぶことに興味があると思います)。最初のカップル文
追加された 著者 Floris,
私の考えでは、LEDの状態はどのボタンが最後に押されたかに直接関係しています。論理的な観点からは、ボタンの状態をキャプチャすることはLEDの状態をキャプチャすることと同じです。
追加された 著者 Floris,

実用的な解決策:

@DaveTweedによって言及されているようなラッチングリレーは最も簡単です。

ソリッドステートソリューションが必要な場合は、こちらのようなパラレルインターフェイスのメモリICを使用できます。アドレス行を固定アドレスに結び付けて、データ行の1つだけを使用することができます。追加のグルーロジックが必要になります。

興味深い解決策:

あなたがメモリを実証するためのプロジェクトを探しているなら、あなたはいくつかのヒステリシスコアを持つソレノイドを使用することができます。 1を格納するために一方向にコアを飽和させ、0を格納するために他の方向にコアを飽和させます。これは書き込みの面倒を見ます。

次に、このホールセンサー次に、ホールセンサーを使って固定フィールドの極性を調べることができます(アナログコンパレータのみ)。状態を決定します。

3
追加された

EEPROMを内蔵したマイクロコントローラを使用することができます。 8ビットの PIC16F84A には64バイトのEEPROMがありますが、これは良い値です。通常、各バイトへの書き込み回数は10,000,000から最小1,000,000です(これはバイト耐久性と呼ばれます)。別の答えで選ばれたPIC、PIC12F635は128バイトのEEPROMと10万回の書き込みのバイト耐性を持っています。 16ビットプロセッサの PIC24F16KA102 には512バイトのEEPROMがありますまた、100,000書き込みのバイト耐久性もあります。

OPはLEDが点滅する頻度を示しません。この説明では、1分に4回と仮定します。

一年でそれが点滅します

$$ 4 * 60 * 24 * 365 = 2,102,400 \時空数。

Since the EEPROM needs to capture both last the on and off events, then it will be written to twice that number, or about 4.2 million times. In five years, this is 21 million times.

明らかに、これは私が今マイクロコントローラに組み込んだすべてのEEPROMの仕様を超えるでしょう。

しかし、これには簡単な解決策があります。オンまたはオフ状態を追跡するために同じバイトを何度も使用する代わりに、チップ全体を埋めるバイトの配列を使用できます。

配列の各要素に2バイト必要です。したがって、PIC16F84Aの64バイトEEPROMは32個の要素を保持できます。 EEPROMに書き込むたびに、ステータスバイトに0を書き込み(この要素にデータがあることを意味します)、データバイトに0(LEDが最後に消灯)または0xFF(LEDが最後に点灯)のいずれかを書き込みます。次回EEPROMにアクセスするときは、0xFFステータスバイトを持つ要素が見つかるまで要素をインデックスしてから、その要素を使用します。残っていなければ、EEPROMを再初期化して最初からやり直してください(ローエンドのPICの場合、これは各ステータスバイトに0xFFを書き込むことを意味します。PIC24の場合、EEPROM全体を消去するコマンドがあります)。 LEDの最後のステータスを知る必要がある場合は、前と同じように配列を介してインデックスを付けますが、ここで1つの要素に戻ってデータバイトを読み出します。

enter image description here

これは、PIC16F84Aの場合、基本的にシングルバイトへのアクセス数を16の係数で割ります(ステータスバイトのそれぞれが2回書き込まれるため、32ではなく16です)。そのため、4年間のデータに十分な合計1600万の書き込みを処理できます。そして、より大きなEEPROMだが100Kのより小さなバイト耐久性を持つPIC12F635は、9ヶ月の間に十分な、320万回の書き込みを扱うことができるでしょう。

512バイトのEEPROMと一括消去機能を備えたPIC24F16KA102は、5年間で2560万書き込みを処理することができます。

点滅速度があたり4回ではなく 1時間あたり 4回である場合、これは年間合計70,080回の書き込みを意味します。 1バイトあたり10万回の書き込みが可能なPIC12F635でさえ、45年続くでしょう。

2
追加された
@MichaelS - グローバルイレースの修正に感謝します。私はとにかく私の計算をバイト耐久性に基づいていたのでそれは問題ではない。しかし、いくつかのEEPROMが個別の消去操作を必要としないことを示すために私の答えを更新します。 (例えば、PIC24Fファミリーは一括消去機能を持っています。)
追加された 著者 Matt McMinn,
すべてのバイトを0xffに戻す@MichaelS消去は、すべてのバイトが使用された後にのみ行われます。したがって、256バイトのEEPROMでは、256カウントごとに1回消去が行われます。この方式では、毎回書き込む前に消去する必要はありません。 EEPROMには2種類の「磨耗」限界があります。 1つはバイトレベル(いわゆる「持久力」)、もう1つは消去によるグローバルレベルです。後者は通常前者の10倍です。
追加された 著者 Matt McMinn,
@MichaelS私もそう思いました。最初に、11111110から11111101に行くことはできません。なぜなら、あなたは1を書くことができないからです(私はあなたの開始条件を逆にしました)。しかし、1バイトあたりの書き込み回数を制限するという意味では、実際には何の効果もありません。つまり、各バイトに1回ではなく8回書き込む必要があります。
追加された 著者 Matt McMinn,
問題のPICデバイスを使用したことはありませんが、すべてのデータを消去してから、一度にデフォルトにすべきでないビットを変更するというのが私の理解です。したがって、「消去済み」がすべて1を意味する場合は、すべてを消去してビット1〜6、場合によってはLを変更します。次に、すべてを消去してビット1〜5、7、おそらくLを変更します。 、あなたはほんの数ビットを変えることになるでしょう(1110110L - > 1110111Lはビット4とLだけを変える)。あるビットが消去されるには、消去ごとに50%、書き込みごとに50%の確率があるので、消去/書き込みサイクルあたり平均100%、つまり8ビットです。
追加された 著者 Floris,
あなたの方法では、ステータスバイト全体は使用する前にしばらく消去され、それから使用時にゼロ、または消去/書き込みサイクルごとに16ビットに設定されます。同時に、データバイト全体で、消去ごとに50%の確率、書き込みごとに50%の確率、または消去/書き込みサイクルごとに平均8ビットの確率があります。合計は1サイクルあたり24ビットです。たとえ各消去/書き込みサイクルがバイトごとに同等であると仮定したとしても、1バイトではなく2バイトが変化します。 (上記のコメントを編集することはできません。最後のセンテンスで、変更を得るために、ある特定のビットについて50/50を消去しないでください)
追加された 著者 Floris,
また、バイトごとに複数のビットを使用しないのはなぜですか。 1バイト目は7ビットのカウントデータと1ビットのLEDデータを格納します。初めて書き込むときは、バイトを0000001L、次に0000010Lなどに設定します。1111111Lに達すると、次のバイトをすべて0にリセットします。最後のバイトに到達したら、最初のバイトをゼロにリセットします。それから、あなたの次の読み込み位置は、先頭の7ビットが0 <7-bit <= 127である最初のバイトで、次の書き込み位置は7-bit <127の最初のバイトです。すべての書き込みは2バイトではなく1バイトに行われます。
追加された 著者 Floris,
リンクした両方のPICは、書き込むたびにバイトレベルの消去を行います。 13ページ(あなたのリンク)および93ページ(PIC12F635)を参照してください。グローバル消去については何も見ていません。いずれにせよ、それはまだ1消去、書き込みごとに1書き込みです。なぜ、グローバルな消去がローカルな消去よりも負担が少ないのかわかりません。
追加された 著者 Floris,
電源が落ちるまでEEPROMへの書き込みを控えることができます。コンデンサは、現在の状態を書き込むのに十分なだけuCを動作させ続けるのに十分な電荷を蓄積する必要があります。これにより、EEPROMの寿命が大幅に延びる可能性があります。
追加された 著者 Floris,

これは非常に素朴な提案かもしれませんが... ボタン電池で駆動される低電力トランジスタラッチについてはどうでしょうか。次に、その出力を使用して電源で駆動されるオペアンプにフィードします。そのようにしてあなたは有用な出力を供給することの負担のボタン電池を降ろします。電源が切られている間、あなたはとにかくそれを使うことができませんね。

編集:また - 下記のコメントに従って - それはそれが供給がなくなった場合ラッチがオペアンプから分離されるようにすることをお勧めします。供給によって供給されるどんな種類のリレー - または等価回路 - はそこで仕事をすることができるはずです。

単純な腕時計がボタン電池で何年も駆動できることを考えると、単純なラッチに電力を供給することはそれに10年続く電池ごとの寿命を与えるべきです。 2つのバッテリーを並列に接続して、情報を失うことなく、一度に1つずつ交換することもできます。

2
追加された
もしそうであれば、電源がなくなったときにオペアンプへの入力を遮断して、本質的にラッチを切り離す方法はありませんか?どんな種類のリレー、あるいはそれと等価な回路がそこでトリックをするでしょう、そうではないでしょうか?
追加された 著者 Alan Christensen,
電源電圧より高い入力電圧を許容するオペアンプはごくわずかしかありません。これはシャットダウン時の場合です。
追加された 著者 Arsenal,

最も単純な1つのコンポーネントソリューションは双安定リレーです。そして、あなたは状態を読むために抵抗だけを必要とするでしょう。

2
追加された

ヒューズ頻繁に交換するのは面倒なので、ブレーカーにアップグレードできます。

1
追加された
それで...デフォルトで1が出て(電流が流れます)、ゼロに設定するために、あなたはそれを飛ばすためにヒューズを通して電流の塊を送ります、今電流は通りません、再び1に設定するために、置き換えますヒューズ?
追加された 著者 Alan,
これはEE.SEに関する答えとしては少し薄いです。詳しく説明してください。
追加された 著者 Nick Alexeev,
私はここですぐに使える考え方が好きです。ボタンを押してLEDを消すと、ブレーカーが作動します。ボタンを押してLEDを点灯させると、ブレーカーがリセットされます。ラッチングリレーの奇妙なバージョンです。おそらく最善の選択肢ではありませんが、私はまだ創造性を楽しんでいます。
追加された 著者 Floris,
私は単に初期のROMデバイスがどのように機能したかについて言及していました。彼らはヒューズの配列でした。あなたがゼロが欲しいところにヒューズを飛ばしてください。もっと深い洞察が必要になるとは思わなかった。とても古い学校です。
追加された 著者 Ralph Tee,