Posts

making gear loops mesh

Image
 My design is based on a simplification of Babbage's Plan 27 from 1841. There are, like for all of his plans, many details unspecified, and many hidden subtleties.  One such subtlety relates to the ability of loops of gears to mesh correctly. Consider the following section of the Mill, from drawing A/093 dated 28 July 1841: The circles represent the pitch circles of the gears and are tangent in the drawing to enforce the required separation between the axle centers. ''A and 'A are stacks of 8" diameter figure wheels with 80 teeth. Two occupy one "cage" at each decimal position, so each stack holds two interleaved independent numbers. ''L are fixed long pinions, and ''S are movable long pinions, which together serve as shifters to multiply or divide numbers by 10. They are made of concentric locked gears of different pitch. ''G, ''J, 'G, and 'J are linking pinions that can be moved into place vertically to link the l...

a slideshow talk about the project

Image
I've given a half-hour slideshow talk about this project a few times. The last time it was done over Zoom, so we recorded it. If you're interested, I uploaded it to YouTube here: https://youtu.be/HRmGAhwOo0s

the quest to avoid framing plates

Image
In most of Babbage's designs, he calls for horizontal framing plates to separate each digit position in the stacks of digit wheels and pinions. Here's an example drawing from Plan 27. In this design each digit position is composed of a "cage" with digits from two interleaved numbers on the same stack. There are two primary motivations for the framing plates:  To provide a bearing surface for the wheels and pinions of a shaft so they don't bear on the ones below them. to constrain, using close holes through the plates, the lateral motion of the shafts, to the extent that they might have a tendency to bend or were not manufactured sufficiently straight. After all, for designs with 30 digits the shafts might be 9 or 10 feet long. But there are some significant drawbacks: The massive weight of all those thick iron plates. Obscuring the view of the mechanisms during operation. Making detection and repair of problems difficult because parts can't easily be accessed....

Store design experiments

Image
I've mostly adopted Babbage's Plan 27 arrangement for the Mill, including the use of independent columns of pinions for the various meshing: the rack with digit wheels, digit wheels with long pinions, and long pinions with the anticipating carriage. But is is appealing for the Store to use a simplification that he introduced in Plan 28: to engage the digit wheels by lifting, rather than with separate columns of pinions. That not only eliminates one of the lifting motions, but also two rotating motions for locking the digit wheels, since their vertical motion can lock them to fixed fingers on the frame.  The store wheels are duplicated many times, so having only two independent motions -- lift for meshing, and finger rotation for giving-off -- instead of five is a huge advantage. It is unfortunately not possible to do this in the Plan 27 Mill because both digit wheels in a "cage" (a pair of wheels representing the same decimal position of two different numbers) are som...

single-digit locks for shifting

Image
One of the subtleties of locking that Babbage doesn't seem to have detailed anywhere is what happens at the top and bottom of the digit stacks when shifts (which multiply or divide by 10) are done. If all digits are unlocked in the normal fashion, then the least significant digit (for left shifts) or the most significant digit (for right shifts) are undriven and are subject to accidental movement.  The solution is to devise a mechanism that will lock only that one digit. Here's an illustration for number stacks that are four digits high, showing which digits need to be locked. In my continuing quest to minimize the number of vertical axes, I came up with a way to do that with the existing long pinion locks: a single extra locking lever that is engaged by a "backwards" rotation of the axis.  When fully rotated counterclockwise, all locks are engaged with the inner gears of all digits. When fully rotated clockwise for shifts, only the one "backward" lock is en...

Locks can be "locked", "unlocked"... or "weakly locked"

Image
By the time Babbage had gotten to Plan 15 in 1837, he had elaborated the wheel locks to have a third state in addition to locked and unlocked: weakly locked. In that state the wheel was indirectly retained in position by a spring, but if the wheel were driven to move, it could. That prevents a free wheel from accidentally moving, perhaps because of vibration, while still allowing it to be forcibly changed. A prime example is a figure wheel during carriage, It may or may not be receiving a carry or a borrow, so it has to be loose to allow that to happen or not.  I've found weak locks to be helpful to improve reliability, not so much because of vibration, but because my concentric-axis arrangement without horizontal framing plates for the carriage digit wheels can transmit a very slight turning torque to undriven wheels. Babbage's typical mechanism for weak locks looks something like this: locks for Plan 27, from BAB/A/097 where he needs four supporting vertical axes: the lock pi...

Finding bugs

Image
Problem: when running the Fibonacci calculation at "Babbage speed" of 157 milliseconds per digit, it sometimes jammed. Of course, the root cause is something that happens earlier. One tool for finding such problems is a high-speed video capture that can look back in time, like a logic analyzer.   Doing that showed the bug: in my implementation of the anticipating carriage, the carry sector keepers started to move to the "restore" configuration before the figure wheels had been locked. That caused an additional half-digit motion of the carry sector and the digit wheels. The lock wasn't able to correct that much error, so in the next cycle the linking pinion was not able to mesh. Here's the annotated video at 1/5th speed. Diagnosing the problem was tricky, but fixing it was not, because until the control gets implemented as cams in hardware, it's all in the temporary microprocessor "nanocode".  All that was needed was to change "carry add; ...

It computes the Fibonacci sequence!

Image
 I finally got my prototype to do a real calculation: computing the Fibonacci sequence F(n) = F(n-1) + F(n-2). Started with 1 and 1, the sequence is 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377,... Here's a still image after it just computed 233, and here's a video of it computing all the numbers from 2 to 377 in less than two minutes. (The resolution is poor because Blogger has a 100MB limit on videos; see https://youtu.be/I2eggg87dSU for a better version on YouTube.) It's running at the full "Babbage speed" of 157 milliseconds per digit. I consider this my first real milestone! There are three phases to the computation, assuming F(n) is on digit wheel A1, F(n-1) is on anticipating carriage wheel F, and digit wheel A2 is zero. add A1 to F, while simultaneously preserving A1 by copying it to A2. move F to A1 move A2 to F Repeating that generates the Fibonacci sequence on A1. Below is the detailed microcode.  Each quoted string lists the operations that are exe...

On not compounding 3D printing sloppiness

Image
Part of the motivation for using 3D printed parts to to explore the limits of what can be done to implement Babbage-like mechanisms with parts that have poor dimensional accuracy. My Lulzbot Taz 6 printer has a nozzle diameter of 0.5mm, which is 0.02", or 20 mils. The feature accuracy is probably twice that, or 40 mils. Standard machinist tolerance for metal fabrication is 5 mils, so we're about 8 times worse. There are many places where the inaccuracy doesn't matter, or where a little hand-finishing with sandpaper can improve the fitness. But there are some cases, especially where two printed parts interact with each other, that are unfixable. One example was the scheme I had devised for digit wheels that allows them to stack without resting on each other even though there are no framing plates like Babbage used for many of his designs. When built entirely with 3D-printed parts, it required two concentric cylinders to fit closely together. It's a bit of a challenge to...

anticipating carriage success

Image
I finally rebuilt the entire mechanism using the fixes that worked in the partial test jigs, as described in the September 30th and October 30th posts. Success! Here's a video that shows it correctly adding 5678 from the digit wheels to 0322 on the carriage, which produces 6000 by executing one direct carry and a two-level chain of anticipated carries. It's running at 500 milliseconds per time unit. Well, I shouldn't call it a success yet, since it's not reliable. There are marginal clearances and motion stutters that have to be tracked down and fixed before it meets that bar. It will get a passing grade only when I can reliably compute an arbitrarily long sequence of Fibonacci numbers.  Addition takes 18 time units. Here is the microprogram for it, which currently runs in a microprocessor and controls stepper motors, but eventually would run from the Babbage-style program barrel and control cams and rods to create the same lifting and rotating motions. {"add"...

detents

Image
Babbage was not a fan of springs, which at the time were not uniform and were prone to failure. One of his 1837 "Principles of the Engine" was "to have no springs to do work, only retaining springs". But he certainly made liberal use of spring for detents, which impose one or more preferred locations for an otherwise continuous movement. It is, as Tim Robinson observes, a "soft" version of the locking that he uses when parts should not be moving at all. Here are examples, some of which include the option of a hard lock. So how to easily implement detents, with fewer parts -- and in particular fewer vertical shafts? My first attempt was to use a "spring plunger" from McMaster-Carr, which is an acetal plastic nose in a steel 8-32 threaded case, with an embedded spring that provides 1 to 3 pounds of force. I used it screwed into a 3/8" vertical shaft and had it engage with notches of the kind Babbage showed. It works, but the small 1.7mm tip si...

fixing problems with subtraction

Image
Solving the interference problem describe in the last blog post was fun and gratifying, but ultimately pointless because there was a more fundamental design problem that was revealed by hand-operating the mechanism for subtraction.  Using the carry sector lifters for four different functions was clever, but one of them failed: forcing a "warn" on carry warning arms that were raised by movable wires (so that the raised sector lifters could be forced down) allowed the wire to fall before it should if it had been in the "detect 0" position for subtraction. So there needed to be a different way to return the sector lifters. I thought that would require an additional articulated mechanism: another stepper motor in the prototype, or another cam follower in the eventual all-mechanical version. But it turns out that all it takes is a scythe-like keeper above the carry warning arm that moves vertically with the arm but is fixed in rotational position.  This is a great simpli...

debugging the anticipating carriage

Image
In playing with the manual test jig for the anticipating carriage, there was one configuration that caused interference between two parts. It became clear that I needed to do a systematic analysis of all combinations of vertical motions. There are four basic vertical configurations which have to accommodate various part motion:  the rest case where all warning arms and sector lifters are down the non-carry case, where the arm is "not warned" and is raised, and the sector lifter is not raised the direct carry case, where the arm is "warned" and raised, and it raised the sector lifter the propagated carry case, where the arm is "not warned" and raised, but the sector lifter has been raised with the movable wire The analysis showed that it was case 2 that caused interference, when the sector lifters were rotated to the position which forced the arms to "warned", which is needed so that case 4 sectors will be engaged and positively lowered when the w...

the "Anticipating Carriage"

Image
Of the many clever mechanisms in the Analytic Engine, the one of which Babbage was most proud was his "Anticipating Carriage", which accomplished the ripple carries during addition through an arbitrary long string of 9's (or borrows during subtraction through a string of 0's) in a single time unit. He spoke of it in almost mystical terms as "teaching the Engine to forsee". From "Passages from the Life of a Philosopher", 1864 But Babbage didn't invent it just once. In  his draft monumental book-length technical history of the development of the AE, Tim Robinson catalogs 88 different versions created over 35 years, most of them incompletely described, and of course none of them proven to work by having been built.  The underlying principle is the creation of a chain of fixed and movable "wires" (which are actually stiff rods) that link together consecutive 9's that must be turned into 0's during addition. For a simplified explan...