¿Cómo crear un circuito de memoria permanente de 1 bit?

10

Me gustaría hacer un circuito simple para almacenar o guardar 1 bit de datos. El circuito debe poder recordar el estado de un LED (encendido o apagado) incluso si la alimentación está desconectada del circuito. Lo necesito para trabajar como un disco duro, una memoria flash o una tarjeta de memoria SD de teléfonos celulares.

Hice un circuito como se muestra en la imagen, La salida es un LED en serie con una resistencia de 470 ohmios. Utilizo dos botones de casquillo para cargar o descargar el condensador, por lo que el LED de salida está encendido o apagado.

Después de desconectar el suministro o apagar la electricidad, el circuito pudo recordar el estado del LED durante unos minutos.

Después de 2 o 3 minutos, el capacitor se descargó completamente y el circuito perdió sus datos.

¿Cómo puedo detener la descarga del condensador? o ¿cómo puedo reducir la velocidad de descarga para que el circuito pierda sus datos después de una semana o más?

En este circuito, uso 555 como inversor (no puerta) pero puedo usar cualquier otro IC. Mi objetivo es crear una memoria permanente simple.

    
pregunta Michael George

10 respuestas

29

La memoria no volátil electrónica original se basa en núcleos de ferrita. Si bien es relativamente fácil magnetizar un núcleo de este tipo en una u otra dirección para almacenar uno o un cero, se necesitan algunos circuitos bastante sofisticados para leerlo de manera confiable.

Los chips no volátiles modernos dependen del almacenamiento de carga, pero para hacer que esto funcione, debe poder crear un condensador que tenga prácticamente cero fugas y una forma de leer esa carga. Esto solo puede hacerse en el contexto de la microelectrónica, donde el condensador es una pequeña pieza de metal (la "puerta flotante") que está completamente encerrada en vidrio (dióxido de silicio), y se lee mediante su influencia en un transistor cercano .

Otra opción es la RAM ferroreléctrica (FRAM), que utiliza un material dieléctrico especial que tiene dos estados de polarización estable y distintos. Nuevamente, esto solo funciona en microelectrónica.

Por lo tanto, debe elegir algún otro fenómeno físico para almacenar su bit de información. Una opción obvia es el relé de enclavamiento, que almacena información en la posición física de su armadura, que se mantiene en una de las dos posiciones estables mediante un imán permanente o un resorte. La posición se puede cambiar aplicando un pulso de corriente relativamente corto, y la lectura se logra conectando contactos eléctricos a la armadura.

    
respondido por el Dave Tweed
7

Haz un circuito que active un interruptor mecánico, por ejemplo. caja inútil. El circuito tendría que estar encendido para cambiar / leer el estado pero lo mantendría en el medio.

    
respondido por el JamesRyan
6

Una solución simple sería un microcontrolador como PIC12F635 que está disponible en una DIP de 8 pines o más pequeño, y tiene un reloj incorporado y un circuito de restablecimiento de salida (este último es importante para mantener la integridad del almacenamiento no volátil EEPROM).

El código requerido no es mucho, es un buen proyecto de inicio.

Las únicas partes externas requeridas serían un condensador de derivación y una resistencia limitadora de corriente para el LED.

La solución más simple es probablemente un relé de señal de enganche de 2 bobinas.

    
respondido por el Spehro Pefhany
6

La electrónica pura no creará una celda de memoria permanente, pero la carga en un capacitor puede acercarse a ella (necesitará una actualización regular). La memoria flash / EEPROM extiende este requisito a 10 años, por lo que a efectos prácticos se le llama permanente. Pero esto no es algo que se pueda lograr con los componentes ordinarios.

La memoria permanente real utiliza algún tipo de fenómeno físico biestable. La magnetización de los núcleos de ferrita mencionados por Dave se usó ampliamente (¿ha oído hablar de un 'volcado de núcleo'?). El relé biestable (o enganche) mencionado por helloworld922 es más fácil de usar.

Cuando observa cómo se hizo esto en las primeras computadoras, debe darse cuenta de que existe un equilibrio entre la complejidad de la única celda y la complejidad del circuito de conducción. Un núcleo de ferrita es muy simple, pero el circuito de conducción y especialmente el de lectura es muy complejo. Para un relé biestable es lo contrario: el relé es bastante complejo por bit, pero el circuito de control es muy simple.

¿Cuál es tu propósito?

  • Si desea crear una celda solo por diversión, use un relé biestable.

  • Si desea demostrar cómo se hace en la práctica (DRAM / Flash) sin ser práctico, use una carga almacenada en un capacitor y actualícela regularmente.

  • Si desea hacer algo práctico, use un microcontrolador pequeño que tenga EEPROM incorporada (o que pueda autoprogramar su FLASH).

respondido por el Wouter van Ooijen
3

Solución práctica:

Un relé de enclavamiento como lo menciona @DaveTweed es el más simple.

Si desea una solución de estado sólido, puede utilizar una IC de memoria de interfaz paralela como esta cosa . Solo puede vincular las líneas de dirección a una dirección fija y solo usar una de las líneas de datos. Necesitarás un poco de lógica de pegamento.

Solución interesante:

Si está buscando un proyecto para demostrar memoria, puede usar un solenoide con un núcleo histerético. Saturar el núcleo en una dirección para almacenar un 1, saturarlo en la otra dirección para almacenar un 0. Eso se encarga de las escrituras.

Luego, monte eso justo encima de un sensor como esto sensor de pasillo . Luego, puede observar la polaridad del campo remanente con el sensor Hall (solo un comparador analógico) para determinar el estado.

    
respondido por el Houston Fortney
3

La respuesta más obvia fue la respuesta más evidente:

Un interruptor.

Toma una lámpara. Conéctelo. Enciéndelo. Desenchúfelo. Moverlo a Hawai. Conéctelo.
Se vuelve a encender.

Apágalo. Desenchúfelo. Llévalo a casa. Conéctelo.
Se mantiene apagado.

Si desea que una computadora active / desactive el LED, no es tan útil. Sin embargo, si usa un interruptor de botón pulsador y un solenoide activado electrónicamente, podría hacer el trabajo. Presione el botón para encender el LED, activa el solenoide, el LED se enciende. Empuje de nuevo, el LED se apaga. Desenchúfelo, y el botón aún está activado o desactivado mecánicamente.

Si desea conservar la funcionalidad explícita "esto si definitivamente está activado, eso está definitivamente desactivado" (en lugar de un interruptor), podría hacer que el botón superior active un solenoide que presiona en la parte superior de un interruptor. Luego, el botón inferior activa un segundo solenoide que presiona la parte inferior del interruptor giratorio.

No decir esto es la mejor manera remota de hacerlo, pero es funcional.

    
respondido por el MichaelS
2

La solución más simple de un componente sería un relé biestable. Y solo necesitarás una resistencia para leer el estado.

    
respondido por el Bruce
2

Podrías usar un microcontrolador que se haya construido en EEPROM. El PIC16F84A de 8 bits tiene 64 bytes de EEPROM, lo cual es bueno para típicamente 10,000,000 y un mínimo De 1,000,000 escrituras a cada byte (esto se conoce como resistencia de bytes). El PIC elegido en otra respuesta, PIC12F635 tiene una memoria EEPROM de 128 bytes y una resistencia de bytes de 100.000 escrituras. El PIC24F16KA102 , un procesador de 16 bits, tiene 512 bytes de EEPROM y también una resistencia de bytes de 100,000 escrituras.

El OP no indica con qué frecuencia parpadeará el LED. Para los fines de esta discusión, asumamos que es cuatro veces por minuto.

En un año parpadeará

$$ 4 * 60 * 24 * 365 = 2,102,400 \ tiempos de espacio. $$

Dado que la EEPROM necesita capturar los últimos eventos de activación y desactivación, se escribirá al doble de ese número, o aproximadamente 4.2 millones de veces . En cinco años, esto es 21 millones de veces.

Claramente, esto superará las especificaciones de cualquier EEPROM que ahora incorporé en un microcontrolador.

Pero hay una solución simple para esto. En lugar de usar el mismo byte una y otra vez para mantener un registro del estado activado o desactivado, se puede usar una matriz de bytes, que llenan todo el chip.

Necesita dos bytes para cada elemento de la matriz. Por lo tanto, una EEPROM de 64 bytes, como la del PIC16F84A, podría contener 32 elementos. Cada vez que escribe en la EEPROM, escribe un 0 en el byte de estado (es decir, este elemento tiene datos) y un 0 en el byte de datos (el LED se apagó por última vez) o un 0xFF (el LED se encendió por última vez). La próxima vez que acceda a la EEPROM, indexará los elementos hasta que encuentre uno con un byte de estado 0xFF y luego use ese elemento. Si no queda ninguno, reinicie la EEPROM y comience de nuevo (para los PIC de gama baja, esto significa escribir 0xFF en cada uno de los bytes de estado; para el PIC24, hay un comando para borrar la EEPROM completa). Si necesita conocer el último estado del LED, indexe a través de la matriz como antes, pero ahora retroceda un elemento y lea el byte de datos.

Esto esencialmente divide el número de accesos a un solo byte por un factor de 16 para el PIC16F84A (16 y no 32 porque cada uno de los bytes de estado se escribe dos veces). Por lo tanto, podría manejar un total de 16 millones de escrituras, suficientes para casi cuatro años de datos. Y el PIC12F635 con su EEPROM más grande pero con una resistencia de un byte más pequeño de 100 K, podría manejar un total de 3,2 millones de escrituras, suficiente para nueve meses.

El PIC24F16KA102, con su EEPROM de 512 bytes y su función de borrado en masa, podría manejar 25.6 millones de escrituras, suficientes por más de cinco años.

Si la velocidad de parpadeo fue solo cuatro veces por hora en lugar de cuatro veces por minuto , esto significa un total de 70,080 escrituras por año. ¡Incluso el PIC12F635, con su resistencia de 100,000 escrituras por byte, duraría 45 años!

    
respondido por el tcrosley
2

Esta puede ser una sugerencia muy ingenua ... pero ¿qué hay de construir un pestillo de transistor de baja potencia impulsado por una batería de botón . Luego use la salida de eso para alimentar a un amplificador OP que es impulsado por la fuente de alimentación . De esa manera, se descarga la batería del botón de la tensión de alimentación de la salida útil; no se puede usar de todos modos mientras el suministro está apagado, ¿verdad?

EDITAR: También, de acuerdo con el comentario a continuación, es recomendable hacerlo para que el pestillo quede aislado del amplificador OP si la fuente se aleja. Cualquier tipo de relé, o circuito equivalente, alimentado por el suministro debe poder hacer el trabajo allí.

Teniendo en cuenta que un simple reloj de pulsera puede ser manejado por una batería de botón durante años, alimentar un simple pestillo debería darle una vida útil por batería que dura una década. Incluso puede colocar dos baterías en paralelo para poder cambiarlas, una a la vez, sin perder la información.

    
respondido por el MichaelK
1

Un fusible. Puede ser molesto reemplazarlo con frecuencia, por lo que podría actualizar a un interruptor.

    
respondido por el William Price

Lea otras preguntas en las etiquetas