Thursday, November 1, 2018

Testing Apollo Guidance Computer interface circuits to my DSKY substitute, other build/test activities


Building and testing the DSKY substitute

I spent the morning preparing the text legends that will fit over the face of the displays to show the meaning of all the digits, caution, warning and activity lights. I also prepared legends to fit on the keyboards.

I also wrote some some code for testing with an Arduino Uno hooked to the inputs of the DSKY substitute. This will let me try out the various caution and warning signals, flash the Verb and Noun displays, turn on the Computer Activity and put various digits on signs on the Register 1, Register 2, Register 3 Verb, Noun and Program display sections.

This is more complex than it seems, since the way that the DSKY is commanded is to have a four bit code that specifies a relay bank, consisting of 11 relays per bank, that usually control two digits of the display and in some cases the sign. Thus if I have a command to change one digit on the DSKY, I have to have remembered the state of the other digit and the sign so I can insert my one digit without changing the other items controlled by that register bank.

I got a new supply of breadboard PCBs - cards that reproduce the pin holes and connections of a traditional breadboard - that I can solder connections rather than have wire ends or pins which could come loose. I soldered some of those onto various components.

Another supply of perfboard PCBs arrived, which will hold the input interface circuits that accept the 28V logic levels from the AGC, compatibly, but output a 5V logic level for the Arduino. When the DSKY pulls the line down to 0V, this circuit produces a logic 1 to the Arduino. There are six input circuits per interface card and I need 23 of them to handle all the signals coming to my DSKY.

The output interface boards are much simpler, since they are simply a pair of resistors that are hooked to relays and switch the line to ground or let if float. I built one of these as well as one of the interface boards, giving me 9 usable output circuits and 4 usable input circuits.

I tested the input and output boards using bench power supplies and my voltmeter. Supplying 28V to a relay and to the input boards, driving the relay board with 5V and switching 0V to the relay board input caused the relay to turn on and off, delivering 28V to the output circuit as expected. I then tested the input circuit, pulling the input to 0V and yielding 5V to my controller or leaving the input at 28V to output 0V. to the controller This is exactly what i need to use with the Arduino. They worked perfectly.

To wire up the Arduino Mega 2560 to the DSKY substitute, I made use of a prototyping shield that allows me to solder wires to the shield and simply plug the shield into the Arduino to complete the connections.

Overall I need to build boards sufficient to support the 23 input and 8 output lines that connect to the AGC. One of the output boards handles what I need but it will take 6 input boards with four circuits apiece to cover the 23 incoming lines. The remainder of the components needed to build all six boards are arriving tonight but I built what I could.

I discovered some code flaw in my keyboard scanning routine, such that once it registers one keypress it will no longer register additional ones until the Arduino is rebooted. I can see the PRO and RSET keys are detected, since these also send discrete signals in addition to the RSET keycode, but I only get one keycode emission until the microcontroller is rebooted.

No comments:

Post a Comment