Showing posts with label Edwin. Show all posts
Showing posts with label Edwin. Show all posts

Sunday, April 21, 2019

Restoring a pdp-11/45

When I was a student at RPI, I found a pdp-11/45 on the JEC loading dock.  The machine had no power supply and had a destroyed memory management board (M8108).  I cobbled together a power supply and replaced the board, and it was running well enough to flash its lights. 


That was about eleven years ago -- the little boy in the video above is turning 13 tomorrow -- and the machine stopped working shortly after the video was taken.

This month I started investigating the cause of the trouble.  I found that the +5V power was sagging severely when the machine was powered, which isn't terribly surprising because the CPU alone draws something like 40A!  Evidently the industrial power supply I had purchased wasn't doing its job.  Unfortunately, what used to be a $50 power supply was now upwards of $400, since the manufacturer had closed.  A little looking around, I decided to replace the +5V only at 50A. 

The resulting power supply got the machine to start up, but it was very erratic. It would crash at various weird places, and for no particular good reason.  This had me going for a long while, but fortunately the machine was made to be debugged... you can select from two internal clocks: a crystal (the default) and an RC oscillator.  You can adjust the frequency of the RC oscillator, but it's not very stable.  You can also wire in a single-step switch, which I had done in the past.  None of this seemed to help, but I learned that my frequency counter is pretty stable in the process.

Accidentally, I found that the machine would crash when I bumped the power supply wiring harness.... and found that the screws that connected the harness to the power supply were loose. 


Tightening the screws fixed that problem!

But there were more problems.  Several of them were easily resolved by polishing all of the card edge contacts.  This is not hard, but takes some doing.


This got the machine to the point where it had been before it stopped working.  It could load my custom, simple OS, EMON, and run programs entered from the console. 

But I had previously wanted to load other software, could I do that now?  Since I do not have any peripherals aside from serial lines, using a emulated TU58 tape drive seemed the best option.  Since I last checked about a decade ago, tu58fs has been written, and seems to be the most convenient.  So I tried to get XXDP and RT11 running, but both failed.

XXDP in particular was stopping at address 000550, this seemed to be similar to what was described here.  Using the disassembly provided there, I agreed that this was a checksum error.  But since the tape file booted on SIMH, I knew I had a good image. 

By manually digging through what the boot loader had loaded into the pdp-11's memory, I verified that everything was perfectly loaded.  The checksum was being computed incorrectly!  I wrote a simple program to compute the checksum of that good block... and the checksum came back wrong.  After simulating the code carefully in python, I determined that the cause was that the carry bit was getting set way too often. The carry was set whenever it should be, but also whenever the highest bit of the destination register was set.

I traced this back to the output of one multiplexer chip.  It was being held low when it shouldn't be, but only about 0.9V... an uncertain level.  Fearing the worst, I replaced the chip.


I socketed the replacement just in case I had to replace it again.  This is perhaps unnecessary, and it might cause issues if I ever get a floating point unit.  But since this board is the frontmost large board, it's not a problem.


Sadly, this didn't do the job... the carry still was getting set incorrectly.  Tracing forward, it turned out that the destination register's highest bit has a special active LOW line that runs on a trace parallel to the carry bit.  A tiny bit of solder had bridged those two lines at the following chip.


Evidently, this chip had been replaced previously -- not by me -- and the job was not done carefully.  Cleaning up the solder job and removing the bridge fixed the carry problem.

The machine now boots XXDP!


But, as the screenshot shows, there are still problems...  I originally had 32 kW of memory loaded, for a total of 28 kW available for programs.  (The top 4kW is always reserved for memory mapped I/O.)  I have verified that all of this memory can be accessed and used without issue.  Although the memory management unit is not needed to access 28 kW of memory, apparently XXDP prefers to have it available.  The memory management unit (embodied in the M8107 and M8108 boards) is actually installed, but it is evidently not working correctly.


In order to get XXDP to boot, I had to pull the top 16 kW out, which is the four cards above that are obviously displaced.  (The memory lives in a separate cabinet above the CPU because I had trouble finding a sufficiently powerful power supply for it.  Since it takes unusual voltages, I didn't fancy building an appropriate power supply from scratch.)


Here's a video of the entire boot process, in which I key in the boot loader using the front panel.

Tuesday, March 20, 2018

Metronome flasher

Here is a circuit Edwin built this morning.  It's not complicated, but it is clever...


He figured out that the metal mechanical parts of the metronome are all in contact with one another.  He attached a wire to the winding knob, which was therefore attached to the pendulum.  By aligning the pendulum carefully with a snap circuits wire, the metronome intermittently completes the circuit.

Here is a video of it in action!


Saturday, January 27, 2018

Saxaphone ligature screw


Edwin's saxaphone ligature takes two 6-32 screws.  One of them broke, so I made a replacement.  I started with 1/2" diameter steel rod.  I think it was zinc plated, but that wasn't too critical; whatever plating was originally there was removed.

I started by turning the portion to be threaded to 1/8".  Since the length wasn't too critical, I just used the good screw to figure the length.


I threaded the end by hand.  (I could have used a geometric die, but the setup would have been longer...)


Once threaded, I turned the shoulder that separates the threaded portion from the handle.


The shoulder actually tapers a bit, which I did with the graver.



The handle is a rounded ball, which I shaped with the graver after using a parting tool to remove most of the waste.

Here is the part next to the broken screw after parting.


I removed the leftover spigot by reversing the screw in the lathe -- good thing I have an 1/8" collet.


Now the handle is ready for final shaping.


Since I had to remove lots of material, I figured I could either spend time with a file or the bench grinder.  The bench grinder seemed like the better option (it may not have been any faster, actually).  I gripped the part in a pin vice so that I was securely in hand.


I ground both flats with numerous breaks to dunk in cool water...


After polishing, hardening, tempering, and final polishing, here is the final product in place.


The handle is a little wider than the original, but it does the job.

Thursday, January 4, 2018

Extreme IC repair

For Christmas, our family of hams got Cricket 80A transceiver kits.  They are not terribly hard to assemble and are good soldering practice. 

One problem we had with two of them was that the local oscillators did not start up.  It turned out that the 2N7000 MOSFETs are susceptible to electrostatic discharge (ESD) damage.  For whatever reason, the Q1 local oscillator transistor seems more vulnerable to this.

But in one of the kits, there was a problem with the audio amplifier IC, an NJM-2113D.  In the process of soldering and apparently removing, three pins broke off.  These are not exactly standard, at least they're not in my junk box. So although I put in an order for a replacement, Donna pointed out that I could probably fix it anyway.

The issue is that pin 1 (GND) broke off at the case, so I set about using a four fluted 1/8" endmill to cut the case to expose more of the pin.  I gripped the endmill in a collet in the headstock of my lathe.


My biggest concern was part-holding.  Fortunately, I was able to grip the IC in a toolpost, which also didn't break it.


After a few passes, I successfully exposed what seemed like enough of the pin to take solder.

I started by soldering the intact pins to the board and then the third pin, which was broken off, but not all the way at the case.  For this, I ran a piece of tinned copper wire through the hole, soldered it to the board, and then to the IC.


Then I ran another piece of tinned copper wire through the hole for pin 1 until it stopped on the exposed part of the IC, and soldered it to the board.


Finally, I soldered the new pin 1 to the IC.  I used a bit too much solder, but it's a good connection.


And, it works!  Here is the happy owner of the completed radio.


Thursday, December 28, 2017

Transistor oscillator

I have been looking for a simple, easy to understand oscillator circuit that uses a single transistor.  Well, I found one!  Twice, it seems.  The first place was in a classic vacuum tube circuit, as described in

Morecroft, Elements of Radio Communication, Wiley, 1929.

After suitable edits to make it transistorized, I then found the same circuit in a hand-drawn schematic that my father had squirreled away in the 1944 edition of the ARRL Handbook. Certainly not new!

For my and Edwin's benefit, I built the circuit using snap circuits.
 

Here's the schematic:

The different parts of the circuit are indeed easy to understand:
  • The tank resonator is an inductor-capacitor (LC) circuit, which sets the frequency.
  • The keying turns on and off the oscillator.
  • The bias ensures that the transistor is turned "on" and not saturated.
  • The transformer affords feedback from the tank to the input of the transistor.  It also contains the inductor part of the tank.  In the snap circuits version, we don't have much control over this (it's in a plastic package), but too little inductance will cause the circuit to fail to oscillate.
  • The 200 ohm feedback resistor sets the gain of the transistor amplifier.  Reducing the resistance increases the gain, which drives it harder.  Increasing the resistance makes for a cleaner signal, but can also stop the oscillations. It seems to stop around 1000 ohms or so, but with the 200 ohms it is noticeably overdriven.
  • The signal purity can be increased by selecting a higher voltage for the power supply.  I got it to work with 3 volts, but the output was more clipped.


Saturday, February 27, 2016

Making a gouge

Edwin wanted to carve some details into his pinewood derby car.  So we made a gouge for him so that he could carve by hand.

We started by turning a wooden handle on the lathe


Then we moved on to metal; we took a 1/4" steel rod and turned it down to the width he needed for his detail work.  Then, we drilled out the center

once the center was drilled, we cut a bevel for the edge.  The bevel angle was taken to match a wood chisel.

After cutting the bevel angle, I polished it with 600 grid sandpaper.

Once polished nicely, I cut the tip into a semicircle with a file.  This was kind of rough, because I knew I would get it flat with a sharpening stone.  Then we parted it off

I reversed the part in the lathe chuck and beveled so that it would self-center into the handle.
Then I ground the cutting edge flat on the sharpening stone...
... and Edwin pressed it into the handle using the lathe tailstock quill.

Sunday, March 15, 2015

Edwin's relay latch circuit

My son Edwin loves Elenco Snap Circuits.  He has many, many components, and usually builds circuits that are not in the books that come with the kits.  Recently, he's been playing with relays, I think because he likes how they control things.  For instance, about a week ago, he built an oscillator by putting the relay coil in series with the normally closed contacts.

Yesterday, he discovered relay latches.  He did so in an odd way, by building the circuit into his Snap Rover.  He used the rover's motor as a generator to drive the relay coil.  Once the coil activated, the normally open contacts supplied an alternate path for the battery to run the motor.  The effect is that you can push the rover to start it, and then it continues along its way.

Here's a different version of that circuit that he built today, where instead of the motor he used a lamp.


His layout is a little confusing, so here's a scan of the circuit diagram I drew.

As the diagram indicates, there are two power sources: one (on the left) that drives the light when the relay is deactivated (S1 is open), and the other (on the right) that both controls the relay and supplies an alternate source of power for the light.

There are a few nonstandard things about this circuit even though the latch circuit is completely standard (he's never been told about it before).  The two power supplies could be combined by just using the one on the right.  More surprising is that the lamp is in parallel with the relay coil; usually a designer would place them in series.  I think this is because of Edwin's design history.  If you replace the lamp with a motor (removing S2 and the 4.5 V source), then the circuit sustains the motor once it's been pushed.  Although I didn't draw the diagram for his previous circuit, I suspect that is what he had done.