Sunday, 26 July 2015

Core Rope Memory - the story so far

This is an overview of the demo of Core Rope Memory as we presented it at yesterday's Dublin Maker. There are already design improvements in the planning stage so watch this tag.

Here's a photo of how the demo currently looks:




The green donut shaped magnets, and the red wires (let's call them rope-wires) woven through and around them, are the Core Rope Memory. Everything else you see is equipment for reading the values from it. If you take that piece of balsa wood out of all the other circuitry, it still contains the same data, because it is the weaving of the wires that stores data into the memory.

At the top left, plugged into the battery, is the pulse generator. This is a circuit based on the 555 timer chip that generates a square wave. The red wire coming from that circuit is a probe that can send that pulse through the horizontal wires in the memory, one at a time.

Each of the green cores has another wire (let's call it the core-wire) wrapped around it several times. Because of an effect called electromagnetic induction, we can induce a current in the core-wires. If a rope-wire goes through a particular core, and we send a pulse through it, a current starts to flow through that core-wire. If the rope-wire goes around the core, no current is induced. We can interpret this as 1 (where a current is induced) and 0 (where no current is induced). That means that we can encode a binary string for each rope-wire. That binary string's length with be equal to the number of cores. The wires in the photos encode T (10100), I (01001), M (01101), U (10101), I (01001).

When the Arduino senses new values in the core-wires, it interprets them according to a sort of truncated ASCII, and displays the character on the LED display. I knew I only wanted to display capital letters, and I had reasons for using 5 bits, so I pre-pended 010 to the values read from the memory, and display the resulting ASCII character.

It's a pity I had to include a multiplexer in this demo, because it makes it look more complicated than it is (I had simply run out of analog pins on the Arduino), but I'll be able to use it in future versions of the demo.

Thanks again to everyone who made Dublin Maker 2015 possible, and special thanks to the author of this Core Rope Memory tutorial.

4 comments:

  1. Hello, my name is Pedro and I was at Dublin Maker and I was really intrigued by your project.
    I think what really got me hooked was how this was used for the Apollo missions as memory and such. As a result after leaving I began wondering how one could take your project to a new level and use a lot more cores.
    On a different note, since it seems to use ASCII table to interpret values it would be natural to read directly from the cores, I could not understand the multiplexing part. I assume you had to workout some truth tables for it, but aside from that, why prehend 010 at the multiplexer input when you can have 5 pins going directly to the analog inputs and use code to prehend 010 and save the need for the multiplexer? I am probably missing something really obvious...
    Also I assume that you are using analog inputs since the voltage you get out of the cores after rectification isn't a 5V value and as such not possible to interpret as digital. However, if you boost the 555 voltage enough you might achieve a 5V digital output from the cores; all you need is to regulate the voltage that is fed into the 555. As such, you'd get rid of all the need for analog inputs and use digital inputs which are much more abundant (and no need for multiplexing). It would also be faster as the Arduino wouldn't use it's ADC. The code would be simpler too. Additionally, you could extend the digital inputs almost ad infinitum using Shift Registers and the Arduino ShiftIn function, and as such use A TON of cores, so that you could store big strings, basic games, like Simon Says, and even (who knows?) crude bitmap images. After having lots of cores, it would be benefitial to turn those into a PCB (with magnetic isolation of course) but that might be going too far :P. These are all ideas I might implement in the future but I think you are way more able than I am and you probably do understand a whole lot more since you made the project.
    Your explanation of the project and how it worked was great and the idea is brilliant, it was probably the best thing I saw at Dublin Maker. Your enthusiasm about it was contagious and that's why I am writing this.

    Congratulations,
    Pedro :)

    ReplyDelete
  2. Hi Pedro,

    Thanks for your lovely comment. I'm glad you enjoyed my stand. :)

    While it would be possible to expand the project with more cores (the Apollo Guidance Computer had a couple of thousand cores in the cubic foot of Core Rope Memory), it's not the direction I'm most interested in. This type of memory has been superseded technologically. I am interested in its aesthetic qualities though, so I'll be pursuing making it wearable, and stick to 7 cores in most cases.

    It was a pity that I had to include a multiplexer in this demo, but it was mostly due to pressure of time. It wasn't nearly as complex as it looked, and didn't require any truth tables or anything, it was literally just giving me more analog pins. That end of the demo will definitely be simplified in future versions.

    Thanks again, and please let me know if you make anything inspired by my work.

    Margaret

    ReplyDelete
  3. Thanks for your reply Margaret,

    If you're going for wearable, you could use an ATTiny85/45 and 2 3V coin cells to power this. You'd have to stick with the multiplexer though since the attiny doesn't have many analog input pins, but if you use the multiplexer as an IC (and not as a board) you could make a small wearable circular-ish PCB (and maybe something like a watch, with the core wires along the bracelet part) or a long, bracelet like PCB (that is much harder). I have an attiny85, some coin cells, a 555, a multiplexer and an LCD on my workshop so I could give it a shot. I can even design a PCB (if this works) and make a test version and send it to you if you want. I would just need a schematic and the arduino code. I don't know if you want to make this proprietary or anything so it really is up to you :)

    Sorry if I am being annoying xD
    Pedro

    ReplyDelete
  4. Hi Pedro,

    I've actually been offered space, equipment, and advice at a local university, so I'm all set for PCB design etc. Please do leave a comment if you make something though.

    ps I wouldn't try to restrict people making stuff inspired by mine even if I had any claim over the technology :)

    ReplyDelete