Ed Nisley's Blog: Shop notes, electronics, firmware, machinery, 3D printing, laser cuttery, and curiosities. Contents: 100% human thinking, 0% AI slop.
Tag: Improvements
Making the world a better place, one piece at a time
The strut supporting the two drawers in the bottom of the refrigerator came out in two pieces during a recent cleaning session. To judge from the condition of the joint, I’d done this once before in its history:
Refrigerator strut – tab clamps
That tab inserts into a slot in the front of the elaborate frame that supports the drawers, where it’s captured by a metal bar. Should you lift the rear of the strut without first removing the bar, the tab snaps off at the base. I’ve annotated the top of the strut in the hopes of reminding me the next time around.
A pair of bumps at the front of the drawer guides should hold the drawers closed, but it’s pretty obvious that’s not working as intended:
Refrigerator strut – worn retainers
I shaped strips of phosphor bronze spring stock around the bumps:
Refrigerator strut – phosphor bronze covers – top
The bottom view shows they’re held in place by crimps and a generous dollop of faith:
That should serve until I know whether the plastic drawer rail will carve through the metal. The drawers slide out with much more enthusiasm now, so it’s a Good Thing until something else breaks.
Yes, this is the refrigerator with the Freezer Dog…
Although the TOM286 conversion won’t need any fancy firmware, I forked Marlin’s Github repository and created a TOM286 branch based on the Marlin_v1 branch for the Azteeg X3 modifications; in theory, we can blend in future Marlin updates without too much hassle.
The Pronterface serial port tops out at 115200, so that’s a mandatory change right up front. [grin]
Marlin has a motherboard definition for an Azteeg X3 (type 67), but without the optional thermocouple inputs. I added motherboard 671, following the lead of the Megatronics board definitions (types 70, 701, and 702). In addition to the changes below, any test for motherboard 67 now includes 671, as the other pins and suchlike (should) be the same.
Motherboard 671 selects new pin definitions for the temperature inputs in pins.h:
#if MOTHERBOARD == 671
#define TEMP_0_PIN 11 // TC1 on shield
#define TEMP_1_PIN 4 // TC2 on shield
#define TEMP_2_PIN 13 // T0 thermistor on Azteeg X3 motherboard
#else
#define TEMP_0_PIN 13 // ANALOG NUMBERING
#define TEMP_1_PIN 15 // ANALOG NUMBERING
#define TEMP_2_PIN -1 // ANALOG NUMBERING
#endif
There’s now a TCOUPLE_AMP_TYPE definition in Configuration.h to select AD595 or AD849x thermocouple interfaces:
// Thermocouple sensor amplifier type
// 0 = AD595 gain = 10 mV/C
// 1 = AD849[4567] gain = 5 mV/C
#define TCOUPLE_AMP_TYPE 1
That picks the proper offset and gain definitions in Configuration_adv.h:
// The AD849[4567] has 5 mv/C gain, half that of the AD595, and requires _GAIN = 2
#if TCOUPLE_AMP_TYPE == 1
#define TEMP_SENSOR_AD595_OFFSET 0.0
#define TEMP_SENSOR_AD595_GAIN 2.0
#else
#define TEMP_SENSOR_AD595_OFFSET 0.0
#define TEMP_SENSOR_AD595_GAIN 1.0
#endif
With those in hand, these temperature sensor selections in Configuration.h will work:
I tweaked the temperature limits and preheat settings; the absolute minimum temperatures are now 10 °C, although I have not verified that a disconnected thermocouple or thermistor will actually trip that limit.
Given the completely arbitrary stepper motor wiring connections, I set all the direction inversions to false and then swapped wires to make the motors turn in the proper direction.
I enabled EEPROM_SETTINGS, but haven’t verified that values can actually store and recall themselves.
The XYZ=0 origin is in the middle of the platform, just where I like it, but that will require some fine tuning:
I think it’s possible to use the Z_SAFE_HOMING position to force Z-minimum homing on the platform height switch I built for the original firmware, but that operation also seems to be tied in with the three-point auto-leveling firmware and rotating switch assembly. Right now, the firmware homes to the Z-max switch as a stock Thing-O-Matic should, but I’ve never liked that arrangement; don’t start with me, you know how I get.
I backed the speeds and accelerations down from the values I’d been using, mostly because the driver hardware and currents are different:
// Computing steps/mm
// for XY = (motor steps/rev * microstepping) / (pulley teeth * tooth pitch)
// for Z = (motor steps/rev * microstepping) / (screw lead) // for E = (motor steps/rev * microstepping) / (gear ratio * drive circumference) // make sure ratios use floating point to avoid integer division!
#define DEFAULT_AXIS_STEPS_PER_UNIT {(200*16)/(17*2.0), (200*16)/(17*2.0), (200*8)/8.0, (200*4)/((7*30.23)/51)}
#define DEFAULT_MAX_FEEDRATE {5000/60, 5000/60, 1500/60, 4000/60} // (mm/sec)
#define DEFAULT_MAX_ACCELERATION {5000, 2500, 1000, 250} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for skeinforge 40+, for older versions raise them a lot.
#define DEFAULT_ACCELERATION 10000 // X, Y, Z and E max acceleration in mm/s^2 for printing moves
#define DEFAULT_RETRACT_ACCELERATION 10000 // X, Y, Z and E max acceleration in mm/s^2 for retracts
I’m not sure how to calculate the “jerk” settings, but taken as the maximum un-accelerated speed, these seem conservative:
// The speed change that does not require acceleration (i.e. the software might assume it can be done instantaneously)
#define DEFAULT_XYJERK 25 // (mm/sec)
#define DEFAULT_ZJERK 5 // (mm/sec)
#define DEFAULT_EJERK 5 // (mm/sec)
More tuning is in order; that should at least start it up.
Mary has been learning free motion quilting, which uses a special sewing-machine foot that holds the fabric in place. Leah Day describes modifying a standard darning foot, but I suggested deploying a bit more shop-fu to do it right. The notion of “adjusting” something with a twisted rubber band just made my skin crawl…
The starting point is a Brewer BP1814 “FOOT Darning/Quilting low shank with clear base”, two of which appear next to an older version that she’s had for quite some time. The rightmost one has my modifications:
Brewer BP1814 Quilting Foot – assortment
The older (mostly metal) foot works much better for its intended purpose, but the newer white plastic version seems easier to modify for free-motion quilting. The older spring is much softer than the new ones, for whatever that’s worth. After the modification, the spring pressure becomes largely irrelevant, as it only acts when something pushes up on the base.
The first modification improves visibility by cutting out part of the transparent plastic base. Leah suggests chopping it with a diagonal cutter (“jewelry clippers”), but I deployed a slitting saw in the Dremel tool at low speed to avoid melting. Mary wanted angled cuts, so that’s what she got:
Modified Darning Foot – opened base
A bit of touchup with a fine file smoothed out the edges so the base slides easily over the fabric. There’s no way to remove the red guide lines; the un-modified foot on the left emerged from its bag with that smeared line.
Then drive out the top metal pin with a small drift punch, hold the base and shaft, remove the C-clip, capture the spring, and extract the base and shaft. The 4.0 mm diameter metal shaft cries out to be threaded, so that’s what I did; this picture shows the reassembled shaft and spring:
Modified Darning Foot – threaded shaft
That’s significantly harder to accomplish than it looks, because there’s no practical way to remove the plastic base (it’s pinned in place, but one side of the cross-hole is blocked). I filed the end of the shaft to a taper that started the M4.0x0.7 die a bit more easily, clamped the shaft in the bench vise, applied nasty sulfur-based tapping fluid, crossed my fingers and eyes, held my nose, and managed to make it happen without cracking the plastic.
I reamed out the Nyloc nut with a hand-twisted series of drills, through about #24 = 3.861 mm, to reduce the locking torque. It’s now just slightly more than finger-tight, which should suffice.
In use, the foot fits under the sewing machine’s arm and puts the nut where fingers can’t reach. I filed a 6.0 mm “precision wrench” to fit the 6.8 mm nut flats and it’s All Good:
Modified Darning Foot – assembled with wrench
A staged photo op atop some trial quilting:
Modified Darning Foot – in action
With a Nyloc nut instead of a rubber band, it will stay exactly where she wants it…
That image has desaturated red to suppress the camera’s red burnout. It looks better in the realm of pure math:
Planetary Gear Bearing – Kurled – solid model
Reducing the tolerance parameter to 0.4 produced a surprisingly rigid, yet freely turning, bearing that required no cleanup: it popped off the plate ready to roll!
The heavy lifting in the OpenSCAD source code remains emmitt’s work. I replaced the outer cylinder with a knurl and simplified his monogram to stand out better amid the diamonds. This is the affected section:
Quick summary: the current Linux startup machinery Runs All The Things! in parallel, leaving you to figure out all the interdependencies and update all the script files to match your requirements. Mostly, the distro maintainers figure all that, but if you have essential files mounted as NFS shares, then you can will reach a login screen before the mount process completes.
Having wrestled with this problem for a while, I think I’ve doped out the right way to coerce the Upstart Pachinko Machine to converge on a workable login.
The solution is to fire off a unique signal after the NFS mount command, then force the display manager to wait until it receives that signal, rather than depend on happenstance as I did before. The mounts occur in /etc/init/local.conf, which now looks like this:
description "Stuff that should be in /etc/rc.local"
author "Ed Nisley - KE4ZNU"
start on (local-filesystems and net-device-up IFACE=em1)
stop on shutdown
emits nfs-mounted
script
logger Starting local init...
logger Mounting NFS filesystems
mount /mnt/bulkdata
mount /mnt/userfiles
mount /mnt/diskimages
mount /mnt/music
initctl emit nfs-mounted
logger Ending local init
end script
The start condition ensures that this code won’t run until the wired LAN is up; note that what was once eth0 is now em1. Then, after the mounts happen, initctl fires the nfs-mounted signal.
The modification to /etc/init/lightdm.conf script consists of one additional line to wait for that signal:
start on ((filesystem
and runlevel [!06]
and started dbus
and plymouth-ready
and nfs-mounted)
or runlevel PREVLEVEL=S)
stop on runlevel [016]
emits login-session-start
emits desktop-session-start
emits desktop-shutdown
I’m not convinced lightdm.conf is the right spot to jam a stick in the gears, but it seems to be the least-awful alternative. The login-session-start signal doesn’t appear in any file in that subdirectory and I have no idea where else to look.
Anyhow, the greeter screen now shows a desktop background from the NFS mount, which I regard as A Good Sign:
A Home Shop Machinist article (A Speed Key for Your Four-Jaw Chuck, p 67 Nov-Dec 2013, David Morrow) showed some lovely knurled steel knobs. These 3D printed knobs aren’t nearly as pretty, but they do much the same thing:
Sherline Knobs – in 4 jaw chuck
The solid model resembles the illegitimate offspring of a wine bottle and a pineapple:
Sherline Knob – solid model
The knurling comes from aubenc’s Knurled Surface Library v2. I ran off a prototype (on the left), then tweaked the dimensions to get the final version on the right:
Sherline Knobs – knurl depth variation
Being that type of guy, I define the knurl in terms of its diametral pitch, compute the diamond width & length to fit in the available space, then hand those measurements to the knurling library… which recomputes everything and decides on one less diamond than I do: NumSides has a Finagle Constant of -1 to make the answer come out right. We may be using a different diameter or something, but I haven’t deciphered the source code. It’s parametric out the wazoo, as usual, so you can spin up what you like, how you like it.
Anyhow, a 24 DP knurl with 1.0 mm depth looks and feels pretty good; the XY resolution isn’t good enough for a 48 DP knurl around that knob diameter. The diamonds don’t come out as crisp and pointy as crushed steel knurls, but they’re OK for my fingers.
Doing half a dozen doesn’t take much longer than doing a few, because there’s a 20 second minimum layer time in effect and those things don’t have much plastic, so now I have one for the hold-down clamps and another for Show-n-Tell sessions:
Sherline Knobs – M2 platform
I chopped a 5/32 inch hex key into five 15 mm lengths with a Dremel cutoff wheel, then filed both ends flat and broke the edges. The hex stubs were a press fit in the hex holes, so I finger-started them, grabbed the hex in the drill press, aligned the handle below, and rammed the stub about 5 mm deep. The final depth comes from jamming the wrench into the chuck and pressing firmly, so the stubs project exactly as far as possible:
Sherline Knobs – hex key inserted
One might quibble about the infill on the end; one may go adjust one’s own printer as one prefers.
There’s 0.1 mm more HoleWindage than usual, because these holes must fix a hex shaft, not a circular pin, and the corners need some clearance. They came out a firm press fit: exactly what’s needed.
They’re no good for final tightening of those chuck jaws, but that’s not their purpose…