After a year of fairly light use, the lens holder (and “attack ring”) of my J5-V2 flashlight worked loose and began to rattle. The ring holding the lens in place turned out to be finger-loose, but that wasn’t the entire problem, so I removed it and looked inside:
The mysterious alien egg resides on the upper-right side of the LED emitter.
The aluminum ring holding the LED assembly in place was also finger-loose, so I unwound it to take the whole front end apart:
Reassembly with a few dabs of Loctite in appropriate places should prevent future rattles.
NYS DOT’s recent Rt 376 repaving projects improved the road surface, but the infractructure seems to be crumbling apace, as we spotted on a recent walk across the bridge over Wappinger Creek:
The ragged edge of the deck shows other slivers have fallen into the creek.
My arms aren’t long enough to get a closer view:
The concrete roadway is developing potholes in the right hand southbound lane, so the upper surface has begun crumbling, too.
I think the bridge dates to the mid-1990s, based on the aerial photo history from Dutchess GIS, so it’s a bit over twenty years old. Nothing lasts.
Repairing stuff is hard …
So I intended to shrink the Autolevel probe with 1/8 inch drill rod and a tactile membrane switch:
Unfortunately, it didn’t work nearly as well as I expected, because the switch membrane requires slightly less than the 180 g of pressure that pushes the P100 pogo pin entirely into its housing, leaving no overtravel worth mentioning. The membrane switch mechanism itself has much less than 1 mm of overtravel after the dome snaps, which left me with an uncomfortable feeling of impending doom.
I managed to figure that out before completely assembling the thing, saving me a bit of time.
The end of the pogo pin initially sported a dot of epoxy to spread the load over the switch dome:
I dismantled the pogo pin to see
whether I could substitute a more forceful spring how it worked. As expected, a teeny spring drives the probe up against a trio of indentations in the brass housing. I didn’t expect the probe to have such an intricate shape, but it’s obvious in retrospect.
The OpenSCAD code for the housing required minimal tweakage from the larger version, so it’s not worth immortalizing.
The bCNC doc shows a camera mount made from acrylic and aluminum, but the MPCNC tool carrier lacks anywhere to secure such a thing. The camera should be reasonably close to the spindle axis, high enough to clear the work, and stable enough to hold its alignment. There’s a tiny flat spot next to the outer-lower Z-axis bearing supports (along the bottom of the picture), so that’s where it must go:
At least for now, anyway.
The USB camera originally mounted on a spring clip, with a 10 mm ball at the end of a 6 mm OD × 6 mm long stalk. Because we live in the future, building a matching ball socket isn’t particularly difficult:
3D printing FTW!
The stalk opening slants downward by 5°, because the camera PCB isn’t quite aligned with the stalk and I couldn’t get the first version to aim the lens directly downward.
A pair of brass inserts anchor the two M3 SHCS. The clamping force seems barely adequate to the task, but I’ll wait to see what else I don’t like before complexicating the situation.
A square of Genuine 3M sticky foam tape holds the mount to the MPCNC beside the DeWalt DW660 spindle:
The MPCNC bearing bracket doesn’t provide much surface area for the foam and it’s a bit more flexy than I’d like, but good practice probably requires verifying the spindle-to-camera offset before trusting the results, so we’ll see how it works.
The initial camera alignment consists of putting a mirror flat on the (pretty much level) platform:
Then you adjust the camera so its lens looks squarely at itself in the middle of the image:
The picture shows the camera aligned left-to-right (because the ball can rotate around the shaft axis), but the first mount didn’t allow the stalk to have enough downward tilt to center the lens image on the horizontal crosshair, thus the -5° tilt appearing in the second version.
With the camera lens centered on its reflection, you know the optical axis is perpendicular to the mirror. Because the mirror is flat on the bench, the optical axis must be perpendicular to the bench, which is parallel to the XY plane. Because we assume the MPCNC Z-axis moves perpendicular to the bench = XY plane, the distance between the spindle axis and the camera axis will remain constant, regardless of the Z-axis position.
Seems workable to me.
The OpenSCAD program as a GitHub Gist:
The bCNC doc shows how to use a USB camera for XY alignment and I want to try it out. The Box o’ USB Cameras emitted a likely candidate with a focusing lens, six (!) white LEDs, and a ball mount attached to an aggressive spring clip, but its thick USB cable included a lumpy brightness pot for the LEDs and sprouted a mic plug (apparently, it predated cheap USB audio):
The Box o’ USB Cables emitted a surprisingly long cable amputated from some random hunk of consumer electronics.
The LED brightness won’t need much adjustment after the first few minutes. I found a little 2 kΩ trimpot to fit the PCB holes:
Miracle of miracles, the dial ended up almost centered behind the original mic pore. A few minutes of gentle filing embiggened the pore and moved it over the trimpot:
Yeah, the hole may need a plug or tape to keep the dust out, but there’s an even bigger gap around the lens.
It produces a 640×480 picture with pretty much the expected quality, which should suffice for its intended purpose.
Next step: stick it somewhere on the MPCNC.
Inside, it uses the same pushbutton and pogo pin as the pen holder design, with a similar brass tube around the pogo pin.
There’s a conspicuous lack of good wire management; we all know where those wires will snap. In practice, you’d secure it to the DW660 power cord, way up on top, to eliminate most of the flexing. Still, it wants better strain relief than its gets from those heatstink tubes.
The solid model looks like a weaving shuttle:
It’s sitting upside-down in a 5 mm brim for more platform adhesion.
The next one will have a 1/8 inch stud to fit the DW660’s other collet and shorten the top by 3/8 inch, because I want the rod inserted three diameters for stability. The bottom can’t get much shorter, because the pogo pin determines the switch-to-tip distance. Maybe a simple membrane switch will work well enough?
You can see the depression in the glass sheet pretty clearly in a bCNC Autolevel scan on 30 mm centers (clicky for more dots):
The OpenSCAD source code as a GitHub Gist:
The display started up fine, became encrypted during the next few hours, and remained garbled as the track information changed. This is almost certainly a bad SPI transfer trashing the OLED module’s control registers.
Dropping the clock to the absolute minimum of 0.5 MHz didn’t help, either:
serial = spi(device=0,port=0,bus_speed_hz=500000) device = sh1106(serial)
This particular display woke up blank after loading the new code, then worked OK after another reset. The other streamers lit up as expected on the first try, so the slower SPI isn’t making the situation instantly worse.
Running the clock at 1 MHz definitely reduced the failure rate, which suggests it’s a glitchy thing.
Good embedded systems practice suggests resetting the entire display from scratch every now and again, but my streamer code has no concept of elapsed time. Opening that particular can o’ worms would almost certainly result in an on-screen clock and I do not want to go there.
I suppose I must get a new oscilloscope with SPI bus decoding to verify all the SPI setup and hold times …