By turns: tinker, engineer, husband, author, amateur raconteur, recumbent cyclist, father, ham radio geek. So many projects, so little time!


Sewing Machine Light Bar Current

After more use and brightness tweaking, the COB light bars on the Juki TL-2010Q and Kenmore 158 now have 2.2 Ω ballast resistors setting the LED current to 370 mA and 300 mA, respectively:

Juki TL-2010Q COB LED - 2.2 ohm header
Juki TL-2010Q COB LED – 2.2 ohm header

Changing from 2.0 Ω to 2.2 Ω produces a noticeable decrease in light, so 10% steps around 2 Ω seem to be about the right increment. The COB LED strips claim 6 W at 12 V = 500 mA nominal, so they’re running well under the spec.

Given that cheap 1% metal film resistor assortments use E6 or E12 value steps, at best, we may need two resistors in parallel for the next adjustments.



Leave a comment

SJCAM M20 Camera: Tour Easy Seat Mount

The general idea is to replace this:

M20 in waterproof case - Tour Easy seat
M20 in waterproof case – Tour Easy seat

With this:

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

Thereby solving two problems:

  • Pitifully small battery capacity
  • Wobbly camera support

The battery is an Anker PowerCore 13000 Power Bank plugged into the M20’s USB port. Given that SJCAM’s 1 A·h batteries barely lasted for a typical hour of riding, the 13 A·h PowerCore will definitely outlast my legs. The four blue dots just ahead of the strap around the battery show it’s fully charged and the blue light glowing through the case around the M20 indicates it’s turned on.

The solid model has four parts:

SJCAM M20 Mount - Fit layout
SJCAM M20 Mount – Fit layout

Which, as always, incorporates improvements based on the actual hardware on the bike.

A strap-and-buckle belt harvested from a defunct water pack holds the battery into the cradle and the cradle onto the rack, with a fuzzy velcro strip stuck to the bottom to prevent sliding:

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

The shell around the camera is basically a box minus the camera:

SJCAM M20 Mount - Show - shell
SJCAM M20 Mount – Show – shell

The shell builds as three separate slabs, with the center section having cutouts ahead of the camera’s projections to let it slide into place:

SJCAM M20 Mount - Show - shell sections
SJCAM M20 Mount – Show – shell sections

The new shell version is 30.5 mm thick, so a 40 mm screw will stick out maybe 5 mm beyond the nylon locknut. I trust the screws will get lost in the visual noise of the bike.

A peg sticking out behind the USB jack anchors the cable in place:

SJCAM M20 Mount - Show - shell sections - USB side
SJCAM M20 Mount – Show – shell sections – USB side

The front slab and center top have curves matching the M20 case:

SJCAM M20 Mount - Show - shell sections - button side
SJCAM M20 Mount – Show – shell sections – button side

The camera model has a tidy presentation option:

SJCAM M20 Mount - Show - M20 body
SJCAM M20 Mount – Show – M20 body

And an ugly option to knock the protruberances out of the shell:

SJCAM M20 Mount - Show - M20 body - knockouts
SJCAM M20 Mount – Show – M20 body – knockouts

The square-ish post on the base fits into an angled socket in the clamp around the seat rail:

SJCAM M20 Mount - Show - clamp
SJCAM M20 Mount – Show – clamp

The numbers correspond to the “Look Angle” of the socket pointing the camera toward overtaking traffic. The -20° in the first clamp shows a bit too much rack:

SJCAM M20 Mount - first ride - traffic - 2019-02-06
SJCAM M20 Mount – first ride – traffic – 2019-02-06

It may not matter, though, as sometimes you want to remember what’s on the right:

SJCAM M20 Mount - first ride - 2019-02-06
SJCAM M20 Mount – first ride – 2019-02-06

FWIW, the track veering off onto the grass came from a fat-tire bike a few days earlier. Most of the rail trail had cleared by the time we tried it, with some ice and snow in rock cuts and shaded areas.

Contrary to the first picture, I later remounted the camera under the seat rail with its top side downward. The M20 has a “rotate video” mode for exactly that situation, which I forgot to turn off in the fancy new mount, so I rotated the pix afterward.

A 3 mm screw extends upward through the hole in the socket to meet a threaded brass insert epoxied into the shell base, as shown in the uglified M20 model. Despite appearances, the hole is perpendicular to both the socket and the shell, so you can tweak the Look Angle without reprinting the shell.

All in all, the mount works well. We await better riding weather …

The OpenSCAD source code as a GitHub Gist:


Leave a comment

“5 W” G4 COB LED Specsmanship

A bag of G4 COB LEDs arrived from halfway around the planet:

G4 COB LEDs - 15 and 18 LED modules
G4 COB LEDs – 15 and 18 LED modules

Those are “5 W” and “4 W” cool white modules, respectively, with another set of 4 W warm white looking pretty much the same. There’s no provision for heatsinking, which makes the wattage seem suspect; halogen G4 bulbs run around 20 W, for whatever that’s worth.

The silicone overlay becomes nearly transparent when seen through an ordinary desktop document scanner:

Circular 12V COB 18 LED panel
Circular 12V COB 18 LED panel

Highlighting the PCB copper pours shows 18 LEDs arranged in three series groups of six LEDs in parallel:

Circular 12V COB 18 LED panel - copper layout
Circular 12V COB 18 LED panel – copper layout

The “smart IC” touted in the writeup turns out to be a bridge rectifier for AC or DC power:

G4 COB LED - 18 LED - components
G4 COB LED – 18 LED – components

The SMD resistors on all 15 modules measure 27.6 Ω, more or less, and seem randomly oriented face-up or face-down. I assume that one is face-down; maybe it’s just unlabeled on both sides.

Back of the envelope: there’s no way it will dissipate 5 W. The bridge drops 1.4 V = 2×0.7, the LEDs drop maybe 9 V, leaving the resistor with 1.6 V to pass all of 60 mA, so call it 700 mW.

Some measurements:

G4 COB LED measurements
G4 COB LED measurements

With 12 VDC applied to the pins, the bridge drops 1.6 V, the LEDs 8.2 V, and the resistor 2.2 V, with 80 mA through the whole affair dissipating just under 1 W.


Cranking the supply until the current hits 200 mA puts 15.7 V across the pins for a total dissipation of 3.1 W, burning 1.7 W in the LEDs and 1.1 W in the resistor.

Cranking the supply to 21.3 V drives 410 mA, dissipates just under 9 W total, produces a curl of rosin smoke from the PCB, and maybe delaminates the silicone around some of the LEDs.

OK, now I have a crash test dummy.

Given complete control over the application, I’ll strip everything off the PCB and bond it to a heatsink of some sort. With 6 LEDs in parallel, 120 mA (6 × 20 mA) total current might be reasonable and 200 mA (6 × 30 mA) probably won’t kill the things outright. Plus, I have spares.

An external 18 Ω resistor should suffice. Perhaps a pair of 6 Ω SMD resistors on the PCB, with fine-tuning through an external resistor. Call it 250 mW apiece: don’t use little bitty SMD resistors.


Leave a comment

NP-BX1 Lithium Batteries: DOT-01

A quartet of DOT01 NP-BX1 batteries arrived:

Dot01 NP-BX1 - new 2019-02
Dot01 NP-BX1 – new 2019-02

The dotted lines show the results from late 2015 for a pair of then-new Wasabi NP-BX1 batteries, so the DOT-01 batteries look about the same. The F battery barely lasted to the halfway point of our most recent bike ride and the G battery now resides in the blinky-and-glowy pile.

I’d be unsurprised to discover all the myraid “different” NP-BX1 batteries all come from the same factory. Unlike the Wasabi batteries, these lack date codes, which seems like an extra-cost option you don’t get on the low end.

Leave a comment

2015 Subaru Forester Battery

With the intent of being able to find a picture of the battery in our 2015 Subaru Forester when I need it:

The manual says the “battery type” is 55D23L, with a 48 A·h capacity.

Here in the US, we measure a battery’s physical size with “Group Size” numbers which have no relation with JIS numbers, despite some overlapping or similar numeric values. The money quote:

Definition of Group Size: The Battery Council International (BCI) assigns numbers and letters to common battery types. These numbers and letters are standards for maximum container size, location and type of terminal and special container features.

So, it’s random. Choose a retailer, feed in the automobile year / make / model, and discover I need a Group 35 battery.

The label includes “390 CCA”, which is the Cold Cranking Amps rating:

The rating refers to the number of amps a 12-volt battery can deliver at 0°F for 30 seconds while maintaining a voltage of at least 7.2 volts

So, if you’re building an automotive gadget and expect the battery to deliver something like 12 V, you’re wrong. Bonus protip: look up “load dump” to get an idea of the highest voltage.

The “20 HR 48 Ah” specifies the Reserve Capacity:

Amp Hour or C20 is an indicator of how much energy is stored in a battery. It is the energy a battery can deliver continuously for 20 hours at 80°F without falling below 10.5 volts.

So a constant load of 2.4 A would do the trick, should you leave a few lights on overnight during the summer. In wintertime, you’re on your own.

Because hell hath no fury like that of an unjustified assumption, the terminals are on the top surface toward the rear, with the positive lug on the left when you’re standing at the front bumper. That may be the “L” in “D23L”.

Long ago, I ran afoul of an automotive battery which required knowing the terminal chirality and, of course, I bought the wrong one. Now I have a picture!


YAGV Hackage

I’ve been using YAGV (Yet Another G-Code Viewer) as a quick command-line Guilloché visualizer, even though it’s really intended for 3D printing previews:

YAGV previewer.png
YAGV previewer.png

Oddly (for a command-line program), it (seems to) lack any obvious keyboard shortcut to bail out; none of my usual finger macros work.

A quick hack to the main /usr/share/yagv/yagv file makes Ctrl-Q bail out, thusly:

diff yagv /usr/share/yagv/yagv 
> import sys
> 		if symbol==pyglet.window.key.Q and modifiers & pyglet.window.key.MOD_CTRL:
> 			sys.exit()

I tacked the code onto an existing issue, but yagv may be a defunct project. Tweaking the source works for me.

The Ubuntu 18.04 LTS repo has what claims to be version 0.4, but the yagv GitHub repository (also claiming to be 0.4) includes code ignoring G-Code comments. Best to build the files from source (which, being Python, they already are), then add my Ctrl-Q hack, because my GCMC Guilloché generator adds plenty of comments.



Monthly Image: Electrical Safety FAIL

Our room in a pretty good motel (pronounced “No Pets Allowed”) had the light on the wall above the beds plugged in thusly:

Motel outlet 1
Motel outlet 1

Next to the other bed was the outlet for the between-the-beds nightstand with lamp and clock radio plugs:

Motel outlet 2 - side
Motel outlet 2 – side

Which looked not-so-bad from the side, but not-so-good from the top:

Motel outlet 2 - top
Motel outlet 2 – top

It’s all fun and games until you grope for your metal-frame glasses in the middle of the night and they fall off the nightstand … hasn’t happened yet, but it’ll be spectacular when it does.

I think the original beds were narrower, with more clearance around the outlets, but we’ll never know. Those Panera Bread outlets pose similar problems.