Project:Ball Computer

From London Hackspace Wiki
Jump to navigation Jump to search

Logic will get you from A to B. Imagination will take you everywhere. -- Einstein

Part 1: Introduction

Or how Flux's imagination got the better of him..

Long ago, when I was young, I received a copy of The Way Things Work. It's an awesome book and I spent many happy hours studying it. The two things that fascinated me most were nuclear power and electronic adders. I wanted to make my own water-based adder (I didn't have any uranium). I didn't really know where to begin and it stayed firmly in the realm of my imagination.

Fast-forward twenty years and I've just joined the Space. Somewhere buried in my subconscious the idea is dusted off and *bam* it's back (2011-04-12). Water-based logic gates, memory, coloured water displays (think of the mixing)... this is what the MakerBot was made for! How many transistors did the Intel 4004 have? Only 2,300...

Today (2011-04-13) I mentioned this to Tom (Reading hacker extraordinaire) over tea. He loved it too and we started to think it through. Stay tuned for Part 2 where we get a teeny bit practical.

Part 2: Where to begin?

Or how Hoxton Lake will have have to wait

A bit more reflection suggested water might not be the best place to start (Artag suggested caution). Ball bearings are easier to deal with a less messy. Some early areas to consider include:

  • Logic gates
  • Encoding
  • Memory

Logic Gates

The core of the machine, AND OR and XOR gates should allow the creation of an adder.

  • Could treat ball bearings like a fluid (example project by David Bober)
  • Could use magnetised balls for 1 and unmagnetised balls for 0 with some sort of clock mechanism
  • Could use different ball sizes for 1 and 0 (e.g. 4mm as 0 and 5mm as 1 - in which case a 0 ball weighs roughly half a 1 ball)
  • Consider using compressed air or solenoids to hold ball bearings in place

Encoding

Do we use pure decimal or binary coded decimal or something else? BCD has the advantage it's easy to convert for display, but is a bit more complex to process arithmetically.

Memory

Initial simple approach is to have a plastic grid with a ball indicating 1 and a void 0 (or magnetised balls indicating 1 and non-magnetised 0). If we use 3mm ball bearings then a 256 bit memory would be a sane size (around 10cm square). Need to work out how to read and write to this.

More to come...