A long long time ago, I conjured a short bench for our Larval Engineer from a pair of junked folding-table legs and a truly hideous mid-50s Genuine Formica countertop salvaged from the kitchen refurbishment:
Most recently, it held a pile of test equipment and random stuff next to the MPCNC, whereupon the welds holding the tube with the feet to one of the vertical tubes on the far end failed. It wasn’t in the critical path, so I broke the welds on the other end, propped the vertical tubes on wood blocks, and continued the mission. Having finally finished those measurements, I could clear off the bench and repair the legs.
I no longer have my welding gear and, in any event, it’s still winter outside, so a low-excitement repair seemed in order: drill suitable holes into the leg crosspiece, make threaded inserts for the tubes, and join them with 3/8-16 bolts.
So, we begin.
File the broken welds off the foot tube, align it in the drill press vice (where it barely fits!), center drill to make a pilot hole, then poke a 3/8 inch drill completely through to line up both holes:
By the Universal Law of the Conservation of Perversity, a 3/8 inch bolt didn’t quite fit the 3/8 inch hole, so I embiggened the holes with a step drill:
The step drill obviously has hard metric diameters labeled as weird inch sizes:
I can’t read the second step, either, but it’s apparently 25/64 inch = 9.8 mm, which is just enough over 3/8 inch = 9.5 mm to be useful. The next step is 14 mm = 35/64 inch, so the drill is a bit of a lump.
The leg tubes were a hair over 0.9 inch ID and not particularly round. Tolerances being slack, slice a bit more than two inches off a 1 inch OD aluminum rod:
I wanted more than one diameter in the tubes, but the bolts in my stash topped out at 2 inches and, really, an inch of aluminum won’t go anywhere.
Clean up one end of the rod to 0.9 inch OD, flip, and center drill:
Obviously, surface finish and concentricity aren’t critical, but the cleaned-up OD of the left end lined up at barely perceptible mismatch with the (yet to be done) right end.
Sunder in twain:
Betcha you can’t spot the junction between the two ODs, either.
Drill 3/8 inch through, then discover you (well, I) have neither a drill big enough nor a boring bar small enough to embiggen one end of the hole for a nasty interference fit against the tips of a 3/8 inch hex nut.
Once again, a step drill to the rescue:
Because it’s a step drill, the counterbore isn’t quite deep enough for the whole nut, so turn the nut to fit the recess left by the drill:
Put a bolt through the insert as a guide, spin the nut on, backstop the insert with a machinist’s parallel jaw clamp (loose, just to give the head somewhere to go), line ’em up, and mash the nut into place with the bench vise:
Clean up the broken welds with a rat tail file, hammer the inserts into the tubes:
Which, as I expected, rounded them nicely while producing an absolutely solid, ain’t gonna work loose, dry joint.
Add threadlocker to the bolts and it’s all good:
Tell me you’d have fish-mouthed those inserts just for pretty, after noting the factory didn’t bother fishmouthing the vertical tubes before welding them in place.
But it was good for generous dose of Quality Shop Time!
Although I cannot explain why those ferrite beads lit up, it seems connecting the DE-9 shell to the serial device ground is an Extremely Bad Idea. I removed that wire from the HP 8591 spectrum analyzer cable and everything seems to work, so I’ll declare victory:
Not shown: the tangle of cables tucked behind that tidy box. You can plug a serial terminal into the DE-9 connector, but it’s much easier to use the PS410’s web interface.
It needs a static IP address to make it findable, although I also told the router to force the same address should it start up in DHCP mode:
Yeah, Google DNS, if all else fails.
The serial port overview:
I’ll go into more detail in a while about individual device setups and the scripts slurping screen shots out of them, but giving each one a useful name is a Good Idea, even though it doesn’t appear anywhere else. I changed the default Inactivity Timeout for each port from the default 100 seconds to zero, thereby preventing the PS410 from closing the connection due to inactivity:
The DTR and DSR defaults work out well; the other choices solve problems I don’t have. Indeed, the PS410 has a myriad configuration options best left in their Disabled state.
The serial parameters for each port need tweaking to suit the hardware gadget on the other end of the cable:
Flow Control applies between the PS410 and the gadget. You can choose:
- XON/XOFF – in-band characters
- RTS/CTS – RS-232 hardware signals
Somewhat to my surprise, It Just Worked despite my blundering.
The chip reset seems remarkably slow, even at maximum VCC:
As far as I can tell, the
bitbang class handles all the setup and teardown around the actual data transfers, but it’s not clear (to me, anyway) how it interacts with the underlying hardware SPI machinery.
So, let’s add some sleepiness to the Reset code:
if self._RST is not None: self._gpio.output(self._RST, self._gpio.LOW) # Reset device time.sleep(1.0e-3) self._gpio.output(self._RST, self._gpio.HIGH) # Keep RESET pulled high time.sleep(1.0e-3)
A few milliseconds, rather than a few (hundred) microseconds, won’t make any perceptible difference.
Similarly, the Chip Select and Address (Command/Data) signals require more delay than might occur between successive Python statements:
This should do the trick, again with excessive delay:
if self._DC: self._gpio.output(self._DC, self._cmd_mode) time.sleep(1.0e-3) ... snippage ... if self._DC: self._gpio.output(self._DC, self._data_mode) time.sleep(1.0e-3) ... snippage ... if self._CE: gpio.output(self._CE, gpio.LOW) # Active low time.sleep(1.0e-3) ... snippage ... if self._CE: gpio.output(self._CE, gpio.HIGH) time.sleep(1.0e-3)
Although it shouldn’t be necessary, I blew away the
pyc files to prevent future confusion over who’s doing what with which.
Once again, this will require several weeks to see whether the situation changes for the better.
The USB serial adapters I use to capture HP54602 scope and HP8591 spectrum analyzer screenshots, as well as monitor the HP Z8501 GPS time standard, lack unique identifiers and appear as unpredictable device nodes.
After putting up with this for far too long, I dropped $15 on a Sena Technologies PS410 serial server:
It needed a new lithium coin cell, of course:
The PCB and chip date codes suggest a 2009 build, so “98” might mean August 2009. Whether that’s the manufacturing date or the best used by date, ya never know.
The eBay deal didn’t include the power supply, so I hacked a coaxial jack on the back:
A 14 VDC IBM laptop brick from the pile suits the “9 to 36 V” range printed on the case.
Poking the “factory reset” switch did what you’d expect and the “console” serial port on the front worked fine. I plugged in the scope, the spectrum analyzer, and the GPS receiver, whereupon the bench took on the unmistakable aroma of electronic death:
Some probing suggests FB9 used to be a ferrite bead between serial port 2’s ground pin and the frame ground.
To compress an afternoon of tinkering into one sentence, there seems to be an occasional 35 VAC difference between the spectrum analyzer and the scope, but only when one or the other is plugged into the PS410. Everything is (now!) plugged into the same branch circuit and, in fact, the same outlet via many power strips, but the difference remains. A different power supply makes no difference, either.
I managed to burn out the ferrite bead on Port 1 with only the scope and the power supply plugged in, by connecting the scope’s ground lead to the shell of Port 2. That makes no sense: there is no voltage difference between the scope’s serial ground and its probe ground.
Something Is Not Right, but I’m baffled.
I have established that the server works fine, even with the charred beads, which is a Good Thing.
While you won’t get my patter, you should get the general idea: for reasons unknown to me, I’m the go-to guy for water heater repairs.
So much for my solid modeling and 3D printing and suchlike.
A simpleminded MOSFET circuit provides PWM drive for the BLDC blower:
The Tek P6302 current probe looms much larger in real life than in the schematic:
A quick dataset shows the RPM variation against PWM duty cycle:
Unsurprisingly, the RPM curve resembles the earlier results against a variable DC supply voltage:
Capturing the current waveform is stalled behind another project, but it has exactly the voltage spikes you’d expect from forcibly switching an inductive load.
I found this while moving the wheelbarrow off the driveway in preparation for another snowfall:
It may have sipped water from the bowl, fell in, drowned, then froze in place. Mary uses rainwater (or snowmelt) for household plants, at least during somewhat warmer weather, but the bowl obviously presents an attractive nuisance for little critters.
Chipmunks are basically rats in snappy livery, but even they don’t deserve such a fate.