The Smell of Molten Projects in the Morning

Ed Nisley's Blog: Shop notes, electronics, firmware, machinery, 3D printing, laser cuttery, and curiosities. Contents: 100% human thinking, 0% AI slop.

Author: Ed

  • Front Derailleur Cable Breakage: Round Two

    Shift at Small Chainring
    Shift at Small Chainring

    This cable guide / pulley may work better than the one described there, because it puts the cable a bit closer to the original location.

    To recap, the problem is that the cable bends around the small finger at about 8 o’clock on the derailleur arm. After a few zillion shifts, the concentration of stress at that point breaks the cable, strand by strand, until it snaps at the most inconvenient moment.

    The small brass disk (about 0.43″ dia) has a groove machined around the perimeter that’s roughly the size of the shifter cable.  The hole (Number 8 or 9 drill) is a slip fit for the 5 mm bolts, but it’s off-center enough that the cable passes roughly where it would without the disk.

    A notch in the side of the disk rests on the finger, guiding the cable over the finger without (I hope) bending it at that point.

    The cable just wraps around the screw under the original stainless-steel washer, which pretty much crushes the poor thing flat.

    Shift at Large Chainring
    Shift at Large Chainring

    Here’s another look with the derailleur pretty much over the large chainring. You can see the disk and groove in action.

    This was another quick-and-dirty lathe project, with everything done to eyeballometric accuracy. If it works better than the previous half-assed effort, I might actually get around to making a third one and recording the dimensions.

  • Mini Razor Knife: Adding a Lock-shut Notch

    Mini Razor Knife
    Mini Razor Knife

    I added a miniature razor knife to my belt pack a while ago and was struck by the fact that the blade didn’t lock shut. While having it pop completely open is unlikely, just the thought of a razor blade sliding around next to my hip was unsettling.

    But that’s easy to fix…

    Blade closed in notch
    Blade closed in notch

    With the knife closed, use a carbide scriber to mark the blade holder at the end of the locking lever that extends across the back of the knife. You’ll be grinding / filing a notch in the blade holder behind that, just large enough for the locking cam to snap into when the blade is closed. The only vital measurement is the line you just scribed.

    Lock the blade holder open, then remove the sharp blade before you do something truly stupid.

    Unscrew the Torx-06 screw that holds the locking lever in place, then remove the lever. It’s spring-loaded and will probably bind on the screw, so display some adaptability.

    Knife parts
    Knife parts

    Use a pin spanner to unscrew the blade pivot bolt from the front panel of the knife; hold the corresponding rear nut in position with another spanner or just jam a screwdriver blade into one of the notches. Pretty much everything falls apart at that point, although you may have to do some wiggly-jiggly to get the blade holder out. The washer seems to be swaged into the blade holder hole on my knife, which may be poor production QC.

    Using a file or a Dremel-class grinder, gnaw a notch into the back of the blade holder that just barely accepts the cam on the locking lever. This will probably take a few trial assemblies to get right; the notch on mine is slightly too long on the body side (left in the pix), which is OK because the blade holder doesn’t pivot in that direction. If you go beyond the line you scribed earlier (to the right in the pix), the blade holder can pivot open just slightly… and it turns out that the point of the razor blade isn’t all that far inside the knife body.

    Notch detail
    Notch detail

    Anyhow, here’s a detail of the notch. It’s not nearly as pretty as the notch on the other side of the hole that locks the blade open, but it works just fine.

    When you get everything back together, the blade holder should snap into the new notch when you close the blade. To open the knife, press down on the far end of the locking lever to pull the cam out of the notch, open it as usual, and the cam should snap into the old notch to hold the blade open as usual.

    I keep the goofy plastic safety dingus on the blade anyway, being a belt-and-suspenders kind of guy about that sort of thing.

    For what it’s worth, you can’t get into concerts with one of these in your belt pack… for well and good reason, I suppose. They let me hotfoot it back to the van, rather than confiscate it, which is probably one benefit of being an Olde Farte.

  • NiMH Cell Comparisons

    I collected some loose cells and pulled some cells from the packs to see how they compared individually.

    These are discharging at 500 mA, rather than 1 A, mostly because there were fewer tests and I could run ’em overnight. Other than the Tenergy RTU cell, they’re all old and wearing out…

    Single Cell Comparison - Aug 2009
    Single Cell Comparison – Aug 2009

    The green line is a new Tenergy RTU 2.3 Ah cell; it has a higher voltage, but still isn’t delivering anything close to its rating even at a load only slightly higer than C/5. I have three packs of those that will be cycling through the amateur radios on the bikes, but I don’t like the relatively low capacity. I’ll run these eight cells through the fast charger and do some rundown tests to see if they improve; I have my doubts.

    The black line comes from an old batteries.com 2.5 Ah cell. It has the highest capacity of the group, but a rather low voltage. I’ll start cycling those through the blinky lights on the bikes.

    The red line is a Tenergy 2.6 Ah cell. I think these are a year or two old, so they’re not faring well at all. OK voltage, but very low capacity. I think the batteries.com cells will work better in the lights, as they have 50% more capacity at a slightly lower voltage.

    The blue line is an ancient Lenmar 2.0 Ah cell. As a fraction of its rated capacity, it’s doing OK, but the low voltage is a dealbreaker. Scrap.

    Given the poor results from the old & new Tenergy cells, I’m not sure quite what to do. The advertised ratings are obviously optimistic, shipping charges pretty much wipe out any incentive to sample a batch of new cells, and cells get reformulated often enough that old tests you find on the web (this one included!) are useless.

    Grumble…

  • NiMH AA Pack Comparisons: Old vs New

    8-cell NiMH AA pack
    8-cell NiMH AA pack

    I’ve been using NiMH AA cells to power the amateur radio HTs on our bikes for the last several years, using homebrew 6- and 8-cell packs like this one. In addition, I cycle a handful of loose cells through the LED blinky headlights we use as rear markers.

    I don’t lavish much care on the packs, although they generally get recharged before they’re completely flat… if only because the radios automatically enter a low-power mode that takes some fiddling to cancel. They’re charged on a homebrew C/10 charger, typically overnight, and are uniformly warm to the touch when I take them off the charger. Slow charging is reputedly bad for the cells, although everybody seems to agree that fast charging isn’t much better; I have a 4C charger that really puts the screws to 4 cells at once.

    Over time the cells wear out and I’ve recently started figuring out which packs & cells to replace. I’m using a West Mountain Radio CBA II for the tests, running on our Token Windows Laptop. The X-axis divisions are its idea of how to do it; Gnuplot does a better job, but you get the general idea and exact numbers aren’t really important here.

    Here’s a screen shot with all the discharge tests in one convenient lump. You’ll surely want to click on it for a legible legend…

    Pack Comparison - August 2009
    Pack Comparison – August 2009

    Some observations…

    I’m using a 1 A (roughly C/2) discharge rate, because the radios draw about that much during transmit, although they run at 30-100 mA during receive. Battery capacity is inversely related to discharge rate and the usual highly over-optimistic advertised cell capacity is usually based on (at most) a C/5 or a much lower rate.

    The shortest curves, the orange & black ones under 0.74 Ah, are two ancient 8-cell packs made from batteries.com cells. The cells actually have decent capacity, but the discharge voltage is much lower than it should be.

    The black curve to the far right near 2.47 Ah is a freshly charged set of Tenergy 2.6 Ah cells that had been oops discharged completely flat. Other than this run, the Tenergy cells have been a major disappointment: the 6-cell packs near the bottom are running less than half their rated capacity and the 8-cell pack in blue isn’t much better.

    The green & red traces out there to the right at 2.23 Ah are Duracell 2.65 Ah cells that are holding up remarkably well. Recent reviews indicate that Duracell (or whoever owns them these days) reformulated the chemistry early in 2009 and the new cells are crap. These cells are colored black-and-green, which seems to be different than the new ones.

    The cluster of traces around 1.73 Ah are three 8-cell packs made from two dozen shiny-new Tenergy Ready-To-Use 2.3 Ah cells. I’m unimpressed so far, although they are still in their first dozen cycles. There’s obviously one weak cell in pack A that causes the abrupt fall-off in the two shortest times, but they’re all pretty much the same.

    Given that we have three bikes and I want a backup pack for each bike, that works out to

    8 cells/pack x 2 packs/bike x 3 bikes = 48 cells

    I’d like to think that spending four bucks per cell bought you better cells, but the Duracell reformulation puts the kibosh on that notion. In any event, you can see this gets spendy pretty quickly…

    I’ll run the best of the old cells in the blinky headlights, which run at a 50% duty cycle of 400 mA or so.

  • Programming Algorithm for 27HC641 EPROMs

    General idea: replacing a failing Mostek MK36000-series masked ROM in a Tektronix 492 Spectrum Analyzer memory board with an equally obsolete 27HC641 EPROM, using the bits found there.

    The various datasheets give contradictory advice concerning device programming:

    EPROM Burn - Microchip algorithm
    EPROM Burn – Microchip algorithm

    Assuming you have appropriate power supplies, then the waveform on VCE looks like this. The upper trace is the -OE signal for the data latch supplying the byte-to-be-burned, the lower trace is VCE on EPROM pin 21. Set VCC = 6 V on pin 24 while all this is going on. The currents range into the hundreds of mA; this is not a low-power device!

    The squirts on the -OE latch signal before each programming cycle are eight quick writes to those antique DL-1414 displays that share the data bus with the EPROM. They show the current address and data byte during programming, plus other status & error messages.

    The Microchip and GI datasheets both claim that the EPROM cells erase to all 1 bits, like every other EPROM I’ve ever used. The Philips datasheet says:

    … after each erasure, all bits of the 27HC641 are in an undefined state. […] which is neither a logical “1” or a logical “0”

    27HC641 EPROM in programming socket
    27HC641 EPROM in programming socket

    The chip markings suggest they were made by Signetics, which got Borged by Philips some years ago. Lo and behold, the chip erases to a bizarre pattern that may be “undefined” but is perfectly consistent from erasure to erasure.

    Therefore, you cannot blank-check a 27HC641 EPROM before programming it!

    The Philips / Signetics datasheet doesn’t have a programming algorithm and the GI datasheet says you’re supposed to hold VCE at +12.5 V except when you’re asserting the programming data. So I used the Microchip algorithm on a Signetics chip and it seems to program properly.

    The only quirk is that the Arduino Diecimila doesn’t have enough storage to hold the entire EPROM at once, so I verified each data byte as I wrote it, rather than doing the whole chip after the entire programming loop. The top picture shows a single 1 ms programming pulse followed by the 3-ms overburn pulse; the byte read back from the EPROM must agree with the source byte after each pulse. When it’s all done, I manually dump the entire EPROM as an Intel HEX file and verify that against the original HEX file: if it matches, the burn is good.

    The byte-burning function goes a little something like this:

    int BurnByte(word Address, byte Data) {
    
    unsigned Iteration;
    byte Success;
    
     SetVcc(VH);                              // bump VCC to programming level
     SetVce(VIH);                             // disable EPROM outputs
     Outbound.Address = Address;              // set up address and data values
     Outbound.DataOut = Data;
    Success = 0;
    for (Iteration = 1; Iteration <= MAX_PROG_PULSES; ++Iteration) {
    
    RunShiftRegister();
    digitalWrite(PIN_DISABLE_DO,LOW);       // present data to EPROM
    
    SetVce(VH);                             // bump VCE to programming level
    delayMicroseconds(1000);                // burn data for a millisecond
    SetVce(VIH);                            // return VCE to normal logic level
    
    digitalWrite(PIN_DISABLE_DO,HIGH);      // turn off data latch buffer
    SetVce(VIL);                            // activate EPROM outputs
    CaptureDataIn();                        // grab EPROM output
    SetVce(VIH);                            // disable EPROM outputs
    
    RunShiftRegister();                     // fetch data
    
    if (Data == Inbound.DataIn) {           // did it stick?
    Success = 1;
    break;
    }
    }
    
    MaxBurns = max(MaxBurns,Iteration);
    
    if (Success) {                           // if it worked, overburn the data
    
    digitalWrite(PIN_DISABLE_DO,LOW);       // present data to EPROM (again!)
    SetVce(VH);                             // bump VCE to programming level
    delay(3 * Iteration);                   // overburn data
    
    SetVce(VIH);                            // return VCE to normal logic level
    digitalWrite(PIN_DISABLE_DO,HIGH);      // turn off latch buffers
    
    SetVce(VIL);                            // activate EPROM outputs
    CaptureDataIn();                        // grab EPROM output
    SetVce(VIH);                            // disable EPROM outputs
    
    RunShiftRegister();                     // fetch data
    
    Success = (Data == Inbound.DataIn);     // did overburn stick?
    }
    
    return !Success;                         // return zero for success
    }
    

    NOTE: the MK36000 and 27HC641 have slightly different address bit assignments.

    The MK36000 address bits look like this:

    • pin 18 = A11
    • pin 19 = A10
    • pin 21 = A12

    The 27HC641 address bits look like this:

    • pin 18 = A12
    • pin 19 = A11
    • pin 21 = A10

    Now, if you’re building a programmer, just wire up the 27HC641 socket as if it were a MK36000 and everything will be fine. The byte locations within the chip won’t match those in the original MK36000, but it doesn’t matter because you store bytes at and the Tek CPU fetches bytes from the same addresses.

    However, if you’re using a commercial EPROM programmer, it will write the bytes at the locations defined by the 27HC641 address bit assignments (because that’s all it knows), which will not work when plugged into the Tek board. Choose one of the following options:

    • build an interposer board to permute the address bits
    • cut-and-rewire the Tek board (ugh!)
    • write a program to permute the bytes in the HEX file

    Think about it very carefully before you build or program anything, OK? The checksum will most likely come out right even with permuted bits, but the CPU will crash hard as it fetches the wrong instructions.

    Memo to Self: always RTFM, but don’t believe everything you read.

  • Harvestman Not-a-Spider

    Saw several of these critters on our tent while we were packing up in the morning; I’m in favor of anything that eats small insects, so Harvestmen get a pass. I don’t know if those frogs eat ’em, but that’s something they can work out without my attention.

    Then I found another Harvestman on a window when we got home. Not having seen the underside of one in quite a while, I was struck by the “alien face” pattern. I suppose the reddish dot under the alien’s nose is the Harvestman’s mouth, just like it looks.

    Eeeek!

    They’re actually pleasant to have around and tickle mightily when they crawl up your arm. We gently deport them from the house and generally manage to deposit them undamaged on a plant, where we presume they’ll be much happier.

  • Giant Swallowtail Butterfly

    Mary planted some Butterfly Bushes in front of the living room window and shazam we have butterflies. Highly recommended!

    This unusual butterfly came by yesterday. The invaluable Butterflies Through Binoculars identifies it as a Giant Swallowtail Butterfly and says:

    • Similar species: None
    • Range: North to around Philadelphia
    • Comments: Formerly found further north. A colony existed in the 1950s in Dutchess Co., NY.

    So either this chap’s range is expanding northward or that colony never quite died out.