Document and create a modern replica of the Harwell Dekatron computer known as the WITCH
After getting Phase3 working with the 5-wire input system, the next step is Phase4 with the paper tape reader. I've not completed Phase3 yet, but I am close, so it's time to start doing some more prep-work for Phase4. I got a 3" (80mm) printer assembly off ebay a couple weeks ago. There are a number of these printer assemblies available as replacement parts. The one I select for testing is the Seiko LTP1245, which has a ton of clones available. It has a 5V 2-phase stepper motor that drives the pinch wheel for the paper. I found the Texas Instruments DRV8834 during some basic searches and it looked perfect for interfacing with my simple circuitry replication from the original tape reader interface on the WITCH. After a couple quick google searches for a breakout board for the DRV8834, I found one from Pololu that looked perfect for testing. Of course, for Phase4 of WITCH-E, I'll be designing my own boards for this, but during prototyping and testing this makes it super easy. One of the concerns in selecting a driver chip was that it was available in several packages. While I do have resources to work with QFN (Quad Flatpack Noleads) packages, I'd prefer to have something easier to solder by hand, and the DRV8834 is available in 24HTSSOP which I can easily solder by hand. Get to stepping!
During this phase of integration, I recently built up the first of the Relay-Set-D Decoder boards (Half-Ass Assembly...). I took some time this evening to place one on the temporary acrylic and mate it with the Relay-Set-D Latch board. Immediately I was in a state of total panic.... yes the edges of the PCBs did not align!!! ZOMG!!!! Going back to the PCB layout design files I realized that the connectors on the Relay-Set-D Decoder were 5mils off!! NOOOOOOOOOOOOOOOO....................... I am so triggered:
Got the new Pulse Generator assembled! The "new hotness" has the barrel jack moved as it was in an awkward place on the "Old Busted" design. I've removed the two switches and push button, replacing them with connections to the 5-wire input system. I also corrected two of the "white wire" changes that were required from the original design. Of course I am going to have to spin this design due to my "Off-By-One" error , and I really should have added some LEDs to indicate what function is being called, so this is technically "New Busted"... oh well....
As a side note, this PCB is 160mm x 100mm , and actually contains three separate sections. Most PCB shops will do quick turn prototypes pretty cheap if the design is 100mm x 100mm or smaller, so looking back on the design, it would have made more sense to break this up into at least two boards, and maybe three... it would have saved a lot of money and made the "logical module" appearance of the design better... 20/20 hindsight....
I ordered the new Pulse Generate a little over a week ago. It was due to arrive on Friday, but on Thursday night I woke up in the middle night in a state of panic that only Freddy Krueger could have generated. I just realized I had an "Off-By-One" error on the PCB for the Pulse Generator that would be arriving the next day. I HATE IT WHEN THIS HAPPENS! I found some time this evening to start the assembly of the Pulse Generator. One of the first items to address were the changes needed for my little mistake. I took an exacto knife and removed the three traces from the PCB. I personally like to remove the whole trace, one for the fact that it appeals to my OCD, and two as it gives me a strong visual clue that the board has been modified and exactly how it was modified. I carefully cut the trace on each end and then use the edge of the knife to pull up the trace. As you pull the trace up it will work back to connection point, and if you've scored it properly will stop there. There wasn't an "easy" way to add wire fixes for these traces so I just soldered them to the base of the connector. This connector has a lot of room at the base, so it won't interfere with the mating connector. This will teach me to order PCBs at 3am.... DOH!
Well.... sorta! The original WITCH computer ended up with 10 available storage locations, with each storage location having 10 addressable registers, however it didn't start that way. During the early prototype and development of the WITCH, there were only 3 storage locations available! With this in mind, I made similar design/prototype choices during Phase-2 of WITCH-E to only make 3 storage locations. Phase-2 also only supports four functions instead of the full 10 on the original WITCH. The four functions are: Add, Add with Clear, Subtraction, Subtraction with Clear. The Relay Set D Decode board needs to support the eventual capacity of all 10 storage locations so that is how I designed it, but at this stage, with only 4 functions, and 3 storage locations (with 4 registers each), there is no need to build up all of the support on the Decode board. I KNOW I will eventually have to make changes to the Decode board due to testing and debugging, so it just makes sense not to build up the full support and waste parts at this time.... Yeah... I know... it does look a little "Half-Ass" but hey, we can all try to be optimists and think of it as "room to expand"!
During Phase-2 of the project it was necessary to create a small test board to enable the various functions and memory locations. That board is the "green one" in the picture above. It basically consists of a number of switches that all each of the memory locations to be activated as well as select things like addition, subtraction, and clear functions. To bridge the work done in Phase-2 to the input system built in Phase-3, I need to replace the green test board with a bridge board that will connect the two development phases together. This basic board has some Schmitt triggers on it to clean up the signals from the long wires and then route the signals to separate connectors for each of the input system decoders. It's a super simple board, but it is essential to connecting the two sections together!
I had hoped that using a schmitt trigger and some large RC (Resistor/Capactor) values would have been enough to debounce the valid data and select signals, but it just wasn't the case. After reviewing the timing on the oscilloscope, I decided to prototype a monostable multivibrator with a 555. Now, I couldn't just use the standard circuit that is usually associated with a monostable 555 that is found on the net. The main issue is that if you have a timer set for 1 second, and you hold the trigger signal low for 2 seconds, the timer expires. What I needed was a timer to start AFTER the trigger is released. Of course, like most things in electronics there hundreds of ways to do this, but this is what I came up with. Now time to update the PCB layout...
So I finish up extremely late this evening with my "DayJob", and despite being a bit a drained from debugging some new hardware all day, I decided to build up another Relay-D Latch board. I also found some scrap acrylic in the the garage and drilled some holes to mount the modules. I plan to get laser cut acrylic via Ponoko.com , but for now this will help test the cable routing and keep things from flopping around. I had to tweak the schmitt trigger RC values some to get the firs latch to work, but it eventual worked. Unfortunately, tweaking the RC values wasn't enough to keep the second latch from getting a carry over from the first latch. I'm going to have to work on my "key up" and debouncing before I do the next revision...
This new revision of the Input Sequencer board only had some minor changes to it. During my over-haul of the cabling and connections, I realized I needed to pass a few signals through the input sequencer. I also thought I might need an extra reset signal out to some of the modules, so I added a Schmitt trigger output, but not populating it until I actually need it. One think I might change in a feature revision is the decade counter. Right now I am just using a standard 4017 chip, but for looks, I think I replace it with a Dekatron Sim, like I did on the pulse generator module. Next step is to build up the Relay-D Latch boards....
So my daughter was off to work and stopped by my office. She saw that I was experimenting with different cable routing paths, so she took a few minutes to draw a block diagram. For this phase of the project, there are 4 large sections of laser cut acrylic that would hold each of the modules. I was struggling to see how I could mount all the modules and get them connected. I really see the challenge of the early computer developers on how to route and connect all these modules together. Before Integrated Circuits (ICs), this was often referred to as the "Tyranny of Numbers". How do you exactly plan for the massive number of wiring connections between modules and make sure that the minimum number of necessary connections are made. It takes a completely different way of thinking to do this. The really scary part of this log post is that there was very little I had to explain to my daughter. She "just drew" this with little guidance, and I am thinking "wow! did I really inadvertently ruin my children with my nerdy projects?" Maybe... but at least she can laugh knowing that she is fully aware of how to use a soldering iron and can point out the obvious to other people.... ouch! Smells like chicken!