Archive for July, 2009

Tektronix 492 Spectrum Analyzer Backplane Pin Spacing

Tek 492 Memory Board

Tek 492 Memory Board

My buddy Eks asked me to help fix his new-to-him and guaranteed broken Tek 492 spectrum analyzer, which turned into a tour-de-force effort. One sub-project involved sucking the bits out of an existing “known-good” Tek memory card, which meant building a backplane connector and a circuit that behaved like a 6800 microcontroller… fortunately, it could be a lot slower.

[Update: It seems searches involving “Tektronix 492” produce this page. You may also be interested in these posts…

If those aren’t what you’re looking for, note that the correct spelling is “Tektronix“.

Good luck fixing that gadget: it’s a great instrument when it works!]

You can tell just by looking that this board was designed back in the day when PCB layout involved flexible adhesive tape traces and little sticky donut pads. Ground plane? We don’t need no stinkin’ ground plane!

Actually, it’s a four-layer board done with the usual Tek attention to detail. They didn’t need a ground plane because they knew what they were doing. Remember, this is in a spectrum analyzer with an 18-GHz bandwidth and 80 dB dynamic range; a little digital hum and buzz just wouldn’t go unnoticed.

Tek 492 Backplane Geometry

Tek 492 Backplane Geometry

Anyhow, the backplane pins are on a 0.150-inch grid within each block. The center block (pins 13-36) is 0.200 inches from the left block (pins 1-12) and 0.250 from the right block (pins 37-60).

That means the left and right blocks are neatly aligned on the same 0.150-inch grid, with the middle block offset by 50 mils. You can’t plug the board in backwards unless you really work at it.

Of course, Eks had some genuine gold-plated Tek pins in his stash: 24 mils square and 32 mils across the diagonal. They have 1/4″ clear above the crimped area that anchors them to the black plastic spacer and are 1/2″ tall overall. They’re not standard header pins, but I suspect you could use some newfangled pins in a pinch.

Here’s what the reader board finally looked like, hacked traces and all, with the board connector to the rear. The memory board didn’t use all the backplane pins, so I only populated the ones that did something useful. The power-and-ground pins (left side of right pin block) stand separately from the other because I had to solder them to both the top and the bottom of the board: no plated-through holes!

Tek 492 Memory Board Reader

Tek 492 Memory Board Reader

I cannot imagine this being useful to anybody else, but I defined an Eagle part for the connector so I could CNC-drill the board. Drop me a note and I’ll send it to you.

[Update: this turned into a Circuit Cellar column, so you can fetch a ZIP file from their FTP site that has all manner of useful stuff.]

Memo to Self: The drill size follows the pin’s diagonal measurement… not the side! Duh.



Front Derailleur Cable Breakage: Prevention Thereof

Front derailleur cable with broken strand

Front derailleur cable with broken strand

Although recumbent bikes use ordinary bicycle components, they tend to have somewhat different frame geometries (to put it mildly). Our Tour Easy ‘bents seem to put a particular strain on the front derailleur cables, perhaps because the cable enters from a different angle than the derailleur designers expected. The little finger that’s supposed to guide the cable actually concentrates all the bending force at one spot… precisely where the cable breaks.

If you look carefully, you’ll see a little brass disk (between the derailleur body and cable) that cradles the cable. I made that for the previous derailleur, but this one has Yet Another Geometry. I know there’s a difference between “high pull” and “low pull” front derailleurs, and perhaps this is the wrong one for this application, but there seems no algorithmic way to sort this stuff out.

Cable guide pulley

Cable guide pulley

The solution is to make Yet Another Cable Guide Pulley, with a groove around the perimeter, an off-center hole, and a notch to clear the finger. It’s not exactly a pulley, but I’m not sure what else to call it. Maybe just a cable guide?

This was a quick-and-dirty manual lathe project, two days before leaving on a trip: turn down some brass stock, put a groove around the perimeter, part it off, drill a hole, and cut the notch. Not a trace of CNC to be found: all done by guess and by gosh, marked out with Sharpies on the actual part in real time running.

The general notion is that the cable rides the groove smoothly throughout the derailleur’s entire travel range and, thus, doesn’t bend around the finger. This changes the shift geometry just slightly, but, fortunately, long-wheelbase ‘bents have a sufficiently relaxed chainline that indexed front shifting isn’t much of a problem even with slightly misplaced positions. Besides, that’s why SRAM grip-shifter have all those clicky stops, right?

(The shifting is actually a bit goobered, with the outer chainring shift a bit too close to the middle. When we get back, I’ll re-do this with somewhat more attention to detail.)

Pulley in action

Pulley in action

Here’s what it looks like in action. I’ve had good success with this sort of thing over the years, so I think this one will work just fine, too. It simply takes one broken cable on each new derailleur to spin up enough enthusiasm for making Yet Another Pulley…


Useful Hex and Binary File Utilities

I’m doing some work with a one-off ROM reader & EPROM programmer, so it’s once again time to mess around with Intel HEX files, raw binary images, and the like.

The key routine (which runs on an Arduino Decimila) to dump a ROM in HEX format goes like this, with all the constants & variables & functions doing the obvious things:

void DumpHC641(void) {

word Address,Offset;
byte DataRd,Checksum;

 for (Address = 0; Address < ROM_SIZE; Address += IHEX_BYTES) {
  sprintf(PrintBuffer,":%02X%04X00",IHEX_BYTES,(word)Address);           // emit line header
  Checksum = IHEX_BYTES + lowByte(Address) + highByte(Address) + 0x00;   // record type 0x00
  for (Offset = 0; Offset < IHEX_BYTES; ++Offset) {
   DataRd = ReadHC641(Address + Offset);
   Checksum += DataRd;
   sprintf(PrintBuffer,"%02X",DataRd);                                   // data byte
  Checksum = -Checksum;                                                  // two's complement
 Serial.println(":00000001FF");                                          // emit end-of-file line

So getting an Intel HEX file is just a matter of capturing the serial output, whacking off any debris on either side of the main event, and saving it.

The srec_cat program handles conversions among a myriad formats, most of which I can’t even pronounce. The few I use go a little something like this:

srec_cat mumble.hex -intel -o mumble.bin -binary
srec_cat mumble.bin -binary -o mumble.hex -intel
srec_cat mumble.bin -binary -o mumble.txt -hex_dump
srec_cat -generate 0x0000 0x2000 -constant 0x00 -o mumble.txt -intel

It’s sometimes handy to apply srec_cat to a group of similarly suffixed files, in which case some Bash string chopping comes in handy. For example, to convert some hex files into binary:

for f in 27HC641*hex ; do echo ${f%%hex} ; srec_cat "$f"  -intel -o "${f%%hex}"bin -binary ; done

Good old diff works fine on text files, but in this case it’s better to see which bytes have changed, rather than which lines (which don’t apply in the context of a binary file). The vbindiff program looks great on a portrait-mode display.

I don’t do much binary editing, but tweak serves my simple needs. Confusingly, members of this class of program are called “hex editors”, but they really work on binary files.

There’s also diff3, for those rare cases where you must mutually compare three text files. Makes my head spin every time…

All those programs are likely packages in your favorite Linux distro.

Leave a comment

Bicycle Water Bottle Cap: Relaxed

Water bottle cap

Water bottle cap

Being cyclists, we were doing the resuable-water-bottle thing long before it became trendy, but now that we use hydration packs, we just tote bottles along when we’re driving or on some other sort of outing. Eventually the bottles wear out / get lost and we page a new one in from the essentially infinite stash in the bottle cupboard.

This one had a cap that simply couldn’t be pried open with bare hands, no how, no way. I eventually got it open by main force and the threat of high temperatures.

Turns out there were two problems: the aperture in the pull-up ring is a wee bit small on the sealing nub and the ridge on the screw cap is about two wee bits large for the recess in the ring.

The former succumbed to an O (letter Oh) drill, which I pulled & pushed through the hole by hand to enlarge the aperture from 0.320 to 0.332. It still seals reasonably well, although it’ll pee a thin stream under more pressure than you should apply to such a bottle, which means I put a slight scratch on the aperture.

The latter required gently shaving the ridge with a box cutter (gasp). It’s still rather stiff, but entirely workable. That doesn’t affect the seal, because the ring’s skirt is a snug fit against the screw cap.

Why not just throw the fool thing out? After all, it’s just a freebie water bottle…

We run on the “Use it up, wear it out, fix it once, wear it out again, then put it on the shelf because maybe you can use the parts for something” principle.

Now, that’s not the way things are done these days, but it works for us…

Leave a comment

Bike Helmet Mirror Re-Repair

Socket with brass reinforcement

Socket with brass reinforcement

The front ball joint on the mirror on Mary’s helmet loosened enough that the mirror blew out of position every time we got up to a decent traveling speed. I’ve repaired these mirrors several times before; they’re plastic and tend to fracture / wear out / break at inconvenient moments.

The first pic shows the mirror (the black surface is reflecting the dark floor joists overhead) with an old blob of epoxy that repaired a break in the outer socket. The socket originally had stylin’ curves joining it to the mirror, which proved to be weak spots that required epoxy fortification.

This time the socket split axially on the side away from the mirror, which released the pressure on the ball socket that seats into it. I found a chunk of brass tube that fit snugly over the socket, then carved some clearance for the existing epoxy blob. The key feature is that the tube remains a ring, rather than a C-shaped sheet. to maintain pressure around the socket.

Clamping the reinforcement ring

Clamping the reinforcement ring

Here are the various bits, with the reinforcing ring clamped in place. I coated the socket exterior with JB Weld epoxy, slipped the ring in place, and tapped it down with a brass hammer to seat flush with the front face of the socket. That left gaps between the socket opening and the tube that I eased more epoxy into with an awl. A bit more epoxy around the exterior smoothed over that ragged edge.

The strut at the bottom of the picture ends in a ball joint held by a socket that slips into the mirror socket. The loose brass ring above the mirror is some shim stock that I added some years ago to take up slop between the ball socket and the mirror socket and tighten the ball joint. I suppose that pressure eventually split the outer socket, but so it goes.

Repaired mirror joint

Repaired mirror joint

The clamp squished the outer socket enough to snug it around the ball socket, so when I reassembled the mirror it was fine. To be sure, I dunked the ball in my lifetime supply of Brownell’s Powdered Rosin for a bit more non-slip stickiness.

I have a box full of defunct bike helmet mirrors, dating back to those old wire-frame square mirrors that clamped onto the original Bell helmets. The newer plastic ones just don’t last; we ride our bikes a lot and even fancy engineering plastic isn’t nearly durable enough. A few bits of metal here and there would dramatically improve the results!

I’m going to build some durable wire-frame mirrors, but … this will keep us on the road for a while. I suppose I should make a preemptive repair on my helmet mirror while I’m thinking of it…



Why We Use Bicycle Tire Liners

Bike tire puncture

Bike tire puncture

A glass chip gashed the front tire of my bike a while ago, but the slit didn’t cut the Kevlar belt underneath and I let it slide. The pre-ride check before our 50-mile day trip to Old Rhinebeck Aerodrome showed that things had gotten worse (the tire liner was peeking out through the belt), so I replaced the tire before we set out.

Tire liner abrasion

Tire liner abrasion

This pic shows that the tire liner was doing its job, although it was slightly abraded and had picked up some road grit. The tube had a barely visible mark.

I generally use fluorescent green Slime tire liners, but this one is a competing brand I picked up a while ago. Not much to choose between the two, although I think Slime liners have a better edge taper and tend to be more flexible.

Notice the other nicks and gashes in the tire tread? We run Schwalbe Marathons on the rear and Primo Comets on the front, both have Kevlar belts. Flats are not a problem any more, even with plenty of sharp road debris; I replace the tires every two years or so when the tread wears smooth or a major gash worries even me. My rule of thumb: when I can see the liner, it’s time to replace the tire.

Tread gash - Schwalbe Marathon

Tread gash – Schwalbe Marathon

There are riders who argue for very lightweight tires on the basis of performance: better acceleration and lower rolling resistance. I’m willing to trade all that off against not having to dismount a tire by the side of the road…

[Update: Plenty more posts on this general subject, with graphic illustrations of tire damage. Search for liner and you’ll find ’em.]


Bike Rim Reflectorization

Bike wheel with retroreflective tape

Bike wheel with retroreflective tape

Here’s a quick-and-easy way to improve the odds of your arriving home safely after dark: add snippets of retroreflective tape to the inside of the rims on your bike.

Do half the rim in one color and leave the other half untaped (or taped in a contrasting color) so that the rim flashes as the wheel rotates. I originally applied orange tape, of which I have very nearly a lifetime supply, then added white when I got a sheet as part of a surplus deal.

At 15 mph the 20-inch front wheel blinks at about 4 Hz, which is wonderfully attention-getting. The rear wheel, a more common 700C size, blinks at 3 Hz.

It helps to measure the space between spokes, then set up a template to cut all the tape pieces the same length. Wipe the big chunks of dirt off the rim, then remove the remaining grunge with alcohol so the tape actually sticks.

New York State vehicle law considers reflectorized tires as equal to those in-the-spokes reflectors, which is a Good Thing.

The more you look like a UFO after dark, the less surprised the drivers are and the less hassle you get.

Leave a comment