Following-up on the Apple IIc computer refresh, I recently cleaned up the IIc’s monitor. Disassembly of CRTs can be dangerous due to high voltages, but at the point of disassembly it had been unplugged for a few weeks and I made sure to discharge the tube and capacitors as soon as I could. From there it was just a matter of cleaning the plastics, using a magic eraser for scuffs, and de-yellowing. The de-yellowing is accomplished by covering the surfaces in peroxide, putting the parts in bags, and then submerging those bags in a bath of hot water kept warm by a sous vide heater.
A few of the potentiometers for size/position/brightness were dirty, causing the picture to cut out unless adjusted perfectly. This was resolved by spraying some contact cleaner under the knobs and exercising them.
Last weekend I got around to populating and testing the piano valve control board. Unfortunately it did not work when initially powered on, I was able to track this down with a scope to problems with the level shift circuit between the pi and the shift registers. Rather than troubleshoot this farther I ended up re-designing and re-etching the board to replace my transistor array level shifter with an off-the-shelf level shifter sub-board. I also took this opportunity to #1 redesign the solenoid wire connections so that a pin header connection could be used rather than having the wires directly soldered to the board and #2 add a connector to the edge of the board to use the pi’s pin header connection.
In the mean time I had also created a 3d printed enclosure to hold the board on the back of the valve bank. This was important as it allowed the final solenoid wire lengths to be determined and I soldered all the solenoid wires onto a pin header. I also 3d printed a support ring to stabilize the pin header and hot glued it all together to act as a single strain relieved connector.
This weekend I was able to finish and test the re-design. All channels seem to be working OK and I’m able to control the piano keys individually from a tablet using a python script. I have some python scripts working that successfully decode the MIDI files, but I haven’t connected the dots between this and the hardware yet, that’ll be the next step along with hopefully adding a web interface.
Since moving, the home office area has taken a back seat to other projects. Although it’s been fully functional, there were many unopened boxes filled with books/computers/etc. This weekend we started the process of unpacking and organizing the office stuff with the goal of understanding what kind of storage space and desk space is needed. I’ll use this info to design/build cabinets, hopefully some time in the near future.
One of the boxes contained an Apple IIc. It powered on OK, but the video signal was flaky. The video connector felt a little loose, so I opened it up and found that the connector design relied on a crimped connection that had worked loose over time. With a very hot soldering iron I was able to heat the crimped connection and flow solder into the joint.
This fixed the video problem from the IIc side, but on the monitor side the brightness knob has to be set just right or the picture scrambles. I suspect the brightness potentiometer has oxidized everywhere except where the wiper was sitting for the last 20yrs. If this is the case, then I should be able to fix the monitor by just spending some time turning the adjustment knobs back and forth until it clears up. Either way I’ll be disassembling both the monitor and the IIc (again) to fully clean them and reverse the yellowing of the plastics; I can replace the potentiometer at that time if needed.
I’m planning to set aside a corner of the office for the retro computers (Apple IIc, Macintosh Plus, Commodore 64). As I unpack these I’ll post more details on getting them cleaned up and working again.
The Piano controller will be based around a Raspberry Pi Zero W. I had originally considered using a spare Arduino, however since the project will require a lot of file handling and a web server, having a full general purpose OS is much easier than shoe-horning it all into the Arduino. The Raspberry Pi also has a wifi adapter built-in, simplifying wiring.
Unfortunately the Raspberry Pi doesn’t have the ~90 outputs that are needed to control the piano’s valves. This is a common problem in electronics and micro controllers – it’s assumed that the designer/integrator is going to provide their own output channels that are most suitable for their device. Instead, the Pi has several low voltage/current outputs that can be switched extremely quickly. I’ll connect these outputs to shift registers, clock all 88 valve bits into the shift register’s ‘memory’, and then send a signal to latch these new values to the outputs. This will be repeated quickly enough (~1000 times each second) that for my purposes the ‘remote’ outputs at the shift registers will appear to instantly follow the valve output commands from software.
74HC595 is an extremely common 8-bit shift register that many examples are based on, unfortunately it’s limited to 35mA outputs at 5V. This could still have worked, but would have required adding a transistor switching circuit to each output to achieve the 200mA @ 12V that the valves require. Going that route would have meant half of the design or more would have been dedicated to individual transistors/resistors, leaving a lot of room for errors during the build. To avoid this I found the MIC5891; this is essentially the same device as the 74HC595 but with built-in output drivers that can provide up to 500mA at up to 50V for each channel. The MIC5891 also has built-in protection for switching the valve’s inductive load, so this selection also avoided the need to add external protection diodes. The only minor problem created by the MIC5891 is that its inputs are all 5V and the Pi outputs 3.3V; this is resolved by a simple FET level shifter.
Once the MIC5891’s arrived I did a quick breadboard test with the PI powering a single shift register with some LEDs. In this test the MIC actually accepted the PI’s 3.3V signals, but I wouldn’t trust this to be reliable and will still include the level shifter on the full board.
To finish the design I added a few FET switches which will allow me to eventually route spare outputs on the Pi through this board to a satellite board that will control the vacuum pump (On/Off/Speed). I also added a 12V to 5V DC-DC power supply so that I can bring a single 12V supply into the control board and have it power everything, including 5V back out to the Pi. This was all drawn up in CircuitMaker.
Creating the actual board consisted of printing the circuit design onto toner transfer paper, with scaling 1:1 and with the top layer mirror-imaged. I cut the board blank to size and drilled small holes that I had added to the design as alignment points. The board was then cleaned carefully with fine steel wool and denatured alcohol and then I ironed the transfer paper onto the board. When the board had mostly cooled I pulled off the transfer paper revealing the design. In the past I had used photo paper for transferring toner; this was my first time using purpose-made toner transfer paper and it definitely was much better – the board only required minor touch-up with a fine tip marker prior to etching. After etching in Ferric Chloride, steel wool and denatured alcohol were used to clean the toner/marker from the board.
The next steps are to drill all the pin holes and to fully tin the board to increase the ampacity of the traces and prevent corrosion, I’ll do this prior to populating and testing the board.
This weekend I had a chance to test the completed valve bank.
Testing revealed that some of the keys did not actuate with their corresponding valve open. On these keys when the valve (while turned ON/open) was removed from the manifold the key would strike immediately, pointing to lack of airflow through the valve as the cause. I can’t explain why this occurs on only some of the keys but the piano turns 100yrs old next year, so the inconsistency isn’t surprising. The piano could perhaps be adjusted to make these keys work the same as the rest, but I could more easily just provide more airflow via multiple valves per key – this is the approach I took. To connect multiple valves per key I created a few hollow standoffs that fit inside the valve holes in the manifold . The standoffs then have holes on their sides to allow connecting the extra valves on a 2nd layer above the rest. The end of the hole that was drilled to hollow the standoff was sealed with hot glue. Two valves solved the problem for most of the offending keys, but one extra special key required 4(!) valves in a ‘+’ configuration.
With the mechanical parts complete I’ve taken the first steps to construction of a raspberry-pi based controller that will use shift registers to power the solenoids. The raspberry pi and associated circuitry will be small enough to fit on the back of the valve manifold in the area where the paper roll would normally be. It has wireless connectivity and I plan to have it host a webpage where it can be controlled by phone/tablet. I’m bread boarding this first to prove the concept with one shift register, then once testing is complete I’ll create a circuit board to hold all 11.