Rod Logic for Mechanical Computer

Inspired largely by Chris Fenton’s Turbo Entabulator, and to some degree by Charles Babbage’s legacy, I started work on a rod computer.

The rod logic uses a completely different mechanism from the difference engine and the Turbo Entabulator.  Many people have constructed basic rod logic gates from Legos or other mechanical contrivances, but most of what I can find on Google is just single gates or an assembly of a relatively small number of gates.  I did find one very admirable effort by Robert Baruch at designing and building a larger scale system with many rods.

Also worth mentioning as prior art is a paper by Ralph C. Merkle that discusses rod logic with the goal of developing a MEMS device that might one day achieve higher density and efficiency than today’s electronic computers.

To get things started, I constructed a proof-of-concept prototype to test the feasibility with moderately sized pieces.  I also wanted to test a particular method for resetting the rods.

Merkle’s design focuses on a mechanism where the rods are reset by running the entire mechanism in reverse, which is important for minimizing energy dissipation.  I had wanted something more akin to regular gates, where information only propagates forward through the network and can feed back into itself.

Within my design I call the input and sensing elements ‘flags’ and ‘pins’ respectively.  If the extended position is considered ‘true’ and the blocked position is considered ‘false’, then each rod computes a NOR function of the perpendicular rods above and below.  Depending on the location of the flag, each input rod may block an output rod in either position, or both (not that useful) or neither.  The output is then true only when none of the input flags block the pins.

The problem with resetting occurs if a flag does not block a pin and the pin moves past the flag.  Then if the flag subsequently blocks the pin while the pin is still extended, the pin is stuck on the far side of the flag.  This prevents the rod from computing anything until the sequence is reversed in order to get the pin out from behind the flag.  With a large number of interacting rods this could be a difficult puzzle all by itself.

To accommodate the resetting and feedback, all rods have three positions instead of two.  Two of the positions correspond to the logical ‘true’ and ‘false’, and the third position is a ‘reset’ position where there are no flags to impede the movement of orthogonal rods.  In the diagram below the blue rods show the three positions.  The dark blue rectangles symbolize where the flags would be and the small orange squares represent the pins.  The left and middle blue rods represent a binary 1 and 0, and the blue rod on the right represents the reset position where the orange rod is not blocked.

Three Positions

Each rod has a forward direction, where pushing the rod will, through one or more pins, detect the presence or absence of flags.  The backward direction moves the rod to the reset position which deactivates any flags and will always allow the dependent rods to move.  This turns out to work nicely with four phases that are pushed in sequence.  The diagram below shows an arrangement with rods oriented north (blue), west (orange), south (green), and east (yellow).
Four PhasesHere at the blue/orange intersections, the blue rods can have flags and the orange rods have pins, such that the blue rods are input for the orange rods.  The orange rods are then input to the green rods, meaning that at the orange/green intersections, the orange rods have flags and the green rods have pins.  Likewise the green rods are input for yellow and yellow are input for blue.This arrangement is especially nice when it comes to resetting the rods.  If blue and green rods are pushed north together, the blue rods will compute based on the position of the yellow rods, and the green rods will reset, since they are pushed backwards.  Then if the orange and yellow rods are both pushed west, the orange rods will compute based on the position of the blue rods and the yellow rods will reset.  Since the green rods are reset, there will be no green flags to prevent the resetting of the yellow rods.  The problem of pins being stuck past the flags can’t occur because of the sequence of resetting: all the inputs (flags) are reset just prior to resetting the outputs (pins) that depend on them.Here is a demonstration of the cycle with one rod in each direction:

In this instance, the blue/orange (north to west) intersection replicates the value, meaning if the north rod is extended, then it does not block the west rod, and if the north rod is blocked, then it also blocks the west rod.

Three of the intersections are of this propagating type, and one intersection, the east to north intersection, is inverted.  So if the east rod is extended, it blocks the north rod, and if the east rod is blocked, then it does not block the north rod.

Later we’ll have to see how well this scales to dozens of gates or more…

So I Bought a 3D Printer

Yes, I had been working toward building my own RepRap style 3D printer / CNC mill.  Got the XYZ working, steppers, stepper drivers, and Arduino for control.  Got the Marlin firmware and pronterface host-side connected and working too.

The extruder was a bit of a challenge, though I did get part of the way there.  I had an aluminum heating block and thermistor and I had milled my own nozzle, but setting up a fourth stepper motor with gears or something similar was a bit daunting.  If only I could print some of the necessary pieces…

So I broke down and bought a PrintrBot Metal Simple.  I ordered the kit, not so much because it was cheaper, but so that I could have the experience of putting it together and I would get a good familiarity with all the pieces and how they work.

Unfortunately it has pretty well derailed my efforts at getting my home-built one working, because since I have a working one, I no longer need my RepRap.  I am not sure if this is good or bad — I think it is ultimately good because I can shift focus to more robotics and more original concepts, rather than spending energy on building yet another 3D printer.  The 3D printer problem is pretty much solved and with everyone jumping on the bandwagon, the 3D printer space is getting a bit crowded anyway.

The 12-foot walking rideable robot world is still wide open, with only a few exceptions.  Most are hexapods and there are no true bipeds that I know of.

Servos by Shift Register

Below is a demonstration of using a small number of pins to drive a large number of servos using 74HC595 shift registers.  The shift registers are serial-in, parallel-out, with latch.

This is pretty low-tech, and I’m sure many people have done similar things before.  The demonstration was actually testing two things, one being the overall method (including software design) for manipulating a large number of servos using shift registers, and the other being the fabrication of the circuit board itself.

There are many places online where people describe using toner transfer.  The concept is simple.  Just use a laser printer to print the circuit, and then use heat to melt the toner off of the paper and onto the copper surface.  Etching solution removes copper where the toner is absent, and then the toner is scraped off the copper.  Easy.

The tricky part is getting the toner to stick to the copper when melted, and to not stick to the paper.  Ordinary paper is extremely poor for this purpose because the toner much prefers to adhere to the paper rather than the circuit board.  Special-purpose papers designed specifically for toner transfer are available, but they are rather expensive.  Some of the glossy paper intended for inkjet photo printing is said to be good, but I haven’t done enough research to know which is best.

One person had suggested magazine paper, which worked well for me, and has the added advantage of being very inexpensive.  I have not directly compared it to glossy photo paper, but it worked about as well as I could have hoped.

I also found that sanding the copper surface with 220 grit sandpaper improves the adhesion.  Someone online had recommended 600 grit sandpaper, but it is too smooth, and adhesion is poor.  I notice a big improvement with 220 compared to 600.

Some folks also suggest using wax paper and some suggested kitchen parchment.  DO NOT USE THESE.  For one, it doesn’t work, and in addition it will mess up your printer.  In my case the toner did not adhere at all to the paper, and it came out as a powder which fell off the page and made a mess.  Regular documents did not print properly until I had fed several sheets through, and even now the printer does not print perfectly.

I may try some photo paper for my next circuit board, but until then, the recipe I have seems to work fairly well: a magazine page and 220 grit sandpaper.  Oh, and I use a regular iron.  I haven’t optimized the temperature but it seems I don’t need to.

Shift Register Servo Driver

Shift Register Servo Driver Underside

Skid Rails and Pulleys

One of the things I’ve been experimenting with to reduce cost of a 3D printer system is a system of rails and pulleys, to eliminate the linear bearings and lead screws that are used in the more conventional RepRap designs.

With a table saw, a straight V shaped groove can be cut on the underside of a plank.  With a matching rail shape, an extremely simple linear slide can be made, with very good stiffness and no slop.  As long as the lateral forces are low, which they usually are with a FDM style printer, this ought to work well for very low cost.

Here is a video of an earlier attempt, using primarily particle board.  The grooves and rails were made using a table saw.

(Original video taken August 8, 2014.)

(This setup was later torn down and rebuilt because poor planning had left no way to securely attach a Z-axis above the XY table.)

First attempt at anthill casting

Here is the first attempt I made at casting an anthill.  Inspired by an extremely popular video that probably almost everyone has seen by now.

Here is mine:



The original date of this attempt was June 15, 2014.

Here is the finished product:

Ant Casting 1

 

A few lessons: first, always wear safety protection.

Second, do not use pipe for a riser, because the pipe ends up essentially welded to the piece and very hard to separate.  A berm of sand works much better.

Third, do not attempt to cast abandoned ant colonies.  In this case there had been an ant colony but it was no longer active.  This causes the casting to be of poorer quality, as there are many cracks and collapsed tubes.  I also believe the explosion is partly due to the anthill being abandoned.  A small pool of water or an underground earthworm or grub worm may have been the cause of the explosion, and it stands to reason these may be much less likely in an actively maintained ant colony.  Of course this does not negate the necessity of safety protection.

A later video will describe the set up I use for the furnace and crucible.

A place for showing my activities

I’ve just set up a family of accounts, using this domain, and also a new gmail and youtube account, for showing the stuff that I do.  Generally this will be related to robotics, 3d-printing, electronics, and metal casting.  Clearly there is overlap in many of these areas, so this is not meant as a categorization, but an overall guide to the topics I’ll be posting about.

Mathematics, software, philosophy, politics, and astronomy are also fascinating to me, but are going to be outside the scope of this website.

To start with, nothing will be categorized, but if the volume is high enough to warrant categorization, then I may subdivide the posts later.