Saturday, December 29, 2018

Keyboard testing completed, waiting on 3D printed parts before final assembly



I needed to experiment with illumination. All I have on hand are the green LEDs, but I installed two of them into one keyswitch position as a way of testing the light delivered to the underside of the keycap.

I was suspicious of the amount of light that can shine through the keycaps I received as a gift, but given the 0603 size I allocated for the twin LEDs for each key, I can't increase the light much. The actual LEDs to be installed provide twice the illumination of these that I temporarily soldered on.

The amount of light reaching the outer edges of the plunger was adequate, but none makes it to the center of the plunger where the keycap text opening will be placed. I need to think about any way I can get some illumination at the target location or these keycaps will not light up.

I also determined that the keycaps I was given are far, far too thick to pass light through the text shaped opening. It is possible I will have to make my own instead. Another option is to simply abandon the objective of backlighting keycaps. Unless I have a flash of inspiration, the backlighting will be dropped from my project.

I proceeded to load the firmware on the Arduino Nano, power up the board and test it out. I pressed each of the 19 keys, verifying the state of the 8 output lines for each such press:

  • Five of the outputs encode the key value
  • A sixth output tells the AGC that a key has been pressed (thus triggering an interrupt to run the PINBALL routine that handles user interaction)
  • A seventh line is active at the same time as the RSET key code is active on the first five lines
  • An eighth line is active when the PRO key is pressed, although this key does not send a keycode on the first five or report a press through the sixth output line. 
PRO is used for two purposes. First, it is pressed as a confirmation to the computer that the astronaut has approved some action that the computer is poised to accomplish. Second, if held for a relatively long time it commands the AGC to go into standby mode. 

The board had a minor problem which I corrected with a small rework, adding wire jumpers, otherwise it worked exactly to spec. This board is just waiting on the additional plungers to arrive from the 3D fab before I assemble it completely and mount it in place inside the aluminum DSKY case.

Mounting details

For both the keyboard and display PCBs, I have to plan the length of the standoffs needed to position the board at an appropriate height under the faceplate and other cover parts. These will then be attached to the bottom of the aluminum case through drilled holes and nylon screws will go through the PCB to the top of the standoff.

The holes in the case will be a bit larger than the screws to allow for some side to side and top to bottom shifting of each PCB, allowing me to fine tune the alignment. The faceplate also has a tiny bit of give around the bolts holding it to the rest of the case.

I expect to use a mix of plastic glue and epoxy to glue various parts of the panels together and to lock the coil springs onto the plungers.

Thursday, December 27, 2018

Plastic honeycomb arrived and test fit done with keyboard stack of DSKY substitute


Keyboard portion

My honeycomb part was finally on the truck ready for delivery today. I need to test fit the sample plunger into the honeycomb to ensure that the design is sound before I order the other 18 plungers. I can't insert the plunger without cutting out slots from the bottom of the honeycomb, except for the four end positions which might allow me to wrestle the plunger in.

At any case, after trying to get a plunger into the side as the part was produced, I discovered that the plunger can be snapped into any position. No need to cut the honeycomb, thus I get the target depth of movement I want to provide.

I tested the entire stack of PCB, coil spring, plunger, keycap and cover plate. It is important that the key press cleanly and return reliably. It is also important that I achieve the 1/4" travel and approximate resistance force to mimic the behavior of a real DSKY.

What I discovered were two issues. First, the pins that were soldered for the cable connector and for the Arduino Nano raise the honeycomb slightly; I need to relieve those portions of the honeycomb slightly to get a good solid fit. Second, the plunger doesn't come high enough in the faceplate opening; I want the surface of the keycap just below the level of the faceplate, but it is down too much.

To solve the problem with the plunger height, I have to add a sliver of material to the top of the plunger. I submitted the order for the 19 plungers at the new height, at the same time as the bottom and top covers for the display (see below).

I just need to fine-tune the coil spring - too light a resistance and it doesn't depress the pushbutton switch, too firm and it activates without the full 1/4" downward travel. I have some springs that seem to work reasonably, although I will need to test the switching action to be sure I don't need to tweak the spring type.

Three open issues with my keyboard design:

  1. I suspect a need to build additional supports under board to avoid cracking PCB from key presses.
  2. I believe light will leak around the outside of the keycap, since the plunger is translucent and the honeycomb walls are white. This should be minimized.
  3. It is possible that the LEDs and plunger won't deliver enough light through the text on the keycaps - the keycap is relatively thick and the plunger wasn't designed to focus light. 

Display portion

I swapped in 10K resistors for some of the white LEDs on the left side panel, which had been too bright with the 3K ohm resistors I had originally placed onto the board.The new values worked great, lowering the output of the white LEDs to perceptibly the same brightness as the yellow LEDs and the right hand side of the display.

The top of the display portion consists of two frosted plastic panels, containing text and other graphics, held in place by plastic covers. I did 3D modeling of the covers. These are built in two halves, which will be glued together with the frosted plastic panel inside. These were ordered from and will arrive within two weeks.

I need to get some clear acrylic 1/4" thick panels cut to size in order to begin adding the text, graphics and frosted color backing. I expect I will buy them from TAP Plastic which is nearby.

Wednesday, December 26, 2018

Assembling keyboard PCB for DSKY substitute


Keyboard mechanism

The PCB was delivered December 24th to Marc. I picked it up so I could work on it over the holidays,  before we all get back together.  Boards provided by to support the project.

Top of blank PCB
Underside of PCB
The translucent plunger part also arrived on the 24th. It looks perfect, but I can't verify the fit or the light dispersion characteristics until I receive the honeycomb part and build the PCB. Actually, I only expected translucent but this is closer to transparent.

Translucent plunger
I am also tracking the honeycomb plastic part from Shapeways, which is listed as due for delivery on December 26th. Since it was to be transferred by UPS to the USPS as part of their 'mail innovations' program, I suspected it is bottom rung priority for the post office and may not make it on that date.

Tracking the package on the 26th shows that UPS has not even physically handed it over to the USPS today, in spite of their misleading status message claiming that it had been. We shall see when it actually arrives.

The switches were soldered onto the board first. Next would be the LEDs and limiting resistors, allowing me to judge the light intensity through the plunger, although I don't have the actual components on hand yet. I could install the I/O extender chip and connectors while I wait.
Top of board, only missing LEDs and limiting resistors
Bottom of board is complete
Plunger atop a switch, but without coil spring that sits in between

Keycap not in correct place and honeycomb still missing, but cap across a plunger

Thursday, December 20, 2018

Progress completing the DSKY substitute to use with Apollo Guidance Computer


Keyboard mechanism components

My keyboard mechanism consists of four parts - a printed circuit board holding the 19 pushbutton switches with LED illumination, a honeycomb, translucent plungers that ride inside the honeycomb cells, an keycaps to fit over the plungers.

The plant has just completed fabrication of the printed circuit board for my project. It should be shipped soon. I have the pushbutton switches and most other parts on hand to allow me to finish its construction soon after it arrives. is a sponsor of our project and has produced and shipped this board for free.

The honeycomb was printed by Shapeways and is currently being shipped to me. Similarly, 3DHubs has finished printing the plunger which should arrive here on Sunday.

I have some modifications to make to the honeycomb to allow me to install the plungers, after which I can do a test fit of the mechanism. Full testing will require completion of the PCB. Overall I should be testing by early January.

This new PCB is supported by an Arduino Nano that will hang underneath. This PCB and the display PCB previously built are connected by a ribbon connector.

Illuminated panel designs

My display PCB has LEDs and 7-segment displays that are arranged to look like the real DSKY. I need to build a plastic panel which will be frosted and contain text legends that match the DSKY. These help diffuse the multiple LEDs on the PCB to produce a more even glow as well as holding the text legends.
Raytheon made DSKY
I intend to build this up in layers using a similar technique to that I used in my replica IBM 1130 light panel. The surface of the plastic panel must be matte. The legends and frosting will be applied to the underneath.

Legends are created using a laser printer on special paper then converted to run-on lettering. Once I create the images in the appropriate font and size, they are flipped to a mirror image. The converted output consists of text that is on a temporary plastic film carrier, with adhesive applied to the text. Rubbing this on transfers only the letters themselves.

Once these are on so they can be viewed from the top of the panel through the plastic, a thin layer of paint will be misted over the rear of the panel to create the proper frosting effect. The color used varies between the left and right side panels.

The left panel has white frosting. It will be illuminated from underneath by white LEDs for the leftmost column of cautions and by yellow LEDs under the rightmost column of warnings.

The right panel has white dots applied at the same time as the text legends. These are the places where the cathode connections are made on the real electroluminescent panels used by Raytheon. Next, a mask is placed over the rear of the panel and some paint is sprayed to form a rectangle around the legends VERB, NOUN and PROG. Finally, a gray paint is misted over the panel rear to form the frosting.

panel cover designs

The plastic panels are held just above the faceplate of the real DSKY by metal holders. I will design and 3D print parts to accomplish the same role. These will also have to go out for printing to 3DHub. Those plastic parts and the aluminum case I already own need to be sprayed with the military gray color of the real DSKY.
Cross section from side of the cover to hold plastic panel to faceplate

Tuesday, December 18, 2018

Working on restoration of erasable memory module for Apollo Guidance Computer


Diagnostic X-rays

We had hoped to use a micron resolution CAT scanner but the module was too large to fit in this specialized scanner used for connector testing. Regular X-rays were taken but are inconclusive. We don't see a break in the wire in the images, but it could be small enough to miss.

We will need to think about additional testing we might be able to do, such as TDR (time domain reflectometry) where we send pulses through the suspect pin and look for the reflection from the broken end. This could give us the time, therefore the distance, from the pin to the break.

Investigating alternatives to the module

It is time to ramp up plans for alternative means of operating the AGC if we can't get this module working. There are quite a few alternatives, each with advantages and disadvantages. These range from simple methods that allow us to use the broken module in place to various replacements.

Since only one bit is disabled by the broken inhibit wire, we could regenerate the content of the bit from the other bits plus parity. A real parity error would be missed, plus we would need to develop some additional hardware to do the generation and injection of the bit value.

Another method would have us swap the parity and bad bits, with parity checking disabled. This would also miss parity errors, and involves some more alteration to the wirewrap than the first method. On the other hand, it wouldn't take any additional circuitry.

We could build a replacement core memory module to insert in place of module B12. We have no hope of bending 4K bytes in the same small space, but could use other technologies. For example, F-RAM will provide nonvolatile storage or some other kind of storage technology.

It would be more complex because we have to provide the right loads and impedances to the driver circuits as the original core stack. These are known to be relatively fragile thus more risky. It would require the most complex design work as well.

We do have the two methods developed by Mike. We can wire up a circuit to the sense amplifier inputs and respond to memory requests, leaving all the driver and sense circuitry out of tray B. We either need to mount this circuit inside the tray somewhere or are restricted to operation with the cover removed.

The other method uses the maintenance connector A52 but there remain some conceptual problems in using that for erasable memory substitution. Not all signals needed for a perfect substitution are available on A52. Mike is hopeful he can work out a scheme that will work, but it is not yet proven. This does allow the covers to be on the AGC.

If we somehow had access to another erasable memory module, one that was not defective, that could be used as well. This would be the easiest method of 'repair' but is fairly unlikely.

Monday, December 17, 2018

If a tree falls in the backyard in the dark, will anyone here it?


I ordered a plunger from a 3D production house, which I should receive about the same time as the honeycomb housing that will hold these. I can test fit the plunger on the ends (VERB/NOUN side of the keyboard, for instance), then begin my attempt to cut down the slots to put a plunger properly into a central cell of the honeycomb.


I heard a loud rumbling sound coming from my back yard, after nightfall. There had been some light rain but nothing too heavy and no winds to speak of. After looking around inside and out for the source of the noise, I spotted a very large tree limb that had cracked and fallen over at the rear corner of my lot, smashing my Tiki Bar but nothing else.
Tree limb collapse
The highest wires, just above the tree, are 12KV primary lines and further down but just above the broken limb are the 240V secondary lines. Even the telephone and cable wires below it were not disturbed. My fence survived, it missed the corner of my house and it didn't damage the pool equipment just to the left of the picture.

If it comes loose where it is still barely attached, it could wreak more damage. Priority removal is pricey, with an estimate of $1,600, but the premium cost for immediate removal is worthwhile when compared to the cost of pool equipment, fences and power outages.

Sunday, December 16, 2018

Redesigning keyboard structure for DSKY Substitue


Flaw in design

The keyboard design is comprised of a honeycomb plastic structure attached to the face of the keyboard printed circuit board. This honeycomb has cells which are square as viewed from the faceplate of the DSKY and extend down from the inside of the faceplate to the surface of the PCB.

A pushbutton switch is installed on the PCB in the center of each honeycomb cell. A rectangular solid plunger with a hollow bottom rides in the cell channel and sits atop the pushbutton with a coil spring holding the plunger above the switch face.

Tabs on the plunger ride in slots in the wall of the honeycomb cells. These limit the up and down movement of the plunger so that the face of the plunger is at the right height relative to the faceplate when held up by the spring. It also controlled the downward movement to give the user a total depth of 1/4" when the key was depressed.

The plunger is printed of a translucent plastic to allow light from LEDs on the PCB to diffuse up and light through the keycap. Each keycap has its text legend cut so that the shape is illuminated from below - one would see the marking on each key by the light coming from below.

This all seemed fine when I committed to 3D printing my honeycomb, but I realized at some point later that there is no way to assemble the plungers inside the honeycomb. An astute reader of the blog realized this almost as quickly as I did.

The plunger is nearly the size of the cell, so it can't tilt much at all. Its tabs are 1/8" thick and extend out almost 1/8" on each side.

Plunger in honeycomb cell, tab slides in slot in cell wall
The slots in the walls of the honeycomb start near a corner, minimizing the amount that the cell wall could bend away. Whatever small flexing is possible in both honeycomb and plunger, even combined together, is insufficient to allow the plunger to be pushed into the cell.

Developing a solution

There are a few possible ways I can resolve this. One constraint I imposed on the solution is that I not have to throw away the >$100 I spent on the first 3D printing of the honeycomb. One would suspect that the more practical fixes would involve a changed honeycomb, but I was loathe to waste the money.

It is possible that an altered plunger design could work with the honeycomb as it was designed. It is possible that I could develop a rework on the honeycomb once it arrives. I struggled with ways to make the plunger out of multiple pieces that are assembled while in the honeycomb cell.

The simplest method I came up with is a rework of the honeycomb, cutting the slots to extend all the way down to the PCB. The plunger can be slipped in the cell from the bottom, the honeycomb placed face down, coil springs placed in the hollows of the plungers and the PCB attached to the top.

Cut away bottom of slots to allow plunger to be inserted from bottom
This assumes I can cut the slots without damaging or destroying the honeycomb, but I expect that it will be possible.It does leave a problem, however, in both the downward travel and perceived resistance of the key to the person pressing it down.

Without a bottom to the slot, the key will continue down until the pushbutton itself bottoms out. This won't be a major additional distance but enough for a purist to notice. Also, the pushbuttons I selected are two stage - they activate one set of contacts initially and resist with a certain force, then when the reach full travel they activate the second set of contacts. The additional force of that second stage will put the resistance of the key over the top limit of the DSKY specification.

My rework will foil my attempt to match the real DSKY depth and resistance behavior. It will move slightly further down and resist slightly more at that depth than a real key. I just have to let it go.

After all, this project is to build a DSKY substitute, not a replica. I am not attempting to make it look, feel and act exactly the same as a Raytheon produced DSKY. All I want is to interface with the AGC in a realistic enough way to satisfy our testing and demo needs.

Friday, December 14, 2018

Finished up display board for DSKY Substitute and did some cosmetic engineering


Finalizing tests and debugging

I have the modification in place that should be firing the relay to switch on 5V to the line and legend LEDs, but nothing is happening. I verified that the sense circuit is delivering 5V or 0 depending on whether the 14V is connected. However, the relay isn't switching. This requires some debugging.

Looking closely at the driver circuit showed an unconnected transistor lead. With it installed and the code in my Arduino software to echo the inverted state of the 14V sense to the driver, it does indeed blank and unblank the lines and legends.

A second problem I detected was that the Opr Err LEDs are not lighting during the code where I tried to light every lamp. This also requires some debugging. The signal comes from IC5, pin P6, having been set by the startup logic, so I have to suspect a wiring error or soldering problems. I reflowed the solder on IC5 and the problem is solved.

Fine tuning the display position and operation

I set the display board inside the aluminum case to verify that it fits well. I did discover that the right side display, the registers, verb, noun, program and related lighting, fit well vertically inside the opening but seems to be offset to the left a bit too much. That puts the sign (plus/minus) very near to the left edge of the opening.

We looked at methods to even out the lighting behind the legends and caution/warning sections, as well as the horizontal lines and the signs. We determined that the spacing between the LEDs is a bit too wide to fully even out with diffusers, so I will have to live with multiple perceptible light sources.

A sheet of paper at the level of the front panel does a decent job of evening out the light for the caution/warning lights. It will probably suffice for the legends (PROG, VERB and NOUN).

However, the horizontal lines will appear to be dotted lines and the four segments of a plus sign will be noticeably distinct. Correcting this would be far more effort that is warranted for the goals of this project, which is to provide a substitute for a DSKY, not an exact replica.

Thursday, December 13, 2018

Almost completely done with display board for DSKY substitute


Installing components and testing by stages

My first task was rethinking the circuitry to switch 5V on to the illuminated lines and legends of the right side of the display when 14V is present (meaning the AGC is not in standby). The current method doesn't work because I messed up the relay driver. The driver fires when its input is at ground but the input will sit at 5V while the AGC is active.

Fortunately, I have the 5V produced by my AGC BPLUSSW sensing circuit routed to the Arduino, thus it would be a simple matter to invert the state and generate an output on an unused pin. I don't have any routing from the unassigned pins, but I can tack a wire onto the back of the connector and hook that to the input resistor of my relay driver.

Of course, I would have to cut the trace to the input resistor to isolate it from the sensing circuit to which it was originally wired. Since this trace is easily accessible on an outer face of the board, I was able to accomplish the cut easily.

In the midst of checking out what was needed, I noticed that my switched 5V line gets some power when the 7 segment displays are active - not through the switching relay and not a full 5V, indicating that I have a short somewhere between the switched 5V net and one of the display segment lines.

I have to find and correct the short before I power up the switched 5V line, or it will also jam on one of the segments for a register, wherever the short currently is. I used the DesignSpark tool to highlight the 5V net and checked each spot where it had a via near a display pin. That didn't help, so I then did a continuity test of the switched 5V net to each pin of the 7-segment displays.

I quickly discovered that the short is to pin 4, segment e (which adds to a 9 to form an 8) of chip 2 covering Register 2 and Noun. I then highlighted where this net passed in the hope that I could find a correctable short.

I discovered it, with a untented via that was extremely close to the pad of a 0603 LED. After I cleared the bridge of solder, quite invisible to the naked eye if you didn't expect a tiny via under it, the short was gone.

The white and green LEDs arrived this morning, which allowed me to add them all to the board. That leaves only two categories of component to add to the board - headers and limiting resistors. I had to add the headers and install the Arduino Mega 2560 now, which I will then use for the remainder of the section tests.

With the Arduino in place and a modified version of the DSKY software installed (mainly to generate some display activity without requiring AGC input) I fired up the board. It worked properly as far as I could tell right now.

Keeping the display active, it will be possible to select limit resistors for the LEDs forming the lines and legends that are placed around the digit displays. To energize them, I had to fudge a connection to the switched 5V power plane because my sensing circuit is not working properly.

Once I felt that these LEDs glow at the same perceptible brightness to the digits and signs. I will solder down the resistors if I have them in stock. I chose 680 ohms for both the lines and the legend fields.

The next set of limit resistors to select were for the Comp Acty light that sits above the Noun digits. I also chose 680 ohm for these and soldered them down.

The caution lights shine white and the warning glow yellow. These are adjusted relative to each other and to the digit displays. Once I set the values for a white and a yellow (actually a pair of LEDs for each position, meaning two resistors per position),

The white were much brighter than the other LEDs, so I initially used 3K resistors for the white while the yellow worked fine with 680 ohm. However, I am still not satisfied so I will have to try a higher resistance until the brightness is similar to the other LEDs.

I did run out and buy the 680 and 3K resistors to complete the board, knowing I will replace the white LED resistors later. I still have to do the rework to fix the 14V sense circuit that lights the lines and legends.

Front of the board, almost ready to install

Read of the board with Arduino installed

Wednesday, December 12, 2018

Display PCB for DSKY Substitute is essentially complete and passing most tests


Installing components and testing by stages

I decided to solder on the remaining relays and their output resistors. Somehow I found the remaining transistors on the floor and finished up all of the 23 input circuits. Testing showed faults in 19, 21 and 22 leading me to investigate these three circuits.

I found bad solder joints for all three issues, repaired them and now had all 23 input circuits performing perfectly. Having placed all relays, I then checked all eight of the output circuits watching the 2K resistance appear on each output pin when the corresponding keyboard input pin was taken to ground through another 2K resistor. Everything is good.

I left off the limiting resistors for all the LEDs because I want to select them to cause all the lights to appear to be the same brightness as the 7-segment displays. Until I have those operating, I can't compare and pick appropriate resistances.

I am missing 14 white LEDs, and 2 green LEDs to compete the prior stages of the construction. With everything above installed (except LED limiting resistors and the missing components) I could move on to the five surface mount ICs. Two of them create an I2C chain that will drive the 14 alarm lights and the Comp Activity light. The other three drive the 7-segment displays and sign LEDs.

The I2C chain was installed first, because these can be easily tested by tacking wires from an outboard Arduino and cycling all the LEDs. Checking with a VOM on each limited resistor LED position lets me validate the operation of the chip. If I had the limiting resistors soldered, I could have watched the lights but this depends on matching brightness to 7-segment displays which comes later.

Initially I only saw the lights controlled by the first of the I2C chips operating, but soon I realized that I had interpreted the data sheet wrong. The proper I2C address for the second chip was x24, based on the way I had connected the three address pins to ground or 5V.

With that corrected in the software, I could light any of the fourteen caution/warning light positions since the one that had a test resistor in place illuminated and the other 13 were pulled to ground at the appropriate time to light them.

Secondly, I will solder on each MAX7219 chip in sequence, checking the cathode and anode pins of a display position as I drive them from tacked wires leading to an outboard Arduino. If I like what I see, I will add the next chip in the chain. All three chips are chained in one serial link to drive all 24 digit positions. Those consist of 21 real 7-digit modules and three custom sign displays.

I began with chip 1, soldering it onto the board, taking on the three serial link lines and connecting them to an outboard Arduino. Each chip needs a filter capacitor across 5V and ground plus a current limiting resistor (10K). I am short one capacitor, which must be ordered.

Cycling between blank and the digit 8 which lights all segments, plus cycling the sign bit between blank, 1 and 4 which give me the plus and minus sign LEDs, the chip should be grounding the cathode line of each segment in turn and putting 5V on the segment lines.

The external Arduino was tacked onto the pins for the serial interface to communicate with the display driver chips. All worked well - the live chip showing the digit 8 did deliver the proper voltages to anodes and cathode pins.

Once all the above were validated, it was time to insert seven 7-segment displays for the first chip, giving me the digits for Register 1 plus Verb and the sign for Register 3. With the displays at full brightness, I tried resistors to set the sign to the same apparent brightness. It looks good enough with no resistor in circuit.

During testing of 7-segment displays

All components installed on back except for headers
The second and third chips then had their 14 display modules and signs installed. At this point, I needed to verify that the outboard Arduino can fully drive all positions and signs properly. This, after all, is the heart of the DSKY. I sent out a test pattern to verify that all was correct.

I see that one of my display modules is not activating the middle segment, thus the number 3 looks like a reversed capital C. Also, nothing is working on the third chip, that which serves register 3, PROG, and the sign for register 1.

I reflowed the solder on the module with this missing segment and that came back to life. The problem with the third chip was more difficult to diagnose. Power and ground were good to the chip, but eventually I noticed that the clock input from the serial link was not connected. Physically, the chip leg was soldered to the pad - several times as I worked on it - but it seems the trace from the nearby via to the pad was open.

I used a small bit of a resistor lead to bridge the via to the chip pin, after which my third chip came back to life. All appears good. I did make a change to the test program to cycle through the digits.

I am not fully satisfied with the appearance of  the plus and minus signs - it looks like two dots in a row or four dots for the plug sign - but it will have to do for the purposes of this project.

Minus sign on register 2

Plus sign on register 2

A test dropping the 14V input is used to check the blanking of the entire EL panel side of the DSKY when the computer goes into standby. I had to power the 14V to get the relay circuit to provide switched 5V for all the legend and line LEDs.

Alas this circuit isn't working as I intended. My fault. I used a resistor divider to drop the 14V supply from the AGC (BPLUSSW) which is off when the computer is in standby. That did produce the +5V as the input to the relay driver circuit.

BUT - the relay driver circuit is designed so that when the input is at ground, the relay fires. The relay is a normally-open type, so the switched 5V supply to light up the lines and legends on the display will only be energized if the relay is closed, thus if the input is at ground.

This is the inverse of what I want. Further, it isn't working, probably a soldering flaw of some kind. Still, I need to do some rework on this portion of the board to make things operate as desired. I want to have the switched +5V on only when the input of +14 from the AGC is there. I need an inverter of some type. That is my mini design challenge for the day.

Monday, December 10, 2018

Continuing populating DSKY display PCB and testing in stages


Installing components and checking as I go

I had a plan to install components in stages, checking operation as I went along. This caught errors really early when rework (and debugging) was easier. I laid down as many of the 80 surface mount LEDs as I had on hand - waiting on additional parts to finish up. I lack 14 white LEDs and just 2 green ones but the additional parts are already on order.

I moved on to installing the nine relay driver circuits. These have a PNP transistor, 10K resistor,  2K resistor, SMD relay and a 1N4001 quenching diode apiece. First to lay down were the SOT-23 sized transistors, next were resistors, the relay third and finally the diode. I completed one circuit first and tested it to be sure that it would work properly, which it did.

After the circuit was proven to work properly, I installed the remaining parts to enable all nine relay circuits. I left off the relays because I need room to add other circuit elements here, but will go back and insert them once the AGC input circuits are done

Eight of the AGC output circuits will take inputs from the keyboard PCB I have designed and convert them to AGC signal levels. That is, they will pull the AGC lines down to ground through a 2K resistor using the relay whenever the input signal is pulled down to ground. This is the same circuit used to feed signals from DSKY to AGC.

Next steps were to install all the transistors, resistors, and capacitors that comprise the AGC input and output interface circuits. These deal with the 28V logic levels of the Apollo spacecraft and match the impedance and other characteristics that the real DSKY presented to the Apollo Guidance Computer.

The first circuit was installed, 28V power was applied and I tested this with a VOM on the output pin and a 2K resistor to ground touched to the input pin, to simulate a real AGC input. What I need to see is the output sitting at approximately ground when the input is open, but when the input is pulled to ground my output should jump up to 5V.

Once I saw that the circuit worked exactly as it should, I continued installing the circuits one by one. By dinnertime I had five input circuits installed and verified. Continuing after I ate, I kept soldering four resistors, a capacitor and a transistor for each input.

The 0603 resistors are easy to solder down, as are the 1206 capacitors. The SOT-23 are a bit harder, not due to small size as much as their instability as I try to tack down the first of the three leads. It just slows me down, with sporadic incidents of transistors popping off the tweezers or tipping over as I try to place them.

I sped up considerably and had 12 of the 23 inputs completed by 6PM, although I had only tested circuits 1 to 5 so far. I discovered three of the circuits weren't working properly. Two were not responding to inputs but the third was delivering 22V to the output instead of 5, which would have toasted the input pin of the Arduino!

I quickly resolved the overvoltage issue - I had swapped the resistors for the voltage divider taking 28V down to ground with a tap at the output, thus delivered 22/28 instead of 5/28 of the power rail to the output.

I found a short in the input side of the circuit to a via on the board near the resistor, which resolved both of the dead circuits. Turns out that this board does not have tented vias - resist is not covering the vias so they have a plated surface to which solder can attach.

I realized that as I completed the inputs in the top half of the board, I can add in the relays that sit near them. I took the time to install relays that fit in the upper area where circuits 1 to 12 sit, since those are proven out already.

By mid-morning, I had completed circuits 13 to 18, leaving just five more before I was done with the AGC input section. Testing of the new circuits turned up a short circuit between 28V and ground which I had to correct before I could actually check out the input circuits I had wired.

The short was complex in that 28V shorted to +5V, which in turn was shorted to ground. Finding the 28 to 5 short was easy; it took longer to locate the remaining short across 5V to ground.

Fortunately I didn't have much hooked up to the 5V and ground rails, just one test LED limiting resistors, plus the relay driver circuits that had 50V tolerant transistors and other parts. That eliminated the risk that I blew a component by subjecting it to 28V. 

Still, it took a time to locate the short. With it corrected, I validated that circuits 13 through 18 worked properly. I moved on to solder on the components for the remaining five input circuits.

Unfortunately, after a few too many of the small SOT-23 parts sprang free from the tweezers and departed to parts unknown, I was forced to order a small stock of additional transistors before I could complete the input circuits.

Saturday, December 8, 2018

Wiring up display PCB for DSKY substitute, working on keyboard and chatting with DSKY wizard


We got together with Craig, a silicon valley engineer who is working on building a replica of the DSKY that is as faithful to the real object as possible. He brought along some of his circuit boards, assemblies and parts to discuss.

His attention to detail was very impressive. He designed the parts to look identical inside as well as on the face, with as few variations as is humanly possible. He has built a special high resolution 3D printer to build parts and owns a very nice laser cutter to create components.

He calculated the angle of dispersion of the LEDs to match the angles that were emitted by the real electroluminescent panel, for example, and used the exact fonts and paint colors. He is using Neopixels to allow him to dial the exact color for the alarm light panels.

Craig gave me a set of keycaps in different sizes as well as some sizing templates, to help me create the right look for the DSKY substitute. Since my objectives are much looser than his, I will be satisfied earlier than he would be.

My display panels will produce digits that are only .390 inch while the real DSKY digits stand .500 tall. Mine are in the shape and at the tilt that comes from the standard 7 segment display modules, while Craig's are the exact shape, tilt and size of the DSKY itself.

He gave me some good ideas, and we talked together about means to produce a new electroluminescent panel to the NASA/MIT specs. I have been noodling around with methods that use a PCB to establish all segment shapes, but focused on ways to hide the vias that may be necessary to connect to each segment. Craig had other methods to block the connector traces such that he wouldn't need vias into the segment copper itself.


Board arrives and is unboxed

The shipment from arrived while we were working at Marc's house, giving us the opportunity to open it, see the boards and bring some to our homes to begin soldering. The boards looked great. I will do tests to verify connectivity of all points, duplicating what was already done at the factory with their flying probe tester, just out of paranoia.
Backside of raw PCB, testing power leads tacked on 
Board construction begins

I worked out methods to install and test subsets of the components, building up the board in stages. This lets me spot errors rapidly and makes rework easier due to a partially populated board. It also helps me to make fine adjustments, since the resistors that set the LED illumination levels will be added once the digits are displaying so I can match the brightness of all light sources.

First up are the LEDs which I can install and check out by holding a test resistor temporarily for each position. I don't want to add the actual resistors because their precise values will be determined later in the build process.
Installing the larger LEDs
I discovered that the white surface mount LEDs I had ordered were, unfortunately, super-microscopic and won't fit on the pads on my board. Some online research yielded a cool white LED of the same size (PLCC-2) which I quickly ordered. These will need to be added to the board later, once all the other parts are in place.

The small LEDs used to form the lines and the signs are 0603 size. It took a while to lay these on correctly and I had an annoying failure rate where the LED was cooked by the solder or rework process. A couple sprang away from the tweezers to parts unknown. I installed as many as I had on hand, with the rest to be soldered on later. I did finish two register lines and two of the plus/minus signs. The last register line is partially done and the last sign is empty.

Next will come the AGC input interface circuits, which I can test with a 28V source and scope to verify proper operation of each of the 23 circuits. These are all the parts that depend on the 28V power plane inside and are unconnected to the 5V parts (other than an input pin on the Arduino, once that is installed). Each circuit is two 10K resistors, a .1uf electrolytic capacitor, a PNP transistor, a 220K resistor and a 47K resistor.

AGC input interface circuit
After that, I installed the AGC output interface circuits, which are relay drivers that will pull down the AGC lines to ground when activated. I put on all parts except for the diode and relays, which are relatively large. That way, I might press down or tack solder one diode and one relay to each position to test. At a minimum I need to test one circuit to be sure the parts work properly together.
AGC output circuit


Design issue discovered

I had realized that I did not think through the method of assembly of the keyboard, specifically how I would get the plunger part inserted into the honeycomb part. The issue stems from the two tabs that jut out of the side of the plunger about .12 inch on each side. You can tell from this that I am not a mechanical engineer nor experienced in designing for someone else to manufacture.

The plunger is .81 x .81 and fits in a channel just .875 x .875. That gives only .065 margin. The plunger can't be tilted very far and the .24" of tab can't be forced down the .065" margin. I can't rely on the honeycomb walls to move .18" on average, which would be necessary to force a plunger into place. This is particularly unlikely since the tabs sit near the corners of the honeycomb channels, where there is essentially no give at all.

In about a month I will have the actual honeycomb in hand, which would permit some experimentation, but I can't burn the money to make the plungers until I am certain I could assemble them. As the design sits, I couldn't

I am thinking about alternative methods of building the plungers and other parts, since I have already ordered the honeycomb which normally would be the easiest part to modify. I am depending on accuracy of the honeycomb and the plunger to establish the right height and depression depth for all 19 button positions. Any alternate construction method has to provide at least as much control.

Thursday, December 6, 2018

Finished CAD modeling of DSKY substitute keyboard


Cutting slots in honeycomb component

I finally got the hang of Fusion 360, which I have been learning this week to accomplish this task. Or at least, I have enough of a comprehension to finish the complex honeycomb component in which the button plungers slide up and down.
Plunger that sits over pushbutton and slides down honeycomb slots
The plunger is a .81 x .81 x .4 inch hollow translucent plastic piece with two guide tabs on the sides. These will slide inside the walls of the honeycomb in a slot that retains the key surface just below the faceplate edge while the plunger is at one extreme and allows the plunger to move downwards 1/4" to the other extreme. 
Honeycomb that guides the plunger and sits on PCB
Inside the plunger is a coil spring that couples the inner face of the plunger with the top of a pushbutton that is installed on a printed circuit board below. The spring will be selected to compress about 0.170". The pushbutton itself will move downward 0.0785" thus the combined movement is the target 1/4".
Example keycaps to fit over plunger
Since the pushbutton requires 21 ounces to move down, and the spring will have a resistance of 3-5 ounces, the combined force will be right in the range of the real DSKY key. The keycap is 1/16" thick and will be glued onto the face of the plunger. The plungers are snapped into the honeycomb slots and have their coil spring epoxied to the hole in the bottom.
The honeycomb structure and the PCB with its pushbutton switches are sandwiched together, threaded through with four screws that fit through standoffs below the PCB and thread into the aluminum base of the DSKY enclosure.
Model of the PCB with the 19 pushbuttons mounted
The honeycomb can be any 3D printable material that is sufficiently accurate and strong enough to hold together the switch assemblies, but the plunger itself must be a translucent plastic material to guide light from tiny LEDs on the PCB up through the cutouts on the keycaps.

I was finally ready to prepare the two 3D printing files. The honeycomb cost me $120 in fine detail plastic. The 19 translucent plastic plungers will cost roughly the same. Shame we didn't have a 3D production house sponsor as well.

Wednesday, December 5, 2018

Continuing work in preparation for the next round of Apollo Guidance Computer restoration


PCBs arriving back from manufacturer, ready to add components

Ken Shirriff and I designed circuit boards for the Core Rope Simulator driver, and the DSKY Substitute, respectively. is sponsoring the CuriousMarc YouTube channel by providing free PCB manufacturing to us.

My design is a 10 layer board that sits across the top half of the DSKY enclosure, driving the displays which include 15 lights, 21 decimal digits, three plus/minus signs, plus lighted lines and legends. It hosts an Arduino Mega underneath plus interface electronics with the Apollo Guidance Computer.

The interface involves 23 circuits for 28V signals originating from the AGC, 8 driver circuits delivering 28V signals to the AGC, as well as a circuit that senses the switched 14V supply of the AGC and blanks the right side display when the power is off (for standby).

This requires almost 400 parts and 1200 pins/pads in a 6 1/2 by 4 1/2 area, mostly using surface mount parts arrayed on both sides. This includes 9 relays, 9 high current quenching diodes, three 7-segment display driver chips and two LED driving chips, plus almost 70 LEDs and their current limiting resistors.

The boards will be impressive to view and the job of soldering all those components is going to be a long, tedious but important one. I have a scheme in mind to solder on portions of the circuit at a time and test them incrementally, allowing any rework before the board is jammed full.

Ken's board hosts a Beaglebone controller and was a more normal 2 layer board. We expect it to be very nicely made and ready for Ken to begin soldering on the components.

Building the DSKY Substitute

I continued the long fight with Fusion 360, the CAD/CAM package from Autocad, trying to finish up the mechanical design of the keyboard assembly that is the bottom half of the DSKY enclosure. Here I had to create pushbuttons that are internally lighted with keycaps that have their legend cut out, fitting in the 7/8" x 7/8" shape of the enclosure, and acting realistically when pressed.

The DSKY keys travel down 1/4" inch when pressed, quite a long travel compared to most pushbuttons. They require somewhere between 21 and 26 ounces of pressure to depress to the stop and won't turn on until they are 3/16" down.

These buttons are separated by a mere 1/8" on all sides, which required me to design the entire keyboard structure. A printed circuit board will sit below the keys, with .488" x .488" pushbuttons soldered in position. A plastic honeycomb with 1/8" thick walls forms the barrels of all the switches.

The honeycomb wall sides have slots formed in them that control the travel of the pushbutton to 1/4" and retain the keycap just below the surface of the top faceplate when they are not activated. The plunger that moves up and down in the honeycomb is a 3D printed translucent plastic part that sits in the 7/8" x 7/8" cell, with tabs on the side that slide up and down in the slots on the walls. Small LEDs on the printed circuit board will inject light into the translucent plunger.

The inside of the plunger is hollow and has a spring inside that couples the plunger to the pushbutton switch inside and below it. The pushbutton moves only part of the distance and resists with partial force, but the collapsing spring provides the additional force and movement to offer the net effect of 1/4" depression and 21-26 ounce resistance.

I arranged holes in my printed circuit board and in the plastic honeycomb structure to mount them together, to mount down through a .78" standoff to the bottom of the DSKY enclosure, and to permit some shifting to fine tune the alignment of switch, honeycomb and plunger to the faceplate.

A fellow space enthusiast who is building a DSKY replica that is far closer to the real unit than mine is providing the keycaps wth the cutout legends. I will use 3D printing services to manufacture the honeycomb and 19 plunger assemblies. I may need to test different springs until I get the right travel from free to compressed shape and the proper resistance to movement.

Replacement connectors to hook to the AGC

Marc's employer is a high tech connector company and has agreed to sponsor this project by creating some connectors to attach to the Apollo Guidance Computer. Two connector blocks were used to connect the AGC to everything in the spacecraft and to provide a maintenance connection for ground support equipment.

The AGC used Malco mini-WASP connectors, which are complete unobtainium. The company underwent a number of acquisitions and is now part of TE Connectivity but the connectors have not been made or sold for many decades. Fortunately, NASA has a pretty complete specification for them in their archives and those are being used to build modern replacements.

Saturday, December 1, 2018

Designing the pushbutton keys for the DSKY keyboard substitute for Apollo Guidance Computer


Main PCB for displays

The main printed circuit board for the DSKY is submitted to the fabrication service, who are sponsoring our projects by providing free PCBs. In this case it is a good thing, because the tight spacing in the aluminum DSKY case required a 10 layer PCB, 6 1/2" by 4 1/2", to accommodate all the circuits needed and provide the displays in the correct layout.

DSKY case given to me by Jimmie, into which I will install the DSKY substitute, before cleanup
Such a board would cost over $600 in a minimum run of 5. Even hunting around for cheaper alternatives that allowed single board orders would still cost a couple of hundred dollars. Fortunately, I won't have to pay that out of my pocket. PCBWAY is sponsoring Marc's CuriousMarc YouTube channel including the AGC restoration videos.

Keyboard section design

I turned my attention to the design of the keyboard portion, which houses the 19 pushbuttons at the bottom of the DSKY. These buttons are about 7/8" square, internally lighted through the key legend, and must provide a distinctive feel when operated. They move down about 3/16" before activating and bottom out at 1/4", requiring about 24 ounces of force.

My keyboard section has to generate a signal when any button is pressed, a five bit keycode designating which of the keys is pressed, and discrete signals for the RESET and the PRO keys. PRO does not produce a keycode, just the PRO signal, while the other 18 keys generate a keycode and RESET produces both.

I intend to use a small microcontroller (Arduino Nano) on the board to read the pushbuttons and generate the 8 signals (keycode and three discretes), since my main board expects these. I could use a diode matrix and logic chips, a bit more work to design and requiring more space and complexity for the PCB.

I have selected an E-Switch pushbutton that gets me partway to the required behavior. This switch requires about 600 grams of force to travel 2 mm. I need to travel 6.35 mm and have about 675 grams of resistance. The solution is to install an outer button with a compression spring, which adds 4.35 mm of movement and adds 75 grams of resistance in that movement. The net travel and force will fit the specification.

I am using Fusion 360 to do the mechanical design of the keyboard - built into a large honeycomb 3D printed plastic part will sit inside the aluminum DSKY panel and attach to a printed circuit card at the bottom. The pushbutton is installed on the PCB and surrounded by a few small LEDs to create the backlighting.
Beginning to model the case
An inner plastic piece will slide up and down in the honeycomb, compressing the spring and depressing the pushbutton. This part will be translucent to allow the light to reach the keycap affixed to the top of that inner piece. Tabs on two sides ride up and down in channels in the sides of the honeycomb, keeping the inner piece captive in the assembly rather than popping out of the top of the DSKY panel.
Transparent inner piece that fits over pushbutton with spring inside
The keycap is opaque except for the legend which is laser cut out of the plate. I only need to affix these plates to the inner piece I built and the keyboard will be complete. A fellow space enthusiast has offered to send me a complete set of the laser cut plates.

It will cost roughly $100 to manufacture the translucent keycaps, somewhat less for the honeycomb since that can use inexpensive plastic, and then there are the parts costs of about $75 for the components to sit on the PCB. Overall this DSKY will probably cost me $600 to $700 even with the free PCBs. Hobbies get expensive.

It has been quite a few years since I used Autocad, the basis of Fusion 360. The (re)-learning curve is still steep, but I am battling through the production of all the mechanical components that will be assembled in the DSKY. So far, I have the base of the aluminum DSKY housing, the inner piece the will slide up and down, and have begun on the faceplate Friday afternoon.