Ed Nisley's Blog: Shop notes, electronics, firmware, machinery, 3D printing, laser cuttery, and curiosities. Contents: 100% human thinking, 0% AI slop.
I didn’t bring the HDR-AS30V camera along on the Hudson River ride, simply because each battery lasts about 1.5 hr in 1920×1080 @ 60 fps mode and I wasn’t up to replacing batteries during the ride, then charging all three every evening. Obviously, the camera wasn’t intended for that use case.
Somewhat surprisingly, the Wasabi batteries deliver the same continuous run time as the Sony battery: 1:30 vs 1:33. I used 250 mA for those discharge curves, but I think something around 500 mA would better match the camera load.
I’m sorely tempted to drill a hole in the camera’s case and wire in a honkin’ big prismatic lithium cell.
Given the fragility of ferrite toroids in general and slit toroids in particular, a touch of up-armoring seems sensible:
FT82-43 toroid – mounted
The solid model includes a toroid shell with roughly the right curves:
Toroid Mount – Show layout
That puts a nice rounded shape on the bottom of the armor, not that that makes much difference:
Toroid Mount – Build layout
The central hole passes a 4-40 brass, nylon, or stainless steel screw. Most of the magnetic field stays within the ferrite and, heck, this isn’t a crazy-sensitive analog application, so even an ordinary steel screw shouldn’t cause any particular problems.
The rectangular (not pie-wedge) slit barely passes the Hall effect sensor.
I’ll pour some clear epoxy over the toroid, with tape masking the ferrite core and sealing the ends, to immobilize the windings. That sounds like a good idea after calibration and suchlike.
The OpenSCAD source code, which should be sufficiently parametric that I can crank ’em out for all the other toroids large enough to accept a screw:
// Toroid coil mounting bracket
// Ed Nisley - KE4ZNU - August 2014
Layout = "Mount"; // Coil Mount Build Show
//- Extrusion parameters must match reality!
// Print with 4 shells and 3 solid layers
ThreadThick = 0.20;
ThreadWidth = 0.40;
HoleWindage = 0.2; // extra clearance
Protrusion = 0.1; // make holes end cleanly
AlignPinOD = 1.70; // assembly alignment pins: filament dia
function IntegerMultiple(Size,Unit) = Unit * ceil(Size / Unit);
//----------------------
// Dimensions
ID = 0; // subscripts for cylindrical objects
OD = 1;
LEN = 2;
Coil = [10.25,23.50,8.3]; // wound toroid core
SensorThick = 2.0;
BaseThick = IntegerMultiple(1.0,ThreadThick); // baseplate under coil
WallThick = IntegerMultiple(1.0,ThreadWidth); // walls beside coil
ScrewHoleDia = 4.0; // allow alignment slop around 3 mm / #4 screws
//----------------------
// Useful routines
module PolyCyl(Dia,Height,ForceSides=0) { // based on nophead's polyholes
Sides = (ForceSides != 0) ? ForceSides : (ceil(Dia) + 2);
FixDia = Dia / cos(180/Sides);
cylinder(r=(FixDia + HoleWindage)/2,
h=Height,
$fn=Sides);
}
module ShowPegGrid(Space = 10.0,Size = 1.0) {
RangeX = floor(100 / Space);
RangeY = floor(125 / Space);
for (x=[-RangeX:RangeX])
for (y=[-RangeY:RangeY])
translate([x*Space,y*Space,Size/2])
%cube(Size,center=true);
}
//----------------------
// Basic coil shape
module CoilShape() {
CornerRadius = min((Coil[LEN] / 2),((Coil[OD] - Coil[ID]) / 2)) / 3;
MidRadius = (Coil[ID] + Coil[OD]) / 4;
HalfX = (Coil[OD] - Coil[ID]) / 4 - CornerRadius;
HalfY = (Coil[LEN] / 2) - CornerRadius;
echo(CornerRadius,MidRadius,HalfX,HalfY);
color("Goldenrod")
render(convexity = 2)
rotate(180/20)
rotate_extrude(convexity=3,$fn=20)
translate([MidRadius,0])
hull()
for (i=[-1,1],j=[-1,1])
translate([i*HalfX,j*HalfY])
circle(r=CornerRadius,$fn=24);
}
//----------------------
// Mount
module Mount() {
difference() {
rotate(180/20)
cylinder(h=(BaseThick + Coil[LEN]),d=(Coil[OD] + 2*WallThick),$fn=20);
translate([0,0,-Coil[LEN]]) // make screw hole
rotate(180/6)
PolyCyl(ScrewHoleDia,3*Coil[LEN],$fn=6);
translate([0,0,BaseThick + Coil[LEN]/2]) // set bottom curve
CoilShape();
translate([0,0,BaseThick + Coil[LEN]]) // clear out top
CoilShape();
translate([(Coil[ID]/2 + Coil[OD]/2),0,0])
cube([Coil[OD],SensorThick,3*Coil[LEN]],center=true);
}
}
ShowPegGrid();
if (Layout == "Coil") {
CoilShape();
}
if (Layout == "Mount")
Mount();
if (Layout == "Show") {
Mount();
translate([0,0,(BaseThick + Coil[LEN]/2)])
CoilShape();
}
if (Layout == "Build") {
Mount();
}
I’m pretty sure that chip at 1 o’clock happened while it was clamped in the vise between two cardboard sheets, but I haven’t a clue as how it got that much force. In any event, that shouldn’t affect the results very much, right up until it snaps in two.
Although the current will come from a (rectified) 120 VAC source, the winding will support only as much voltage as comes from the IR drop and inductive reactance, which shouldn’t be more than a fraction of a volt. Nevertheless, I wound the core with transformer tape:
FT82-43 toroid – wrapped
That’s 3M 4161-11 electrical tape (apparently out of production, but perhaps equivalent to 3M’s Super 10 tape) cut into half-foot lengths, slit to 100 mils, and wrapped ever so gently.
The thickest offering from the Big Box o’ Specialty Wire was 24 AWG, so that’s what I wound on it:
FT82-43 toroid – wound
That’s 56 turns, which should convert 2.2 A into 1000 G (enough to max out the Hall effect sensor) and is more in keeping with 24 AWG wire’s 3.5 A current rating.
The insulated core requires just under 1 inch/turn, so figure the length at 56 inch. The wire tables show 26.2 Ω/1000 ft, so the DC winding resistance should be 120 mΩ. My desk meter has 0.1 Ω resolution, which is exactly the difference between shorted probes and probes across the coil: close enough.
The inductance is 170 µH, so the inductive reactance at 120 Hz = 128 mΩ.
The audio quality was terrible, so I tried another bud with a foam windscreen over the hole and a hole punched in the middle of the double-sided white foam tape:
Earbud – foam over vent
The audio remained unintelligible, so I tried an upscale (but still cheap, because surplus) Koss earbud, first without blocking the vents and then with snippets of Kapton tape:
Koss earbud – tape over vent
The earphone has three slits on each side, but only the middle slit has a hole penetrating the case; it must be a stylin’ thing.
That sounded better, so I’ll roll with it. There’s supposed to be a foam cover over the housing, but those things always get grody and fall off; there’s not much point.
As nearly as I can tell, contemporary earbud designs optimize for volume (dBm/mV) and thumpin’ bass, all to the detriment of actual audio quality. Based on numerous samples over the years, there is zero correlation between price (admittedly, on the low end) and audio quality (admittedly, with my crappy hearing).
I own a pair of very nice (and thoroughly obsolete) Shure E2c sound-isolating ear beetles that sound great (even with my crappy hearing), but I’m unwilling to chop them up for the bike headset …
The motor winding resistance limits the peak current to about 200 V / 40 Ω = 5 A, in the absence of the transistor current limiter, and, if it gets above that, things have gone very, very wrong. Mostly, I expect currents under 1 A and it may be useful to reduce the full scale appropriately.
The cheap eBay “SS49” Hall effect sensors I’m using produce anywhere between 0.9 and 1.8 mV/G; I’ll use 1.4 mV/G, which is at least close to the original Honeywell spec. That allows a bit over ±1000 G around the sensor’s VCC/2 bias within its output voltage range (the original datasheet says minimum ±650 G), so I’ll use B = 1000 G as the maximum magnetic flux density. The overall calibration will be output voltage / input current and I’m not above doing a one-off calibration run and baking the constant into the firmware.
The effective mean path length turns out to be a useful value for a slit toroid:
effective MPL = (toroid MPL - air gap length) + (µ · air gap length)
The SS49 style sensor spec says they’re 1.6 mm thick, and the saw-cut gaps run a bit more, but 1.5 mm will be close enough for now.
The relation between all those values:
B = 0.4 π µ NI / (effective MPL)
Solving for NI:
NI = B · (eff MPL) / (0.4 π µ)
Solving for N:
N = B · (eff MPL) / (0.4 π µ I)
You always round up the result for N, because fractional turns aren’t a thing you can do with a toroid.
The saturation flux density seems to be measured at H = 10 Oe, but that applies to the intact toroids. The air gap dramatically reduces the effective µ, so you must apply a higher H to get the same B in the ferrite at saturation. At least, I think that’s the way it should work.
H = 0.4 π NI / (geometric MPL)
Then:
FT50-61: H = 58 Oe
FT82-43: H = 30 Oe
I’m surely missing some second-order effect that invalidates all those numbers.
Figuring the wire size for the windings:
FT50:
ID = 0.281 inch
Circumference = 0.882 inch
28 turns → wire OD = 0.882/28 = 31 mil
20 AWG without insulation
FT82:
ID = 0.520 inch
Circumference = 1.63 inch
25 turns → wire OD = 1.63/25 = 65 mil
14 AWG without insulation
Of course, the wire needs insulation, but, even so, the FT82 allows a more rational wire size.
Page 4.12 of the writeup from Magnetics Inc has equations and a helpful chart. They suggest water cooling a diamond-bonded wheel during the slitting operation; my slapdash technique worked only because I took candy-ass cuts.
The motor current (200 mA/div) never goes to zero, but the ET227 collector voltage hits zero as the transistor saturates: the motor winding soaks up all the available line voltage and the transistor dissipation drops close to zero. The datasheet suggests VCE(sat) < 0.1 V for IC < 5 A, albeit with IB = 30 A (!).
The ET227 base drive was 77 mA, measured on a better meter than the low-resolution one in the power supply, and the transistor gain works out to 8 = 620 mA / 77 mA along those flat tops.
Eyeballometrically speaking, the dissipation averages 50 W = 90 V x 620 mA during those spiky sections where the transistor must absorb the difference between the line voltage and the motor voltage. The cursors say that takes 5 ms of the 8.3 ms period of the 120 Hz full wave rectified power, so the duty cycle is 42% and the average average dissipation works out to 20 W. That’s still enough to warm up that big heatsink; the motor driver will need a thermal sensor and a quiet fan.
That commutation noise looks pretty scary, doesn’t it?
The test setup:
Kenmore 158 – AC motor FW ET227 drive – test setup
The bridge rectifier doesn’t really need a heatsink, but it looked better for a Circuit Cellar picture…