Saturday, December 29, 2018

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

BUILDING DSKY SUBSTITUTE FOR USE WITH APOLLO GUIDANCE COMPUTER

Keyboard

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

CONSTRUCTING DSKY SUBSTITUTE FOR AGC

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 3DHub.com 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

BUILDING DSKY SUBSTITUTE FOR USE WITH APOLLO GUIDANCE COMPUTER

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 PCBWay.com 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

BUILDING A 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 PCBWay.com 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. PCBWay.com 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

ATTEMPTING RESTORATION OF ERASABLE (CORE MEMORY) MODULE

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?

DSKY SUBSTITUTE KEYBOARD CONSTRUCTION

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.

A LITTLE SUNDAY EVENING EXCITEMENT

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

WORKING ON KEYBOARD DESIGN FLAW

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

BUILDING DSKY SUBSTITUTE DISPLAY PCB

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

BUILDING DSKY SUBSTITUTE DISPLAY PCB

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

BUILDING DSKY SUBSTITUTE DISPLAY PCB

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

BUILDING DSKY SUBSTITUTE DISPLAY PCB

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.

Sunday, December 9, 2018

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

MEETING A DSKY REPLICA MASTER

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.

BEGINNING BUILD OF DSKY DISPLAY PCB

Board arrives and is unboxed

The shipment from PCBWay.com 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 WORK ON KEYBOARD SIDE OF DSKY

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

PREPARING TO BUILD DSKY SUBSTITUTE

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
Pushbutton
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

PREPARING FOR APOLLO GUIDANCE COMPUTER TESTING

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. PCBWay.com 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

BUILDING DSKY SUBSTITUTE FOR USE WITH RESTORED APOLLO GUIDANCE COMPUTER

Main PCB for displays

The main printed circuit board for the DSKY is submitted to the fabrication service, PCBWAY.com 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.

Wednesday, November 28, 2018

PCBs sent to fab house and other work started for continued Apollo Guidance Computer restoration

PREPARATION FOR REPAIR OF ERASABLE MEMORY MODULE FROM AGC

Building realistic test modules to practice techniques

Mike has ordered the same potting materials, magnet wire and fiberglass boards that are used in the erasable memory module. He is casting sections that match the actual module as accurately as we can, including breaks in the wire at the points we suspect.

This will let us practice milling, dissolving and laser welding before we work on the irreplaceable artifact. We want to figure out tools, speeds, pressures and directions with these test modules, plus practice to be sure we do the real work as well as possible.

We have time scheduled on a 3D tomographic X-ray machine in mid December, which will give us micron level resolution of the actual module interior and help us find the place where the wire has broken. Once we have that information, we can do a couple more practice runs on test modules configured the same way.

BUILDING THE DSKY SUBSTITUTE

Verification of circuits before PCB fabrication

I set up a MAX7219 and some 7-segment displays in order to validate the exact circuit on the PCB, just in case I got a pin wrong or made some other error that would cause the DSKY to malfunction. Basically I wired up a few of my new green 7segment displays (the components to sit on the PCB) and four discrete LEDs.

An Arduino UNO drove it to prove that the digits display properly and the signs work. I cycled through all ten digits on each display and cycled through plus, minus and blank for the sign.  This worked well, plus I saw that my high output (90 mcd) LEDs were moderated while in circuit with the MAX by some 5K resistors. I suspect the MAX chip would maintain the current regardless but this is a safety feature.

Next up, I temporarily wired up four of the small surface mount LEDs and placed them in their approximate relationship, to verify that it looks like a plus or minus sign. These LEDs are very tiny, 0603 size, which makes tack soldering very difficult. I did manage to light one up and felt comfortable with the light it gave off and its shape, so I will consider this test completed.

The last circuit to prove out are the chips driving the various LED lights that are under AGC control, mainly caution and warning lights but also the computer activity light. These sit on an I2C serial chain and sink the current through up to eight channels of LEDs.

I had used a module with these installed in my breadboard DSKY, but out of caution I wired up the same circuit today to test it again, since I was wiring this directly on the PCB instead of on a module and thus could have the pins wrong. This worked fine when tested.

Final check before sending out the design is to step through the schematic and PCB view, ensuring that every net is correctly attached to the right pins of all components:
  • Twenty-three input circuits with six components apiece, plus input from the AGC IN connector and output to the Arduino connector. 
  • Eight relay circuits with five components each, plus input from Keypad connector and output to AGC Out connector
  • Standby power sense relay circuit with four components, input from AGC EXTRA connector and output to Arduino connector
  • Two loop circuits on AGC EXTRA connector
  • CompActy light circuit with eight components and output from Arduino connector
  • Legends and lines lighting circuit, with 36 resistors and 36 surface mount LEDs
  • Caution and warning lights on I2C chain, with 72 components including 28 LEDs
  • First MAX7219 chain with five 7-segment digits for R1, two digits for Noun, and four discrete LEDs for the plus//minus sign, with 18 components but many nets/traces
  • Second MAX7219 chain for R2, Verb and plus/minus sign, another 18 components
  • Third MAX7219 chain for R3, Prog and plus/minus sign, another 18 components
Almost 1200 pins/pads, 400 components and quite a few connectors comprise this board, so checkout was a long careful process. By the end of Wednesday I had this completed.

Submission to fab house to create the PCB

I transmitted the GERBER files and drill list to the PCB fabrication site once I was satisfied it was (probably) correct. It will take about 10 days to produce, plus shipping time from China to here.

CORE ROPE SIMULATOR DRIVER

Ken finished his design of the driver to hook to the two Core Rope Simulator modules that came with the AGC. It makes use of a Beaglebone controller and a PCB. The PCB was submitted to the fab house yesterday. He is still developing testing plans for proving this out as well as possible before we cable it up to the real AGC next year.

Monday, November 26, 2018

Readied PCB to build DSKY Substitute for Apollo Guidance Computer

PREPARING DSKY SUBSTITUTE PCB FOR FABRICATION

Adjustments to design and components

While I had initially thought that the five pins I needed to connect out of the 16 on the alphanumeric display components were situated so that they don't conflict, upon a double check I found that pins 1 and 8 are both involved, foiling my plan to stack the three signs close enough in a vertical line.

I found a different alphanumeric display component, this one surface mount, that is not as tall. The three fill fit so that the plus/minus signs are aligned with row 2 digits, slightly low on row 3 and slightly high on row 1, but close enough to proceed. It has some contacts that are underneath the component, like a ball grid array, but I think I can manage these with my reflow oven.

The bonus with this part is that it was common cathode. I can drop the separate driver chip and just drive these with the one unused position on each of the eight digit MAX7219 chips. If I wired up the five wires properly, I can light minus by sending a 1 digit to the chip and by sending a 4 digit I will get the plus sign.

Ultimately, however, I discovered that there was not enough room to stack these vertically and fit in the size of a row on the DSKY. If they were pushed together so close that they didn't look badly out of alignment in rows 1 and 3, they could not be routed. I pulled them out and inserted small surface mount LEDs in the pattern of the plus and minus sign.

I dropped out some more connections, mainly by the decision to have the keyboard circuit (yet to be designed) produce the eight output signals that go to the AGC - a five bit keycode plus reset, keypress and proceed/standby. If I had to decode the keyboard it would have taken thirteen signals linked to the Arduino and then the eight outputs, but with the keyboard doing the heavy lifting, the Arduino need not be involved at all, saving 21 pins

Routing of the PCB

My attempted routing was failing even with a 10 layer board, in large part because of all the vias that are generated attempting to route the connections between all the parts. I burned about a dozen hours on the laptop attempting to get a complete routing solution.

To ease the job, I would look at intermediate routing attempts, find components whose orientation could be changed to avoid vias and to simplify the paths. This is iterative with long routing runs in between.

After yanking the 14 segment alphanumeric displays and directly configuring the plus and minus signs, the routing work got slightly easier but several very dense areas continue to cause problems. For example, there are three rows of five 7-segment displays side by side, making it hard to connect the same pin of all five together in the narrow space between pins. This ends up using space on other layers and adding vias in the narrow ridge between one row and the next.

The solution to this was to hand route the pins of the digit displays, also to organize and route all the legend, line and Comp Acty LEDs to minimize via use. I worked on just a few of the driver transistors and relays, but then let the autorouter try to complete things.

My trace sizes are not aggressive but not too conservative either. Minimum signal of 5 mils and power traces at 20 mils. Could go quite a bit lower with the signal traces and a bit smaller on power, but I think the vias are the limiting factor not trace width. After shrinking the vias commensurately, I was able to get a nearly complete routing.

I had a few dozen errors, like trace to trace flaws, trace to via flaws, three connections that weren't completed and quite a few vias stuck in the middle of a pad. Finally, I had a board ready to send to the fab.
Projected view of front of the PCB (courtesy of DesignSpark)
Verification and testing

I began to breadboard the exact wiring I have built on the PCB, checking that it worked properly. First up were the relays with their driver circuits - using the same components I proved out its operation. Second, I verified that the AGC interface circuits correctly resolve the 28V spacecraft level inputs to inverted TTL outputs that my code in the Arduino expects.

I have three more breadboard checks to make - I2C driver chips hooked to LEDs, the MAX7219 driving two 7-segment displays and the custom plus/minus sign, and the various light emitting devices to determine the appropriate resistors to balance out their brightness. These will be done tomorrow.

Wednesday, November 21, 2018

All parts placed on PCB for DSKY substitute for AGC testing

INTERIM WORK FOR RESTORATION OF APOLLO GUIDANCE COMPUTER

First two videos are up

Marc has posted the first two videos of our restoration work onto YouTube at first video of series and second video of the series

DSKY substitute testing

I want to know that the design is 100% validated before I transfer it to PCB as a misstep is relatively expensive. I used an Arduino Uno plus an I/O expander board on the I2C chain to drive some inputs into the DSKY substitute in lieu of the AGC. I hooked these test signals to the 5V output side of the AGC interface boards.

After some time playing with funky wires and connections, I was able to drive the intended digit to every display position. I then tried to light all the caution/warning and activity lights, but my I2C chain was blown by a mistake back when it was unpacked in Houston. I could see the I2C signals coming out of the Arduino and replies from the boards but none of them would do anything with their outputs.

Final DSKY design

Eventually the bulk of the DSKY will be implemented on a single PCB that fits under the spaces for the caution/warning lights and the Electroluminescent display of digits on a real DSKY. It will mount the Arduino underneath, have all the 7 and 14 segment displays plus the LEDs fit on top, plus host underneath all the surface mount driver chips for these displays.

This PCB will have the 28V inputs from the 23 signal lines coming from the real AGC, implementing the level shifting and inverting function of my existing discrete interface boards. The outputs of these interface circuits run to the Arduino. All outputs from the DSKY substitute to the AGC are accomplished with a separate relay board supporting the eight signals.

A few connectors must come off this master board:
  • One will connect the keyboard section below, allowing the Arduino to scan the key contacts for any depressed buttons, using 10 wires
  • A second will connect to the relay board that drives the AGC input lines, requiring 10 wires. 
  • The AGC output lines coming to my device have a third connector with the 23 lines plus ground and 28V pullup. 
  • A complex of connectors that fit the shape of the Arduino
This will be a dense PCB because of all the signal lines for the display digits (147 for digits, 15 for signs), all the caution/warning and activity LEDs (15), the various driver chips, and the need to connect an Arduino Mega with through hole pins and the four connectors. There is not that much room inside the DSKY case which forces the PCB to be 6 1/2" x 4 1/2". 

The 7-segment digit displays are physically the same height as the EL panel digits, 0.5", although the actual digit displayed is smaller at 0.39". They are .372" wide physically and will fit in the space alloted on the panel of .410". I can use the standard part layout in the PCB design software.

The 14-segment display used for the + and - sign is larger - .820" high and .390" wide. This is a problem because the row to row spacing on the EL panel is just .760". I would need to shave 0.03" off the top and bottom, but also deal with the interference of the pin pattern.

Luckily I only need five pins out of the 16 on the chip and they are clustered up on the top half. That means I can cut off the unused pins and not install the holes on the PCB for those, allowing just enough space with the shaving of the display to wedge them top to bottom for the three rows of register digits. To handle this I have to make a custom parts layout for the PCB design software.

The EL panel has lighted lines separating the three register rows, three lighted text areas over the Verb, Noun and Prog digits, and a large square lighted area for Comp Acty. I will use small surface mount green LEDs to form all of these. The cumulative light emission of these surface mount devices will be similar to that of the 7-segment and 14-segment displays.

The caution and warning lights will be surface mounts LEDs, seven each white and yellow sections. For each section I will use several diffused LEDs to spread the light a bit more evenly. The same area which will hold these lights on the top will also contain the single row and dual row headers to mount the Arduino underneath. My other connectors sit in the space between the EL panel and the caution/warning panels.

The surface mount chips to drive all these segments, surface mount resistors for all the LEDs and drivers, and any miscellaneous parts will be spread over the PCB to minimize traces and avoid any thru hole parts. I began mechanical layout of the parts first to be sure everything fit, before going back to a schematic view to indicate connections.

The toughest part was fitting the Arduino Mega headers to mount the controller below the board. My space was already quite limited just from the displays and LEDs sprinkled across most of the PCB.

I grabbed six different dimensioned drawings, allowing me to cross check them and weed out any inaccuracies. Given that, I could figure out the spacing of the header strips for pins 2 to 53, plus ground and 5V. This minimized the locations where I needed a thru hole header strip, increasing the chances that I could locate the Arduino somewhere underneath my board. Part of the problem is the length of the Arduino, which is about 4 1/2".

After laying out all the connectors and the display driver chips, it was time to place the resistors and capacitors. All the LEDs require resistors to control the current through them, adding many dozen resistors for that purpose.

Routing all this circuitry is going to be quite a challenge, even with a four layer board. I might have to switch to a six layer board, bumping up the cost - if I can't get this to route. I won't buy the current limiting resistors for the LEDs until I test out the various LED lights with various resistor values to achieve the appropriate brightness and some balance between all the lighted elements.

Aspirationally, it would be great to fit every circuit needed on this one board (except for the keyboard of course. That is, have the 23 input circuits with their four resistors, one capacitor and one transistor apiece plus the 8 output circuits with miniature relays. Whether that is even possible is the question.

To get the right amount of illumination I needed larger LEDs and multiple of them. To get the power handling capacity for the LED current, the limiting resistors can't be smaller than 0805. Some parts come in only one surface mount size, and the displays themselves are thru-hole. The rest can be shrunk, as in the resistors and capacitor for the input interface circuits.

The relays for the 8 output lines took a bit of ingenuity to stuff onto the already overcrowded board, but I finally found positions where they could sit and not interfere with other devices. They are surface mount, which makes routing much easier.

The brightness of one segment of the 7-segment display is about 3 mcd (millicandela) at 10ma. The alphanumeric (14-segment) display is roughly 2.2 mcd at the same current, but I will run these at 15ma to compensate. My tiny LEDs used for lines are about 3 mcd at 10ma, thus that is the initial setting for them.

The larger LEDs used for the lit legends, caution, warning and activity lights are 90 mcd at 10ma, so they need to be toned down quite a bit. For the caution and warning area, I will use two apiece and run them at 2 ma or less to generate a 20 mcd warning light. However, for the Comp Acty and legends I think I will shoot for 1 ma and install just 2 LEDs for the legends, but 4 for the wider Comp Acty light. That last area might need to be further reduced, but I can make that determination later.

The last few components were placed. First, a driver for the sign displays because they were common anode, unlike the digit display. Next, a pair of 8 port I/O expander chips that attach to the I2C chain and drive the LEDs for the caution, warning and Comp Acty lights. Since my LEDs are high output units that are barely driven at low current to limit the actual light output, these are easily handled by the two PCF8574 chips and their four associated pull up resistors.

My first cut at placement for all the parts is complete. No routing yet, but I will take that on in the next day or so.  I have to very carefully check clearances for all parts and orientation of connectors before the board is submitted to manufacturing.

All parts placed but before routing