題:
如何製作1位永久存儲電路?
Michael George
2015-09-01 03:52:08 UTC
view on stackexchange narkive permalink

我想做一個簡單的電路來存儲或保存1位數據。即使電源從電路斷開,該電路也應能夠記住LED的狀態(亮或滅)。我需要它像手機的硬盤驅動器,閃存或SD存儲卡一樣工作。

我製作瞭如圖所示的電路,輸出是一個與470歐姆電阻串聯的LED。我使用兩個襯套按鈕對電容器充電或放電,以便輸出LED亮起或熄滅。

在斷開電源或關閉電源後,電路能夠記住LED的狀態幾分鐘。

2或3分鐘後,電容器完全放電,電路丟失了數據。

enter image description here如何停止電容器放電?或者如何降低放電速度,以使電路在一周或更長時間後丟失其數據?

在此電路中,我使用555作為反相器(而不是gate),但是我可以使用任何其他IC,我的目的只是做一個簡單的永久性記憶。

您對使用鈕扣電池有多厭惡?無法在宏級別上複製EEPROM / Flash / FRAM單元。
@IgnacioVazquez-Abrams您可以使用閉鎖繼電器...
@IgnacioVazquez-Abrams我不想複製任何東西,我想知道它的工作原理並製作一個簡單的存儲單元。或做與一個存儲單元相同的工作的東西。僅用於學習電子產品
存儲單元很容易。非易失性存儲單元不是。
@MichaelGeorge:不,閉鎖繼電器的全部要點是它使用永磁體來保持其狀態,而無需施加外部電源。您只需要一個電脈衝即可更改其狀態。
經過精心設計和構造,您可以使電容器保持一周的電量:http://m.electronicdesign.com/analog/whats-all-capacitor-leakage-stuff-anyhow
關於電容器放電:如果正確斷開,它們可能會長時間保持電壓。http://www.robotroom.com/Capacitor-Self-Discharge-1.html
最早的電子計算機之一[Atanasoff-Berry計算機](https://en.wikipedia.org/wiki/Atanasoff%E2%80%93Berry_computer)在最早的DRAM中使用電容器。它們安裝在一對轉鼓上,並旋轉以依次將它們連接到一組用於寫入,讀取和刷新的觸點(每秒一次)。
十一 答案:
Dave Tweed
2015-09-01 04:22:31 UTC
view on stackexchange narkive permalink

原始的電子非易失性存儲器基於鐵氧體磁芯。雖然在一個方向或另一個方向磁化這樣的磁芯以存儲一個或零是相對容易的,但是它需要一些相當複雜的電路才能可靠地讀回。

現代非易失性芯片依賴於電荷存儲,但是為了使這項工作有效,您需要能夠創建一個基本具有零洩漏的電容器,以及一種讀出電荷的方法。這只能在微電子設備中完成,在這種情況下,電容器是一塊完全包裹在玻璃(二氧化矽)中的微小金屬片(“浮柵”),並通過其對附近晶體管的影響而讀出

另一個選擇是ferrorelectric RAM(FRAM),它使用一種特殊的介電材料,該材料具有兩個不同的,穩定的極化狀態。同樣,這僅在微電子學中有效。

因此,您需要選擇一些其他物理現象來存儲信息。一個明顯的選擇是閉鎖繼電器,該閉鎖繼電器將信息存儲在其電樞的物理位置中,該位置通過永磁體或彈簧保持在兩個穩定位置中的一個。可以通過施加相對短的電流脈衝來更改位置,並通過將電觸點連接到電樞來完成讀數。

主題鏈接:http://hackaday.com/2015/08/31/core-memory-for-the-hard-core/
由於您只有一個核心,因此無法使用霍爾效應傳感器或其他東西讀取它嗎?
@immibis:不容易。磁場幾乎完全包含在鐵心內部,幾乎沒有外部洩漏。
JamesRyan
2015-09-01 15:32:21 UTC
view on stackexchange narkive permalink

製作一個觸發機械開關的電路,例如無用的盒子。該電路需要加電以更改/讀取狀態,但要使其處於兩者之間。

Spehro Pefhany
2015-09-01 04:55:12 UTC
view on stackexchange narkive permalink

一個簡單的解決方案是使用諸如 PIC12F635之類的微控制器,該器件具有8引腳DIP或更小尺寸的DIP,並具有內置時鐘和掉電複位電路(後者對於保持EEPROM非易失性存儲器的完整性很重要。

所需的代碼並不多,這是一個不錯的入門項目。

所需的唯一外部部件是LED的旁路電容器和限流電阻。

最簡單的解決方案可能是2線圈閉鎖信號繼電器。

Wouter van Ooijen
2015-09-01 12:10:47 UTC
view on stackexchange narkive permalink

純電子產品不會製造永久的存儲單元,但電容器中的電荷會接近該存儲單元(需要定期刷新)。 EEPROM /閃存將該要求延長至10年,因此出於實用目的,它稱為永久性。但這不是普通組件所能達到的。

真正的永久內存使用某種物理上的雙穩態現象。戴夫(Dave)提到的鐵氧體磁芯的磁化得到了廣泛使用(聽說過“磁芯傾卸”嗎?)。 helloworld922提到的雙穩態(或閉鎖)繼電器更易於使用。

當您看一下早期計算機的工作方式時,您必須意識到單個單元的複雜性之間存在平衡,以及驅動電路的複雜性。鐵氧體磁芯非常簡單,但是驅動電路,尤其是讀出電路非常複雜。對於雙穩態繼電器則相反:繼電器每位相當複雜,但是控制電路非常簡單。

您的目的是什麼?

  • 如果僅是出於娛樂目的而創建一個單元,請使用雙穩態繼電器。

  • 如果您想演示實踐中不實際的工作方式(DRAM / Flash),請使用存儲在電容器中的電荷,並定期對其進行刷新。

  • 如果想使實用,請使用內置EEPROM(或可以對其FLASH進行自我編程)的小型微控制器。

William Price
2015-09-01 22:38:56 UTC
view on stackexchange narkive permalink

保險絲。經常更換可能很煩人,所以您可以升級到斷路器。

對於EE.SE的答案,這有點薄。請詳細說明。
所以...默認情況下為1(電流將通過),設置為零,您通過保險絲發送一小段電流將其熔斷,現在電流不再通過,再次設置為1,則更換保險絲?
我喜歡這裡開箱即用的想法。當您按下按鈕以關閉LED時,它將使斷路器跳閘。當您按下按鈕以打開LED時,它將重置斷路器。這只是閉鎖繼電器的怪異版本。可能不是最好的選擇,但我仍然喜歡創造力。
我只是在指早期的ROM設備如何工作。他們是一堆保險絲。在需要零的位置熔斷保險絲。我認為這不需要更深入的了解。很老派。
Houston Fortney
2015-09-02 00:50:12 UTC
view on stackexchange narkive permalink

實用解決方案:

@DaveTweed提到的鎖存繼電器是最簡單的。

如果您想要固態解決方案,可以使用諸如這東西。您可以僅將地址線綁定到固定地址,而僅使用數據線之一。您將需要一些附加的膠合邏輯。

有趣的解決方案:

如果您正在尋找展示內存的項目,則可以使用帶有磁滯磁芯的螺線管。在一個方向上將內核飽和以存儲1,在另一個方向上將內核飽和以存儲0。這要進行寫操作。

然後將其安裝在像此霍爾傳感器。然後,您可以使用霍爾傳感器(只是一個模擬比較器)查看剩餘磁場的極性以確定狀態。

MichaelS
2015-09-02 10:48:37 UTC
view on stackexchange narkive permalink

威廉·普萊斯(William Price)給出的保險絲/斷路器答案是最明顯的解決方案:

一個開關。

帶燈。插上電源。拔掉將其移至夏威夷。插入。
重新打開。

將其關閉。拔掉拿回家插入電源。
它保持關閉狀態。

如果您想讓計算機啟動/關閉LED,它的作用就不那麼明顯了。但是,如果使用按鈕撥動開關和電子激活的螺線管,則可以完成工作。按下按鈕以打開LED,它激活電磁閥,LED點亮。再按一次,LED熄滅。拔下插頭,按鈕仍然機械地設置為打開或關閉。讓頂部按鈕激活一個電磁閥,該電磁閥按下翻轉開關的頂部。然後,底部按鈕激活第二個螺線管,該螺線管按下撥動開關的底部。

並不是說這是遠程操作的最佳方法,但它是有功能的。

您所要做的只是描述如何構建雙穩態繼電器,這是提出的首批解決方案之一。
第二部分,是的,僅描述笨拙的雙穩態繼電器,如果他有興趣構建自己的繼電器,則可能很有用。但是,第一部分不是。我認為這與問題的意圖不符(我想他對電子學習感興趣,而不是構建最簡單的設計),但是單個撥動開關比電子鑽頭更簡單,更容易設計,並且滿足了前幾個句子。
您可能是對的,但我們不確定,因為OP從未回來討論它-儘管他確實“接受”了我的回答。我根據*“電路應該能夠記住LED的狀態” *來解釋該問題的總體意圖,以指代電子可重寫存儲器。這將排除只讀存儲器(開關,跳線,二極管等)和一次寫入存儲器(熔絲)。
我的想法是LED的狀態與最後按下哪個按鈕直接相關。從邏輯的角度來看,捕獲按鈕的狀態與捕獲LED的狀態相同。
tcrosley
2015-09-01 04:40:45 UTC
view on stackexchange narkive permalink

您可以使用內置EEPROM的微控制器。 8位的 PIC16F84A具有64字節的EEPROM,通常可存儲10,000,000個字節,每個字節至少寫入1,000,000個字節(這被稱為字節耐力)。在另一個答案中選擇的PIC12F635具有128字節EEPROM和100,000次寫入的字節耐久力。 PIC24F16KA102是一個16位處理器,具有512字節的EEPROM和10萬次寫入的字節耐力。

OP並不表示LED閃爍的頻率。出於討論的目的,假設它是每分鐘四次。

在一年中,它將閃爍

$$ 4 * 60 * 24 * 365 = 2,102,400 \ space times。 $$

由於EEPROM需要捕獲最後的打開和關閉事件,因此它將被寫入該數字的兩倍,即大約 420萬次 強>。在五年內,這是 2100萬次。

很顯然,這將超過我現在內置在微控制器中的任何EEPROM的規格。

但是有一個簡單的解決方案。不用一遍又一遍地使用相同的字節來跟踪打開或關閉狀態,而是可以使用字節數組來填充整個芯片。

對於數組中的每個元素,您需要兩個字節。因此,一個64字節的EEPROM(如PIC16F84A中的EEPROM)可以容納32個元件。每次寫入EEPROM時,都將0寫入狀態字節(表示該元素有數據),或者將0寫入數據字節(LED最後熄滅)或0xFF(LED最後點亮)。下次訪問EEPROM時,將對元素進行索引,直到找到一個狀態字節為0xFF的元素,然後使用該元素。如果沒有剩餘,則重新初始化EEPROM並重新開始(對於低端PIC,這意味著向每個狀態字節寫入0xFF;對於PIC24,有一條命令擦除整個EEPROM)。如果您需要了解LED的最後狀態,可以像以前一樣對數組進行索引,但是現在返回一個元素並讀取數據字節。

enter image description here

對於PIC16F84A,這實質上是將對單個字節的訪問次數除以16的因子(16個而不是32個,因為每個狀態字節被寫入兩次)。這樣一來,它總共可以處理1600萬次寫入,足以容納近四年的數據。具有更大EEPROM但字節耐力較小的100K的PIC12F635將能夠處理320萬次寫操作,足夠用9個月。

具有512字節EEPROM和批量擦除功能的PIC24F16KA102將能夠能夠處理2560萬次寫入,足夠五年以上。

如果閃爍速率僅為每小時的四次,而不是每分鐘的四次>,則意味著每年總計70,080次寫入。甚至具有每字節100,000次寫入能力的PIC12F635也可以持續使用45年!

在斷電之前,您可以避免寫入EEPROM。電容器應存儲足夠的電荷,以保持uC運行足夠長的時間以寫入當前狀態。這樣可以大大延長EEPROM的壽命。
另外,為什麼不每個字節使用多個位呢?第一個字節存儲7位計數數據和1位LED數據。首次寫入時,將字節設置為0000001L,然後設置為0000010L,依此類推。當達到1111111L時,將下一個字節重置為全零。到達最後一個字節後,將第一個字節重置為零。然後,您的下一個讀取位置是其前7位為0 <7位<= 127的第一個字節,而下一個寫入位置是7位<127為首的字節。現在,您的訪問量幾乎增加了一倍,因為()每次寫入都是單個字節,而不是兩個字節。
我也想到了@MichaelS。首先,您不能從11111110轉到11111101,因為您不能寫入1(我顛倒了起始條件。)相反,您會在字節中一次寫入0。但是,在限制每個字節的寫入次數方面,它實際上沒有任何好處-您最終不得不向每個字節寫入8次,而不是一次。
我沒有使用過確切的PIC器件,但我的理解是,先擦除所有數據,然後更改不應立即默認的所有位。因此,如果“已擦除”的意思是全1,那麼您將擦除所有內容並更改1-6位,甚至可能更改為L。接下來,您將擦除所有內容並更改1-5、7位,可能更改為L。,您只需更改一些位(1110110L-> 1110111L僅更改位4和L)。由於每次擦除有50%的機會,每次寫入有50%的機會,因此要擦除給定的位,則平均為100%,即每個擦除/寫入周期為8位。
使用您的方法,整個狀態字節在使用前會被擦除,然後在使用時設置為零,或在每個擦除/寫入周期設置為16位。同時,您的整個數據字節每次擦除的機會為50%,每次寫入的機會為50%,或者每個擦除/寫入周期平均為8位。這樣一來,每個週期的總數為24位。即使我們假設每個字節的擦除/寫入周期是相等的,它仍在改變兩個字節而不是一個字節。(無法編輯以上評論,我的意思是給定的位為50/50,以便在最後一句中*更改*,而不是刪除。)
@MichaelS擦除(將所有字節設置回0xff)僅在使用了* all *個字節之後才發生。因此,在256字節EEPROM中,每256個計數將擦除一次。您無需在此方案中的每次寫入之前擦除。EEPROM中有兩種類型的“磨損”限制:一個在字節級別(所謂的“耐力”),另一個在全局級別(由於擦除)。後者通常是前者的10倍。
鏈接的兩個PIC每次寫入時都會進行字節級擦除。請參見第13頁(您的鏈接)和93(PIC12F635)。我看不到有關全局擦除的任何信息。無論哪種方式,仍然是一次擦除,一次寫入一次。我不確定為什麼全局擦除比本地擦除要少。
另請參見http://stackoverflow.com/a/10669628/1015327或http://electronics.stackexchange.com/questions/60342/wear-leveling-on-a-microcontrollers-eeprom
@MichaelS-感謝您對全局擦除所做的更正。無論如何,我都是基於字節耐力來進行計算的,所以沒關係。但是,我將更新答案以指示某些EEPROM不需要單獨的擦除操作。(例如,PIC24F系列確實具有批量擦除功能。)
Bruce
2015-09-02 00:25:57 UTC
view on stackexchange narkive permalink

最簡單的一種組件解決方案是雙穩態繼電器。而且,您只需一個電阻即可讀取狀態。

MichaelK
2015-09-02 16:25:01 UTC
view on stackexchange narkive permalink

這可能是一個非常幼稚的建議...但是如何構建由鈕扣電池驅動的低功率晶體管鎖存器。然後使用輸出的信號饋入由電源驅動的運算放大器。這樣,您就可以減輕鈕扣電池的負擔,避免產生有用的輸出。您不能在電源關閉時使用它,對嗎?

編輯:此外-根據下面的評論-建議這樣做,以便在電源消失時將鎖存器與運算放大器隔離。由電源供電的任何類型的繼電器(或等效電路)都應該能夠在此處完成工作。

考慮到一個簡單的手錶可以由鈕扣電池驅動多年,為一個簡單的手錶供電。鎖存器可以使每個電池的使用壽命長達十年。您甚至可以並聯放置兩節電池,這樣您就可以換出它們(一次換一次)而不會丟失信息。

只有很少的運算放大器可以使輸入端的電壓高於電源電壓,在停機期間就是這種情況。
如果是這樣的話,如果電源中斷,實際上沒有隔離閂鎖的方法,那麼是否沒有辦法切斷運算放大器的輸入呢?任何一種繼電器(或等效電路)都可以解決問題,不是嗎?
Jason Morgan
2019-07-23 19:19:38 UTC
view on stackexchange narkive permalink

可以對小型CPLD進行編程,以驅動將一組簡單的值寫入I2C總線所需的協議。

NXP可以存儲非常小的存儲器,用於替換DIP開關,例如PCA8550 / PCA9561。

將兩者結合在一起,您將擁有一個很小的固態開關,可以記住它的狀態。



該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...