Tuesday, March 26, 2019

Nearing the finish line on the physical assembly of the DSKY substitute



The acrylic panel for the EL side is only 1/8" thick but my cover anticipates a 1/4" stack. The indicator side is built on a 1/4" panel so that is good as it sits. I had a 1/8" clear acrylic piece cut at Tap Plastics and with that could complete the glue-up of the two panels in their covers.

The panels I produced fit into a cover plate, with a bottom plate that will hold the acrylic panels in place inside the cover assembly. I used a dab of acrylic glue to anchor the panels into the covers, then more acrylic glue to hold the bottom plate to the rest.

Panels glued into cover assemblies with base plates
These will need 24 hours to set up strongly enough for insertion and gluing onto the aluminum faceplate. I intend to use Epoxy for that step since they have to bond to metal. I coated the panels with a clearcoat of paint to protect the surface of the lettering for both and the light mask on the indicator panel. The result wasn't as nice as I expected - a kind of pebbly finish to the clearcoat. In addition, streaks of the acrylic glue fell on the surface creating unintended lines on the surface.

Also, the acrylic glue wasn't bonding to the cover - whatever plastic used in the 3D printing service doesn't melt with the same solvent as acrylic. I will have to epoxy the panels into the covers, before epoxying the entire covered panel into the faceplate.


The glue on my coil springs had firmly set, allowing me to put together the PCB and honeycomb assembly. The bolts holding together this sandwich are part of longer standoffs that will position the top of the keyplungers at the right height.

I needed to do some minor modifications to the bottom of the honeycomb to better fit the PCB underneath it. One of the rows of pins for the Arduino Nano jut up  and impinge on the bottom rail of the honeycomb. In addition, a rework to the PCB placed two wires that run left to right under other rails of the honeycomb. I had to dig out space for all of these to allow the remaining rails to sit flat on the PCB.

The goal is to have the top of the plunger level with the underside of the DSKY faceplate. The keycap itself will add a bit of height and bring the key face that is touched by the user to the proper recess into the faceplate. I measured, fine tuned the supports, and assembled it all.

I checked the behavior of all the keys and was quite pleased. They move realistically, with the same downward travel and resistance as the real DSKY. All that remains to do here is to add the keycaps and this part of the project is complete.

I temporarily put on the faceplate so that I could glue on all the keycaps themselves. To do this, I need the plungers in their final location and the edges of the openings in the faceplate will let me register the keycap with uniform gaps on all four sides.

Keycaps glued in place on plungers

The display section was ready for its final mounting in the enclosure. After checking the height of the mounting posts one last time, I attached all the cables, routed through the hole in the back.

I did another test of the circuit that detects the presence of the switched 14V (BPLUSSW) from the AGC as it is used to blank or light the EL side of the DSKY. It is properly delivering 5V to the Arduino pin when the 14V is present and dropping to 0 when it is off.

Next I had to test the relay that switches on to illuminate the legend text on the EL panel - VERB, NOUN and PROG - as those must switch off when 14V is not present. This too worked perfectly.

Finally, I had to verify that the boost board and driver for the electroluminescent wires are switched on and off when 14V is changed. I used a small relay to drive the power to the boost board. The boost converter board, relay and EL wire driver module had to be mounted to an insulated carrier, something I implemented with plexiglas.

The relay and boost boards screw down directly onto the plexiglas while the EL driver module needed epoxy to hold in place. I then had to develop a way to hold the plexiglas board down on the bottom of the enclosure, under the DSKY display PCB. I used some plastic screws thru holes in the bottom of the enclosure.

EL power assembly
Before I finalize the cables and the EL power assembly, I dropped the display board down and maneuvered its screw ends through the holes in the bottom of the DSKY enclosure. After it was arranged in the proper position, I laid the cover over it to ensure that all was aligned properly. All looks good.

Test fit with display PCB inside and panels/covers in place
With the keyboard assembly ready and in place inside the enclosure, all the visible parts of the DSKY are now in their final configuration. Next up is securing the El power assembly to the inside of the enclosure, wiring it to the display PCB, epoxying the panel/covers down, and installing the faceplate.

Designing the light panel for the IBM 1130 (LED replacing incandescent display lamps)

Daughtercard PCB build

I had designed a daughtercard that plugs into the FPGA socket on my main board. Its purpose is to host level shifters so that I can use an FPGA board with 3.3V I/O pin levels to interface with the main board which operates on 5V levels. The card has an offset socket into which the actual FPGA is plugged, the conversion circuits and a set of pins that fit into the FPGA socket on the main board. 

The board is a 4 layer sandwich with 5V and ground planes inside. The real FPGA is powered by 5V even though its IO pins are 3.3V, plus the four level shifter boards need 5V supplied to one side and 3.3V to their other sides. This was a very simple design with signal lines routed on one face and the 3.3V reference source on the other face, which is routed to the four level shifter boards. 

Daughterboard to provide level shifting for FPGA board

Main PCB construction

The main PCB is also a 4 layer sandwich, with 5V and ground planes inside. The two outside faces carry the signals.
Display panel in its enclosure atop the IBM 1130 computer

Display panel with 154 lights behind it
155 single pins are installed on the board and the signals routed to four multiplexer chips that can handle up to 40 signals each. The PCA9505 multiplexer chips are connected on an I2C serial chain, with unique addressing set for each chip. 

The FPGA drives the I2C chain and samples the states of the 154 logic signals from the 1130, plus the lamp test signal. Inside the FPGA, each signal is tracked and the color and intensity of its associated LED is set to mimic what an incandescent lamp would be doing on the original IBM display panel. 

The FPGA drives four single wire serial chains hooked to the LEDs. Each LED is directly and individually addressable on its serial chain. The board hosts the 154 LEDs, which are four-wire components. Two pins connect to the 5V and ground planes, One pin is the serial input and the last pin is the serial output to the next LED in the chain. 

Routing wasn't difficult, in spite of the presence of 155 pins, 154 LEDs, four multiplexer chips and the FPGA socket. Largely this is because the LEDs require only a single trace running from light to light in its chain; power is delivered directly from the inner planes. The bulk of the routing complexity comes from running the signals from all the pins to the four TSSOP sized surface mount multiplexer chips.

My first shot at the PCB included errors in the spacing of the lights on the far right of the console panel, when viewed from the front. I had to fix the design and submit it again for fabrication. I watched eagerly as my new board went through each step of fabrication, happy when it was ready for the final quality control and packing steps.

Alas, when next I checked, instead of a shipment notice I found that they had begun again from scratch. The great news is that their circuit testing and quality control process is good enough to spot problems and they won't ship poor quality PCBs. The bad news is that the estimated shipment is therefore delayed as will be the delivery of the board to my doorstep. 

Soldering down the four multiplexer chips needed the microscope and a lot of care - 56 pins, 28 per side, in a chip that is just over an inch long, thus very easy to create solder bridges or misalign the pins.

Pad for one of the PCA9505 multiplexer chips
Hooking up the LEDs was done on top of the plastic honeycomb of the front panel, ensuring every LED is in the best position as it is soldered down.

PCB laying over honeycomb, as it will when I solder in 154 LEDs
I did a test using three of the APA106 thru-hole LEDs placed on the board that was too short, while waiting on my final version of the PCB. I used an Arduino to play around with various parameters of timing and color shift to see how the LED looked compared to the incandescent bulbs they were replacing.

Monday, March 18, 2019

Preparing DSKY keyboard for final assembly



I turned the honeycomb upside down to expose the inner, bottom portions of the 19 plungers. Each will have a spring glued in place, so I proceeded to add epoxy glue and insert each spring into position. These need a day for the glue bond to become fully hard, so I set this aside.

Epoxy of springs into recesses in key plungers
The keyboard is almost ready for final assembly at this point. I have all the shims in place between key plungers and along the sides and bottom of the enclosure. I though the top of the board needs shims but it does not have a surface to apply them, being an open framework. That would have required some additional plastic pieces to close in the open segments and provide the base to mount the remaining shims.

Fortunately for me, the guide slots in the honeycomb restrain the top five plungers from moving in the direction of the open gaps. It is not necessary to fill in those areas or add shims; the keys will move properly as they are.

Tomorrow I will put the honeycomb/plunger assembly atop the PCB and screw together the two halves. The four mounting posts will be attached to allow this to be installed inside the enclosure. I decided that the PCB is bowing a bit in the center from the combined spring pressure, so I need some legs to epoxy on, to support the bottom of the board.

Underside of keyboard PCB with Arduino Nano and cable in place

Top of keyboard PCB with keyswitches that will be pressed down by coil springs

Sunday, March 17, 2019

Finally completed all decal work for the DSKY substitute



Having realized my error in skipping use of the hot air gun to remove moisture, I set up again and prepared for another decal of white dots. The clear film came out of the water bath intact and I left it to air dry rather than blotting.

Underside of decal, waiting to air dry before adhesive spray
I gently sprayed the adhesive over the film and began to add blue painters tape to form handling and protective masks before touching this down over the target acrylic panel. This worked well and I was able to apply the three upper dots to the target.

Panel with center dots applied
With those dots successfully applied, I made up the left and right side decals in the same manner and left them to air dry. One worked well but the left side one had the clear mylar bond to the cover layer of clear mylar in the bonding carrier that runs through the laminator, instead of to the colored image on the paper,

Decal for right hand dots, a bit rough but usable
A second try on the left hand version produced a decal which floated off without one of the dots. On to the third try I did get a good decal which was left to air dry. These two were masked with blue tape and laid down over the target acrylic panel.

Underside of decal for left hand dots
Water bath with a decal soaking to release from paper
The result was a panel that looked just like I wanted and was quite similar to the real DSKY panel. I will have to insert that panel inside the 3D printed cover and glue the sandwich together. The final step will be to glue the sandwich into the front cover of the enclosure, but I have to fine tune the height of the display board before I do these steps. 

The indicator panel decal was prepared, air dried and ready for application. The challenge is to have the right acrylic panel as the target. I frosted some, but they are sufficiently thick that they cut down the light substantially. My only clear panel had text permanently bonded to it during a prior session. Attempting to clean the text off with acetone gave me a streaky damaged finish.

Indicator panel decal ready for application
I chose the panel with the lightest frosting and applied the decal to the front surface. It looked good, particularly when stacked with the light mask and cover. Similarly to the EL side, I will need to glue up the indicator panel side to have it ready for mounting.

Text in place on frosted panel for indicator lights
I did a quick and loose stack of the parts just to see how it is going to look when everything is fully assembled. This is satisfactory to me and will meet the relaxed goals of a DSKY substitute, versus an exact replica.
Display panels, not yet glued together or fasted to the front cover

More futile attempts to produce the last few decals for the DSKY panel



It occurred to me that one change from the early work where the decals transferred to the later work that didn't is that I ran out of the roll of paper towels I had been using and switched over to a different brand. Perhaps these didn't generate as much static charge as the original towels were capable of.

I made up another of the white decals, this time trying to use different clothes to establish the static charge. If I had solved the inadequate static cling with my test piece of white dots, I could quickly produce and apply the remaining text.

Setting up for work on the decals takes some time and I have to organize adequate workspace. I need water baths, drying areas, the laminator warmed up, cutting areas, and all the supplies in place. Therefore at the same time, I went ahead and prepared the black indicator text through the stage of fusing on black mylar.

The clear mylar peeled off the paper nicely, the dots and border all intact. HOWEVER, the next step is to dab the water off the bottom of the decal before spraying it with glue. It was at this point that one of the dots transferred to the blotting towel. It was perfect before I touched it.

My next try was to just leave the clear mylar decal to air dry, without any blotting, then hit it with the adhesive spray. That should retain structural integrity until I am ready to rub these onto the target panel.

Once again, the gremlins struck. During the step where I put the white dye mylar over the printed image and fuse them in the laminator, for some reason the white fused to the entire page surface, not just to the dots or the lines. Completely useless as a decal, it was a pure white rectangle.

White fused everywhere, useless

Black toner is only where white should fuse 
Frustration rose to the point where I put this aside again. I will work on it after regaining some motivation. Having used this system for a large number of decals when building my life sized replica IBM 1130 (see. IBM1130.blogspot.com if curious), I just can't understand why it is being so cantankerous with these final decals.

Late breaking news - after shutting down and clearing up, I realized I had missed a key step in the procedure. It is essential to use a hot air gun to remove all the moisture from the paper before fusing the colored mylar on the image, but I forgot to do this. I speculate that the moisture in the paper turned to steam and melted the white mylar onto the paper. 

Friday, March 15, 2019

Modeling incandescent panel light turn-on and turn-off optical characteristics for computer consoles


The incandescent lamps used in period computer consoles, like all filament based lamps, have a distinct behavior as they turn on from a cold off state and as they fade out when switched off. The filament has some thermal inertia and its cold resistance is about 1/15th of its resistance when fully lit.

These facts combine to produce a bloom to full brightness, with a surge of inrush current at switch-on, heating of the filament to full temperature, and the light emission directly related to the temperature of the filament at every instant.

As a first approximation, the turn-on is an exponential curve to full brightness with a characteristic time constant that is based on the mass of the filament. Thus, smaller bulbs used in consoles light up faster than more massive room illumination style lights.

When power is removed from an illuminated incandescent bulb, the filament begins cooling, with the light emitted shrinking in direct relationship to the temperature. Again, the thermal mass of the bulb controls how rapidly it cools. This too, to a first approximation, is an exponential curve whose time constant is controlled by radiative cooling as well as the thermal mass.

Thus, we might have two time constants, one for switch-on and one for switch-off. The human eye and brain recognizes this pattern as the behavior of incandescent bulbs; when instant-on LEDs are substituted the panel does not look the same, a source of slight dissatisfaction for those building replica computers.

A related issue is the color temperature of the filament at each temperature during switch-on and switch-off. The bulb is more reddish-orange at the start and increases emission at higher frequencies as it blooms to full on; correspondingly, the lamp fades from white down to orange-red as it turns off.

The final reality we have to consider is that when a lamp is cooling down, but it is switched back on, it does not start from the fully cold point on its switch-on curve; a lamp that was turning on but not yet at full brightness will fade differently if immediately switched off than a lamp that was stable at full brightness.


To simulate this behavior, we may build a state machine with enough granularity to fool the eye/brain into perceiving an LED as an incandescent bulb. The state machine starts at one 'end', full off, and advances one step per cycle toward the 'on' end if the lamp is being powered, or one step toward the 'off' end if the lamp is unpowered.

This state machine provide RGB color values for each step that match the target color and brightness of the simulated incandescent bulb. The current values are steadily delivered to an RGB LED, thus causing it to follow our intended behavior.

This presumes a single time constant for both turn-on and turn-off. A more sophisticated dual state machine would model both curves independently and as the power state of the simulated lamp is changed, it could set the state machine for one direction to the current brightness/color state from the state machine that was operating in the other direction; by direction, I mean turning on versus turning off. .

Analytic and experimental testing

My first estimate of the time constant for the bulb was that it reached approximately full illumination in about 0.1 seconds thus has an effective exponential constant of perhaps 0.06. Thus, lamp moves through its state machine in about 10 possible steps if I assume I can check lamp state about 100 times per second.

I set up an Arduino to try with step size of 10, actually 11 total between full off and full on, roughly estimating the color shift but with a better approximation of exponential brightness change.

The results were decent for the first try. The turn-on seemed realistic but to my eye, the fade-out seemed quicker than real incandescent filaments. That argues for separate time constants. Intellectually, I can understand that radiating heat away through a vacuum is an entirely different mechanism that has no impact on the bloom during switch-on.

Measuring the optical curve

To determine the characteristics of the lamp we are modeling, I may build a test jig to measure the actual behavior of a sample bulb. It would use a computer controlled switch to provide power to the bulb for various durations, and three photocells with red, green and blue filters, to record the brightness of the red, green and blue light being emitted.

The device would need to sample very rapidly to capture the turn-on and turn-off curves with sufficient granularity. The recorded data would then be analyzed to extract the step size needed and the RGB values for each step. I could hold out hope that the turn-on and turn-off are close enough together to allow for a single state machine to model both.

Programming a state machine

Having the number of steps for the state machine and the desired RGB values to produce allows me to produce VHDL for modeling one lamp. This will be replicated enough times to model all the lamps in the console. I have to be clever in the design to minimize resource consumption. As I don't want to latch 24 bits of RGB for each of 154 lamps as that would take up about 4K flipflops just for storage.

If done with an Arduino or similar processor, an index value equal to the state machine can be incremented or decremented based on the signal state each pass through the main loop. That index selects the pre-computed RGB value to send to the LED. I can apply a similar strategy on an FPGA

Use with individually addressible RGB LEDs

Wiring up a large console with individual RGB chips, hooked up to driver chips, ties up a lot of traces on a PCB and consumes the space needed for the driver chips as well. Having a controller chip built into each LED means that a simple serial line is threaded through a chain of LEDs and can address each one individually.

These exist using a number of different controller chips, such as WS2811, APA106, WS2812, and APA102. Some use a single serial line through all LEDs, while others have separate clock and data lines running through the chain. They come in a variety of brand names, such as NeoPixel and DotStar, as well as generic produces.

These are often manufactured on flexible strips for ease of implementation but the separation between LEDs on the strip rarely matches the computer console lamp spacing desired. Another rarer option is through-hole LEDs with the driver chips built in, but these allow mounting in 5mm or 8mm holes at the exact spacing you may need for a given computer project.

Real world example - IBM 1130 console light replacement with LEDs

The real world implementation of this is a quick project to replace 154 incandescent bulbs inside the console of my IBM 1130 computer. These lights are built into a pedestal that sits above the console printer, approximately 24" wide and 5" high, with the lights arranged in a matrix.

Display panel with 154 incandescent lights
The implementation of the incandescent lights in this console makes replacement of burned out bulbs a very tedious procedure. Rows of up to 16 bulbs are drive by long narrow PCBs which have SCRs installed to drive each light. Pins from the board and SCR are inserted in a nylon socket that has a wire lead incandescent bulb inside.

These 16 sockets must be pressed into a honeycomb structure, but the leads are not right so the sockets are quite difficult to maneuver into the holes at the same time. Six rows of these bulbs are stacked, 3/4" apart vertically, yielding almost no clearance to reach sockets for insertion due to the presence of the adjacent boards/sockets. Getting all 96 bulbs pushed into the honeycomb for this side of the console is enormously hard.

The other side has the remaining 58 bulbs, still stacked six boards vertically but with a bit more room on the side, due to some empty light positions in this part of the console. A bit easier but still tedious.

The rear of those long narrow PCBs have wires with pushpins inserted to deliver the logic state, 3V or ground, to control each of the bulbs. Thus there are 154 wires with pushpins that have to be inserted once the PCBs and sockets are in place.

Original IBM boards and wiring
The way the lamps are illuminated determines the number of illumination states and the behavior as well as defining the sampling rate for the logic gate value. Each logic gate was connected to an SCR which fed 7.5VAC to the lamp. The result was 7.5V DC fed on positive going cycles of the supply. If the logic gate was one when the positive cycle began, the SCR would conduct, otherwise it was off.

This means that 30 times per second, the logic state is sampled and for each time it is on, power is delivered to the lamp. The lamp can have anywhere from 0 to 30 half cycles per second applied. When the processor was running full tilt with bits continually changing but averaging being on half the time, the lamp would be lit at a reduced and more orange level than when the bit was steadily on.

The replacement for this uses a single 17.5" by 4.5" PCB, having 154 RGB LEDs installed in the correct patterns to match the holes in the honeycomb. These LEDs are thru-hole types, 5mm diameter to match the honeycomb hole, but contain an APA106 controller chip embedded in each LED.

Thus, a string of these LEDs are individually addressable on a serial chain using a very simple pattern to deliver 8 bit R, G and B brightness values. A string of 40 LEDs can be refreshed up to 780 times per second, with four parallel strings being used to implement all 154 lamps. I think I only need to refresh them about 120 times a second to avoid flicker.

I looked at two methods of implementing this - a Digilent Cmod S7 which has a Spartan 7 FPGA onboard, or an Arduino Uno microcontroller board. These have pros and cons. The FPGA can handle all the I2C and LED traffic in parallel, as well as all the state machines, but takes more skill to set up. The Arduino is more straightforward to program but limited in memory.

The Arduino solution may need some assembler coding to be space efficient, since 154 lights would chew up almost half the RAM available on the AVR chip just to store the RGB values and state machine indexes if using the provided Neopixel libraries.  I believe I will build this around the Spartan 7 FPGA.

I could model the state machine with 30 steps, controlling the color and brightness exactly, which would take 5 bits to form an index for each of the 154 lamps - that is, use 770 flipflops to hold the index value. Since the FPGA I intend to use has almost 30,000 flipflops available, this is a reasonable approach if the eye can tell the difference between 30 steps and an alternative with fewer.

I completed the schematic after having to build the symbols and pad layout for all the parts. It is simple enough even if a lot of replication was needed. The reasons:
  • The APA106 LED includes the controller chip and the load resistor, eliminating the need to place these on the PCB
  • The CMOD S7 has all the components for the FPGA, USB programming link and other features such as RAM, all on the board so that I only need to place the 36 pins of the board
  • The PCA9505 expander chip does a huge amount on chip
  • The layer of connection between the FPGA board and the PCB does the level shifting to 3.3V and implements the 1.6K pullup resistors for the I2C chains. 
That means I only need to place 154 of the APA-106 and arrange them in four serial chains. I place 155 pins on the board and connect them to the four PCA9505 chips. I wire up the LED serial lines and a few control lines from the PCA9505 chips, hooking them to 16 I/O pins on the FPGA. A couple of filter capacitors and two solder pads for power will complete the job. Really quite straightforward.

Routing is sort of easy because the FPGA is thru-hole so I can run lines on the front just to the head LED of the four serial chains, LED to LED short segments link them together, and a single line hooks one line of LED to the next  I organized all the LEDs to match the physical 1130 console. 

On the rear of the PCB I place the 155 pins which hook to the 154 logic signals and the lamp test line. The pins are aligned to the sides of the LEDs (but on the back side).

The 1130 logic gates have a pull up to +3V for the logical 1 state, with the transistor conducting to pull the output down to ground for the logical 0 state. I only have to hook this output to the PCA9505 input pin which will either see nearly 3V or see almost 0V This is well within the specs of the chip to reliably recognize the 1 or 0 state.

I arranged the connections of pins to the PCA9505 chips to allow straight signal runs without many vias. I may even be able to make this with no vias other than the ones that connect leads to +5V and ground.

Competing the routing did require some vias to allow signals to cross, in addition to the power connections, but it all worked out with 6mil width and 6 mil spacing rules. I shipped the board design off the have it fabricated. I should have the board back by the end of the month.

Meanwhile I have been amassing the expander chips, fpga, I/O pins and LEDs which will all be on hand before the board itself arrives. Soldering the 56 pin expander chips down, which fit in about a 1" x 3/8" space, will be a challenge.

I removed the honeycomb from the 1130 and will use it as a jig to align all the LEDs as I solder them down to board.  The resulting assembled PCB and its related power supply module will fit very neatly inside the display enclosure.

3D rendering of board

Sunday, March 10, 2019

Another day of DSKY decal process fails, with some incremental improvement



After a drive over to CHM I was ready to work on the remaining labeling for the DSKY. I have white dots to apply to the EL side and black text for the indicator side. Having failed a few times with these, I had to change up the process a bit to attempt to get it right.

Images or text printed with laser toner have a colored mylar sheet applied as a sandwich for a pass through a hot laminator. The black toner heats up more than the paper, melting the black mylar at those spots and only at those spots. This leaves the black mylar fused atop the printed images.

Unfortunately, the black mylar itself heats up during the pass through the laminator, partially melting even in the areas where there is no printed toner image. These streaks ruined my prior attempts to produce a decal.

My plan was to add a layer of paper towel around the carrier as the sandwich passes through the laminator, reducing the heat transfer a bit. I hope it still fuses the mylar over the toner images but does not melt or streak at all in the other areas.

Streak free with fused black mylar over toner image
The paper towel trick worked great - nice clean image with no smudges. I proceeded to statically bond the clear mylar over the image and dunk it in the water bath to separate mylar from the paper.
It was here that the process broke down. The images did not cling to the mylar, or they broke off as the paper soaked. Failure, don't know why.

Incomplete static bonding of fused black mylar with top clear sheet
The white dots are produced by fusing a white mylar sheet onto the toner image, much like the black text above. A later step in the process creates a static electric charge between a clear mylar sheet and the paper with its fused colored mylar images. The new sandwich also passes through the laminator and should stick the clear mylar firmly over the fused color images. A water bath separates the paper from under the fused mylar and top clear mylar.

The clear mylar with the fused color images stuck to the underside with static electricity is the decal. A spray adhesive is added to the bottom side, then the decal is placed on the target location and rubbed to transfer the fused color images onto the target.

I had problems getting all nine dots in one large decal, so I changed the images to have three separate decals, each covering an area with three white dots. I can apply these independently to yield the complete EL panel when all is done.

I built the first decal, for the top middle three dots. but it too floated away without extracting all the white dots. I had also cut and processed the left and right sides, so I put another through the water bath. Same miserable results with these. I will need to figure out what process change might be needed to get these to transfer with the clear mylar. No sense continuing to waste supplies until I can work out a solution to the failures at this step.

One dot and part of border transferred, remainder stayed on paper

Saturday, March 9, 2019

Doing much better with applying text to panels for DSKY



After a nice break, I went back and reattempted to bond clear mylar over the special paper with black colored mylar fused onto the toner ink in the shape of the text legends for the DSKY EL panel side. This time it was clinging great, detached well in the water bath and became a perfect decal ready for application.
Decal, ready for spray adhesive and application
Since I had put boundary lines for the panel, I could align the decal pretty well with the actual acrylic before the surfaces touched and the text transferred. I put blue painters tape over all the unwanted areas, including the area under which the existing blue line sits on the panel, just to avoid any stress of that feature. The text transferred well. All that I need now is to add the white dots and I will have a realistic "EL" panel.

Looking through the smoked gray acrylic panel with lettering added
Before I can finish this, I have to create decals with white dots and get them applied to the panel. There are three dots on the left side, running vertically from just above the blue line to the bottom, three more on the right side also running vertically, and then three in the midline of the panel from the top down to near the blue line center.

Picture of a real DSKY panel for comparison

I have to get back to print more images for the white dots, which failed when I tried them earlier. This time I will create three different images, for three decals that are applied one by one. Three dots in a row with alignment marks for the left side, another with three dots for the right side and the upper middle set of three dots in a third decal. I will also make multiple copies of each image while at the CHM to avoid having any further delays which would ensue if I have to return to the printer yet again.

I set up to make the indicator panel side text, with a modified image that had a border to align to the acrylic panel. This too is in black, which is the mylar which heats up the most when passed through the laminator. It gets so hot that bits of the dye from the mylar are deposited on the paper. We only want mylar fusing to spots where I have toner (text), not in random area.

Black mylar not just fused on toner but stuck to paper due to heating
 As you can see from the result of fusing the black mylar, the mylar itself gets so hot that it also melts in streaks on the paper even though there is no toner in those spots. I think I will need to try fusing with paper towel over the carrier to see if tht produces less streaking. Meanwhile I continued with this decal just to see how bad the streaking is on the final product.

Toner fused images stuck to clear mylar, ready for adhesive spray
 The clear sheet (the decal) still shows the black streaks, although lighter than the paper. Some of it won't transfer to the target panel, but I don't feel confident that none will be deposited amid the desired text.
Painters tape makes a frame to help align the decal over the target panel

Test application - note black streaks at top. Didn't work hard on transfer so bottom is damaged
The results on the target surface are dramatically better than the original image after black mylar is fused to it, but some surface streaks are visible (to me) and therefore I will work on a less smeared decal. I used a throwaway frosted acrylic panel for the test above.

My task for tomorrow is to print the new decal images for the white dots, then come back and try to work on acceptable decals for the white dots and the indicator panel text. I am feeling cautiously optimistic that I will attain satisfactory (to me) results this week.

Battling with labeling system for DSKY panel



I dashed over to the CHM where I could print the new special sheets for my decals. I added alignment rectangles the size of the acrylic panels to make it easier to get these installed in the correct location on each panel.

I hauled out all the gear again, warmed up the laminator, and produced the decal layer for the white dots for the EL panel side of the DSKY. On the real electroluminescent panel, these dots are the anodes attached to the top layer, which show as white dots when the panel is closely examined.

I made use of white mylar to convert my black toner images into white dots that will be glued down to the panel. My first attempt ended in disaster. The paper rolled up tight as a cigar again and somehow in the process it broke the static bond between the clear mylar and the white mylar on the paper, such that some of the dots did not come away with the decal.

My second try came out better, but not good enough. I lost dots so that the decal was incomplete. I am going to have to figure out an alternate way to print these and use them, perhaps strips of three dots that I can put down separately, with them printed in the opposite orientation as before.

Missing some of the white dots, but this is what this layer would look like otherwise
Since I need to get to a printer again, that part of the image was put aside for another day. I could, however, work on the text labels for PROG, NOUN and VERB that compete the display. These are black and sit atop LEDs that backlight them whenever the AGC is on and not in standby.

The mylar attached but left some dirty streaks on the paper. I hoped that these wouldn't transfer to the decal and thus not affect the finished product. All that remained was to create the static cling to the clear mylar top sheet, put it through the laminator and then dunk it into the water.

Text with black mylar fused to the toner
The clear sheet that should have been laminated and clinging to the text just came off as I opened the carrier that had been fed through the laminator. At this point, I decided to call it a day. I can try again to make the sandwich with clear film and do the water bath to separate them, but this is becoming frustrating rather than fulfilling.

Thursday, March 7, 2019

cut cable entries in DSKY enclosure and started on the text/graphics installation on acrylic panels


Cable entry and orientation

I chose to route the cables in and out of the DSKY from the bottom face. A few holes and slots were drilled and I test fit the cables. I have to epoxy some rubber feet to the bottom to provide clearance for the wires.


It was finally time to create all the decals and transfer them onto the two acrylic panels. This is a process I have accomplished successfully many times before, but does demand care and attention to get it right.

I have printed the text, dots and lines that will become the details, using a special printer paper. The toner is baked onto the surface by the printer itself. The actual process will consist of four separate decals. One for the indicator panel, then three for the EL panel since it has white dots, a blue line and black text.

I cut up the special paper with the printed text, applied a mylar sheet with the desired color on top, covered it all in clear plastic and pass it through a hot laminator. The lamination causes the toner to absorb the heat, melting the colored mylar atop every printed feature. The mylar is fused to the paper, but only where toner existed.

I peeled off the rest of the colored mylar, which left just the printed area with mylar adhered to each letter/graphic. Some cleaning prepared this master for the next step where I removd the backing paper to leave the mylar and decal..

I covered the master with another, clear mylar sheet that has been rubbed to create a static electric charge. Running this through the laminator a second time makes a sandwich of mylar film, the mylar fused letters and the paper,  which is then slid into cold water. The special paper dissolved in water, leaving the clear mylar to float off with the colored text/graphics stuck to the bottom.

This is the decal - all the graphics and text are clinging to the mylar because of the static charge. Since it is simply a static charge, however, they will separate relatively easily and without any ripping. The colored part of the text is up against the mylar, with the underside available to take a quick spray of adhesive.

The decal is placed atop the desired surface, in this case an acrylic panel, and rubbed to cause the letters to glue down to the panel. Peeling away the clear mylar sheet leaves just the text and graphics stuck in place as intended. This is the DecalPROfx system.

The first decal I applied was the blue line, since I could apply a narrowly focused adhesive spray to just the area under the line. The image below has reflections and doesn't show off the transferred mylar but it looks good in person.

Blue line applied to smoked gray acrylic panel
Second up would have been the decal that puts down the white dots. With those in place, I would make the decal with the text (e.g. PROG, VERB, etc) and rub it onto the panel.

Unfortunately, I miss-cut my printed paper and ruined the white dot and black text sections. I will need to print this on somebody else's laser printer since the Brother brand which I have does not produce good toner for this system. I will get back to this perhaps tomorrow when I drive over to use another printer.

Having been stymied by my own error, I turned to the indicator panel. That had a single decal with the black text for the fourteen different conditions that are lit up (e.g. GIMBAL LOCK,  RESTART).
A lasercut cardboard mask is then glued over this panel, providing visual separation of the fourteen indicator lamp areas. A matching light dam below keeps any LED illumination contained to the intended cell, thus lighting only that one of the fourteen areas.

Image printed and black mylar bonded to it
One peculiarity of this system for producing decals is that you have to ascertain the axis of bending when the paper hits the water. If it goes in the wrong way, it is very hard to get the mylar to release from the paper without destroying the printed image.

The directions tell you to observe the paper as you remove moisture from it - a hot air gun is applied to the paper to drive out moisture. Sometimes, the way it bends when first heated is NOT the way it will bend in the water. I got it right for the blue line decal, but my indicator panel text decal rolled up like a cigar, the wrong way.

Amazingly, it wasn't too bad. I lost a bit of the border band but the text was good. I sprayed it with adhesive and moved on to install it on the acrylic panel. Alas, I got the alignment wrong. Once the text touches down even for an instant, you can't move it. I have a panel which has great text but misaligned so it isn't useful.
Mylar with text clinging to it by static electricity
Sadly, I let it touch down off center, ruining this try
Text offset because of flaw but shows how it will look in operation

And in face frame

Monday, March 4, 2019

Building test tool to put the DSKY substitute through its paces


Test Tool development

Once the DSKY Substitute is complete, it will have several cables coming out of it that need to be hooked up to something to work properly. Rather than trying to debug this directly on the Apollo Guidance Computer, I designed a tool that will check out everything with a reasonably convenient user interface.

This is built around an Arduino Uno which controls the 23 signals that are inbound to the DSKY. The AGC provides these with 28V signalling levels, the standard for the spacecraft. My tool has to deal with those levels, something that is not directly compatible with an Arduino.

Those inbound circuits are fed 28V from the spacecraft (i.e. from my bench power supply) and are logically off unless the input is pulled down to ground through a 2K resistor, turning it logically on. I used a relay module in the test tool with 2K resistors wired to ground, so that whenever I fire the relay, it will turn the attached inbound line logically on.

To drive the relays, I use a combination of I2C serial bus attached expander boards and direct attachments to Arduino pins. I don't have enough pins to handle all 31 input/output connections with an Uno model, thus the expanders.

The boards are based on the PCF8574 expander chip, providing eight outputs per board. These are individually addressable on the I2C chain, with mine set to 0x20 and 0x21 addresses. I chose a 16 relay board to drive with these two expander boards. It will implement the main DSKY inputs M1 to M15, which are wired to channel 10 of the AGC. The remaining signal for relay 16 drives the COMP ACTY light which indicates computer activity in the AGC.

In addition to the 15 bit word from channel 10, the DSKY has seven inbound signals coming from other locations in the AGC channel space. These are implemented with 7 relays in a 8-relay module board, also pulling down to ground through 2K resistors. This relay board is driven by Arduino pins 7 to 13.

One control signal in that group causes the VERB and NOUN digit displays to flash on and off. The other cause lamps to illuminate on the lefthand indicator panel of the DSKY. The indicator panel implements 14 warning lights, but they are not all controlled the same way.

Six of them are controlled by the direct signals hooked to the 8-relay module, while the remaining 8 are set by special codes sent to the DSKY on channel 10 (bits M1 to M15 hooked to the larger relay board). The direct lamps are STANDBY, RESTART, TEMP, KEY REL, UPLINK ACTY, and OPR ERR. The other direct signal will cause the VERB and NOUN displays to flash.

The channel 10 data consists of a four bit bank number, two 5 bit digit codes and a sign bit. Banks 1 to 8 are used to set the digits in the three 5-digit register displays (R1, R2 and R3), as well as the plus or minus signs in front of those register displays. Banks  9, 10 and 11 are used to set the 2 digit PROG, VERB, and NOUN areas.

Bank 12 is used to turn on eight of the indicator lamps. The lights controlled by bank 12 are PRIO DISP, NO DAP, VEL, NO ATT, ALT, GIMBAL LOCK, TRACKER, and PROG.

There are eight signals that are outbound from the DSKY, generated by the keyboard. Keys are assigned to a five digit keycode, which is delivered with inverted logic to the AGC. That is, the AGC circuits watching this deliver 28V to the outbound wires; when the DSKY pulls those down to ground with internal relays and internal 2K resistors, the AGC detects that as logically ON, otherwise they are logically OFF.

Our keyboard has 19 keys, consisting of ten digits, + and - signs, and some control keys. These are VERB, NOUN, KEY REL, RSET, PRO, ENTR, and CLR. Every key except for PRO will produce a 5 bit keycode. The PRO key has its own direct signal wire to the AGC.

In addition, the RSET key has a direct signal wire which is activated in parallel with the keycode when it is depressed. The last of the eight outbound signals is logically OFF when any of the keys is depressed, otherwise it sits at logical ON state. It is used for the DSKY to know when the keyboard is idle.

For my testing purposes, I will not feed 28V to the outbound 8 DSKY lines. Instead, I will use Arduino pins with internal pull-up resistors so that they can be pulled down to ground with the relays in the DSKY when a signal is logically activated. This operates these signals on 5V signalling voltages.

I don't have quite enough digital pins on the Arduino for this, so I will make use of three analog input pins to monitor the PRO key line, the RSET direct line and the keyboard idle wire, with an external pullup resistor to 5V at the Arduino.

The code in the Arduino uses a simple text based interface to issue controlling commands. A one character command, a position number and a value are entered as a simple three character string terminated with a CR/NL. The position number depends on the command - there are only two digits in display areas such as VERB, five digits in R1, R2 or R3 areas, 8 controllable lights or flashing control via direct signal wires and 8 controllable lights through bank 12 of channel 10.

Command k00 will read and report on the eight outbound values - keycode, PRO, RSET and keyboard idle. Another command, s, sets the sign for R1, R2 or R3 to +, - or off. Commands p, v and n set the digits of the PROG, VERB and NOUN displays. Commands 1, 2 or 3 set the digits of the R1, R2 or R3 areas.

Finally, code l controls the seven direct lights and VERB/NOUN flashing, while code w affects the eight lights implemented on bank 12 of channel 10.

I have tested the components, written and debugged the Arduino codes, and will be wiring this all up around a breadboard to allow each interfacing between the DSKY Substitute cables and my test tool wires.

Sunday, March 3, 2019

DSKY substitute EL wire power choice and other work


Powering the electroluminescent wires

My EL wires came with a driver module designed to be powered by a 9V battery. These wires should be turned on and off with the AGC 14V switched power line, as the whole display should go dark when the AGC is in standby.

My first approach to this was to use a buck converter board to reduce the switched 14V from the AGC to produce the 9V for the EL driver. I wired it up and found that it works properly, however the combined current of the EL wires, driver and buck converter came to 56 ma, adding about 3/4 watts to the load on the AGC. Since its total power consumption is only about 70 times larger, this is not an insignificant impact.

I then decided I would draw the power from the 5V supply powering my DSKY substitute, which is entirely independent of the AGC. A boost converter board was set up and tied to the switched 5V power relay in my DSKY, which is switched on and off based on the presence or absence of the AGC switched 14V. The load through the wiring points I selected is just too high, however, producing odd behavior of the DSKY board once I apply 14V.

Therefore, I plan to use an outboard relay, which takes the switched 5V from the onboard relay and uses it to provide a different higher current path from the external 5V supply to my boost board and EL driver.


I had updated the light dam for the indicator side and did a test fit of the panel, the light mask on top, the dam below and the panel cover. All looked great, the only thing missing is the text itself.

Indicator stack with cover, ready for text legends