Adventures with the Workshop 88 Cupcake

Driven by both my desire to be able to 3D print stuff for myself and desperation at needing to be able to do reasonable 3D printing demos for the schools and libraries that are asking us to do them, I decided to jump into Workshop 88′s old Makerbot Cupcake printer.  Many thanks to Bill Paulson for shepherding me through my first prints (and repairs).

This post has 2 main parts: The first is some details about the Cupcake for (me or) whoever needs to work on it.  That’s a mix of just factual stuff about the hardware and some history behind how some of it came to be.

The other part – probably much longer and less organized – is my history of making peace with the beast, fixing it, maybe some successes.  Here we go.

W88 Cupcake Details and Background


We bought the Cupcake kit from Makerbot for maybe $575 on a near end-of-life Father’s day sale in <some year>.  Various people put it together, and we got it running.

Early in its life, we took it to an OSMOCES event.  Due to a misunderstanding of how the table legs worked (!?), it fell from table height to the floor.  It suffered some cracks, but still worked.


The brains of the printer is a RepRap V1.2 Sanguino motherboard (A).  It has its own power switch (not visible under the ATX power cable) which is rarely turned off, but is helpful to know about for when it is.  The board talks to the PC via an FTDI USB cable plugged into a 6 pin serial header (B).  (The chip must be in the slightly extended USB plug.)  We run replicatorg v40 software on the PC, but there’s another package from Makerbot that should also work.  This is all the “Gen 3″ electronics, and the mother board seems to be running 3.0 “firmware”.  There is a later version, but since it was said to only contain new code for stepper extruders – which we don’t have (yet) – there was no reason to upgrade.   I think later firmware may also support acceleration – alleged to dramatically reduce the noise and vibration the bot see from its X and Y steppers, so it may still be helpful.

The motherboard was set up to talk to other controller boards both via TTL over ribbon cable and via RS485 over Cat5/RJ45 cables that are NOT ETHERNET!  The only 485 link on ours (C) is to the V2.2 Extruder Controller board (D).  That board provides several things for the extruder:

  • A thermistor input for controlling the hot end temperature.
  • FET-switched DC to the extruder heater.
  • FET-switched DC to the Heated Build Platform.
  • A thermistor input for controlling the temperature of the HBP.
  • H-bridge output to run the DC extruder motor.

Unfortunately, the combination of the H-bridge and the DC motor often fails.  We (Bill, I think) implemented a published hack using a beefy MOSFET on a bit of perfboard (E) to control the motor.  That hack board also gets power directly from one of the power supply’s 12V DC connectors – a much better source than the extruder controller – which gets power for both heaters and the motor over the Cat5 cable!  The hack board still uses the H-bridge output from the extruder controller, but with virtually no current draw to run the MOSFET.  That hack failed ~3/14, and Bill replaced the MOSFET, returning the extruder to operation.  There’s currently a blue LED across the 12V leads to the extruder motor so we can see when it’s getting power.

While the Extruder Controller does provide power directly to the Heated Build Platform, the large current to the extruder hot end heater was judged too much for that board to supply.  So the FET-switched 12V that would go to the heater goes to an added-on dual relay board (G), which again gets power directly from the power supply, and noisily connects and disconnects that power to the heater.  There’s currently a red LED across the power leads to the heater for a less subtle indication of whether the heater’s on than the slightly different clicks from the relay when it makes and breaks.  Its second relay is not (yet) used.  There’s also an LED on the Extruder Controller board for each of its FET-switched power outputs.  That controller board has one unused FET-switched DC  channel, one unused H-bridge, and I think an unused thermistor input (A7).

The motherboard’s non-RS485 connections go via short 10-conductor ribbon cables to the 3 Makerbot V2.3 stepper controller boards (F) (one hidden by the heater relay board (G)).  The RJ45 RS485 connectors on those boards are unused.  The stepper controller boards get power directly from familiar 5/12V “disk drive” power connectors from the power supply, and have wires running directly to the X, Y, and Z stepper motors.

That about covers the imposing mish-mosh of electronics on the side of the bot.


The extruder is a MK5.  This clunker uses a geared down DC motor with a hobbed drive wheel to push the 3mm filament into the hot end.  A delrin block forces the filament against the drive wheel, adding friction and requiring a thumbscrew to be properly tightened.  (The setting is “very tight”.)

Nozzle1306It looks like the nozzle is 0.5mm.  The diameter of freely extruded filament is about 0.65mm.  Hmm – looks like I should wipe the nozzle off more often.

This combo fails a lot – stopping feeding either by stripping the filament or the delrin block being too loose or motor failing or failure of the original H-bridge on the controller board.  All the cool kids have long since replaced them with stepper extruders.  The steppers can reverse and suck the filament back out of the hot end, essentially cutting off the flow of molten plastic almost instantly – and restarting it just as quickly.  This provides dramatically fewer “strings” of filament in places where they shouldn’t be.  In addition, it provides much better control of the filament feed rate.  The word on the ‘net is that a stepper extruder is the best upgrade you can do for a Cupcake.

The DC motor provides quite poor speed regulation, and although it can nominally be controlled via PWM, most people just run it at full speed (PWM value 255) or stopped.  I haven’t found whether the original extruder controller would ever try to run the DC motor backwards to get better stop/start control, but the MOSFET hack only allows it to run forward.

DumbThumbscrew1361A major limitation is the thumbscrew/delrin block that holds the filament against the drive wheel.  It has virtually no ability to adapt to variations in filament thickness.  I guess the designers always used perfect filament.  Completely in agreement with a comment by Jim H, I’ve tried hard to figure how simply to insert a spring in series between the thumbscrew and where the delrin block touches the filament.  A leaf spring?  A block of crushproof rubber of the same cross section as the block?  The location of the nut in the current setup doesn’t leave much room to work with.  Maybe plates on front/back of the whole thing extending off to the right so the nut could be relocated much farther out?  That would give a lot more room to play, but would be a hassle.  Then maybe nut in the same place but supported by a spring instead of those 2 bolts?  Hmm – the nut’s got to resist torque, too.  There are spring loaded parts on Thingiverse – even for the DC motor, I think – to do what we want.  But by the time we do all that, it wouldn’t be much more trouble to build a (spring loaded) stepper drive.

It doesn’t make sense to put much more money into this printer, especially since we’re ordering a new Kossel kit.  But it looks like Bill has some steppers and Pololu controllers, and had even started printing a mounting for a stepper extruder.  He’s buried in this year’s Thotcon badges right now, but I’ll investigate whether I can parlay those parts into a stepper extruder before the next kit comes in in a few months.

Jim’s Adventures and Lessons

Aside from tightening some loose idlers on the Z-axis belt and taking the top part of the extruder apart to clear out a filament jam, the first real repair I made to the Cupcake was on 4/3/14 when the HBP stopped heating (and lighting).  The replicatorg control panel showed its temperature as 1024 C.  If it were actually that hot, it would make sense that the heater wasn’t on, but that seemed unlikely.  While Makerbot has removed a lot of the support info for Cupcake from its web site (Boo!), I was able to find a schematic of the HBP, and verified that 3 wires with +5, Gnd, and signal went to a voltage divider on the platform consisting of a 4.7K resistor and the thermistor.  An ohmmeter on the end of that cable that went to the A6 connector on the Extruder Controller showed 4.7K between 2 leads, with the other open.

HBPthermistorBreak1234StrainRelief1244I took the HBP off and opened it up.  Sure enough, the ground wire had come unsoldered.  I was a little surprised – I expected the failure to be a wire fatigued and broken from the constant movement of the platform.  After I soldered the wire back, I added a little strain relief as protection from the failure I expected.  It worked fine when I put it back together.

Don’t print small

While trying to find something I could print and hand out at a session at Addison Public Library, Jim H suggested (3D) printing on paper or cardboard.  The idea of printing up an array – maybe 3×3 on the 10cm x 10cm print bed – of small cards with some minimal 3D printing seemed like a great fit.  Some googling found that others had succeeded in having prints stick to paper.

So I made up a little “3D” in inkscape, imported to my new friend tinkercad and exported a .stl ready to print.  I made it pretty small – 1.5 x 1.5 cm – so I could print a bunch in one round.  The results were terrible.  I’d had similar problems with other small prints.  I think it stays too warm and mushy and it’s too unsolid to provide a good base for higher layers.  Maybe without a heated platform?  Anyway, small prints seem pretty well doomed, at least on the Cupcake.

SmallIsBad1286So I made it bigger – 3 x 3 cm.  That was much better.  Unfortunately, that shot my idea of printing a whole bunch at once.  Once there was anything to make the card a little more interesting, I wasn’t going to be able to print more than maybe 2 in one shot.

AbsJuice1283The first print on paper just didn’t stick at all.  But when I swabbed the paper with “ABS juice” first, it stuck pretty well.  I’d made up some ABS juice – bits of ABS scrap dissolved in acetone – after reading rave reviews from almost everyone who’d tried it.  I guess it left a thin layer of ABS on the paper that let the printing grab hold.

FirstCardPrint700-1268Unfortunately, while the bottom layer did adhere to the paper, the curling forces of the ABS shrinking as it cooled were way too much for the paper to resist.  (I’m sure even the 110lb card stock I stock would be no match for it.)  So in curling, the ABS lifted some from the paper.  It was still fairly well attached, but clearly not completely bonded.  I could make a much nicer handout by printing on the Kapton-covered bed to get flat prints, then gluing them on the paper.  But that’s just too inappropriate for the task.  I’m not sure what I’ll do.  But it was a really neat idea!

Hmm – I think PLA is supposed to shrink a lot less.  I’m not a fan of it, as it’s much weaker than ABS, and for most of what I’d print, the mechanical strength is important.  But for a thin throw-away demo on paper, it might be fine.  Guess I’ll have to try to beg some on the W88 list.  Boo.

W88 logo

I’ve been working on a good .svg of various flavors of the Workshop 88 logos for quite a while, first inspired by wanting to carve it on the Shapeoko.  But I’ve finally gotten something decent, and now that I’ve found I can import to tinkercad (thanks, Andrew!), I’ve tried to 3D print it.

W88Logo700-1227The first attempt wasn’t too bad.  I happened to run out of filament near the end, and switched colors – a nice touch.  But it’s supposed to have a background, and have the letters attached by more than strings that shouldn’t be there in the first place.

Unfortunately, tinkercad has precious few tools, and nothing that can capture an existing shape (like the overall outline of the shield).  Back to inkscape to add the bottom.  Then import to tinkercad, tweak, save as .stl.  RBW88CoinBefore1253RBW88Coin700-1257But it does give me something I can print.  This time I changed colors on purpose, very slightly before the bottom layer was done so most of the top layer would be the new color.  Here it is before and after about 10 minutes with an Xacto knife.

Flaw1-1264Flaw2-1265Even besides the strings, the print was far from perfect.  It lifted up in one corner.  (I might have mashed that down repeatedly with the spatula as it was printing.)  And for reasons mysterious to me it screwed up across the top, starting and finishing nicely, but messed up in the middle.  Mystery.  Update:  Bill suggests, and I believe, that the problem across the top was that the errant layers just didn’t stick to the layers below.  The natural tendency of the stretchy filament is to take the shortest path between places it’s tacked down to, and I expect that’s what’s happening here.  My best guess would be to decrease layer height so each layer is better smushed to the prior, allowing it to stick.  And the weird thing near the bottom was probably due to bad adhesion to the platform in that section (missing kapton, I think).  The stretchy thing explains the path.  As the extruder tried and tried to put the filament in the right place, it eventually got better.  I like the stretchy explanation.

I still haven’t gotten a formula for how fast the filament moves or even the time between say when filament enters at the top and when the new color is printing clean.  I really need those if I’m going to try to make good multi-color-via-multiple-layer prints.  Someday.

Update 4/4/14:  I did some actual tests at the space last night.  At full speed (from the control panel, extruding into space) it took 50.8 sec to suck in 2″ of filament, for a filament consumption rate of 2.36″/min.  Feeding a new color in, it took 2:50 between the time the old color disappeared into the opening at the top and when the new color was pretty completely in the output stream.  That’s 150 seconds of all-old color plus  20 seconds during which the color fades from first to the second.  I note that even after it’s all new color coming out, if the feed stops (print done), head stays hot, and then flow restarts minutes later, there’s a short burst – a few seconds, fading – of the original color again.

Update 4/7/14:  RPBlogo1311I played with the slicing config some more, and while it’s not perfect, I think I’ve improved it.  I added another layer to the logo to get an actual red, white and blue print.  Figuring what the red layer needed to look like was slightly more challenging than I expected.  But how do I know when to change the filament?  I came close, but not quite a cigar.  If I had started the white just a little earlier – one more layer of white – it would have been pretty good.  But I didn’t, and it wasn’t.

The “WORKSHOP” letters are just below what the filament size resolution can reproduce decently.  But now that I’m this close, I’m willing to make it bigger.  If I fill the whole print bed, the 6.5cm object becomes nearly 10.  That can only help the fidelity of the letters.  For the record, let’s go thru the whole process of making it bigger and figuring out when to change colors.

Back in tinkercad, I took the logo above and stretched it to 9.8cm tall.  I reduced the just-increased height to 7mm.  (The first one was 5.)  In Design, did Download for 3D Printing -> STL.  I opened that file (w88logorwb3.stl) in repg.  Apparently I’d clicked Download before it was quite done with the size change, as it was the old size.  Redownloaded as w88logorwb4.stl.  Bigger.

Not10x10-1313Unfortunately, our build platform isn’t actually 10cm x 10cm, due to screws holding the platform together.  Looks like I have barely 8.5cm clear side to side.  Resized in tinkercad to 8.9 x 8.33 x 0.7, downloaded as w88logorwb5.stl, opened in repg, generated gcode, opened gcode in 3DGenius.

OK.  Looking at the layers, the last blue is layer 5.  That layer takes 217 seconds.  If I want half of the 150 seconds of all-old color on that layer, I need to start about 142/217=2/3 of the way thru that layer, or after ~2:22 into that layer.  The first layer prints vertical lines, then horiz, vert, horiz, vert, then horizontal layer 5.  I have to keep track of that to know when to switch to red.  The total time for layers 0-5 is 1676 seconds, so I’d expect the change to occur after about 1600, or 26:40.  At 2.36″/min, I’ll need ~63″ of blue.

Red is layers 6-12.  The last 3 layers print the top area with vertical, horizontal, vertical lines.  Layer 12 takes 139 seconds, so again if half the old color is on that layer, I need to change just about 1 minute into that layer.  Total time for red is 712 sec, so I’ll need ~28″ of red.  Assuming the 3DGenius times are right, that should happen just about 37:36 into the print.  Yeah, right.  I’ll try to run a timer and see when it actually happens.

SpoolHolder1319White is layers 13-18, for 814+75 sec, so I’ll need ~35″ of white.  I guess I better set up a spool holder.  Here’s a crude one using a tripod.

Back to finding when to change colors.  If you turn on “Analyze” in the slicing profile, repg pops up a nice screen that lets you look at each layer of the print.  From that and the knowledge of how I’d created the object, I could see what layer each color could start at.  And while it did give line numbers from the gcode file, there was no time information.  I needed to know where 2:50 before the color change was in the print.

I found an online gcode visualizer called 3DGenius here that lets you upload gcode and provides a similar layer by layer view, but also provides time for each layer.  Stepping thru the model, I recorded the time for each layer.

Bigger W88 logo and extruder stuff

Took about 5 tries to get it started, for various hardware and operator issues.  Screwed up ~19 min in (layer 1) and stopped feeding.  Retightened thumbscrew, got it started again.  Same again next layer.  Maybe the thickness of the blue varies a lot?  Stopped again.  Paused print, pulled filament out, cut off, reinserted, restarted – seems to be extruding!  Added maybe a minute to the build.  Failed again soon; gave up and stopped the print.

Cleaned it all off, started fresh.  Failed a few minutes in.  Tightened screw, got it going again.  Failed again.  Gave up.

BlueFilament1293Read up on bad filament.  Amazon reviewers of the JAG blue stuff we have uniformly gave it 1 or 2 stars.  Main complaints were off size and embedded air.  Made 10 pairs of measurements on the blue stuff maybe 4-8″ apart, at 90º to check roundness.  It’s pretty bad.  Mean inside-outside of spool curve was 2.74mm, std dev .05mm.  Side to side mean 3.16mm, std dev .042.  That’s pretty oval for a delivery mechanism with a thumbscrew for diameter adjustment and no spring to adapt to variations.

NewSpoolMount1327OK – I can see that the dumb thumbscrew set for one way would be pretty bad the other.  I had set the spool up kind of at the corner, so if it twisted, maybe it went from fatways to skinnyways.  So I cleaned up, moved the spool exactly to one side, so it should always feed the skinny way, and tried again.  Failed just the same way.

Thinking about it, I’ve loosened the thumbscrew and pulled the filament out a few times now.  When it’s not extruding despite tightening the thumbscrew, it’s very hard to pull out, even to the point that  I’m even a little concerned about breaking something.  When I pull it out when it’s working (like to change colors) it pulls out easily.

But uniformly, whenever I put a new filament in and push it down by hand into the hot end, it will start extruding with only moderate pressure on the filament.  That says the nozzle isn’t clogged – but somehow the whole extruder was when it wasn’t feeding.  So maybe the filament gets soft above the actual heating chamber, gets fat and runs against the sides of the tube, and won’t move much.

I don’t know exactly what the design thinking was for this hot end, but there has to be some kind of thermal brinksmanship:

  • When the cold filament goes into the top of the stainless steel tube, it’s clearly in the state we see when we handle it.  It’s quite stiff against lengthwise compression, and slides freely in the tube.
  • In the heating chamber, the filament material is very much melted, and while viscous, can easily be squirted out the nozzle.
  • Exactly where is the transition between the two?  It has to be somewhat spread out vertically in the tube.

If the bottom of the tube is too hot, the filament can get gooey too early.  So is the problem that the tube (which has a little dinky heat sink ring on it) too hot?  Would cooling it help?

Thingiverse has several fan shrouds for the common 40mm fans – which won’t quite fit between the 35mm spaced dinos.  (Is that the right word?)  So others must have wanted to cool the tube.  OK, we’re desperate – let’s install a fan.

KilnPaper1331KilnPaper1357Because of vertical pieces of structural plastic blocking crosswise air flow, I decided to blow air from front to back across the tube, but didn’t want to cool the actual hot end.  The dino blocked most of where I wanted air to go, but had enough open that it felt like I could get at least some air on the tube – including on the hottest part.  I had some ceramic kiln paper and fashioned a little protective pad to keep the airflow away from the hot end.

Fan1332I found a 12V 90mA 40mm fan in the junk box and made up a little bracket for it from two thicknesses of the 0.009″ heavy aluminum foil from a catered-in lunch tray that just fit over two screws on a FanInstalled1339horizontal plate.  The only air flow is from the lower third of the fan, but I hoped that would be enough.  After all, the original design didn’t have a fan at all!

FanPowerConn1351Continuing that logic, I figured just the gentle breeze from running the 12V fan on 5V would be sufficient.  There was a free 5/12V disk connector with 0.1″ sockets, so I made one of my usual hot melt-insulated male connectors for the fan, using 2 adjacent pins for 5V (red) and ground.  I tried another print, and while it might have held out a little longer, it still stopped extruding about 10 minutes in.  Damn.

Thankfully, the symmetry of the disk connector provided a plan B:  By flipping the male around, it got 12V instead of 5 (as shown in the picture).  The fan makes a lot more noise, but is still running completely within it voltage spec.  (Although blocking much of its airflow may not be.)

One last try.  It failed, but I paused the print, pulled the filament out, cut it off, stuck it back in, restarted – and it started extruding again.  I smushed the little lump where the head sat while I was changing filament with the spatula.  A couple more restarts, but it got all the way through the blue layer!  Maybe the red isn’t as finicky.  And the red worked and didn’t jam!  And neither did the white!  I got a print!

LiftedEdges1352There were a couple of places where it stopped printing before I noticed, so there are moderate gaps in some layers.  I only had enough kapton tape for 3 stripes instead of 4, so the edges lifted a little, despite applying several layers of ABS juice to the naked aluminum plate.  There were a few of the strings stretched across the top outside like in the first one.  But it worked!

LogoRWBbigRaw1345W88LogoRWB1348Here’s before and after some quality time with an Xacto knife.  As hoped, the letters are a little wider and look better.  I guess the ‘K’ was just the victim of digitization.

I promised wouldn’t spam the email list with any more updates on this, so I’ll just post the nicer picture on the W88 blog with a link here.

Extruder collected thoughts

As of 4/8/14, here’s a summary of what I think about the extruder (with additional musings on the Cupcake proper).

  • The number one problem I see is the non-particulate clogging of the hot end where (I think) the filament above the melting chamber gets soft enough or sticky enough to stick/jam in the tube.  This only seems to happen after ~10 minutes of extruding.
  • As long as #1 persists, it’s not worth putting much energy into the printer.
  • A stepper probably won’t help the #1 problem.
  • I fear there may be contamination in the tube that eventually gets hot enough to slow down the fresh filament.  That’s just a theory, and would require tearing the hot end apart to clean/check it out.  That’s a fair amount of work, but it’s the only way to fix it (if that’s indeed the problem) short of replacing the hot end – an expensive fix for an old printer that’s about to be superseded.
  • I think the fan helps the #1 problem, but clearly doesn’t eliminate it.
  • I suspect the many people who claim a stepper extruder is the best thing you can do for a Cupcake are right.
  • Problem #1 notwithstanding, I’m tempted to consider somehow spring loading the delrin block to remove filament variation problems from the situation.
  • I’d be tempted to continue the work Bill started on a Wade’s stepper extruder – taking advantage of his prints, his stepper and his Pololu stepper controller.  The “ugly cable hack” sounds pretty easy and is free.  But #1 stands staunchly in the way.
  • The blue filament is clearly out of spec.  Its ovalness is bad, but if fed at a suitable angle (so the pinch wheel always sees the same (narrow) dimension) it’s probably not a very big problem.  I’m pretty curious whether it has a particular thermal problem and other colors/suppliers are better.
  • I’ve ordered some 5cm PET tape for the build platform.  It’s alleged to be a little better than kapton, and 2 strips would cover the bed.
  • ABS juice (1 cm 3mm filament in 10cc acetone) really is a big help making prints stick.
  • The little work platform out the back makes re-taping the HBP easier.
  • If we keep prints short, the Cupcake is probably still useful as a beater to drag out to demos, though it certainly doesn’t show what current printers can do.
  • Maybe we haul the Cupcake plus a box full of sample of high quality prints.  We have a box of some on loan from James – thanks!


In hopes of someday being able to provide audible indication of when to change filament color, I added a small noisemaker to the bot.  (I couldn’t find a way to display an indication on the repg screen.  M01 displays, but stops the print!)  After digging thru the code a Beeper1293lot, I discovered that M106/M107 gcode commands will make it thru the maze of software and hardware and control Channel C on the extruder controller board.  I added one of the square piezo buzzers from the space with a 100uF cap across it to that output.

(There was moderate false hope with M70/M71 for a while, but those print messages on the bot – assuming the bot hw/sw support it.  Obviously, there’s no display on a Cupcake, so that can’t work.  But it made very clear the distinction between something happening in repg and on the bot.)

I don’t want to delay the print with much time between the M106 (on) and M107 (off) codes, so the cap allows even a short on time to give a reasonable decaying noise.  Now if I can just get a method of finding where to insert those codes…

Update 4/8/14:  Still no way to find where to insert the codes.  I did try to insert some at a random place or 2, but don’t remember hearing the beeper (though I wasn’t intently standing there listening for it).  Either it didn’t actually work or the machine makes so much noise it drowned the beeper out.

Opening the gcode up in 3DGenius provides enough information for you to figure out about where you might put the warnings, but only by line number.  You still need to open the gcode in an editor with line numbers and re-save it.  The skeinlayer feature under Analyze in repg probably also provides enough information.

While changing colors on the fly by cutting off the old filament and pushing the new in (hard) until it catches in the drive wheel pretty much works, if you push very hard you’re likely to crash the extruder head into the print, possibly doing damage.  An alternative is to pause the print, loosen the thumbscrew, pull out the old filament, insert the new, push it down (all the way into the melt chamber, but not too hard), retighten the screw and unpause the print.  There will be some combination of a gap in the extrusion while it restarts plus a little lump of drizzle where the head parked.  Flattening the lump out with the spatula is pretty workable, and a small gap isn’t a big deal, either.

USB cable clamp

Since the Cupcake is getting moved a lot these days – home, space, gigs – I’m a little more aware of the cabling.  The power cable is fine, but the FTDI USB cable isn’t.

CableClamp1298UsbCabledClampedB1305There wasn’t one the right size in the junk box, but this cable clamp bent from a from a sheet of ~50 mil white HDPE scavenged from a large bottle looks almost like the real thing!  And now I’m a lot more comfortable that the USB cable isn’t going to do something bad in transport.  I’ll probably replace the 6-32 with one of the black hex M3 screws the cool kids use when it gets back to the space.

HBP tape replacement support platform

PlatformWorkSupport1317During a recent print attempt, the filament stopped extruding, and I pushed it down into the extruder to try to get it started again.   Unfortunately that crashed the nozzle into the HBP and scraped some of the kapton tape off, and I had to replace the tape again.  Since it’s awkward to work on the HBP because the heater and thermistor wires are short,  I made up a crude support platform to make it a little more convenient.  It seems to work OK.

Tip:  To restart a stuck/stripped filament, don’t push it down.  The Z platform isn’t rigid enough to resist that force, and you’ll damage the print or the build platform.  Since the problem is usually a stripped spot in the filament, just turn the filament so a fresh place is exposed to the hobbed shaft.

Lots more to be added…

Posted in Cupcake 3D printer, Uncategorized | Tagged , , | 3 Comments

Arduino 301 class post mortem

The 301 class went well, but far from perfectly.  Despite scheduling the class for 3 hours instead of 2, I was once again overly optimistic about what I could get covered, and left a lot undone.

Of the original outline below, we only got through servos.  The rest of the motor stuff – including the robot lab – didn’t make it.  I’ve considered hosting another session, just to cover the rest.

•Arduino pins:  What you can connect directly
•For more muscle: Relays, Transistors
•Solid state relays and 120VAC control
•Movers: Servos, DC motors, Solenoids, Steppers
•Bonus demo:  BLDC motor intro

What went well

I was pleased with some administrative bits:

  • I thought the slides were quite good, and I was pleased to have them.  I believe they let me make a lot more progress than I would have without them.  They’re not quite complete, but here’s a copy as of class time.
  • As usual, I used FreeMind to keep track of some initial thoughts about the class.  It was helpful, but hardly a silver bullet.  Probably an outline or bullet list would have been about as good – though it would have required hopping around more.  Here’s a snapshot of the latest (and probably lastest) version.
  • The “Please have your Arduino, IDE, and  breadboard fired up and ready to go.” on the Welcome slide was good.
  • By following the slide with what we were going to cover with the “introduce yourself” round, people got a chance to say what they were looking forward to and what they were already familiar with.  Can’t please everybody, but it was helpful intel.
  • Starting with the “what we’ll cover” slide above and bringing it back as the intro to each section (appropriately bolded/greyed) at least seemed like a good idea to me.
  • Distinguishing between Arduino-specific stuff and basic electronics stuff and mentioning which we were doing on each section’s intro slide seemed appropriate.
  • Distinguishing between Atmel stuff and Arduino stuff was also valuable, and I think went well.
  • I think the list and organization of what all should be covered in a “control the world” class was pretty good and complete.
  • Thanks to Jim H for taking some pictures.

Some content-specific stuff:

  • I was pleased with introducing high- vs low-side switching.  Referring back to that when discussing the two polarities of bipolar and field effect transistors was very good.  (Or at least the teacher thought so.)
  • I liked having some relays to pass around, and the reed switch/magnet/LEDs pass around was very nice.  (Or at least the teacher thought so.)
  • I was quite pleased with the analogy pictures of using transistors (both kinds) as switches.
  • The labs using bipolar and field effect transistors went pretty well, and I think were valuable.
  • The lab switching 120VAC with an SSR went well, despite safety squawks from one student.
  • The servo lab went pretty well.
  • I liked the idea of a paper lab designing a circuit with switches to run a DC motor either direction as part of H-bridge intro.  Everybody at this level ought to do that exercise.


Some general stuff:

  • The labs took a lot longer than I expected.  Will I ever learn how to predict that?
  • One of my goals was to try to make looking at datasheets less daunting by hand holding thru important parts of relevant ones.  Probably mostly because I wasn’t prepared well enough with instant links to all the datasheets, I made very little headway with what I think is a valuable lesson for a class like this.
  • Be sure to ask students to take pictures.  Provide a camera, but try to have pictures happen even though you’re going to be way to busy to take them.

Content specific stuff:

  • I went to a fair amount of trouble to have a PC/projectable scope to show PWM waveforms, but didn’t do the last 5% of the prep to be able to just pop it up, so it didn’t happen.  :(
  • I don’t think I waved a PWMed LED back and forth to show strobing and crude estimation of duty cycle.  Maybe I need to make up a little dedicated demo – even with a 555 – and a really bright LED to show this off.
  • I failed to have a good demo of how much better PWM is than varying voltage to an LED/resistor pair.
  • Lack of prep meant I didn’t have a good demonstration of inductive spikes and snubber diodes.  I failed to leave the “If you’re switching any kind of coil, always use a snubber diode!” message burned in.  Shame on me.
  • I was amazed that both the 2N2222s and FETs in the labs got hot with my driving and loads.  I needed 330 instead of 1K series resistors with the 2N2222s.  I tested this stuff on the bench.  How did it not work right?
  • While the SSR lab was very good, it was slightly awkward to bring and keep safe the 60W light bulbs.  And a student asked:  Can you still even buy these?
  • I was sad that I couldn’t show the special flavor of PWM for servos on a scope.
  • I should have had some kind of extra extension of each of the labs for students that got done early.  (Early meaning in about the time I expected.)  This is a valuable general rule for doing labs in informal classes like this.
  • Having actual RC transmitter and receiver – and a scope to show the servo PWM waveforms again – would have been a plus.
  • I never finished the stepper section of the slides.  I suppose the good news is that I never got that far in the class, either…
  • I thought the little 5V steppers (with ULN2003 drivers) would be perfect.  Since they were geared down, they were not.  It was annoying that I had to hand modify each of the drivers so it would plug into an Arduino easily.
  • It was too bad I burned out the hard disk motor (or its contacts or something) by driving it with that 20A ESC with a 7.2V LiPo.
Posted in Workshop 88 Stuff | Tagged , , | 2 Comments

Quick and dirty heat sinks

I’ve been pushing a couple of audio amp chips to get as much out of them as I can for another project.  While the expected duty cycle is low enough that I can probably get away without heat sinks for the final application, the parts get pretty hot when they’re run long enough to do testing and make measurements.  It seemed like a good idea to put at least some minimal heat sinks on them.

TDA1518HeatSink0983The larger of the amp chips, a TDA1518, got so hot so fast that I’d already hacked a quick heat sink on to it.  I’d laid the board out so the back thermal surface of the Multiwatt package was flush with the edge of the board, so it was easy to bolt an old TO-3 heat sink to it (with some thermal grease, of course).

ConverterBoard1101But that was only part of the problem:  I was using a DC boost converter to get ~15V from a 3.6V Li-ion battery, and that converter was getting hot, too.  Fortunately, there were a whole bunch of vias to provide thermal connection from the chip to the back of the board.  I found a strange tower-like BoostConverterHeatSink1091cylindrical sink in the junk box whose transfer surface just about matched the one on the back of the converter board.  But how to hold it on?  That nice #7 soft steel wire doesn’t have a lot of spring, but there was just enough for this snake to clamp the sink down nicely, if temporarily.  Some more thermal grease, and I’m sure the chip was very happy to be able to snuggle up to that nice cool aluminum tower!

Max98307Close0975The other amp, a little MAX98307, didn’t handle nearly as much power as the first one, but still got pretty hot.  It had a thermal pad on the bottom, but with my single-sided boards, that wasn’t very useful.  With its tiny top surface, there wasn’t much to make thermal contact with, and other components on the board were taller than the chip, so I Max98307HeatSink1061couldn’t even clamp a large flat sink to it.

I cut and bent up a bit of scrap copper sheet to about the right width, but any movement was likely to short out other components, so a kluge clamp like the one above wasn’t a great plan.  GlueClamp1099I didn’t have any thermally conductive glue, so I used normal 5 minute epoxy and made a single point of contact vertical gravity clamp to squish it out as thin as I could, in hopes that that thin layer wouldn’t present too much thermal resistance.  (I go through a lot of that nice #7 wire.)  A bit of scrap plastic for a base gave the sink a little protection from being cracked off.

As with the bigger amp and converter above, I don’t have any easy way to measure how much cooler it runs, but I have to believe it’s a lot better off than it would  be with nothing.  And all 3 components survived at just below clipping for long enough to make the observations and measurements I needed, so I guess the sinks did their jobs.

Posted in Miscellaneous, Rf starter's gun | Tagged , , | 3 Comments

Tiny85 ISP cable mini shield for Mega

Well that was embarrassing.  I thought I could knock out a quick mini-shield for an Arduino Mega to use as a programmer for Tiny85s (or most any other AVR chip).   I did, and it works, but only after two iterations of repairs due to dumb.  And it’s still not close to ready for prime time.  (But see update at end.)

IspCable6pin1093The shield I made for pre-Megas was small and simple.  (The one at the right is the simplest – no LEDs.  Current ‘production’ versions have the heartbeat LED; my personal “good” one has error and comms LEDs as well, but it’s the only one I made that way.)  The shield picks up the SPI connections (10-13) (plus one or more of the pin 7-9 LED lines) on one side and spans over to pick up power and ground on the other.  Convenient pin placements, and I took advantage of it.

The Mega’s pinout is the problem.  The ArduinoISP sketch apparently uses the actual SPI pins on the host processor to talk to the target.  Those are brought out on (Arduino) pins 50-53 – on that long new header across the end of the board.  Very inconvenient for a mini-shield.

DumbMegaIspCableOnMega1000BUT – because SPI is also used for programming the chip, the lines are also brought out on the 6 pin ICSP header.  (Well, most of them.)  That’s much closer to the LED pins (7-9).  And the ICSP header has the power and ground I need, too!  If I oriented the shield diagonally, I could get everything I needed (or so I thought) on a shield about the same size as the ones for pre-Megas.  I laid one out (with thanks to SparkFun for having an Eagle footprint for the Mega board!)  That it’s crooked-wise sort of adds a little charm.

So I made one up and tried it out.  Couldn’t load Arduino ISP.  Right – it’s got the cap to keep the programmer from resetting when new code is sent down.  Took the shield off, programmed ArduinoISP fine.  Put the shield back on and connected the cable to the ICSP header on a Duemilanove.  (I didn’t want to load code to it – but if I could confirm the device signature that would mean I could talk to it.)  Fired up avrdude and got the command line params right in just a few tries.  But it didn’t work – and just gave some unintelligible error message.

Dumb # 1

I looked at the ArduinoISP code, and slowly the line “#define RESET SS” sunk in:  I didn’t connect RESET on the cable to the target to the host pin (53/SS) they’re using to control it!  I’d gotten so delighted with using the ICSP header on the Mega host that I connected the target’s RESET to the host’s!  Well that’s just wrong.

Took the shield back to the bench to hack the correction in.  I was going to have to add a darn flying lead to get out to pin 53 (SS, the pin ArduinoISP uses to control the target RESET).  That would never do for the production version, but at least I can get this one running.  To disconnect the target RESET from the host’s, I ground the pin from the female header to the host’s RESET pin off below board level, and patched the new pin 53 wire to the wire to the target‘s RESET, and made sure it was also connected to the 10uF cap.  Back to try again.

Dumb # 2

Still didn’t work.  Eventually it came to me:  That 10uF cap goes to the host‘s RESET pin, not to the target’s where I’d hacked it to!  And more bad news:  the host’s RESET pin was the connection I’d ground off to below board level.  No way was I going to be able to connect to it now.

DumbMegaIspCableCloseup1003So I removed the 6 pin female header, cleaned out the holes and soldered a new 6 pin female in – this time with all the pins accessible.  A little trace cutting and finessing with bits of wire and I had everything connected to where it should be connected.  And this time it actually worked!

I hadn’t been sure which programmer to tell avrdude to use.  It seems to be happy with arduino, avrisp, stk500, stk500v1, stk500v2.  So now it could read the device signature and even dump some flash.

Now what?

OK, now I know how to make it work.  But I can’t do it with a “mini” shield.  And I really don’t want a flying wire.  Can I just use a different pin to control the target’s RESET?  I tried pin 2 (after also adding a pinMode(2, OUTPUT)).  Nope.  But the prospect of having to run a hacked ArduinoISP sketch was pretty bad anyway.

I can get all the SPI pins (50-53) plus power and ground from that new long header across the end of the Mega.  But then I don’t have the LEDs.  Yeah, there are lots of pins on that header that I could re-assign the LEDs to.  But then we’re back to a hacked ArduinoISP sketch.  The minimalist size of a shield using only that long new header is very appealing, and very much in the spirit of the original mini-shield.  But I really like having at least the heartbeat LED.  I suppose I could put the LED on, connected to some other pin, and say you can get it to work if you change the one line “#define LED_HB    9″ in the sketch, but that it will still work (without the LED) if you don’t.  And most people don’t even know about the LEDs in ArduinoISP, so not having them isn’t really a loss.  (But I know about them :( .)

Update 1/29/14: I’d almost settled (with all the negative connotations) for using only the new header on the end of the Mega (with remapped LEDs).  With something like “#if defined __AVR_ATmega2560__” I could even toggle the LED pin defs so I’d have an ArduinoISP sketch that would work with either mini-shield.  But when I started to lay it out, I realized that doesn’t give me access to the host’s RESET line to connect my auto-restart-defeat cap!  Bummer – that’s a non-starter.

Or I could just make a huge (by my “mini” shield standards) say triangular shield across the whole new header and going up to pins 7, 8, 9 for the LEDs.  But I’ve lost the “mini” part.  (Oops – that doesn’t give me the host’s RESET.  Won’t work.)

PossibleMegaShieldI guess it might be possible to do a long, skinny shield catching 7, 8, 9 for the LEDs, the 6 pins on the ICSP header, and then going out to pick up pin 53.   But they don’t really line up very well, and that’s kind of weird anyway.

Extremely minimalist (no LEDs, no PCB!) would be a piece of ribbon cable with two 2×3 female header ends.  But the RESET pin wire from the target end would be a couple inches longer and not crimped into the connector at the host end.  Instead, it would just have a 0.025″ pin attached.  Plug that into pin 53 on a Mega or pin 10 (SS) on an old 328-based Arduino and it should work.  Rats: That doesn’t give me a way to defeat auto-reset either.  OK – a small PCB at the host end would do it.  But more work and still no LEDs :( .

Maybe I should just do the weird diagonal one (wired correctly, of course!) and put up with the flying lead.


1stProductionMegaShield1007More update 1/29/14:  The lesser of evils (at the moment) is the flying lead and the diagonal PCB.  Here’s the first one.  The PCB is corrected, and there’s a nice pad for the flying lead.  I need to make a nice tag/label for the flying lead that says “Pin 53″.  That whiteout Pin 1 mark on the female header is pretty ugly.  But it’s effective, and I finally made the cable come out the sensible way to plug into the ICSP header on an Arduino in case you need to re-burn a bootloader.

Posted in Tiny 85 stuff, Workshop 88 Stuff | Tagged , , , , , | Leave a comment

Tiny85 class

Tiny85FreemindI finished the second run of the Tiny85 class Saturday (1/25/14).  It was pretty good, but as before | always there was room for improvement.  I’ve been using Freemind for the official repository of ideas, todo lists, lesson plan etc, and it’s good and useful, but not perfect.  (And because the file resides on the PC, the snapshot here is subject to infrequent updating.)  I’m hoping this post will add some clarity.

What went well

  • I put slides together this time.  There’s always room for more slides, but for the stuff I covered, they’re OK.  Here’s a link to the latest version.
  • The “Welcome” slide, which was up as they came in, instructed them to download the core libs.  That worked well, but should have said to unzip the file and stash the ‘tiny’ directory where they could find it for when we’d install it later.
  • The ‘lab activity’ of soldering pins and wires to the ISP shields took way too long the first time, so I pre-made them this time.  Actually, it was Jacob who did a bunch of the work.  (Thanks, Jacob!)  The time savings in class is great; the extra work not so great.
  • The blink sketch I pre-programmed into all the Tinys for the class was a sequence on physical pins 5, 6, and 7 this time.  The verify-your-setup instructions were to put an LED on pin 5 and look for a blink.  The blinks on the other 2 pins gave me something to add for those who got done quickly.  That worked out well.
  • The handout sheet I passed out this time was a very good addition.  Here’s the latest version.
  • I liked breaking it up with some intro, hands on fire up pre-prog blinkie and write own blinkie, more yammering about porting, programmers, etc, then actual do it lab, then more on fuses and avrdude and then lab to go to 8 MHz.  The additional stuff after that is almost doomed to never be gotten to.


  • Class still ran WAY over time.  Gotta tighten it up.  Never even made it to fuses and avrdude!
  • I made noise about not depending on some of the magic Massimo put in to hide stuff, but should have stressed more that you really need to be awake to understand who you’re talking to when select boards when you’re downloading ArduinoISP vs the code that goes on the Tiny.  It’s not hard, but more conceptually challenging than noob Arduino.
  • I need to make more sure the invitation says you’ll need an Arduino, a current IDE, and a breadboard, jumpers etc.  And (<sigh>) they’ll need to tell me if the Arduino is a Mega so I can arrange Mega ISP shields.
  • I need to make some ISP shields for Mega.  I have one laid out, but haven’t tested it yet.
    Update 1/29/14:  Tested the Mega cable shield.  Works, but ugly.  Details here.
  • There should be better explanation of the auto-reset on download function, both for general understanding and to explain the 10uF cap and why you can’t have the shield on when you download ArduinoISP!  Maybe roll in clarification of what we do to RESET on host vs target.
  • On the handout sheet, the “Notes/Steps” were misconstrued as a full set of steps to follow, rather than reminders.  Either make it a full set of steps, or name it better.
  • Make much better distinction between serial and USB bootloaders!
  • Is there another fuse bit besides RSTDISBL needed for using the RESET pin?  (Or for 8MHz clock?)
  • Get the dumb demo blinkie running before the next class!
  • The GFCI audio, an RGB LED on a ping sensor and the dollhouse would be great additional demos.
  • Maybe add very basic “what is a UART and why do I care”.  Have a spiel about how to handle serial bootloaders and debug serial.
  • Get around to talking about debug serial!
  • Mention other core libs.
  • Have a good short spiel on what’s in core libs.  Not if-then, but yes millis(), delay().  What else?
  • Mention that bootloader runs after reset, but not power on.
  • Consider a more interesting master slide.
  • Make nice reference to the Adafruit tutorials, including avrdude.

 Next classes

Nothing scheduled for W88, but after I’ve fixed most of the “improvement” list, I’d seriously consider offering to run it at PS:One.

Posted in Tiny 85 stuff, Workshop 88 Stuff | Tagged , , | 12 Comments

Protected: Speaker and amp testing for RF starter’s gun

This content is password protected. To view it please enter your password below:

Posted in Rf starter's gun | Enter your password to view comments.

Kleenex box weights

TwoWeightedBoxes0952It’s annoying when the Kleenex box lifts up as you pull out a tissue because the box is almost empty.

Some heavyish scrap taped to the bottom fixes the problem.  The one on the left is about 6 ounces; I suspect the other’s about the same.  It’s invisible, quick and easy to move to the next box, and it works well.

The only downside is that you lose much of the ‘box is almost empty’ feedback.  That tradeoff is worthwhile for me.

Posted in Miscellaneous | Leave a comment

GFCIs and Christmas lights

OK, the battle has begun.  That darned GFCI outlet has refused to let my Christmas lights run in rainy weather too many times.  It’s time to understand this stuff and update my installation techniques so I stand a much better chance of not getting bitten by this again.

(Just to be clear:  I’m NOT complaining about rainy weather at Christmas time.  Snow is beautiful.  Unless you have to drive in it.  Or walk in it.  Or shovel it. Which I do.  So above freezing temps in the winter are OK by me.)

Understanding GFCIs isn’t hard.  They just look for differences in current in the hot and neutral conductors, and if that difference is ~5mA or more, they figure someone might be getting electrocuted, so they shut the power off.  I’m all for that.

What I don’t understand is exactly where at least the worst of that leakage current is happening in my holiday lights.  Once I understand that, the goal is lengthening the short circuits so they don’t scare the GFCI into shutting the power off again.  Woven into that is separating fact from myth about what matters when trying to make GFCI-friendly wiring for outdoor lights.

This project note is work in progress, and will be updated as progress occurs.  Maybe a good way to manage that once it’s done and working (or failed or whatever) is to rewrite the final story, put it at the top, and keep all the historical ramblings at the end, after a well marked break.

Boolean failure indications

Part of what makes troubleshooting something like this difficult is that the indication of the problem (a tripped GFCI) has only two states:  No Problem and FAIL.

When I co-authored a troubleshooting manual at the last place I worked, I implored the wannabe troubleshooters to avoid getting stuck with a boolean failure indicator.  Lie, cheat, steal – do whatever it takes to get your hands on the instantaneous value of whatever variable triggers the failure when it crosses a threshold.  Get a private code version, use undocumented interfaces, run a debug kernel – but somehow get something that shows whether the changes you’re making are helping stay away from that dreaded threshold value.

Measuring leakage current

That advice obviously applies here – but how do I get my hands on the magnitude of the couple of mA of current leaking to the wet ground?  How about the way the GFCIs do it?  A classic error of beginners with an amprobe type clamp-on AC ammeter is to try to measure current by clamping it around say a piece of lamp cord.  Of course that doesn’t work, since the current in the two conductors is exactly equal and opposite, and they exactly cancel each other out.

But in the GFCI leakage current case, the currents through the hot and neutral conductors are not quite equal.  If we run both main conductors thru a current transformer, and if our transformer is sensitive enough, we can use it to measure the difference in the currents – which is exactly what we want.  And if I could build it into a device with an AC plug and socket so I could plug it inline with the outdoor lights, I could measure the leakage – and more importantly, the changes in leakage as I did various tests!

If there were enough leakage to trip the GFCI on the outdoor outlet (a likely case if it’s wet enough out to do this testing), I’d have to resort to an extension cord from a non GFCI outlet.  Yeah, I’d be outside standing on the wet ground doing unusual things with the light strings – the perfect recipe to get a shock or worse – so I’d better be extra careful with this non-protected setup.

LeakageCurrentAmp1ToroidalAgain6977My old current sense toroids might work with a suitable amp.  I couldn’t easily create tiny current differences, but since I only care about the difference, if I run say 5mA of AC thru a turn or two through the toroid and if the amplified output is enough to work with, it might work.  I can get one turn of a pair of most any conductors through the toroid, but if I cheat and use say 16 ga wire, I should be able to get several (2-conductor) turns thru the core, making the whole design easier.  The total draw of the lights would almost certainly be within the ampacity of that #16 wire.

In initial play, I’ve been able to get ~0.5VAC out for 5mA thru the toroid core, though with a really distorted waveform.  Hum has been a real nuisance.  Maybe an isolated, battery powered design would make that less of a problem.  That 10uF (!) across the toroid was to get rid of RF it was picking up from a local AM station.

Another approach would be to hack a real GFCI.  (Spoiler alert:  That’s probably the way it will be built!)

Possible improvements to test

The changes I’d like to observe the results of with my leakage indicator so far are:

  • Blow outlets and plugs out with compressed air.
  • Spray WD-40 in/on outlets and plugs.
  • Raise outlets/plugs off the ground.
  • Disconnect specific strings of lights.

It will also be interesting to compare the leakage at above v below freezing temperatures.

I expect the final wiring will have outlets on spikes off the ground, covered and with their holes pointing at the ground.  But that won’t be something I can see immediate results from with the tester like lifting outlets off the wet ground.

Hacking a GFCI

Gfci0913GfciOpen0919I had a line cord cut-off – probably from a hair dryer – with a GFCI plug, so I opened it up to see how hackable it was.  Interestingly, while there was a little PCB inside, the control circuitry had no active electronics (no amp after the current transformer).  The mechanical latching relay that opened both line and neutral when it tripped was operated by a solenoid powered (presumably) by just the current from the transformer due to leakage.  The contacts were spring loaded open, and the red Reset button and its (stronger) spring held the contacts closed until the solenoid released the latch and allowed the contacts to open.

GfciCurrentTransformer0923As expected, both main conductors passed through the toroidal core of the current transformer.  There were two interesting features.  First, the main conductors made 4 turns around the core, making it more sensitive than a single turn.  Second, there was a separate, much thinner primary winding (the thin blue wire).  That must have been for the test current.  A nice simple, robust bit of engineering.

When I put ~8mA through one conductor of the main winding (a 0.11uF cap across 120VAC), I measured about 59mVAC across the secondary (white wires).  That should be plenty of signal to work with as input to an op-amp.  And with the PCB and the solenoid removed, there’s a good chance I can squeeze a little PCB with my electronics inside the shell to make a reasonably robust test tool.  (If I want audio output, that will almost certainly require another box, if only for the speaker.)

If this approach works out, I should tear some other common GFCIs (like ones built into outlets) apart to see if I can make a general recipe of how to make a tester starting with most any (probably defective/free) GFCI.  Presumably all we’d need is the current transformer.

My tester

The main purpose of the tester is to provide real-time feedback on the leakage while I make changes in the wiring.  A secondary purpose is to provide a snapshot measurement of the leakage to see how close it is to the 5mA trip level.  Here are some requirements.

  • Must provide some analog indication of leakage current.  (Sound would be convenient.)
  • Range:  From <<5mA (far below GFCI trip) to maybe 20mA.  (And don’t blow up if >> 20mA!)
  • Should provide a calibrated output probably readable with a voltmeter.  Could be AC or DC.  Decimal point doesn’t matter – could be say 0.5V for 5mA.
  • Should provide an audible output that varies with leakage.  Likely is a single tone, probably higher for higher leakage.  Others would be considered – like spoken values.
  • Give the guy on his knees under the bushes a quantitative indication of how much good that spray of WD-40 is doing.  How about having the audible tone drop 1 octave for every factor of 2 change in leakage?  With 10KHz as top, 4 or 5 octaves would give a range of 2^^4 or 2^^5.  Four octaves and 20mA max would give good quantitative indication down to 1.25mA.
  • A range switch would be considered.
  • A reference tone for 5mA would be very nice.  Maybe every 5 seconds have a 400ms silence, 200ms of the 5mA tone, silence, back to real time tone?
  • The droning tone would probably get very irritating pretty quickly.  How about a mute mechanism that shuts the tone off if no change in leakage for say 5 sec?  Any change turns tone back on, maybe automatically starting with a 5mA reference tone cycle.  Might have sensitivity control for what constitutes “change”.  Reference for “old” leakage remains until tone is on again.  That is, a very slow change in leakage would always trigger the tone after while.
  • Maybe if no change for say 10 sec, would show how we’re doing with 1 sec of current tone split with above 5mA reference tone.
  • For leakage above the 20 mA max, the tone is audibly different – maybe on/off at 1Hz.
  • It would be very nice if it were robust and self-contained enough to be able to offer to lend it to others struggling with GFCI trips on outside lighting.

All that tone generation/change stuff would be pretty simple if the tone were generated by say, a Tiny85.  If the leakage current were mapped by analog amp/rectifier to full scale of the 10 bit A/D at say 20mA leakage, at 2^^4 less (1.25mA) we’d still have 64 A/D bits to notice changes.  That sounds like a pretty usable range.  The analog section would probably have to have a trimmer to calibrate to the A/D full scale.

How to provide a power supply for both the op amp and the Tiny (and probably an audio amp!) is open.  Before the Tiny, the plan was to use a past-service-life 9V battery.  If the Tiny’s ratiometric A/D reference is used, Vcc would have to be regulated.  Probably using the 2.56V internal reference would be better.  And since the A/D input absolute max is Vcc, if I regulated the Tiny Vcc to say 5V and the op amp power supply were such that it could never put out > 5V, the requirement of not blowing up for leakage > 20mA would be ensured.

Hmm – I suppose if the design power input were ~7VDC (split for the op amp, regulated for the Tiny) it could use a new or used 9V or a 2S LiPo.  (Yeah, or 6 NiMH AAs.  But that’s pretty clunky.)  Maybe just a 9V clip on a little pigtail and a rubber band to hold whatever battery on?  That could serve as the power switch as well.  Since a minor goal is being able to lend the device out, if I put together a 2S LiPo (with 9V style snaps), I’d need to provide a suitable charger to go with it.  Yeah, I could do that.  Or let the guy buy a 9V.  Needs more thought.

Having my hand forced

The tester is only some wires and an op amp on a breadboard (plus some hot air) so far, but the darn lights have been out for a couple of days.  I need to get them back on.

OutletProppedUp0902ProppedUpSpare0909The first step of the attack has been getting the connections off the ground.  Plastic containers have been the first approach.  I also raised up outlets with no lights.

An additional step was to charge up the portable air tank and blow out all the plugs and sockets with compressed air.  It really hurt to do that without being able to see if/how much it helps, but I really, really wanted to get the lights back on.

I think I’d tried resetting the GFCI earlier today, and it wouldn’t hold.  After raising the connectors and blowing them out, the lights stayed on, so I accomplished the immediate goal.  Unfortunately, it’s many hours after that initial test, it’s now below freezing, and I didn’t test before hauling out the air and cream cheese containers.  Yeah, the goal was to get the dumb lights back on and it was dark and late and cold, but it wouldn’t have killed me to do a quick test first.  :(

Update 2/24/14:  After having been buried in a foot of snow for weeks, a melt uncovered the wiring for the Christmas lights.  On a whim, on a day when temps were maybe 20F, I tried the lights.  Despite cords having been knocked off their plastic perches, the lights lit and didn’t trip the breaker.  Not particularly relevant, but it’s another data point on a well-below freezing day.  I think GFCI trips are a lot less likely when it’s below freezing.

Posted in Holiday Lights | Tagged , , | Leave a comment

Wire bender

LightBenderI’ve wanted a wire bender for quite a while.  (Not one of those little jewelry wire benders – I can do most of what that does with a pair of needle nose pliers.)  Ever since I’ve been stocking that nice #7 (.014″) steel wire I’ve needed something to form tight > 90 degree bends in it to make custom hangers for stuff.

HFbenderOne of the first benders I found was the $83 big honker at Harbor Freight.  But after I saw how big it was (in a review on YouTube – who reviews HF stuff??), it was clear it was overkill.  I did almost get one for the space, but it would hardly earn its real estate keep with the limited space there.

MicroMarkUniversalThen there’s that nice $100 bender at MicroMark that would probably do about anything I’d ever need, but even on sale that’s a lot to pay for something I’d only use occasionally.

K+SInActionThere are other cheaper ones – like the classic K&S.  The eye opener was that you used a vise to hold one part.  Ah – that makes sense!  That was tempting, but I never got HarryHigleyBendersaround to ordering one.  And then I found the elegant Harry Higley benders (in 3 sizes).  Effective and inexpensive, I almost got some.  But they were so simple, I thought I could probably make something like that myself.

MyBender0871It took most of a year to get around to it, but I finally made one.  It’s a chunk of 1/4″ steel bar with two 1/4″ holes, plus a couple of pins cut from an old 1/4″ drill bit.  It’s not as nice as Harry’s, but it was all from scrap and it works for the heavy wire I needed it for.  Together with some simple operations in the vise, it should let me make about anything I need.  And the bar is big enough that there’s room for some additional pins if I need them some day.

FirstEye0875FirstHanger0885Here’s the first eye I bent with it in some of that #7 wire, used for a parts hanger.  (There was a little vise work to get it to that size, but it was all easy.)

And now that it’s made, I gave it its own little home near the vise where it can BenderInHolder0896watch out over the shop until the next time it’s needed.  This one is a winner.  It knocks something off the “someday” list, does just what I wanted, and it was free!



Posted in Miscellaneous | Tagged | 1 Comment

Protected: Flash memory sound playback

This content is password protected. To view it please enter your password below:

Posted in Rf starter's gun | Tagged , , , , , , , , | Enter your password to view comments.