Archive for category Electronics Workbench

Kensington Expert Mouse Scroll Ring Fix

Apparently the newest Kensington Expert “Mouse” trackballs have a hack re-orienting the scroll ring quadrature detector. The picture from my original writeup shows the previous situation:

Scroll ring IR emitter-detector quadrature pair
Scroll ring IR emitter-detector quadrature pair

The quadrature detector, the black block on the left, is oriented with its lens (and, thus, the actual detectors) pointed away from the IR emitter. I thought it might be an assembly screwup, but it’s actually worse: the PCB layout is wrong.

A note from Tristan in NZ explains the situation:

So I have a later model than yours. It has a 2nd PCB chunk between where the legs normally would be. Just a floating piece with two holes for the legs, holding the legs from the board […] to the main board.It is also pointing the correct way (with the lens towards the three leg emitter).

Kensington scroll wheel revision2
Kensington scroll wheel revision2

The new quad detector has only three pins and no convex lens, but the active area now faces the emitter across the gap.

Because the interposer PCB occupies the space previously devoted to the emitter & detector leads, Kensington apparently soldered the new parts directly to the top surface without any clearance:

It’s like they failed to put through-vias to the rear or didn’t route them to the bottom another way, hence the solder is under the component

Tristan managed to wreck the detector while attempting to re-solder the intermittent joints, a situation I’m painfully familiar with. He replaced it with a quad detector harvested from a mid-90s optical mouse and it’s back in operation.

So I think the correct “fix” for the old-style PCBs (without the new interposer) is to unsolder the detector, rotate it so the lens faces the emitter, then somehow rewire the pins to the original pads. This won’t be easy and definitely won’t be pretty, but as long as it’s pointed in the right general direction it should work:

mine works off axis quite a bit

Should either of my Expert Mouse trackballs fail, now I know what to do

Many thanks to Tristan for reporting his findings!


Metal-case 5T4 Vacuum Tube Opened

I’ve always wondered what’s inside a metal-case vacuum tube:

Dual rectifier tube 5T4 - metal case opened
Dual rectifier tube 5T4 – metal case opened

The cutter last saw action on the EMT used in the MPCNC, so it’s intended for use on steel tubes. I thought about parting the case off in the lathe, but a tubing cutter sufficed for a first attempt, even if it couldn’t cut quite as close to the flange as I wanted.

A 5T4 tube is a full-wave rectifier with two sections:

Dual rectifier tube 5T4 - upright
Dual rectifier tube 5T4 – upright

Unsurprisingly, the guts resemble those of glass-envelope rectifier tubes in my collection, like this 5U4GB:

5U4GB Full-wave vacuum rectifier - cyan red phase
5U4GB Full-wave vacuum rectifier – cyan red phase

The metal case would be far more rugged than a glass bottle and, perhaps, the flange locked the tube into its socket against vibration.

The filaments surely weren’t thoriated, so it’s all good …

Leave a comment

Video-rated MicroSD Card Status Report

Having just returned from the fourth ride of the season, it’s worthwhile to note how the MicroSD cards in the cameras are doing.

The Sony HDR-AS30V helmet camera has been running a 64 GB Sandisk high-endurance video-rated card since late August 2017:

Sandisk - 64 GB MicroSDXC cards
Sandisk – 64 GB MicroSDXC cards

In those 29 calendar months (maybe 20 riding months) I’ve ridden 4500-ish miles at perhaps 12 mph, so call it 375 hr = 22.5 k min. The camera fills a 4 GB file every 22.75 min, so it’s recorded 1000 files = 4 TB, which is 62× its capacity. This is better than the defunct Sandisk Extreme Pro card (3 TB & 50×) and much much better than the Sony cards (1 TB & 15×), although I have caught the camera in RCVR mode maybe twice, which means the card or camera occasionally coughs and reformats itself.

The Cycliq Fly6 rear camera uses a Sandisk 32 GB card that’s been running flawlessly since late 2017:

MicroSD 32 GB - Samsung EVO and SanDisk High Endurance
MicroSD 32 GB – Samsung EVO and SanDisk High Endurance

The new 16850 lithium cell continues to work fine, too.

The SJCam M20 rear camera also uses a Sandisk 32 GB high-endurance card and has worked fine since early 2018. An external battery eliminated all the hassle of its feeble internal batteries, although the one that’s been in there has faded to the point of just barely keeping the clock ticking over during winter weeks without rides:

SJCAM M20 Mount - Tour Easy side view
SJCAM M20 Mount – Tour Easy side view

All in all, paying the premium for video-rated MicroSD cards has been worthwhile!


Homage Tek CC: Subscripts & Superscripts

The GCMC typeset() function converts UTF-8 text into a vector list, with Hershey vector fonts sufficing for most CNC projects. The fonts date back to the late 1960s and lack niceties such as superscripts, so the Homage Tektronix Circuit Computer scale legends have a simpler powers-of-ten notation:

Tek CC - Pilot V5 - plain paper - red blue
Tek CC – Pilot V5 – plain paper – red blue

Techies understand upward-pointing carets, but … ick.

After thinking it over, poking around in the GCMC source code, and sketching alternatives, I ruled out:

  • Adding superscript glyphs to the font tables
  • Writing a text parser with various formatting commands
  • Doing anything smart

Because I don’t need very many superscripts, a trivial approach seemed feasible. Start by defining the size & position of the superscript characters:

SuperScale = 0.75;                                       // superscript text size ratio
SuperOffset = [0mm,0.75 * LegendTextSize.y];            //  ... baseline offset

Half-size characters came out barely readable with 0.5 mm Pilot pens:

Tek CC - Superscript test - 0.5x
Tek CC – Superscript test – 0.5x

They’re legible and might be OK with a diamond drag point.

They work better at 3/4 scale:

Tek CC - Superscript test - 0.75x
Tek CC – Superscript test – 0.75x

Because superscripts only occur at the end of the scale legends, a truly nasty hack suffices:

function ArcLegendSuper(Text,Super,Radius,Angle,Orient) {

  local tp = scale(typeset(Text,TextFont),LegendTextSize);

  tp += scale(typeset(Super,TextFont),LegendTextSize * SuperScale) + SuperOffset + [tp[-1].x,0mm];

  local tpa = ArcText(tp,[0mm,0mm],Radius,Angle,TEXT_CENTERED,Orient);


The SuperScale constant shrinks the superscript vectorlist, SuperOffset shifts it upward, and adding [tp[-1].x,0mm] glues it to the end of the normal-size vectorlist.

Yup, that nasty.

Creating the legends goes about like you’d expect:

  ArcLegendSuper("pF - picofarad  x10","-12",r,a,INWARD);

Presenting “numeric” superscripts as text keeps the option open for putting non-numeric stuff up there, which seemed easier than guaranteeing YAGNI.

A similar hack works for subscripts:

Tek CC - Subscript test - 0.75x
Tek CC – Subscript test – 0.75x

With even more brutal code:

  Sub_C = scale(typeset("C",TextFont),LegendTextSize * SubScale) + SubOffset;

<<< snippage >>>

    tp = scale(typeset("←----- τ",TextFont),LegendTextSize);
    tp += Sub_C + [tp[-1].x,0mm];
    tp += scale(typeset(" Scale -----→",TextFont),LegendTextSize) + [tp[-1].x,0mm];

The hackage satisfied the Pareto Principle, so I’ll declare victory and move on.


CNC 3018XL: Arduino + Protoneer CNC

If the truth be known, I wanted to do this as soon as I discovered the CAMtool V3.3 board hardwired the DRV8825 PCBs in 1:32 microstep mode:

CNC 3018XL - Protoneer atop Arduino - installed
CNC 3018XL – Protoneer atop Arduino – installed

The Protoneer CNC board has jumpers, so selecting 1:8 microstep mode is no big deal.

As before, I epoxied another row of pins along the I/O header for Makerbot-style endstops:

Protoneer endstop power mod
Protoneer endstop power mod

I’ll probably regret not adding pins along the entire row, but, unlike the MPCNC, the CNC 3018XL won’t ever have hard limit switches. I plugged the Run-Hold switch LEDs into an unused +5 V pin and moved on.

I modified the DRV8825 driver PCBs for fast decay mode:

DRV8825 PCB - Fast Decay Mode wire
DRV8825 PCB – Fast Decay Mode wire

Then set the current to a bit over 1 A:

3018XL - Protoneer setup - Z 1 mm
3018XL – Protoneer setup – Z 1 mm

Six hours later I hauled the once-again-functional CNC 3018XL to my presentation for the ACM:

Spirograph - intricate sample plot - detail
Spirograph – intricate sample plot – detail

Memo to Self: Time to get another Prontoneer board …

, , , ,


CAMtool V3.3 vs. The Fat Fingers of Death

As is my custom, the day before showtime I talked my way through a final full-up dress rehearsal, with the HP 7475A plotter and the CNC 3018XL running their demo plots. As if to justify my attention to detail, the 3018 refused to home, with its X axis motor grinding in a manner suggesting something had gone terribly wrong with its driver.

OK, I can fix that™.

Turn off the power, verify the leadscrew turns smoothly by hand, check all the connections & connectors, then pull the DRV8825 PCB to see if anything looks obviously wrong. It didn’t, so I carefully re-plugged the driver and moved the whole affair to the Electronics Workbench for further study.

I turned on the scope and Tek current probes, then turned on the 3018 power supplies, whereupon a great cloud of Magic Smoke emerged from the CAMtool board and filled the Basement Laboratory with the acrid smell of Electrical Death.

It seems I carefully and meticulously re-plugged the DRV8825 PCB into its socket exactly one pin too high, which, among other Bad Things, connects the +24 V motor power supply to the driver GND pin.

Obviously, this did not end well:

CAMtool V3.3 - blown stepper fuse
CAMtool V3.3 – blown stepper fuse

The fuse, put under considerable stress, vented smoke & debris in all directions across the board; note the jets above the white motor connector. Surprisingly, the 1 kΩ resistor just below it is in fine shape, as is the rather blackened electrolytic cap.

The fuse measures the same 150-ish mΩ as the fuses in the other two axes, but I doubt it’s actually a fuse any more.

Astonishingly, the Arduino clone on the board worked fine, so I could extract the GRBL configuration.

Memo to Self: Never plug things in with your head upside down!

, , ,


Anonymous Bike Taillight Current

Along with the (defunct) Blackburn Flea, the bike pack also disgorged an anonymous taillight with a battery resistant to recharging through the USB port. Gentle suasion cracked the solvent-glued joint around the case:

Bike taillight - cracking case
Bike taillight – cracking case

As with most modern electronics, a battery occupies most of the interior volume:

Bike taillight - opening case
Bike taillight – opening case

For posterity, the connections:

Bike taillight - connections
Bike taillight – connections

I unsoldered the cell and charged it from a bench supply:

Bike taillight - external recharge
Bike taillight – external recharge

The voltage started out low with the current held to about 100 mA, eventually rose to 4.1 V, and stayed there while the current dropped to zero. Unlike the Blackburn cell, it appears not too much worse for the experience, although I haven’t measured the actual capacity.

Clipping the Tek current probe around the LED supply wire produced this waveform for the “dim” setting:

Anonymous Taillight - Low - 200 mA-div
Anonymous Taillight – Low – 200 mA-div

Adding a voltage probe across the LEDs and clicking to the “high” setting:

Anonymous Taillight - High - 200 mA-div
Anonymous Taillight – High – 200 mA-div

The intense ringing at the start of the pulse seems an artifact of the measurement setup, but ya never know; these days, RFI can come from anywhere.

In any event, the COB LED strip draws 800 mA from a fully charged battery, about 26 mA for each of the 30 LEDs. The 5% duty cycle in the “dim” setting is decently bright and 18% in “high” is entire adequate.

A trio of blinks works for daytime rides, although the fastest one seems seizure-inducing.

I’ve strapped it around a rack strut and run it at the slowest blink, on the principle you can never have too many blinky lights

Leave a comment