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

1 comment:

  1. Love to hear about the progress of this project! I've been fascinated by the AGC for a long time, it will be so amazing to see a real one up and operating.

    ReplyDelete