Ed Nisley's Blog: Shop notes, electronics, firmware, machinery, 3D printing, laser cuttery, and curiosities. Contents: 100% human thinking, 0% AI slop.
Because I must eventually diagnose and fix the HQ Sixteen’s Motor Stall Heisenbug, I printed out several views of the power supply PCB on glossy photo paper for best visibility.
The component side:
Power PCB – components
The solder side:
Power PCB – solder
The X-ray view:
Power PCB – overlaid
Considerable pondering and sketching produced an annotated view of the solder side:
HQ Sixteen – Power PCB – solder side – component labels – reduced
Here’s a tentative schematic drawn on the fly while extracting it from the PCB traces:
HQ Sixteen – Power PCB – rough schematic
!!CAUTION!! I have not verified the schematic against the actual hardware / PCB / components, as the Heisenbug has not reoccurred and I had no occasion to take the machine apart for checking. Do not assume any connections or components are correctly drawn.
Before I redraw the schematic in a more useful format, I must verify several nodes, because not everything in there makes sense.
In particular, the elaborate resistor string in the middle of the page seems to establish reference voltages for everything else, from the motor power supply turn-on delay to the RUN signal starting the motor.
The optoisolators definitely get the RUN command signal from the controller and feed the STALL motor status back to it. That’s assuming I understand enough to pin those labels on those connections.
!!CAUTION!!Read my caveats about the direct-from-the-AC-line non-isolated +160 VDC motor supply before connecting your instruments. The GND traces are not isolated from the AC line and are not at the normal “0 V” AC neutral potential.
But if this mess gets you further along with whatever you were doing, let me know how it all worked out for you.
Mary’s Handi-Quilter HQ Sixteen is new-to-her, but it’s had two previous owners over the past two decades. Neither of them reported any particular problems with it, but it now displays an intermittent Motor Stall error on its LCD panel(s). This post summarizes what I know and guesstimate to date.
The Motor Stall error happens at the first motor motion after turning the machine on, upon pressing either the Needle Up/Down or Start/Stop button on the handlebars. The motor does not move at all during the slight pause between pushing the button and seeing the error message. Pressing either button again clears the error message, although I (obviously) do not know if doing so affects any of the microcontroller’s internal status flags; the error dependably reoccurs after doing so.
A separate sector disk on the machine’s shaft sets the needle-up and needle-down positions through an optointerrupter:
The white silicone snot on the interrupter connector is original.
After the error occurs, slowly turning the machine handwheel while pressing either button generally prevents the error message from reappearing, suggesting the “stalled” signal from the motor is working and the signal reaches the microcontroller.
Turning the handwheel while pressing the Up/Down button does not produce an error message due to the “motor” not stopping at the appropriate edge of the sector disk.
The InterWebs suggest a thread jam, crud in the bobbin, and a needle crash can trigger a Motor Stall. When the machine is operating correctly, running it at slow speed and stopping the handwheel by hand (it has little torque) triggers the Motor Stall error message. However, the controller will clear the message and the machine will resume normal operation thereafter.
Conversely, when the Motor Stall error occurs at startup, it remains absolutely consistent and survives the usual “Reboot that sucker!” power cycle. Leaving the machine turned off and untouched for a few hours / overnight may reset whatever is wrong, after which it will run normally through many power cycles.
Long enough, indeed, to finish an entire practice quilt over the course of several days:
HQ Sixteen – remounted handlebars in use
The component side of the power supply / motor interface PCB inside the pod:
Power PCB – components
Connections:
Microcontroller board at top left
BLDC shaft motor middle right
Frame ground on green wire
AC power input on the IEC jack
Power switch just above IEC jack
A closer view of the ICs:
Power PCB – IC detail
Some initial thoughts on the circuitry, without detailed PCB tracing …
Although the date codes suggest it was built in 2005, the electrolytic caps show no signs of The Plague.
The TO-220 package is a classic LM7815 regulator with its tab soldered to a copper pad. No extensive copper pour on either side serves as a heat spreader.
The 8 pin DIP is an MCT62 dual optoisolator handling the motor speed control and stall sense feedback.
The big transformer at the bottom sends raw DC to the microcontroller board through B3 and J1, filtered by two of the electrolytic caps along the left edge. I think the low side remains isolated from the power board’s common, thus isolating the microcontroller from the AC power line.
The Skynet (‽‽) transformer produces +15 V through the 7815 regulator and B21 bridge, filtered by the middle electrolytic cap along the left edge of the board. All of the circuitry on the board uses that supply, with the low side as circuit common.
The 160 VDC (!) supply for the BLDC motor comes directly from the AC power line with no isolation through the Current Limiter PTC, the B1 bridge, and the hulking electrolytic cap in the middle of the board. The relay in the upper right energizes just after the power goes on, connecting the motor power return lead to circuit common through the 5W 4.7Ω sandbox resistor. The “common” side of B1 is, thus, not connected to the neutral side of the power line and, more importantly, none of the circuitry on the PCB is isolated from the power line.
As a result, casually clipping a line-powered oscilloscope’s “ground” probe lead to what’s obviously the circuit “common” will, in the best case, turn the ground lead into a fuse. I’ve done this exactly once, deep in the past, with a Tektronix 7904 mainframe oscilloscope priced (with plugins) somewhat higher than the house we owned at the time; suffice it to say I learned from that mistake.
I think (part of) the LM339 quad comparator determines the relay’s time delay, perhaps in response to a signal from the microcontroller after it wakes up.
The solder side of the same board:
Power PCB – solder
The two green wires and trace cuts are original, apparently to power just B21 (the motor supply) from the AC line through the fuse + PTC, with the two transformers connected directly to the AC line through the switch & fuse. The two white wires on the bottom go to the power supply I added for the Chin Light; the Motor Stall problem predates that modification and the handlebar relocation.
After cleanup / squaring / tweaking, the two images combine into an X-ray view:
Power PCB – overlaid
With all that in mind, some possible causes …
Taking the power supply and microcontroller pods off the machine and poking all the obvious spots has no effect. Not taking them off and not touching the machine may resolve the problem by the next day, after having it fail consistently during most of the previous day.
The motor label says DR-8538-937, which does not appear anywhere online, so this must be a unique Handi-quilter part. An overview of DR-8538 motors suggests they’re available with a variety of windings, none of which match the machine’s 160 VDC supply voltage. Because the PCB has no high-voltage / high-current switching components, other than the bulk DC supply, the motor contains the BLDC control & drive circuitry. The closest matching catalog page conspicuously does not identify the motor wiring connections.
This figure from another catalog suggests the motor accepts a DC speed control and outputs an open-collector “locked rotor” signal:
BLDC DR-8538-555 Motor pinout
The Handi-Quilter DR-8538-937 motor has five leads in the J2six pin header which could match thusly to the four pins in the figure:
Pin 1 = 160 VDC (pin 1 → 24 VDC )
Pin 2 = missing
Pin 3 = common (pin 2 → GND)
Pin 4 = ? (pin 3 → -On)
Pin 5 = ? (pin 4 → Lock ?)
Pin 6 = +Buzzer and elsewhere (?)
This will obviously require reverse engineering the schematic from the PCB traces, thus the X-ray view above.
The most obvious cause of a Motor Stall would be a defective / failing motor. Through a cosmic coincidence, a motor “removed from a working HQ Sixteen” was available on eBay when I looked. It behaves no differently than the original motor and, while it’s possible both motors have the same internal fault, that seems unlikely. The “new” motor now runs the machine, with the original motor neatly bagged in a box against future need.
Re-seating all the ICs on both boards produced ominous crunching sounds, but no improvement. Wiping DeoxIT on the leads of the two ICs on the power board had no effect.
Replacing the 10-conductor ribbon cable between the two boards had no effect. I knew I was saving those insulation displacement connectors for a good reason.
The MCT62 optoisolator has a minimum current transfer ratio of 100% at 10 mA diode current. A gimmicked test setup produced 8 mA in the output transistors with 6 mA through the diodes, which seems good enough.
The relay clicks audibly, even with my deflicted ears, suggesting that it’s working, although we have not had a motor failure while we were listening. It is possible the contacts are intermittent, letting the relay click without making contact; we’re now listening intently.
The machine lives upstairs, my instruments live in the basement, and I am unwilling to lug an awkward and invaluable 50 pound lump between the two. The next time the motor stalls, I must dismount the power pod from the side of the machine, haul a bunch of gear (including an isolation transformer!) upstairs, and probe various points while it remains defunct.
Things to find out:
What each of the five motor wires do
Discover the circuitry handling the optoisolator signals
What drives the relay?
Even though the machine ran perfectly for a week, a fundamental Debugging Rule applies: If you didn’t fix it, it ain’t fixed.
You’ve just seen more tech info on the HQ Sixteen than previously existed on The InterWebs.
The light comes from a small chip-on-board LED affixed under the chin of the machine arm with heatsink tape:
HQ Sixteen Chin Light – detail
Yes, the pool of warm white COB LED light clashes horribly with the cool white 5 mm LEDs lighting the background (not to mention wintry daylight from the windows), but it’s sufficiently OK.
I intended to run the wiring inside the machine arm, but all the pre-existing holes I wanted to use were oiling access points or blocked by whirling shafts inside, so the wire runs along the outside:
HQ Sixteen Chin Light – wiring
The Handi-Quilter control & lighting goes through the bare gray ribbon cable to the handlebars, so I’m not too far down the stylin’ scale. The next version of the machine has round external cables, but this machine is what it is.
I mounted the 12 VDC supply to the back panel of the machine’s power box with five 3 mm holes:
HQ Sixteen Chin Light – power supply
A bag of right-angle barrel connectors will arrive shortly.
The exposed wiring at the top (the white wires carry switched 120 VAC from the PCB inside the box) seemed … unaesthetic, so I conjured a cover from the vasty digital deep:
Power Supply Cover – solid model
Which fit neatly into place on the first try:
HQ Sixteen Chin Light – supply cover fit test
That’s a trial fit, because I am not pulling the machine apart again until there’s more work to do inside.
The blurry rocker switch below the Chin Light supply controls the machine power: turn it on and everything lights up as it should.
The stock Handi-Quilter HQ Sixteen has serviceable black rubber caps covering the holes for the grips:
HQ Sixteen – original front handlebar mount
Because we live in the future, I can do better than that:
HQ Sixteen – grip cap left
In truth, the plastic grip plug now sticks up into the hole just beyond the top setscrews, leaving not enough room for the black plugs, so I had to make new covers.
They’re a multi-material print using white PETG to kinda-sorta match the machine and blue PETG-CF to match the other plastic parts. The colors in the solid model just distinguish the two materials:
Handlebar Grip Mount – plug caps – solid model
The white covers have recesses exactly fitting the text:
Handlebar Grip Mount – cap text recess – solid model
In some cases that’s not needed, but I’m unsure how PrusaSlicer knows what I intend and chopping the text out was easy, so that’s how I did it.
I did not realize applying a transformation, like translate() or BOSL2’s syntactic sugar left(), to both the cover and the text implicitly joins them into a single “object”, so the slicer can’t distinguish them as separate materials. As a result, the OpenSCAD code must move the pieces separately:
Export the model as a 3mf file, import it into PrusaSlicer, and you get separate objects for the cover and the text. Assign different materials and slice to produce a multi-material result, with the Wipe Tower in the background:
Handlebar Grip Mount – cap first layer – PrusaSlicer
They must print face down to merge the two colors into a single flat surface with a nubbly texture from the steel sheet’s coating.
Disks of adhesive sheet will eventually stick them atop the plugs, but for now they’re just dropped into the holes.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
The angle block joins the aluminum grip with the plug sticking into HQ Sixteen’s handlebar control base:
Handlebar Grip Mount – show view – solid model
Because I don’t know the exact angle until Mary puts more hours on the machine, the OpenSCAD code can tilt the plug from 10° to 30° with respect to the original grip. The bent part of the model consists of a succession of hulls around adjacent slices:
Handlebar Grip Mount – bend slices – solid model
An overall hull() then gloms everything into one solid lump, with all the negative features removed from it:
Handlebar Grip Mount – show detail – solid model
After a brief flirtation with heat-staked brass inserts, four setscrews threaded into steel square nuts secure the original grip in the bottom:
HQ Sixteen – grip angle square nuts
A screw behind that big washer pulled the nuts firmly into their sockets, where they stay without any adhesive. The square recesses include a little adder based on the curvature of the hole to sink the nuts deep enough:
Handlebar Grip Mount – nut inset – solid model
I made the block’s OD large enough to accommodate the brass inserts and hope it’s chunky enough to withstand the force from the setscrews. The inserts tended to creep outward after being snugged down, but the square nuts seem stable against the recesses.
The block prints with the top surface against the platform to produce a clean recess for the plug, which requires support material for the ring around the bore. Because the ring sags slightly against the support, the model makes the recess 0.4 mm deeper, but the next iteration gets a little more:
HQ Sixteen – grip angle alignment marks
Not that it makes much difference.
The bore from the grip meets the bore from the plug in a sphere centered at the bottom of the plug recess:
Handlebar Grip Mount – sphere joint – solid model
A ball joint seems the best way to join a pair of intersecting cylinders, if you have room for the sphere, and eliminates a whole bunch of computations figuring the cylinder lengths; they just meet at about the center of the sphere and you’re done without anything sticking out. I’d like to pretend that was the first idea I had, but …
The OpenSCAD code can add more length to the bottom of the block, in the event Mary wants the grips lower:
Handlebar Grip Mount – added length – solid model
That obviously increases the lever arm applied to the plug, but we’ll burn that bridge when we come to it.
This lineup shows the progression from the first pass to something that might actually work:
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
It sticks into the machine’s handlebar control base in place of the original aluminum tube grips:
HQ Sixteen – handlebar ribbon cable entry
Only the two lower setscrews held the original grip in place, but I made the plug tall enough to engage all four, which meant it needed a side port to ease the ribbon cable through on its way to the PCB inside:
Handlebar Grip Mount – plug cable port – solid model
The plastic tube is obviously thicker than the aluminum tube, with four dents capturing the 10-32 setscrews (using a 3/32 inch wrench) to align it within the hole; the bore juuust passes the original connector.
The plug glues into the angle block, which means all the stress from the grips passes through a thin ring of plastic just above the joint. So I added five 1.2 mm OD hard steel wires about 20 mm long:
HQ Sixteen – grip plug steel wires
Five wires, because four didn’t seem like quite enough and six seemed like crowding too much steel into too little plastic. The holes are offset to avoid the setscrew dents, with one lined up directly under the cable port.
A pair of alignment marks help get the orientation right while gluing:
HQ Sixteen – grip angle alignment marks
The control base angles away from the grip, leaving a little more than half unsupported:
HQ Sixteen – base angle vs grip block – rear
Pondering that picture suggested adding those steel wires.
The angle block prints with its upper surface against the MK4’s platform to get good dimensions inside the recess for the plug, so I can’t add a wedge to that surface, nor can it go on the plug. Maybe a separate wedge glued around the plug?
However, the pin header for that cable sits directly inside the base and a transparent cover (not shown here) extends outward over the casting against the grip:
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Each grip has two buttons intended for thumb operation, but at that angle her thumbs lack oomph.
So I added a compensating angle just under the handlebar control assembly:
HQ Sixteen – grip angle blocks installed
Restoring the front part to vertical means she can walk up to the machine, grab the grips at a neutral wrist angle, and start sewing.
Which required several iterations:
HQ Sixteen – grip angle block evolution
The pictures show various setups as we installed, tried, tweaked, and replaced nearly everything along that progression from left to right. They’re similar, but the details made all the difference.
This is an overview of the adapter, with details to follow over the next few days.
The solid model shows how the pieces go together:
Handlebar Grip Mount – show view – solid model
The white chip on top fills the space between the surface of the base and the top of the plug, with some lettering just for pretty.
The greenish plug (not its real color!) sticks into the handlebar control base, where its dimples capture four setscrews. The original grips extended only halfway into the base, leaving the top pair of tapped setscrew holes empty:
HQ Sixteen – unused grip setscrews
The ribbon cable carries signals from the pushbuttons into the base assembly:
HQ Sixteen – handlebar ribbon cable entry
Looks like a guillotine to me, too, but the foam rubber cover prevents the grips from sliding any further into the base:
HQ Sixteen – base angle vs original grip
Despite the metric socket head cap screws used elsewhere on the machine, those are 10-32 setscrews. Took me a while to figure that out, as 10-32 setscrews are visually indistinguishable from M5 setscrews, but neither screw will thread into the other’s nuts even though their wrenches are equally sloppy fits in the other screw.
The angle adapter block has an intricate geometry:
Handlebar Grip Mount – show detail – solid model
Because I don’t know the proper angle, the OpenSCAD model includes enough trig to adjust from 10° to 30°, with the default at 20° to set the front of the grips vertical. The lower part of the block can extend to lower the grips if that turns out to be necessary, but we’ll start with zero millimeters.
The grips slide into the bottom of the angle block where they’re captured by four M4 setscrews threaded through square nuts:
HQ Sixteen – grip angle square nuts
The big washer over on the right sits under the screw I used to pull the nuts into their recesses, where they sit firmly without adhesive.
The first iterations used heat-staked brass inserts that didn’t provide enough griptivity against the torque generated by shoving the grips sideways. I probably applied more force than they’ll ever see in real life, but I’m no Hulk and I didn’t like the feel.
The upper plug gets glued into the lower angle with JB PlasticBonder urethane adhesive. Had they been finished, the first two iterations would have had screws through the angle block into brass inserts in the plug, but I realized adhesives would work much better. A pair of index marks aligns the two pieces:
HQ Sixteen – grip angle alignment marks
It’s early days, but the machine fits her much better than it did before.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters