Ryobi battery rebuild with more learning opportunities

Drill6221My 14 year old 12V cordless drill is finally back on the air, with a battery pack rebuilt for the manyth time.  Two more cells replaced this time, but once again, some surprises.  I remember when I thought the hard part of battery rebuilding would be the tab welding!

It looks like I replaced 2 cells in this pack around July of this year.  After that it looked to be in pretty good shape.  Unfortunately, the charger stopped working and I don’t think I ever got to use it with this pretty fair battery pack.  Worse, the pack was allowed to sit discharged for a couple of months.

Fixing the charger – and a small head adjustment

With the prospect of a working battery again, I took a look at the charger.  It had stopped working (no lights) maybe a year ago.  I’d opened it once to put an RCA jack in series with the main current path so I could measure charging current.  (There’s one shorted RCA male and another with 2 alligator clips (holding a 0.1Ω resistor) that live next to the charger as a result of that modification.)

When I opened it this time, I first looked to see if my earlier hack had failed.  No – all looked good.  Then I found – the blown fuse!  It was a 4A glass slow blow, but smaller than a normal 3AG.  Shorting around it showed the charger was still workable, so now I just needed the fuse.

Fry’s web site said they were in stock at the local store (pack of 5 for $4), so I went in.  There was indeed one package.  But someone (else who needed one) had poked a hole in the package and ripped off one fuse.  I was immediately offended, and didn’t want to buy the incomplete/damaged package.  But I needed the fuses.  I really only needed 2 – one for the charger and a spare.  A couple more would be nice.  So the 4 left in the package would fully meet my needs.  The cost per fuse wasn’t a significant issue.  I had a short discussion with my indignant head, and we finally agreed to buy the package.  Interesting negotiation.  The charger works now.

Back to the battery

When I tested the pack again in October, two more cells were in bad shape, leaving the pack at under half capacity (assuming >1500 mA-hr cells).  So I replaced those 2 with some other reclaimed cells.

ChargingCandidates1924I usually have a bunch of candidate cells for reuse strung together so I can charge and test them.  Their history is lost by this time, but some previous tests have shown they have promise.  Any cell that’s clearly bad goes in a box to be RecycleCells9204recycled so it doesn’t waste any more of my time testing it.  I chose the two best candidates to go in the Ryobi pack.  They were still going strong at 1500 mA-hr in a test a couple of weeks ago.  They sat, presumably still discharged from that qualification test, until I put them in now.  I knew they were the good ones, and didn’t bother to retest before I tab-welded them in to the Ryobi pack.

Lessons learned

But when I tried to charge the pack to test it, both “new” cells sat at 0V and wouldn’t charge at all!  It looks like dendrites (or whiskers?) grew and shorted both cells out.  If only  out of curiosity, I decided to “zap” them to see if I could get them going again.  After all, they’d tested quite good not long ago.

NiCdZapperCap6216My usual zapper is a 52,000 μF 20V electrolytic.  I charge it to ~20V and use the #14 solid tips I’ve soldered to the leads to connect to the zappee cell ends using a firm, decisive motion.  Sparks vary from minimal to substantial enough that I usually close my eyes tight just before I make contact.

RyobiCharging6210Two zaps each, and both cells started charging normally.  (The 20Ω 5W resistor with a clip lead soldered to it is a welcome bench accessory.  Clipped in series with a bench supply, it’s just about right for manually charging most of the batteries I have to deal with.)

A test with the each-cell discharge tester showed acceptable performance.  All I have to do it put it back together!  But not so fast:  I could barely force the cells into the case.  The mechanical design of the pack used the bosses of the case screws plus some additional webbing molded into the case to keep tolerances quite tight so the batteries wouldn’t move around.  I’d used masking tape to hold the cells together, and there was no room for that.  Even after I’d removed the tape, some webbing I didn’t see for a long time wouldn’t let the thermistor seat correctly (eventually requiring soldering a wire in to fix a broken connection).  Once the webbing was relieved, the cells fit OK.  All the springs and latches and case screws were in place – done!

But not so fast.  I charged it up on the bench, and did one final 2-terminal discharge test.  Yeah, the capacity was OK.  And it looks like a pretty nice discharge curve for a 9-cell (10.8V) NiCd.  Unfortunately, this is a 10-cell (12V) pack.  Somehow, in the day or two between the test above and putting it all in the case one cell died!

So I took it apart again.  No surprise – the dead cell was one of the “new” ones I’d had to zap back into life.  So I take away this lesson on cell zapping:  Yes, it works.  But (at least in some cases) the results can be very short-lived.

And I’ll take away another important lesson on rebuilding batteries with recycled cells:  Yes, a quick charge/discharge cycle gives you useful info on which cells to throw away immediately.  But the only way to tell which cells to keep/reuse is to charge them, let them sit for a couple of weeks, and then do a discharge test to see which have survived.

Following my own advice (finally)

Fine.  I recharged the pack, marked it, and left it on the shelf for 2 weeks.  When I finally did another discharge test, the results were interesting and useful.  By the end of the test – at only 990 mA-hr! – 3 cells had failed, and another was in trouble.  (Both of the “new” cells had failed.)  And I now knew 2 more to replace.  (That initial glitch is a mystery.  Cell voltage on every cell went up, although the current reading – just another voltage reading, across a 0.1Ω resistor – did not change.  It looks like a problem with the discharge recorder, but I can’t imagine what.)

Knowing I was going to need more cells, I also charged up some candidates (I think it was the 15 cells from the original try at Ed’s battery), and left them on the shelf for the same 2 weeks as the Ryobi cells.  Again, anything that failed that discharge test is of no interest for a “real life” application – whatever the failure mode.  Let’s test it…

Whoa – only 2 cells survived – and that was only to 220 mA-hr.  Of course they could have much more, but that says at least I should dump all 13 others.  (Unless, I suppose, I thought I’d have use for a collection of cells with high self discharge, but still good capacity.  But I don’t.)

Hmm – maybe I just replace all 4 bad cells with brand new ones.  I have a bunch (at ~$2 each), and since I’ve already rebuilt the Dustbuster, and just bought a new 3rd party battery for the Roomba (and that’s NiMH, anyway), and I’m running the B&D blower and the DeWalt drill from that nice LiPO pack, I don’t really have much need for all those sub-C nicads.  Sounds like a plan.

<several days later>  Done.  And now that the factory charger works again, I charged it up that way.  I don’t know what the trickle charge current on that charger is (yet), but I remember feeling warm batteries after they’d been plugged into it for a while.  So I took the battery out within hours of when the green “fully charged” LED came on.  It was another day until I got around to testing it, but it finally got a clean bill of health.

Update:  Trickle current with the green LED indicating “fully charged” is ~60mA.  That’s just about right, and the battery isn’t warm.  I think the charger used to be plugged into a strip that powered on/off with the basement lights, so it started a new charge cycle each time the lights went on.  Looks like if I leave it in an always-on outlet I should be able to leave the battery in indefinitely.

So I finally have an assembled, fully working battery (and charger!) for my good old drill.  Yeah, between the time I’d put the 4 new cells in and now, I needed the drill to make a video of a toroid winding technique at the space and had to resort to clip leads and a 12V sealed lead acid battery to power the drill, but at least now I’ll be ready the next time I need it! (Well, assuming I remember to put it back on the charger.  Guess I’ll do that now.  Done.)

Posted in Battery Rebuilding | 3 Comments

Flame spreader

I’ve wanted a simple flame spreader tip for a propane torch for many years.  I recently got around to looking on Ebay etc, but couldn’t find a cheap one.  It helped when I saw a picture of one that wasn’t fully enclosed.  I figured I could make something with an open back like that, so I did.

A piece of 3/4″ copper pipe slit open should provide good starting material, so I found a scrap.  To help me understand what I’d be doing in bending it up, I first made the shape up from scrap cardboard.  That was a very useful exercise.

A couple of cuts with a hacksaw and some flattening and I had the basic starting shape.  I can’t believe I was dumb enough to make the cuts by eye without measuring.  I really do know that I can’t get away with that, and now I have yet another embarrassingly asymmetrical physical reminder of that.  Maybe someday I’ll learn.

Another surprise (that I should have foreseen) was that it gets really hot.  That means it oxidizes a lot and is unpleasant to handle after it cools down.  So it’s asymmetric, ugly, and dirty.  But at least it works about as I’d hoped.

It’s not like a bunsen burner flame spreader where the flame is all outside the spreader.  Here the hot inner cone of the flame directly hits the spreader.  I even reshaped the spot it hits so it would spread out a little more.  Flame pictures are always a challenge, so I used the CHDK firmware in my little Canon to get widely bracketed  exposures and picturenaut HDR software to make this one.

The spreader is basically successful and certainly functional, and it also serves to remind me (again!) to never cut anything without measuring first.

GaveUp3359Update 12/1/15:  I’m not sure what happened to the spreader.  I sort of think it fell behind the bench – a fatal fall.  Anyway, I gave in and bought one.  Looks like Bernz discontinued them, but you can get anything on Ebay.  I drilled a hole so I can hang it near the torch NewSpreaderInPlace3361heads.

I haven’t even fired it up yet, but I expect it will become my new go-to for bending plastic.  Interesting progression.

 

BenchLighter3413Update 12/3/15:  I always use spark lighters to light the torch (that doesn’t have electronic ignition), so it was an interesting lesson to learn that those don’t work well with a flame spreader in place!  And trying to put the spreader on the torch after it’s lit doesn’t work out well, Lighter3407either.

But since I always keep a butane lighter on the electronics bench (for heat shrink tubing) and stock cheapies, it was easy to add an open flame lighter near the torch stuff.

Posted in HDR, Miscellaneous | Tagged , , , | 4 Comments

Prototype recording preamp mirror upgrade

I’ve felt a little like the shoemaker’s shoeless kids:  The shiny new recording preamps I make for others have a little window so you can watch the LEDs from out on the floor, while the ones I use – slightly older prototypes – don’t give me that feature.

Fixed!  After thinking about it for many months, I finally rigged a little mirror so I can see the LEDs from the edge.  It’s over the edge of the case (and the case has to be open), but I can see them now!

I epoxied a bit of shiny aluminized mylar packaging to a scrap of fairly heavy (0.016″) clamshell packaging plastic, and bent the plastic at an angle.  The LM3914 provided a perfect mounting for it.  A little hot melt on the chip, and I was in business.

It worked so well I made another one right away for my other prototype.  This is one of those little things that I’ll use repeatedly and will give me a little hit of pride/pleasure every time I see it.

Posted in Recording preamp/limiter | Tagged , , , | Leave a comment

Leaf vacuum repairs

These are notes about a dear old Craftsman lawn vac, started in 2012.  More repairs and plans for the bag here.  I’ve scanned most of the manual here.  See end of life note near end of this post.
—————————————————-

It’s that time of year again – time to get the old leaf sucker into shape to perform its annual duties.  I’ve had this thing for just 20 years now, and there’s always something that needs fixing.  It’s worth it, though:  it works so well I often feel like I’m making a commercial for it when I clean up the leaves.

The two repairs this year were fixing a seam in the canvas tube that feeds the bag and beefing up the patch on the hole in the right angle plastic chute that redirects the leaves so they go up the tube.

The seam repair was two rounds of whip stitch with a big needle and some heavy thread.  There’s usually some part of the aging canvas bag that needs to be patched up.  A dirty job, but pretty quick.

The plastic chute repair was more challenging.  In addition to the fairly benign leaves that get blown horizontally into the chute to be rerouted up into the bag’s canvas tube, stones are occasionally picked up and whipped out by the impeller.  Many years ago, one knocked a hole in the corner of the chute.  I’ve covered it up with a couple layers of duct tape every year, but new stones blow holes in that, too.  I found a piece of HDPE covering part of the hole from an earlier repair when I ripped the tape off this time.

This year I went a step further and formed a piece of 0.020″ galvanized sheet steel to cover the odd-shaped hole.  Several short cuts in the part that wraps around the edge let me form the 3D curves pretty well.   Let’s see a stone knock a hole in that!  I taped it down with several layers of duct tape, and it’s done for another year.  (Or with luck, maybe a couple of years!)

Update 11/30/12: Oops.  To my substantial surprise, maybe the second time I used the vacuum after the repair, I noticed the patch had blown out!  No damage to the steel patch or the plastic, but the duct tape on the large curved side had all pulled off.  I’d been lazy and didn’t really clean up the old tape residue, though I’m sure I did a quick alcohol wipe off.  OK – I took all the tape off, cleaned it all up properly with Goo Gone and alcohol, used the good duct tape, and extended the tape all the way across that curved side and a little on the other side.  Now it should be good for another year or two.

Here it is with the repaired chute in place.  It has a clever safety interlock to keep it from being started when the chute/bag are not installed:  A spring that clips over a hook on the chute to hold it in place is positioned so it shorts an ignition wire to ground when it’s not stretched over the chute hook.  An elegant solution.

While the machine picks up leaves (at least dry ones) very well, and shreds them so they pack to about twice the density of hand raked leaves in the paper bags our town requires, it’s a nuisance to empty the canvas bag into the paper bags.  The canvas bag empties out the bottom (tied closed with a cloth string while running – another low tech but very effective design), but the bottom of the bag is near the ground – not easy to dump into a paper bag, especially after the first load.

I addressed that many years ago by building up a platform out of scrap plywood and bent 1/2″ conduit.  (Yes, there are a couple of supports under the ramp.)  It’s a little bit of hassle to haul out and set up, and for emptying the bag once or twice it’s not worth it.  But with the twenty-odd dumps of a major leaf pickup, it’s a very welcome helper.

Update 2/27/16:  Some time ago (pictures were dated 10/13; might have been before that) I replaced the ramp NewBagLifter0395bag emptier that had served for years with a rope and pulley system that works better and has a much smaller storage footprint.

BagLifterInAction0402It requires the extra step of disconnecting the bag from the machine and reconnecting it after emptying, but the actual hauling the bag up in the air is quite fast.  A heavy wire bridle attached to the bag’s support tube provides a place for the hook on the end of the rope.  Another hook on the free end of the rope hooks nicely into a hole in the garage door track.  The big benefit is that the bag is noticeably higher and thus easier to empty into the paper bag, especially for the last bit to fill the paper bag.  (I’ve been planning for a long time to replace the twisted poly rope with something braided.  Maybe this year!)  Looks odd, but this is a real winner.

The steel patch re-taped in the note above held thru the 2015 leaf season, but the tape was in pretty bad shape at the end.  I brought it in the house with plans to clean and re-tape it some time over the winter/spring/summer.  I did that cleanup at the end of February.

Remembering that the tape didn’t stick well to old tape residue, after pulling off all the old tape, I removed the residue with Goo Gone and naptha.  A final wash with alcohol left it LatestPatch3705ready for new tape.  Since this repair was likely to be in use for years, I went with the good stuff and used Gorilla Tape.  (While I found a roll of black Gorilla dated 11/08 in the tape box, all the tape I pulled off was silver.)

Unfortunately, the chute had suffered further thinning to the NewReinforcement3709point of a full opening past the end of the galvanized patch.  I bent a bit of the 3/4″ x 0.022″ black steel strap I scavenged from pallets of pipe for storm water plumbing under our street a few years ago.  It’s all taped up and ready to serve next fall and, I hope, several falls to follow.

 

Update 11/22/16:  Special thanks to Jack (in comments below) for a suggestion for the mesh material to make a bag.  I haven’t tried it, but Phifertex, a sturdy woven fabric for outdoor furniture might be just what a bag maker or repairer needs.  If anybody tries it, please post and let us know how it works out!

Also – I finally replaced the rope on the bag lifter with a braided one.  It’s nice to have it not spin any more while trying to untie the bottom of the bag and get the leaves into the paper bag.

Update 12/14/17:  I may be able to score a sample of a Phifertex mesh material for a test of [re]building a bag.  If anyone reading this is actively interested in working on a bag but has been stymied on the mesh, maybe we can work something out.  Especially if you’re in a position to produce some bags for the niche market of users of these great old machines, I’d like to try to help, including reverse engineering a bag to make a pattern.  Please reply in the comments.  Thanks!

Update 11/1/18: Bag plans are now available!  Check them out here.  Pics here.  Link updated 10/16/20.  Apparently wasn’t public.

Update 10/29/19: It looks like the dear old friend is about at the end of its career with me.  We got a lawn service that takes care of leaves.  I expect it won’t even get fired up this year.  If so, I guess it’s Craigslist time.  In response to Kipp below, I’ve scanned most of the manual (skipped “unpacking and checking contents” etc) here.

Update 10/15/20:  Finally posted the machine on Craigslist today.  I cleaned it up some, took some current pics, and posted with this text:

This “Power Brush” machine does a really impressive job vacuuming up leaves, and I get about twice the weight of leaves per curbside bag thanks to its shredding. Bought new in 2012, it has been in use every year until I got a lawn service and no longer need it. (It does a great job with the leaves, but having somebody else do it is even better.)
Some notes on its history here: http://jimlaurwilliams.org/wordpress/?p=3204.

It’s been out on the lawn for a couple of days with a For Sale sign.  Farewell, old friend!

The Craigslist ad worked:  Someone came by and picked it up a few days later.

Posted in Home Repair | Tagged , , , , , , , , , , , | 62 Comments

Sweep first

I’ve been drinking Instant Breakfast (for breakfast) for I dunno – 20 years? – and have always used a favorite old glass.  Today while I was washing it, it popped out of my hands, fell on the floor and broke.

I kind of froze, initially startled, but then thinking about my reaction to this loss of an old friend.  Should I be mad at myself?  No – I wasn’t mad, or being careless, or too tired, or doing something dumb.  It was just one of those “stuff happens” incidents.  A sad one, unfortunately.

So how am I going to clean this up?  The kitchen floor is mostly white, so I had a pretty good view.  I gingerly got down on the floor to assess the distribution of shard sizes.  It looked like most were pretty big, so I wasn’t faced with a zillion tiny bits.

OK, I’ll pick up the big pieces and then sweep up.  And while the kitchen broom is nice and soft and should get the little bits, a final wipedown with a paper towel would be a good idea.

On my hands and knees picking up the big pieces, after about the second owie from a tiny shard I realized what the lesson from this was:  When you break a glass, sweep up first.  Not very profound, but might save a cut in the future.

Posted in Home Repair, Life hacking | Leave a comment

Furnace repair

The furnace failed to fire up the other day when I tried it for the first time this season.  I learned a fair amount about its components and how they work as I tried to figure out what was wrong and fix it (which I  did).  This note is just to record most of what I found out to put it in one place and so maybe I can do it more easily next time.

Furnace background

The furnace is a high efficiency Kenmore H9MPV100J20B1, installed 9/05.  It has a variable speed direct drive DC blower motor, which is quieter and allows easier constant low speed air circulation.  I have a nagging suspicion the 14×20″ filter is too small but the installer was too lazy to reconfigure for a larger one.

Control is distributed among 4 devices:

  • The programmable smart thermostat sends requests for heat, cool, fan according to a schedule to the rest of furnace (via its interface module).
  • The Fan Timer Control board controls the main blower, with features like keeping the blower running for several minutes after call for heat is over, optional continuous slow air circulation, etc.  It listens to the thermostat, and sends requests to the Smart Gas Valve (for heat), to the A/C for cool, and to the blower controller.
  • The Smart Gas Valve controls everything about the heating burners, with lots of safety interlocks.  It gets requests from the Fan Timer Board.  Its LED flashes a heartbeat or troubleshooting codes.
  • The Blower Controller gets requests from the Fan Timer board and controls the DC blower motor.

I upgraded the originally installed Honeywell TH6110D programmable thermostat (which is probably still around somewhere) to a Honeywell VisionPRO IAQ around 9/07.  I think a main benefit was a humidity sensor so it could deal with coolish but humid nights that were uncomfortable at a normal A/C thermostat’s fixed temperature set point.  (It goes for a few degrees below the set point if humidity is above a threshold.)   This touchscreen in the kitchen gets its 24VAC and communicates over 3 wires to an interface module mounted near the furnace.  That device provides the usual 24VAC signals for fan, heat, and cooling.

Basic output from the interface module is the usual 24 VAC signals:
– W1 call for heat
– W2 call for stage 2 heat
– G call for fan
– Y call for cool
– R 24VAC power to thermostat
– C common

These all come into a Honeywell ST9162A 1040 “Fan Timer Control” board which lives in the lower air handler compartment of the furnace (green highlight).  That board can control either a PSC (permanent-split capacitor) AC blower motor directly or a variable speed DC motor via a separate motor controller (large box below the Fan Timer in this furnace) as it does here.  You can see the 6 conductor motor control cable from the lower left of the Fan Timer.  I think that’s mostly 24VAC signals, but I’m not certain.  The 24V transformer that provides power to all the controls is above and to the left of the Fan Timer board.

Control of gas to the burner is done by a Honeywell SV9541 “Smart Gas Valve” living in the upper burner compartment of the furnace (green).  It’s pretty slick, integrating all burner control stuff:  main gas valve (with low and high rates), the igniter, gas to the pilot light flame, the pilot flame sensor, the draft inducer fan (routed via the FT board), various pressure sensor switches, and even an LED to provide coded flashes for troubleshooting.  I hope it never goes out, because as near as I can tell the installer took shortcuts that will almost require disassembling the whole furnace to replace it.  (OK, maybe you just cut the pipes.  Cutting gas pipes is probably a special process.)

Troubleshooting this problem

It was getting chilly, and I’d touched the thermostat to go to heating mode, but there was no heat.  There’s nothing that has to be turned on when heating season starts, so I started to investigate.

The first obstacle to troubleshooting was an interlock switch on the door to the air handler compartment that turns everything off when the door is open.  Yeah, I could have just taped it, but I made up a little cheater out of pipe strap.  I soon found myself grumbling about trying to pull the air handler door open against air pressure while it was running, so I glued a little plastic finger grip on.  Works fine.

Surprisingly, I couldn’t find the paper manuals, but furnace, fan timer board and smart valve manuals were readily available online, so I now have a nice set of .pdfs.  The obvious first check was for 24V on W1 from the thermostat.  (Well, first was to reacquaint myself with the fact that the  thermostat in the kitchen doesn’t control any 24V signals – just sends digital info to a the IAQ Interface module down by the furnace.)  Yes, we have call for heat.

So how does this Smart Valve thing work?  The diagnostic LED constantly blinked bright/dim – a heartbeat indicating no problems.  Was it really not getting call for heat?  The diagrams show a wire called “data” into the valve apparently to call for heat.  “Data” is a troubling name for a 24V signal.  But I found a diagram about how to use the SV with an old style 24V thermostat, and it was obvious that it was OK to drive the data wire with 24V.  So do I have 24V?

Pulling the 8 pin connector to the SV so I could put a meter on the pin might not be a fair test, as I didn’t know what other interlocks there might be.  I stuck a thin piece of wire into the back of the connector (while it was still connected) and measured the voltage: 14 VAC.  Not one of the expected values.  But clearly not the 24V (actually 27V) I was seeing other places.

I wanted to put 24V on that pin to see if it would at least start the inducer fan or give some evidence of trying to work.  But I didn’t know what the output circuitry of the Fan Timer (which provides the signal) was, so just driving the pin with 24V while it was still connected to the FT wasn’t a conservative thing to do.  To remove the male pin from the 9-way Molex connector on the FT, I manufactured a little pin extractor out of a female Molex pin.  With the orange “data” wire out of the connector I was free to put 24V on it.  The connector geometry was conveniently such that I could force that loose pin into the back of the connector at a pin with 24 V and it would make contact and stay there.  I did so – and the heat came on!

It was now pretty chilly in the house, and Lauren was coming down with something and a cold house really wasn’t good for her, so I decided to let the house heat up for a while.

It did, but not very fast.  And I didn’t hear the blower as loud as usual when the heat is on.  I’m not sure what was happening.  One possibility is that the FT never kicked the blower up from the constant low air circulating speed to “heat” speed.  Another is that it usually goes to stage 2 heat (high fire) with the attendant higher blower speed and those two steps didn’t occur.  I don’t think the SV has a W1/W2 input concept – just put 24V on the data line to call for heat.  But it does monitor other pressure sensors.  Maybe the “high” pressure sensor detects higher duct pressure from high fan speed and that’s how the SV decides to kick up the gas rate.  In that case, it’s the FT cranking the blower up to high that makes the burner crank up to stage 2.

In any event, if the FT wouldn’t send call for heat on the data line, it’s plausible that it wouldn’t kick the fan up either.  And perhaps not even for a W2 stage 2 heat request (which was in fact present).  That board is looking more and more like a problem.

I should check the furnace supply side temperature data history in the house monitoring system.  If the fan never went to stage 1 heat speed, the duct temp should have been noticeably higher than usual.

I wanted to see what the FT was putting out when wasn’t connected to that pesky 14V from the SV.  I cobbled together a pin extender out of a male and a female Molex pin with an inch or so of #14 solid  between them.  I could insert the male (with its latching dogs defeated so I could get it back out easily) into the connector to measure the FT side and orange wire separately, and put the orange wire into the female comfortably outside the connector to reconnect them.  By the time the picture on the left was taken the female had broken off.  But it held long enough to do the test I needed.  Sure enough, the voltage on the wire didn’t change when call for heat was on.  Another strike on the FT board.

I couldn’t find a schematic for the FT board, so I started to trace the wiring to find whether the 24V in on W1 went all the way through to the “data” wire out.  The path wasn’t obvious.  The board was mounted on 4 nice little plastic board standoffs, so was easy to detach.  It’s single sided, so tracing would be possible.  I took closeups of both sides of the board (3 for each side) so I could clearly see resistor values and all the traces.  I didn’t end up reverse engineering a schematic out of them, but the pics did come in handy later.

The repair

It looked a lot like the FT board was bad, though I didn’t understand all the interactions/interlocks well enough to be certain there was nothing else wrong.  Let’s replace the board.  The furnace manual showed the part number – 1014459 – so I went to the Sears parts direct web site.  I found the part – but with a notation to the effect that the manufacturer would not allow them to sell the part!  WTH?  I called during business hours and got confirmation that they couldn’t sell it, but not much insight into why.

A quick web check found the boards for $125-$250.  (I did find one page on the Sears site that showed a price of $78.)  OK, I can get them, though I’d rather not wait a couple of days.  This is just a replaceable furnace part – surely I can get one at a HVAC parts place locally.  I probably called 10 places, and nobody had one and would sell it to me!  I did get a little more insight into the refusal though:  furnace repair should be done by a licensed furnace guy, not a home handyman.  C’mon, it’s just a circuit board, not a gas valve!

Finally the last place I called (yeah, yeah) had the part and grudgingly would sell it to me.  They were only supposed to deal with licensed contractors, but times were kind of tough, so they’d bend the rules a little.  I paid $179 (plus tax), though the guy made a big point of showing me that the real price was $255.  Thank you.  Whatever.  It appeared to be exactly the same as the one in the furnace.

I got the board home and started moving the wires one by one.  You wouldn’t think that would be very hard, but I managed to make two mistakes.  I pulled one of the later wires but noticed only approximately where it came from (one of two places).  Fortunately, I had the pictures I’d taken earlier, and could see its original home clearly.  The other was worse, and I didn’t find it until it was all back in and I turned it on.  Nothing.  Nada.  Not even any hum from the annoyingly loud 24V transformer.  Not good.  I checked the breaker, and it was tripped.  Damn.

I found the blue 120V-in wire, and I’d put it on one terminal off.  (OK, and the pins were oriented 90° off.)  Unfortunately, the pin I’d put it on was one of the block of neutrals.  Ouch.  At least that would explain a tripped breaker.  I moved the wire to where it was supposed to go, turned the furnace on, and everything worked fine.  My educated gamble in replacing the board paid off!

I cleaned up, put the “data” pin back into its Molex connector and was buttoning things back up when I noticed a deposit of crud that pretty clearly came from drips from the flue pipe.  Looks like it’s a sizable drip, or at least has been dripping for quite a while.  This pic will at least give me a reference point to see if it continues to get worse.

Overall a successful repair, and I’m sure I saved a couple of hundred bucks.  And learned a lot about how the furnace controls work!

I was a little surprised that the failure wasn’t the most predictable igniter/flame sensor.  But the spare for that repair is still sitting reassuringly on top of the furnace.

Posted in Home Repair | Tagged , , , | 4 Comments

Hacking dance shoes

Well, that’s not quite right.  They’re not dance shoes until after the hacking.  Whatever.

I wore cowboy boots for the first many years of my square dance history.  Given the usual western theme, I liked how they looked.  But more importantly, the leather soles danced well.  The slip between the sole and nice wooden floors made it easy to move in them.  Sometimes a little too slippery, but I manged to not get hurt.

But after a lot of dancing, my feet hurt.  I had thin rubber insoles in the boots, but mostly there was just hard leather between my feet and the floor.  To be more comfortable for hours of dancing my feet wanted a lot more cushion under  them.  Like all that high tech stuff in sneakers (or running shoes, or cross trainers).  And as we were starting to dance more advanced levels, funny clothes were no longer the norm, so sneakers were acceptable fashion.  But the rubber soles of those comfy shoes were way too sticky to dance in.  What to do?

The shoes that started it were some black leather “dress” sneakers.  Comfy, not too ugly.  They just needed the suedy dance leather soles Lauren’s dance shoes had.  After a small fiasco at a local shoe shop (the guy didn’t have the right material, so he put regular leather on and spray painted it gray so it would look like dance leather!) I needed to find a better place.  When I took them to a high end cobbler and moccasin shop in Villa Park and explained what I wanted, they grumbled about the lumpy tread on the shoes saying they’d have to grind it off, but said they’d give it a shot.  The chrome tanned leather half soles they put on were great.  They gave just the right amount of slip for both square and round dancing – and my feet loved the comfort of the shoes.  But while the cobbler shop did excellent work, I wasn’t thrilled with the high end prices.  I bet I could do that myself.

There was discussion over whether to do the whole sole or just the front.  I went with half soles in part because of the price at the high end shop.  They worked out fine for me, and I’ve done only half soles on all the shoes I’ve done since.

Google found the leather for me.  Brettun’s Village has ~9″ x 11″ scraps of chrome tanned leather in a couple of colors for $12 each with free shipping.  I’ve ordered the stuff from them a couple of times, and it’s exactly what I need.  One piece is usually enough for 2 pairs of my shoes.  Daintier feet might get more.  I can’t see any difference between the two sides of the stuff, making layout a little easier.

Putting a new sole on

The ideal shoe for this would have an original sole that is fairly smooth.  The more extreme/aggressive the tread, the less there is to glue to.  Here’s the latest pair I’ve done.  It’s not bad, though I was concerned about the grooves across the sole.

I decided to try to fill in the low places with something, and ended up with some fast drying caulk.  This was what I used.  I don’t claim it’s ideal; it’s just what followed me home after staring at the caulk display at HD or Walmart or someplace until I couldn’t stand it any more.  I did my usual quick wipe off with alcohol before I put the caulk on, and I tried to get it more or less even with the rest of the sole.  While it worked out OK, I’m not convinced it really helps much.  The low places are a fairly low percentage of the sole area, and I’d guess if they weren’t filled all that would happen is that the new sole would press into the low places a little and essentially never wear there.  Between that valid argument for not filling and the fact that I sometimes over engineer things, I have no idea whether I’ll try filling again with the next pair I do.

Once you have the leather and target shoes (with the tread filled or not), the next step is figuring out what to cut out.  I usually put the shoe on the leather and trace around it, although you could make a paper pattern first.  When you’re cutting out the first pair of soles, it’s pretty obvious how to lay them out.  When you’re working with the leftovers from previous pairs, the fitting can be more challenging.  Make the leather larger than the shoe – it’s easy to cut away the excess after the glue dries.  But don’t go more than maybe 1/4″ larger all around.  It wastes leather and will be harder to clamp down in the curvy parts.  If there are very curvy places, you’ll want almost no excess so it’s easier to fit/clamp.

The leather cuts nicely with heavy scissors.  Then it’s time to glue.

The definitive glue of choice is Shoe Goo.  It was originally recommended by a good guy at a shoe repair shop, and most of the reviews I’ve read about it are raves.  I was uncertain what to use on the first pair I did, so I used this on one shoe and Gorilla Glue on the other.  Both worked well, but I had more confidence in the SG.  I also tried to use the foaming/expanding nature of GG to fill in low places in those shoes.  It’s not a great choice for filling, since the cured expanded foam isn’t resilient:  Once you crush the cell walls, they stay crushed.  That’s why I went with caulk this time.

As near as I can tell the stuff is all made by Eclectic Products (with a bit of interesting history), but is sold by multiple vendors including Penguin Products, Sof Shoe, and probably others.  It’s part of the Goop family of adhesives, again marketed in various flavors, apparently with no or little difference in formulations.  Anyway, I think if it says Shoe Goo and mentions Eclectic somewhere in the small print on the back, you’ve got the right stuff.

Common sizes are 3.7 oz and 1 oz.  Judging from the dent I put in a new 3.7 oz tube with the latest shoes, you could probably get away with 1 oz, though it might be tight.  If I had to scrimp, I’d be stingy over most of the middle of the sole, but generous around the edges.  If you have glue left in the tube, putting vaseline on the threads before you put the cap back on is a very good idea.

As is my custom, I wiped the soles off thoroughly with alcohol just before gluing to get rid of any last traces of oil.

Shoe Goo is available in clear and black, but I’ve only used the clear.  It skins over and dries pretty quickly, so you need to work fast on something as big as a shoe sole.  While it’s not a contact adhesive, I’d be tempted to put it on both surfaces, especially to get the sueded leather nice and wet.  But the working time is short enough that I don’t want to take the time to smear it on the leather as well as the shoe.  Apply it pretty liberally, and have a piece of cardboard or something with a stiff edge handy to distribute it fairly uniformly all over.  Get the leather on as quickly as you can (taking enough time that you don’t initially put it on upside down!) and press it very firmly onto the shoe.  I think I used a rubber mallet on the first pair.  I didn’t this time, though it’s probably a good technique.

(Reading that back now, maybe the ideal way would be to put the glue on the leather rather than the shoe as I’ve always done.  I’ll have to consider that next time.)

Have clamping materials all ready to go.  Rubber bands work well for most of the sole.  Tape is useful too.  I was startled at how poorly masking tape stuck to the leather uppers on the latest pair, so testing is a good idea.  I used duct tape on the second shoe.  That stuck well to the uppers, but left some reside on the sole.  It went away pretty quickly, but I could detect it the first time I danced in them.

I usually let them dry for 24 hours if I can.  The volatiles are kind of smelly, so I get in less trouble if I leave them outside.  Once dry, take off the rubber bands and tape, get out an Xacto knife with a new blade and trim off the excess.  You’ll probably find some excess glue you’ll want to get rid of too.

I’m aware of a habit of tapping the tip of my shoe to mark the beat of the music when it’s not quite time to move yet.  To reduce the chance of that action peeling up the very front edge of the sole, I chose to continue the leather all the way up the nose of the shoe.  That curves in 3 dimensions and was awkward to fit.  Other might choose to end the leather lower, and other shoes might dictate a different approach.

Failure modes

The two most likely failures I’m aware of are edges peeling and just wearing out the leather.  With the glues I’ve used along with being careful to glue generously at the edges, clamp firmly, and let them dry well, I’ve never actually had any peeling edges at all.  But that’s a pretty obvious possibility.

The failure I didn’t really see coming was just wearing out the new sole.  I abuse these shoes a lot more than most folks do with their good dance shoes.  I almost always just wear the shoes to the dance, walking on concrete sidewalks, gravel, blacktop etc in the snow or rain between the car and the dance rather than carrying them and changing inside.  Then I wear them home, often with a stop at a restaurant on the way.  The initial decision to do that was in part to understand how well the glue would hold up.

They’ve held up great to that abuse.  While most of the miles I put on these shoes are on the dance floor, I’m sure the harsh outdoor exposure has abraded them down some extra.  The first problem showed up after maybe three years.  The sole had worn through on one edge of one shoe.  At that point, the possibility loomed of part of the sole peeling back in the middle of the sole, both making a thick place (doubled material) and exposing part of the original sticky rubber in a place that bore a lot of weight.  Those were a recipe for a dramatic change in the behavior of a trusted shoe, possibly resulting in an accident.  Not good.

The shoes were otherwise fine, so I just put new half soles over the old ones on both shoes.  I didn’t want to just put a patch over the worn place, fearing that the exposed edges might peel and cause a problem.  I got another year or so out of them before the same place wore through again.  This time the rest of the shoe was wearing out, so I started over with a new pair.  I could probably get a couple more weekends out of them, so I won’t throw them out yet. 🙂

I considered putting an extra layer under that spot as I made up the new shoes, but as the outer layer wore through, again there would be the possibility of the edges of that outer layer peeling back and causing trouble.  The one bit of tuning I could (and did) do was to choose the thickest piece of leather I had for that problem left shoe.

Overall I’m very pleased with these new soles.  They dance very well, even – surprisingly – on carpet.  Given the right leather and glue, it’s not a very hard project, and is one I’d happily recommend to friends.

Update 9/9/15:  The next pair

OldShoeFailure3320My good dance shoes (in the pictures above; now just 3 years old) had a quarter-sized hole in the middle of the right sole.  After the WI*PAC weekend in Wisconsin, that hole progressed to a ripped out section that made the shoes essentially undanceable.  While not in terrible shape, there were some holes in the inside, so I decided to get (and sole) new shoes rather than putting a new sole on the bad one.  (On further examination, there’s a place on the edge of the other sole that’s worn thru as well – so the replacement was a good idea.)

AboutToBegin3303I’d just gotten some E6000, since that was all I could find at the Walmart in Wisconsin, to glue down some peeling edges and to help a friend with some soles that were coming loose.  I discovered I also had an unopened tube of Goop when I got home.  I remain convinced it’s all about the same stuff.  The Shoe Goo was marked “opened 9/11/12”, so must have been the tube I did the last shoes with.  I tried it, and it would probably have worked, but it was a little dried out, so I used the new E6000.

Cutters3324While cutting the leather, I did a quickie cutting test with a straight cut aviation snips, a pair of  standard HF scissors, the kitchen Fiskars, and some little cheap stamped scissors maybe from Electronic Goldmine.  To my surprise, the little green ones cut best.  The HF scissors were next, but only a little better than the Fiskars.  The snips didn’t work here at all.

IMG_TreadThe tread on the new shoes was much less flat SureForm3313than I would have liked.  I didn’t try to fill it, partly to see how it would fare (and partly because I need the shoes for a dance tomorrow and didn’t have time for another step).  I did take a Surform to the edges a little to increase surface area and rough it up a bit.

Despite comments above, I decided again to apply the glue to the RegistrationMark3310shoe rather than the leather.  While dry fitting and practicing with the shoe and leather, I found that marking where the end of the leather hit the shoe sole, along with a center mark, made it much easier to not screw up while laying the leather on the glued-up sole.  That’s a nice trick.

Drying3316I used lots of rubber bands again, and that looks like they will hold quite well.  I did tape the end of the leather (away from the toe) to the sole, but otherwise didn’t feel tape helped much.  I taped the edges on the first shoe, but didn’t bother on the second.  I assume they’ll be fine, but if not, I’ll post more details here.

Other comments:  I checked the Brettuns Village link above, and it was still good and the chrome tanned splits were still $12.

I continue to be pleasantly surprised how well these shoes (at least the 3 year old ones!) perform both on wood floors and on carpet.  I suspect the latter is because the soles are so beat up and polished that they’re more like regular leather than the suede-y surface they started with.

The slight peeling at the edges that caused me to get some glue at the weekend was not a functional problem at all.  There were 2 areas maybe an inch in diameter that I wouldn’t have noticed except I was examining the shoes closely due to the hole in the sole.  I did slather some E6000 in with a scrap of cardboard, and that completely fixed the non-problem.

I weighed the E6000 tube before and after gluing the second shoe.  What felt like a suitably generous amount of glue turned out to be just about 1/3 oz.  That’s a little further evidence that a 1 oz tube should work for one pair of soles.

Update 2/27/16:  At Hearts In Motion 2/19/16 I noticed that my good dance shoes felt like they or the floor were quite sticky.  They didn’t glide like they’re supposed to.  When I looked closely at the soles, there was a very noticeable layer of gummy crud on all the surfaces that touched the floor.  I scraped it off after the weekend with a watch case back popper, and got quite a pile of detritus.  Still no idea what it was or where I picked it up, but the shoes dance much better now.  This is the first time I’ve seen anything like that.

I carry my dance shoes and change at the dance most of the time now.  I’ve seen enough evidence that Shoe Goo holds up to most anything that I don’t need to continue the experiment.  If I can get an extra year or 2 before I have to do the next pair of shoes, I’m all for it.  But I wonder whether all the walking on rough sidewalks to and from dances and restaurants afterward wore off any previous contaminations before I noticed them.

And another pair

1/25/18: Time for another pair of dance shoes.  This time I pulled some  slightly worn shoes out of what turned out to be a surprisingly large collection hiding in the back of the closet.  I really need to purge that mess of shoes.

This time, looking to both smooth parts of the tread and provide a clean surface to glue to, I took them to the belt sander.  You can see the difference between sanded and unsanded.

With the stupid mistakes of the past slowly convincing me to be more conservative to reduce future mistakes, I marked the sole pieces.

I couldn’t remember whether I had any Shoe Goo left, so bought a new tube.  When I found an old one, I decided to use the fresh stuff, as best results outweighed the value of the data point of whether the old glue would have been OK.

Shoes continue to be carried and changed at the dance.  I’m not sure whether to be embarrassed about the HF bag that seems to have ended up with that duty or not.

Another Goop Repair

5/26/18:  Unrelated to dance shoes, one of the soles of the old, should-have-been-thrown-away sneakers I wear for dirty work in the garden started to come off (and I almost tripped over it).  I’d recently done a pass of throwing out all the old “might-be-useful-someday” sneakers, and my good ones weren’t due to be retired yet, so I thought I should try to glue the soles back on.

I first gave both surfaces a nice scrub with a toothbrush and alcohol, then applied Goop.  I first tried a tube labelled “opened 8/15” which seemed semi liquid from squeezing the outside, but was way too gummy when it started to come out.  I used the tube marked as “opened 1/18”, and it seemed fine.  There were in fact maybe 4 places the soles were coming off as I looked more closely, so (alcohol scrubbed and) glued ’em all.

I used the usual rubber band clamping protocol, and it felt quite adequate.  I did slightly improve the technique, though:  There’s no requirement that the tension in the rubber band be constant all the way around, and when it’s going over rubber corners, it’s pretty easy to make the section stretched across/holding together a glued joint noticeably higher tension than the rest (and thus clamping better).  That seems pretty valid, and I did it as much as I could.  You can see the width of the band reflecting the tension in the pic.

Posted in Dance shoes | Tagged , , , , , , | 1 Comment

Optical interface to water meter

I’ve wanted to be able to monitor household water flow for a long time.  A primary driver is to be able to spot unexpected use while we’re away, probably involving lots of water going where it shouldn’t – like from an open hose or burst water heater.  A secondary use would be as a double check on the landscape watering system.

I had a temperature sensor on the incoming water pipe, and the drop in temperature gave a very crude indication of when water was flowing.  I considered taping a mic to the pipe and doing some audio processing on it to sense the noise of water flow in the pipes (but never tried it).  The water meter, however, knew the real answers.

There’s some kind of spinning magnet inside the meter.  If I could pick up the fluctuations of its field, I’d be all set.  I tried all sorts of coils and amplifiers, but while I could marginally detect the fluctuations, the signal was always drowned out by a huge 60 cycle background.  I tried my best to null it out, but never could.  (Filtering wouldn’t work, as the signal I was looking for could come close to 60 Hz at high flow rates.)  While investigating it, I discovered there’s usually around 3 amps (!?) of AC going through my water main.  I tried to chase down the cause, but failed.  There may well be a problem in some other nearby house that shares a power transformer with us.  I gave up on that.

Failing a magnetic pickup, the most promising thing was a little red plastic spinner on the water meter.  It makes about 114 half-turns per gallon, so it’s a pretty sensitive indicator.  How could I sense it?  The white background of the meter was occluded by the spinner twice per revolution.  If I looked at the background right under the spinner (tip of green arrow) – perhaps with light of a color heavily absorbed by the spinner – maybe I could detect the spinner’s motion.

After a couple of simpler tries, I ended up with a telescope focusing an image of that small target spot on a phototransistor.  A green LED illuminated the background spot, and the red spinner blocked it enough to detect.

Of course the signal was tiny and ambient light would easily upset it, so the whole meter face had to be in the dark.  And I had to hold the 5″ tall telescope rigidly pointed at the 1 mm square target.  A mechanical challenge!  First covering the meter with plastic wrap, I built up many layers of cloth mache – strips cut from an old cotton T shirt and gauze bandage soaked in Elmer’s glue.  That was kind of translucent, so I painted it black to keep light out.

I think while I was laying up the cloth mache I molded in some bit of something cylindrical right above the spinner, and removed it after the housing was dry.   That was for the telescope, which might have been the lens and tube from an old 8mm projector, fitted inside a piece of black plastic pipe.  A scaffolding of very heavy wire held it in place for initial aim-testing.  I think I used “Durham’s Rock Hard Water Putty” to lay up a generous fillet around the tube and the cloth mache base to hold it firmly in place.  I also drilled a hole for the green LED so it illuminated the area under the spinner the ‘scope was watching.  I have no recollection of why the inside is blue.

To hold the photodarlington firmly in place on the top of the tube, I found a bottle cap that just fit (from my collection of bottle caps – you never know when you’ll need something like that) and mounted the transistor in it.  Of course it took a lot of gain to pull a usable signal out of the transistor, so AC hum was a problem.  I ended up shielding the whole transistor and its leads with aluminum foil, with just a little hole for it to peek out at the image of the background under the spinner.

A short shielded cable to a couple of stages of amplification with a good DC offset  adjustment, ending in a Schmitt trigger for a clean logic level, and I had something I could run into a PIC node on my home monitor network.  The amp is lashed to the main body of the device; in the picture above the PIC node is off to the right.  Some careful optical alignment and adjustment of the offset to the first DC coupled opamp stage, and I had an LED flashing for each half turn of the spinner!  (Update later:  On looking at the schematic, I’d expect a DC path to ground after the photo tran, and with that 22μF cap, the first stage certainly isn’t DC coupled.  It obviously works; sorry about the design and/or explanation.)

A little custom PIC assembler for the RS485 node, some perl to add the new node to the main house monitor poll and report cycles, some php to read the new data and put up a graph of it, some fiddling with calibration constants, and I had water usage on my home page.  It ran happily for a couple of years.

I pulled it off to look at it or show someone or something, and it stopped working.  It was down for another year or two, and I even had to put a comment on the water usage graph on my home page that it was temporarily down.

Just a month or so ago, I got it going again by simply running some water and slowly twisting the whole device on the water meter and watching for the LED to start blinking.  While the cloth mache housing was fitted around the black plastic cap over the 3 screws that fed the wire to an outside reading device, that wasn’t quite enough to register it perfectly.  This time I carefully put some registration marks on the bodies of my contraption and the water meter so I could put it back on successfully if I ever had to take it off again.

And then just a few days after it was working again I took it back off and began the trek to read the meter first via the radio the meter reader uses, and then directly off the 3-wire interface from the meter to that radio.  While I was eventually successful in reading the meter that way, the granularity of information I could get was orders of magnitude coarser than my old optical approach.  I’ve now hooked the original wires back up, put the plastic cover back over the screws, put my big black thing back on and am back in business.

And nice try, but no cigar on the registration marks I recently put on:  The “register” part of the meter that contains the dials (and the spinner the telescope looks at) is removable, and in working with it I twisted it in place by many degrees.  The mark I put on the meter was on the lower body of the meter, not the register, so the marks are no longer meaningful.  Boo.  But the “twist it until the LED blinks” trick worked and it’s up again.  (Have to be careful when using that technique to twist the telescope housing with respect to the register and not just let the register twist in the meter body.)  And I finally got to take that comment off the web page that the water meter is broken!

(I would have sworn I took pictures of this as I was building it, but I’ve searched all the picture archives, backups, old cameras and cards, and even pulled the disk out of the previous main PC that wouldn’t boot any more, but couldn’t find anything but the schematic of the amp.  All the (other) pictures here are very recent.  Sorry for no pics of laying up the cloth mache housing.  It was a very interesting, if messy project.)

Posted in Home Automation, Water meter reader | Tagged , , , | 6 Comments

Interfacing to my Neptune water meter

My water meter (with a Neptune T-10 encoder) is connected to an external RF transmitter (a Neptune R900) to allow drive-by meter readings.  Great!  I’d like that data for my home monitoring system.  (The bottom line is here.)

That meter has since been replaced with a Mach 10 using E-coder Plus protocol.  Decoding that one is described below; see Update 9/13/17.

Can I listen in?

There’s a cool 900 MHz utility meter monitor tool mentioned in this Hackaday post.  Unfortunately, while it can receive the transmissions from an R900, it can’t decode the data (yet).  I sent a note to Greg at gridinsight.com and asked if I could help with development of the R900 code, but what’s left would involve crypto stuff I know nothing about.  Nice try.  I guess I’ll have to try to eavesdrop on the data going from the meter to the transmitter.

The 3-wire connection between the two seems to consist of common, data (from meter to transmitter), and clock/power (from transmitter to meter).  The transmitter apparently polls the meter periodically by sending a string of clock pulses to it.  The meter responds by putting (usage) data on the data line, clearly clocked out by the clock pulses from the transmitter.  I can see both the clocks and the data; now I just need to decode the data so my home monitoring system can use it.

The encoder

The water meter seems to be cleverly designed with a separate “encoder” unit magnetically coupled to whatever it is that actually moves with the water flow inside the meter body.  That encoder, which can be replaced on the fly, contains the clear plastic head with 6-digit odometer style counter, a big hand with a calibrated dial for the least significant reading, and an uncalibrated double ended red “spinner” that shows flows too small to be seen easily on the big hand.  The 3-wire interface is part of that encoder.  While it might be possible to harvest a little energy from the water flow, I think the encoder has no internal power.

Apparently (my inference) the device at the other end of the cable (here, the R900 battery-powered transmitter) polls the encoder by sending a stream of clock pulses to it.  The encoder extracts enough power from the 5V logic level clock stream to allow it to reply on the data line with the current values of the odometer counters.  An interesting feature of this mechanism is that the polling device always gets the complete total usage reading – not a delta.  Thus the reading is essentially guaranteed to be accurate.

A little more detail

From the product information on the R900, while it sends a 900 MHz spread-spectrum RF burst with the “latest” usage data every 14 seconds, it only polls the meter once an hour.  (Thus the quotes.)  While I’d like to just be a non-invasive listener, I’d really like more granular data.  I suspect, but haven’t tried yet, that if I inject a suitable series of clock pulses at times of my choosing (maybe every 10 or 15 minutes?) the encoder will respond to me just like it does to the R900.

Of course it would be very inappropriate to impose my clock pulses on to the R900’s clock driver output.  One possibility would be to put a (probably Schottky) diode in series with both the R900’s clock output and mine, hoping the 0.3V lower voltage level on the clock line would still allow the encoder to respond reliably.

And then there’s the interesting question of how the unsolicited data transitions caused by my clock pulses might affect the R900.  I suppose if I wanted to be very polite about that I could interrupt the data line to the R900 with a relay so it would only hear the data it expected.  But that’s a way out yet.

Decoding the data

Back when I hoped to be really non-invasive (never disconnecting the original wires), I made up something with spring contacts to connect to the screw heads of the 3-wire interface.  That gave me a nice wire coming out with all 3 connections I could play with.

I connected the wire to my USBee SX logic analyzer (the first time I’ve used it!) and set it for 1 M samples at 1 μs/sample (lowest number and lowest rate offered).  I set a trigger for lo-hi edge on one of the clock/data lines (I didn’t know which) and left it for a while.  It triggered, and I looked at the data, but it didn’t make any sense at all.  After some head-scratching, it looked like the wire I’d used for common (black – duh) was in fact one of the clock or data lines.  Trying again with green as common, I got (what I think to be) a good capture.  A nice stream of clock pulses on one line (black) and some kind of data on the other (red).  Maybe 0.26 sec of data out of the one second capture, but I can ignore the silent times.  I’m home free!

Well, no.  While the data transitions always occur right on a clock edge, some are on a rising clock edge, some on falling.

Looking at a larger scale and starting right after the very first rising clock edge, the same pattern appears on the data line 6 times in a row.  (Picture on right is just the first instance of that pattern.)  Counting a clock pulse as one hi time and one low time, that pattern takes just 16 clock pulses.  That’s a nice number.  Unfortunately, looking past that initial (sync?) pattern, there are “blips” (I don’t know any appropriate word) of data – between a rising and a falling edge, but not necessarily in that order – that are only 1/2 clock pulse wide.  (Is that really a bit time?)  There are both low blips (falling edge followed by rising edge) and high blips (rising -> falling).  POSSIBLE CLUE: (it looks like) all high blips occur during a high clock half-cycle and all lo blips occur during a lo clock half-cycle.  Here’s more:

Hmm – all the one-half-clock-pulse wide blips I could find start on a clock falling edge and end on a rising clock edge.  Also, all the longer N-and-a-half clock width blips are adjacent to a half-clock blip.  I don’t understand the implications of all that – it’s just some random observations.

I could really use some help figuring out the protocol – at least step zero to read bytes from it.  If anybody wants to play, the USBee binary capture file is here: water2ulb.txt.  You’ll need to rename the file to water2.ulb.  The USBee SX logic analyzer code – which will run in demo mode without the USBee module plugged in – can open that .ulb file so you can root around in it.  You can freely download the (Windows 32 bit) logic analyzer code here: http://www.usbee.com/sxdemo.zip (more versions here: http://www.usbee.com/download.htm).  Fifteen second GUI lesson: left/right mouse clicks zoom in/out; click & drag to pan; left/right clicking in “Cursors” bar sets “X”/”O” marks; click something in “Cursor Insta-measure” and mouse over the data for some tools.

Update 9/4/12: After staring at it for a long time I noticed a pattern:  There’s always a 1/2 clock cycle lo “blip” on the low half of every 16th clock cycle, always followed by a high blip of either 1/2 or 3 1/2 clock cycles.  And those are the ONLY instances of 1/2 cycle nonsense.  Otherwise all data line transitions are reassuringly on hi->lo clock edges.  Those statements apply to both sections of the communication capture:  The first ~500 clock cycles of 50% duty cycle and 0.3ms width, and the last ~250 clock cycles of 33% duty cycle and 0.42ms width.  (What’s that about??)

So the half-cycle stuff is clearly some kind of frame delimiter.  But with 15 clock cycles of usable data time per frame, the bit encoding is still unclear.  More head scratching ahead.

To avoid conflicts with my someday higher frequency polls and the polls from the R900, I needed to know how often the R900 actually polls.  I set up an Arduino to look for lo-hi transitions on the clock line and timestamp them.  (It sleeps 1000 ms after it logs a transition to ignore the ~0.25 seconds of actual data.)  The R900 is quite uniform in polling about every 3030 seconds.

Even more interesting is that the polls are sometimes repeated after a second or few, up to 6 times in the day or two I’ve been logging.  Most polls are not repeated.  A first guess is that a repeat poll is sent when some kind of checksum fails.

Update 9/6/12: It occurred to me that my simple assumption that the reader provides a series of clock pulses and the encoder drove the data line might not be completely right.  (Especially in light of the change in clock duty cycle after the first 500 or so clock pulses.)  To see who was really driving the bus (?), I thought I’d isolate the two sides with Schottky diodes oriented so the R900 power/clock could get thru and the data line high states from the encoder could get thru.  (Two diodes pointing in opposite directions.)  I’ll spend 2 more channels of the USBee SX and monitor on both sides of both diodes.  I’m hoping the logic thresholds will let me see if there is any difference on the two sides of the diodes, indicating a more interesting story than I originally assumed.

The only Schottkys I had were SMT, so I sliced two insulating slots in a bit of scrap copper clad, soldered the diodes on, and set it up so it would be easy to insert inline in the black (clock/power) and red (data) lines.  (Green is common and will remain connected.)

I didn’t want to interrupt an R900 poll (though I don’t think that would cause any real trouble), so I needed to know when to expect the next poll.  My Arduino sketch logging time between polls was still running, but it didn’t tell me how long ’til the next poll.  I added a Serial.available() check so any keypress will print time since last event (and, assuming 3030 secs between, estimated time ’til next).  Now I know how much time I have to remove my spring contacts, rewire the cable to the R900, reposition my spring contacts, and set up the USBee SX.

Grumpf.  The PC software had somehow lost contact with the USBee module and wouldn’t run and capture.  I had to shut it down, unplug module, replug module, restart software, and set up for the triggered capture again.  In doing that, I missed the poll event.  Grumpf.

And then several more misses.  Can’t find the USBee help files – bad link on their web site!

OK – got a capture.  (USBee setup: set CLK input so  you can change Capture on TRIG to hi; set CLK back to output; set 1st 2 cols on clock sig to lo, hi; click Acquire.)  Clock is identical on both sides of the diode.  Good – no funny business from the encoder (like providing the clock!).  So I have to believe if I injected a clock pulse stream, I’d elicit data.  But the data line is not identical.  Data is clearly driven on the encoder side.  Unfortunately the signal on the R900 side goes high and stays high.  Very high input impedance?  Anyway, I don’t think the R900 gets the data.  Its clock stream extends way longer than normal.  Jumpered around the data line diode.  New capture much better, but not quite like first one.  That capture is water4.ulb.

The Arduino monitoring polls also saw re-polls until I jumpered the data line diode, then R900 got data first poll.  The bad news is that now I still can’t tell if the R900 ever writes on the data line.

Encoding details

Update 9/9/12:  OK – I think I’ve won.  The apparent re-polls from the R900 when the (weak-drive) data line was connected directly to an Arduino input caused me to add a simple buffer to reduce the loading on the encoder’s data line.  That seemed to help.  After I fixed dumb bugs in my code, the Arduino started getting data. Then I replaced the function that waited for a clock edge with code that toggled a bit so the Arduino provided the clocks.  Once I could generate my own clocks, I made a lot faster progress than back when I had to wait 50 minutes for the R900’s next poll!

And that let me figure it out.  Here’s how the data is encoded:

The (brown) clock is regular, with a period of ~300 μsec.  The basic bit time is from clock falling edge to the next falling edge.  Five bits of data (red line) are shown – pretty obvious.

There’s a frame delimiter (Frm) consisting of a half-cycle of low (starting on clock falling edge) followed by a half cycle of high (starting on clock rising edge).  This frame mark (from the register encoder) occurs regularly every 16th full clock pulse.  That gives us 15 bits of data per frame.  When data bits are being clocked out, a data line transition is never allowed on a rising edge, making the frame mark completely unique.

Looking at the “sync” frame, here’s how the data is decoded.  After the frame mark, we take blocks of 4 bit times and express them in binary.  With LSB first, the bits in each nibble are reversed, and all the nibbles are reversed.  There are only 15 data bits, so the most significant bit (X) is missing; we assume it’s a zero.

Very interestingly, the only nibble values that I’ve ever seen are 4 and 7.  Now, for reasons I don’t understand, we assign a nibble value of 4 to be logical “1” and nibble value of 7 to be logical “0”.  The sync frame above then has the logical value 1110 – or 0xE.

The actual usage data is expressed in BCD, one digit per frame.  That 0xE sync value is reassuringly not a valid BCD value.  Along with and bounded by a LOT of sync frames, the most recent capture has four consecutive frames with values of 7477, 4774, 4774, 4777.  Converting to logical and expressing that BCD as decimal, that’s 4998.  This meter shot, taken a week or two ago shows a close, but lower value in the high 4 dials.  Right after I took that capture, the meter read 4998.  (Update 9/11/12:  The meter just rolled over to 5000 (in the hi 4 digits) and a poll from the Arduino produced the same value.  I declare the decoding described here to be correct.)

The bad news is that it provides terrible resolution for my needs (like verifying that the watering system is working), although perfectly adequate for the city’s billing purposes.

One shred of hope was in the two phases of the R900’s poll, with different duty cycles.  Might that second, 33% duty cycle poll elicit data from those lower two wheels and maybe even the big red hand?  I found an early R900-clocked capture and manually decoded the data.  Nope.  Same patterns and same data as the 50% duty cycle poll.  Bummer.

A few more observations about the whole data sequence.  Starting from the clock line going from 0V to 5V (rising edge), we have the second half of a frame marker, followed by 6 frames of the 0xE sync pattern.  Then we have 4 frames containing the (most significant) meter usage wheel data, 5 more frames of 0xE, then one frame of 0xF.  Then the whole pattern repeats.  The R900 poll sequence provided 300 μsec 50% duty cycle clocks for: 6 0xE, 4 data, 5 0xE, 1 0xF,  6 0xE, 4 data, 5 0xE; then 424 μsec 33% duty cycle (1 lo, 2 hi) clocks for 1 0xF, 6 0xE, 4 data, 5 0xE.

I tried 100 frames’ worth of clocks and the pattern of 6 sync, 4 data, 5 sync, 1 0xF just repeated and repeated.  And no checksums – My earlier guess about a checksum fail was wrong.  I guess the data integrity check is just to watch the data for more than one cycle and make sure it’s the same.

The bottom line is that while this was an interesting reverse engineering project, the results are not useful at all to me.  I’ll just go back to my optical telescope.  <sigh>

Final Arduino code to generate clocks and read data is here.  Update 1/17/20:  Very sadly, I think the code linked above is all I have on the Pro Read.  There’s a comment that the original code was lost, and I’ve dug thru all the archives I can find, and there’s no trace of that code.  I guess when I realized it wouldn’t provide the data I wanted, I really just gave up.  Can’t imagine that I would have deleted the code, tho.

Of course Bob’s github repo is still there.  I may get some clean code helping Jean-Marie get his T-10 working, and will post that.

Earlier attempts

I’ve wanted water usage data for a long time.  I had a temperature sensor on the incoming water line that could very crudely sense when water was flowing (with better luck in winter when incoming temp was farther from basement temp).  I considered taping a mic to the pipe and looking for noise.  But the water meter was the obvious source of the data.  While I seem to have gotten over it, at the time I didn’t want to hook up to it electrically.  But maybe I could get the data optically.

I built an optical telescope looking at the spinner, and even got it to work and calibrated it in gallons used.  It ran for a while, failed for a while, got fixed and ran a little more before final failure.  Details are here.

Update 9/13/17:  New meter coming!

I just got an email from our town (Elmhurst) saying they’re about to replace all residential water meters with new ones.  From the picture they included and some words in the notice, it looks like it’s a Neptune Mach10 ultrasonic time-of-flight meter.  Two “wet” ultrasonic transducers measure time of flight of acoustic signals with and against the flow, computing the flow speed from the time difference.  No moving parts, 20 year sealed battery, and WAY finer resolution: 0.1-35 GPM.

It speaks E-Coder Plus protocol, presumably with the full 9 digit value of the counter.  It looks like the communication is still 3 wires (green still ground), so Bob Prust’s Arduino code should still read it.  It looks like the implementation here will be meter/encoder inside the basement where the old meter was, and a (new) RF900 MIU outside.

Also very interestingly, they claim there will be a web portal for users to see their usage in finer detail than what we get on the bill.  Don’t know how good that will be yet.

Also interesting, I won’t have to feel guilty about not getting  my old optical telescope working any more. 🙂  And I wonder if I can piggyback installing an electric whole house shutoff valve along with the meter installation.  I mean, as long as it’s all disconnected…

Installation some time between October and March 2018.  I’ll post more when it’s installed.

Update 2/22/19:  Several months ago the city installed the new meter.  With some sadness, I didn’t have my act together enough to install the Water Cop shutoff at the same time.

I haven’t even touched the new meter to try to get any data from it.  While that’s not out of the question, I’m leaning more toward installing my own flow meter in the section of pipe I’ll have to plumb in to install the shutoff.  More to follow.

Update 9/4/19:  I’ve tapped into the lines to the R900, and gotten a couple of initial data captures.  No insights yet.  Protocol (which is said to be E-Coder) is clearly different: no nice frame markers, no obvious data repeats.

To look at the data in a more convenient manner than the ‘scope trace’ display, I got the USBee SX to play the clock and data back and wrote an Arduino sketch to decode it (as synchronous  data against the clock) and display it in hex.  Of course with no clear frame delimiters, the ~45 bytes of data could be arbitrarily bit-shifted.  More to follow.

Update 10/6/19: Woo hoo!  I just played back a USBee SX capture from the meter to an Arduino sketch inspired by approaches in Bob Prust’s E-Coder code and got strings back with my meter’s serial number and water usage values!  There’s some more work, but the decoding is resolved.

I think I’ll just “listen in” to data triggered by the R900’s once-an-hour polls.  I’d like a little finer granularity, but this way I don’t have to cut any wires.  I’ll include little one transistor buffers to minimize the load on both the clock and data lines.

Clock half-cycles are ~400 µsec, so trying to service both the Neptune capture and polls from the HA system might be touchy.  I could use interrupts to sense the clock transitions, but I hate to just spin for the 200 µsecs until I read at mid-clock phase.  Maybe just ignore the 485 net polls when I’m reading the meter:  I think the retry cycles built into the 485 net protocol are slow enough to survive missing one poll because I’m busy.  We’ll see.  More to follow, but I was just really delighted to get the first Neptune data!

Update 1/13/20: Oops – I guess I haven’t updated this for a while 🙁  From file timestamps, it looks like I got the Neptune decoder working and integrated into the home automation system ~10/21/19.  Here’s the Arduino based 485 net node that connects to the meter.

And here it is in its new home.

Pretty, but not very helpful.  Here’s the schematic of the simplistic interface to the meter.  The 20K input resistors were my attempt to isolate my stuff and make it minimally visible to the official meter/radio system.  Seems to work.

I did end up with an ISR to read the meter input.  In an embarrassing bit of misdesign, I interrupted on the wrong clock edge and fretted about having to put a 100μsec delay in the ISR for data to settle. (Generally a serious no-no, but it turned out I could get away with it due to an extra level of interrupt buffering I didn’t know about.  Ugh.)  After I interrupted on the correct clock edge, the data was already good, no settling delay needed.  Dumb, but cost a lot of time.  I did learn stuff, tho. 🙂

The decoding logic was from Bob Prust’s code.  I reimplemented it because my hardware was different from his, but his base logic is good.  I spoke with him and he said he’d be happy to have me commit a new version to his github node.  There it stopped – I got busy and never put my code up.  I’ll do that Real Soon Now.  Thanks to SZaf for the gentle reminder. 🙂

(It turns out the critical paths of this and the new Water Cop house water shutoff valve got comingled, as there was only one drop from the 485 net near by and new cabling was required before they could both run.  It’s all done now, and I can shut off the water to the house remotely (or via cron).  Hmm – I guess I should write that up as well.)

Update 2/3/20: While I still plan to submit my Ecoder Arduino code to Bob Prust’s github repo, I’m out of town and can’t test stuff.  But I did at least want to post candidate code here temporarily.

Here are two versions, one using an ISR and the other not.  Both connect to my Mach 10 driven by an R900 using the buffers above, and output ASCII meter data.  They should be basically the same.  Neither is exactly what is running at home, as that’s co-mingled with ugly stuff to talk to my RS485 HA network.  Change filenames from .txt to .ino.

With ISR  No ISR

 

Posted in Water meter reader | Tagged , , , , , , , , , , | 70 Comments

LiPo conversions

I’ve rebuilt several NiCd battery packs now, and all have been moderately successful.  But all except the one I used all new cells for (Ed’s DeWalt) have surprised me with one cell failing way earlier than I’d like.  Humpf.

Now that I’ve gotten my feet wet a little with LiPos and learned that the catching fire, being incredibly sensitive to charging protocol etc are pretty much addressed if you use an actual LiPo charger, and that except for the charging rate the chargers are all pretty interchangeable, it has occurred to me that maybe I should bump some of my devices up to this new, high energy/weight ratio technology.  Volts is volts and amps is amps, so the device motors don’t know or care what battery technology is providing the power.  And from the various NiCd rebuilds, I just happen to have some spare battery cases I can hack to house a LiPo.

The RC aircraft/car industry has made a great variety of high power LiPos available at reasonable cost.  I just bought a 3300 mA-hr 18.5V battery rated at 40C discharge (that’s > 120 amps!), along with a nice, flexible charger.  That 3300 mA-hr rating is about double what most NiCd sub-Cs will deliver – and the battery pack is smaller and lighter.

Of course it’s a different shape, so some moderate container hacking will be needed to make something that will plug into my two target devices.  You can see it won’t quite fit in the cases for either the B&D blower battery or an 18V DeWalt pack.  In choosing that big honker I realized the great capacity would come at a cost of ugly packaging.

For this first foray into big LiPos, I only have one battery, so I got some extra mating connectors so I can swap it easily between the B&D and DeWalt cases.  I guess the cool kids use Anderson PowerPole connectors, but this battery already had 4 mm banana connectors, and HobbyPartz had the mating ones pretty cheap.  And the online support chat person was able to tell me that I needed the 34 mm long ones rather than the nearly identical 30 mm long ones.  (Who knew?)

But even more than needing to unplug the battery to swap cases, I’ll need to unplug it to charge it.  Unlike the crude two-wire connection to a series block of NiCds, high performance series LiPos also have balancing connectors that provide separate connections for each cell.  While the bulk of the charging current still goes through the main  connections to the very outside cells, the balancing connections allow a smart charger to adjust the charge current to each cell independently.  You don’t just plop these puppies into a hole in a charger anymore!  Here’s this one set up to charge.  (Yeah, one of the charging adapters has silly thin wires for this application.)  Since the charger can deal with batteries with from one to six cells in series (1S-6S), it has a little breakout panel to connect a variety of balancing connector widths.  Yes, I realize this will make for pretty inconvenient charging, but I’m hoping the extended run time will be worth it.  We’ll see.

I really don’t want to abuse/over-discharge this nice new battery and the devices can’t provide any warnings, so I need some way to monitor the voltage while I’m using the devices.  The RC industry (and Ebay) came to the rescue again with this $3 multi-cell monitor/meter.  It plugs into the balancing connector so it can report on each cell.  It will add even more ugly to the packaging to have this thing stuck on the outside of the battery case, but at least until I get a feel for how the devices perform, I’ll feel better knowing the voltages.

Updates to follow as I actually hack up some battery cases.

Update 8/15/12: I use the blower to clean up after I cut the grass, and I had to cut the grass, so I had to somehow get the blower running.  (OK, I could have used the one remaining NiCd pack, but what fun is that?)

It was thinner than ideal, but I used some 18 gauge zip cord to make a little pigtail from the connectors in the top of a battery case to my now-standard polarized 4 mm banana plugs.  The metal insides snap into the connector shells from the outside, so the wire has to thread thru the shell before soldering it to the contact.  Requires a little extra splitting for use with zip cord, but it’s OK.

Time was short, so I didn’t hack the case.  There’s some kind of slot/rail that holds the top of the case in the blower, so that was all I really needed.  I put some padding in and strapped the battery in with some velcro.  Really crude, but pretty effective.

The battery has never been used, and I assume it was shipped in the customary 50% charged “storage” state, so I needed to juice it up before I used the blower.  Cleverly fitting the battery holding stuff first, there was now a nice time window to charge it while I cut the grass.  I was going to leave the charging setup unattended (generally a poor practice with LiPos), so at least I put it on a fireproof surface (the stove top).

It’s a 50W charger, and the battery is 3300 mA-hr, so I chose a conservative 0.63 C charge rate of 2.1A to stay within the charger’s specs.  The charger has a fan, but understandably it was getting warm.  Just to be nice I put another little table fan on the whole setup.  When I came in after the grass was cut, the display indicated “Full”.  It had defaulted to 4.2V/cell, so it was reading just about 21V.  I don’t know if it does a much lower current at that point or just shuts off.

When I ran the blower, it was louder and higher pitched – and more effective – than I’d become accustomed to with its less-than-new NiCd pack.  I did my normal cleanup routine and at the end it was still going like when I first turned it on.  The zip cord pigtail was noticeably warm, but the battery was cold.  When I got it back inside it was down to 20.2V no load, so I’d hardly put a dent in it.  Crude packaging, but a fully successful first conversion!

Update 8/23/12: I cut the grass again today and used the blower with the LiPo.  I hadn’t recharged it after the last use.  It was still 18.6V no load when I was done this time.  Nice battery capacity!

Update 8/31/12: I cut the grass again and used the blower again – still without recharging it after the first time – and it ran fine and still read ~18.2V afterward!  That’s 3 uses on one charge.  I used to go through both my 18V NiCd packs for each cleanup.  This battery is great.

The little 6S voltmeter came a little while ago.  It was very nice to have this “fuel gauge” to see how the battery was doing as I was using the blower today.  The balancing connector on the battery has one red and 5 black wires.  The voltmeter is marked + and at the ends.  If I let the + end hang out over the connector end with the red wire, it works.  After it boots up, it loops, displaying “ALL, <voltage>, No1,<voltage>,No2 …”  Works fine.  I connected just the end and the first adjacent pin to a 12V (lead/acid) battery and it displayed the battery voltage nicely.

Posted in LiPo Conversions | Tagged , , , | Leave a comment