Ed Nisley's Blog: Shop notes, electronics, firmware, machinery, 3D printing, laser cuttery, and curiosities. Contents: 100% human thinking, 0% AI slop.
The new X10 controller on our dresser has a nice lid over the buttons. Unfortunately, the lid lacks any affordance to raise it: smooth edges all around, slick surface, no notches or bumps.
The obvious, albeit ugly, solution: add some black and very grippy rubber strips to the front and side edges of the lid. Now one finger suffices…
Griptivity Enhancement
Puzzle: how did the designers expect us to lift the lid?
My Sony DSC-H5 eats NiMH cells like candy, which means I must haul along a pocketful of the things. That means I often wind up with a case containing one charged pair and one uncharged pair.
Ditto for swapping cells in the blinky lights on our bikes.
Pop quiz: which pair is which?
Battery Charge State Reminder
It’s pretty easy:
Nose-to-tail = as in the camera = charge ’em
Nose-to-nose = as in the charger = ready to use
You could do some remote psychoanalysis based on that sort of behavior, but you’d be completely right.
Had the occasion to run the flexy snake through a kitchen drain that turned out to be not as plugged up as I expected, which is always good news. Replaced the cleanout plug, hosed off the snake, coiled it up, and applied the usual three nylon cable ties to keep the snake together.
It took me years to figure out that last step. None of the old-school tricks work for me; I can’t tie knots in string / twine / rope while simultaneously holding those coils together and the snake resists any attempt to weave the loose ends into the bundle.
Mercifully, I don’t use the snake all that often and I don’t feel at all bad about tossing three cable ties each time.
Mary wanted to convert some old tomato cages into flower supports and deer protectors (until the flowers get big enough), by the simple expedient of flipping the cages over with the large end down. She figured we could chop off the wire ends that normally anchor the cages to the ground, then bend them into hooks for secure ground anchors.
I deployed the linesman’s pliers, which only showed that my wire size estimation is grossly underdeveloped. The high-carbon steel wires required bolt cutters… but a few minutes of twang effort scattered two dozen really stiff wires across the patio.
I ran a marker across the pile at the bend point, grabbed two random steel rods in the vise and, in short order, bent up a stack of ground anchors.
The Walkway Over the Hudson has been a resounding success, at least measured by the number of people using it. The Parker Avenue parking lot has about 80 spaces and, during most days, is jammed full.
The NYS park system now owns the Walkway and, in their infinite wisdom, decided that the parking facilities should have a fee just like the rest of their lots: $5 / 4 hours.
Here’s what the Walkway lot looked like on the day the fee went into effect…
Walkway Parking Lot With Parking Fee In Full Effect
State officials hope there will be no decline in visitors with the new parking fee, said State Parks spokesman Kristen Davidson.
Basically, there’s enough free on-street parking in the area that most folks park nearby and hike in, which makes sense for a park consisting of about two miles of walking path. The parking fee amounts to a tax on handicapped and elderly visitors who find it difficult to navigate streets and ramps.
On the bright side, it’ll be a lot easier to bike across the bridge…
One of our nice aluminum water bottles hit the floor and, of course, the tiny little hinge shattered. It’s some wonderful engineering plastic, but just look at the leverage you can apply to those few millimeters of material. This is the sort of repair that can’t possibly be economically justified, but it pisses me right off when something that should be rugged turns out to be this fragile.
The 2 mm steel hinge pin snapped the molded plastic center post of the hinge off the cap; we found the larger fragment, but the smaller one may lurk under the refrigerator for quite some time. Nothing bonds to this plastic and, if the post broke in the first place, adhesive isn’t going to help.
Broken hinge
Some doodling showed that a replacement hinge post should be machineable. The general idea was to square up the remaining chunk of the post, then attach a replacement hinge pivot with a screw. The post is almost exactly 1/4-inch thick, call it 6.2 mm, which means the right-angle feature under the pivot ought to keep the whole affair from twisting.
Water Bottle Hinge
I planned to leave the left side unmachined and cut it to fit by hand, but then figured, eh, just make it happen. I also expected to leave the area around the screw a lot thicker, with a neat counterbore around the head.
This being a bash-to-fit, file-to-hide kind of project, I wrote a snippet of G-Code (at the bottom of the post) to chew out the part from a sheet of Lexan, then did the perpendicular hole & countersinking with manual CNC.
No pix of that; I was working in a white-hot fury. Basically, I double-sticky-taped a slab of Lexan to a sacrificial sheet, clamped it to the tooling plate, and had at it with a 2 mm end mill. Cutting a 6.4 mm sheet with a 2 mm end mill is a bit iffy, as the flutes are just barely that long; the mill was armpit-deep in swarf and I was dribbling water into the cut to keep it cool.
By the time I stopped for a picture, the situation looked like this.
Replacement hinge part
For what it’s worth, that’s the second part. I had to lower the screw head below the top of the half-round feature on the left end in order to clear the cap. That’s what CNC is really good for in my shop: make another one, just like the other one, only different exactly like that.
I drilled a #50 (2-56 tap) hole in the cap pretty much by eye, using laser targeting to touch off.
Laser aligning to hinge stub
The hole wound up minutely too far inboard, but some filing cleaned up the stub edge and it was all good. I started the tap in the mill, held loosely in the chuck and turning it with my fingers, then finished up on the bench.
The screw hole goes all the way through the cap. I filed the screw down so the end sits flush at the bottom of the cap, where the silicone rubber gasket should seal firmly against it.
Here’s what the hinge looks like with all the bits assembled. The spring bears on the screw head, which makes the cap open with more snap than before. I put a little counterbore under the screw head, even after lowering it, to reduce the spring tension.
Rebuilt hinge
The cap has a spring-loaded latch that never worked very well in the first place and this repair didn’t improve it. As nearly as I can tell, the molded ledge on the cap has a rounded edge that the latch simply cannot engage. This is beyond even my level of interest; Mary was accustomed to using the wire snap to hold the cap closed and that practice will continue.
Works well enough for us and I got some Quality Shop Time on a rainy afternoon.
The G-Code uses a slightly modified & simplified version of the tool length probe routines. I’m not convinced that using the G59.3 coordinate system is the right way to go, but everything else seems worse.
(Water bottle hinge repair)
(Ed Nisley - KE4ZNU - June 2010)
(Rough-cut 1/4-inch plate with clamp at +Y)
(Sacrificial plate below, double-stick tape to secure)
(Tool change @ G30 position above length probe)
(-- Global dimensions & locations)
#<_Stock_Thick> = 6.5 (overall thickness)
#<_Traverse_Z> = 1.0
#<_Safe_Z> = 30.0 (clamp clearance)
(-- Section controls)
#<_Do_Outline> = 1
#<_Do_Drill> = 1
(-------------------)
(-- Initialize new tool length at probe switch)
( Assumes G59.3 is still in machine units, returns in G54)
#<_Probe_Speed> = 250 (set for something sensible in mm or inch)
#<_Probe_Retract> = 1 (ditto)
O<Probe_Tool> SUB
G49 (clear tool length compensation)
G30 (to probe switch)
G59.3 (coord system 9)
G38.2 Z0 F#<_Probe_Speed> (trip switch on the way down)
G91
G0 Z#<_Probe_Retract> (back off the switch)
G90
G38.2 Z0 F[#<_Probe_Speed> / 10] (trip switch slowly)
#<_ToolZ> = #5063 (save new tool length)
G43.1 Z[#<_ToolZ> - #<_ToolRefZ>] (set new length)
G54
G30 (return to safe level)
O<Probe_Tool> ENDSUB
(-------------------)
(-- Initialize first tool length at probe switch)
O<Probe_Init> SUB
#<_ToolRefZ> = 0.0 (set up for first call)
O<Probe_Tool> CALL
#<_ToolRefZ> = #5063 (save trip point)
G43.1 Z0 (tool entered at Z=0, so set it there)
O<Probe_Init> ENDSUB
(-------------------)
(-- Get started ...)
G40 G49 G54 G80 G90 G92.1 G94 G97 G98 (reset many things)
M5
(msg,Verify clamp to +Y, stock taped down)
M0
(msg,Verify X=0 at left edge, Y=0 on finished centerline)
M0
(msg,Verify tool touched off at Z=0 on surface)
M0
O<Probe_Init> CALL
T0 M6 (ensure first tool change pauses)
(-- Drill the hinge pin hole)
#<Pin_X> = 7.0
#<Pin_Y> = 0.0
#<Drill_Dia> = 2.06 (Drill diameter)
#<Drill_Num> = 46 (Drill number)
#<Tool_Num> = 146 (Tool number)
#<Drill_Radius> = [#<Drill_Dia> / 2]
#<Drill_RPM> = 3000
#<Drill_Feed> = [#<Drill_Dia> * 100]
#<Drill_Depth> = [#<_Stock_Thick> + 2 * #<Drill_Dia>]
O<Doing_Drill> IF [#<_Do_Drill>]
(debug,Insert Num #<Drill_Num> drill)
T#<Tool_Num> M6
O<Probe_Tool> CALL
(debug,Set spindle to #<Drill_RPM>)
M0
F#<Drill_Feed>
G0 Z#<_Traverse_Z>
G83 X#<Pin_X> Y#<Pin_Y> Z[0 - #<Drill_Depth>] R#<_Traverse_Z> Q[2 * #<Drill_Dia>]
O<Doing_Drill> ENDIF
(-- Mill outline)
#<Hinge_Radius> = 3.75 (half-width of hinge body)
#<Cutout_Base> = 2.75
#<Cutout_Screw> = 1.50
#<Cutout_Screw_Y> = [#<Hinge_Radius> - #<Cutout_Screw>]
#<Cutout_Screw_A> = ASIN [#<Cutout_Screw_Y> / #<Hinge_Radius>]
#<Cutout_Screw_X> = [#<Hinge_Radius> * COS [#<Cutout_Screw_A>]]
#<Passes> = 3
#<Mill_Dia> = 1.98 (end mill diameter)
#<Tool_Num> = 20
#<Mill_Radius> = [#<Mill_Dia> / 2]
#<Mill_RPM> = 3000
#<Mill_Feed> = 100
#<Entry_XL> = [0 - #<Mill_Dia>]
#<Entry_YL> = [0 - 2 * #<Hinge_Radius>]
O<Doing_Outline> IF [#<_Do_Outline>]
(debug,Insert #<Mill_Dia> mm end mill)
T#<Tool_Num> M6
O<Probe_Tool> CALL
(debug,Set spindle to #<Mill_RPM>)
M0
F#<Mill_Feed>
G0 X0 Y[0 - 2 * #<Hinge_Radius>] (get to comp entry point)
G0 Z#<_Traverse_Z>
G42.1 D#<Mill_Dia> (cutter comp right)
G1 X#<Pin_X> Y[0 - #<Hinge_Radius>]
#<Step_Z> = [#<_Stock_Thick> / #<Passes>]
#<Current_Z> = [0 - #<Step_Z>]
O<Outline_Passes> REPEAT [#<Passes>]
G2 J[0 - #<Hinge_Radius>] Z#<Current_Z> (ramp down to cutting level)
G3 Y#<Hinge_Radius> J#<Hinge_Radius>
G3 X[#<Pin_X> - #<Cutout_Screw_X>] Y#<Cutout_Screw_Y> J[0 - #<Hinge_Radius>]
G1 X0
G1 Y[0 - [#<Hinge_Radius> - #<Cutout_Base>]]
G1 X#<Pin_X>
G1 Y[0 - #<Hinge_Radius>]
#<Current_Z> = [#<Current_Z> - #<Step_Z>]
O<Outline_Passes> ENDREPEAT
G0 Z#<_Safe_Z>
G40
O<Doing_Outline> ENDIF
G30 (back to tool change position)
(msg,Done!)
M2