Making something work on the bench, and making it work in the real world are often very different things. While the Dish-O-Tron 6000 has been an amusing companion on my dishwasher door for a few months now, it has proven to be somewhat unreliable. Making it more robust has been an interesting odyssey of tracing unpredictable behaviour, and learning the finer points of electrical noise. I’ve also learned a lot more about the weaknesses of the noble 555 timer.
I identified a number of problems in long term use:
Sometimes, while sitting in the Dirty State for a long period, it would randomly flip to Clean.
Following a run of the dishwasher, while sitting in the Clean state, it would occasionally spontaneously revert to Dirty.
The battery life was too short. It needed a new 9V battery about every three weeks, when in continuous operation.
The first two bugs were pretty rare, but common enough to be annoying. The battery life problem was just plain expensive! All three issues needed to be resolved for the Dish-O-Tron to be a practical device. I started by tackling bugs #1 and #2.
So now it was back to research mode. I knew something in my kitchen was making the upper 555 reset, but not what. I studied up on the quirks of the 555 timer, and learned that when chaining them together, a decoupling capacitor is recommended on signal lines. Perhaps my spontaneous state changes are being caused by noise on the signal line between the two 555s.
Well, that turned out to be a wild goose chase. The problems persisted. A decoupling cap in a signal line is still good practice, so I left it there and moved back to research. I read everything I could find on known issues and gotchas with the 555. The evidence seemed to suggest that the 555 was picking up noise on pin 2, which is pulled to ground by the Clean switch. When the switch is open, this pin is supposed to be pulled high by the thermistor voltage divider. However, perhaps noise was getting in there somehow. A small cap tying the Set pin to ground might help.
So, the Dirty state was now stable. However, Clean was still a bit unstable. I noticed that Clean only became unstable after the dishwasher door had been opened following a cycle. That pointed the finger at the tilt switch I’m using to start the unloading timer. Could the tilt switch be giving false positives? I opened and closed the door repeatedly until the Clean state flipped spontaneously, then quickly put an ohmmeter on the tilt switch. It was closed when it should be open! That meant the little rolling ball inside the switch was getting stuck sometimes. Tapping the switch with my finger made it read correctly again.
I needed something better than this rolling ball tilt switch. The old-school component for this purpose would be a mercury switch. However, as we all know mercury is very toxic, and mercury switches have essentially been phased out completely. They are not RoHS compliant, which makes them very difficult to get in the United States. A modern equivalent would be an accelerometer, but that would require a completely different circuit design. I needed a drop-in replacement for a simple mechanical switch that registers changes in angle. There are other rolling-ball designs, but I have no way of knowing if they would be any better, and I suspect they wouldn’t. A mercury switch is really what I need, but you can’t buy them in the United States any more. Or can you?
So that fixed bug #2 quite nicely! Now on to bug #3, the battery life problem. I considered circuit changes to extend battery life, but honestly the 555 timer is kind of a little pig, and I was never going to get battery life to where I was happy with it (six months or so). However, where there’s a dishwasher, there’s mains power, right? Why not just convert the Dish-O-Tron to run on mains? That’s exactly what I did, in fact.
I resumed normal use of the Dish-O-Tron with its new power source, but much to my frustration, Bug #1 reappeared! It was switching from Dirty to Clean all by itself again. Back to the bench!
A little bit more research taught me that wall warts are terribly, terribly noisy sources of power. With that knowledge, I went back to the kitchen, and messed around in the environment to see if I could recreate the problem. I found that if I flipped a nearby light switch rapidly, the Dish-O-Tron would flip spontaneously to Clean. That’s Bug #1, alright! I could reproduce it by introducing AC power noise via the nearby light switch. So clearly, I needed a cleaner power supply.
That seemed to work very well once I got the right capacitor setup to support the 7809 regulator which was now supplying our juice.
Since I was in there reworking stuff, I decided one more tweak was in order. The Dirty light was a bit dim on the original design, which was intentional but always bugged me. The device spends most of its time in the Dirty state, and I wanted to save battery life. Now that it runs on mains, however, why not brighten it up?
I took careful notes while I was making all these changes, and revised the schematic once I had it all working. Here’s Revision B of the Dish-O-Tron 6000. Meet the Dish-O-Tron 6000 EXTREME!
Great article! I’ve had to go through some of the same steps you went through for several designs & it’s both rewarding and challenging.
Plus, it gives you a chance to come with ever more ridiculous names for the product. 🙂
Just love it!
“The device spends most of its time in the Dirty state…” don’t we all.
I love blondihacks. More please. I once tried to build a doorbell but couln’t figure out how to run a small motor for 5 seconds after an instantaneous press and release of the button. Then my wife said it was too big and ugly (but it made a beautiful sound). then i just gave up
Hey, I know you…. 😉
Haha, dirty state indeed. More hacks are in the pipeline- glad you like ’em!
There are a couple of ways the battery-eating problem could have been reduced:
first, the 555 is not that energy-frugal. Its CMOS nephew, the 7555 is way better in this respect.
second, the state indication continuously eats at least some 3mA (through R9 and either the ‘dirty’ led or Q1). A SPST momentary switch in what is the supply for the display to show the state on demand, or using another (7)555 as an astable with a low duty cycle to pulse the display supply would clearly cut current consumption. As would using a PNP instead of an NPN to actually switch the ‘dirty’ led on instead of essentially shorting it. An even simpler way would be to tie the ‘dirty’ led between Vcc and IC1 pin 3 (with a series resistor, of course), but then you lose the possibility to easily pulse/switch the display power.
A different matter is that the ‘door open’ switch allows the timer cap to charge, but there’s no discharge when the door is closed (only via the 555’s internal resistance, which is quite high). If you now open the door briefly a couple of times repeatedly, adding up to a total of one minute and a bit, it would still allow the timer to complete and reset the state. I would have wired the door switch straight across C3, with the switch state closed when the door is, so that every time you open the door, the timer starts anew.
But otherwise, a nifty hack. And not using an Arduino gives you bonus points.
Those are great tips, thanks! Thats a good idea about the 7555. You’re also quite right about the “cumulative timer error” introduced by the way the cap and tilt switch are arranged. In practice, that hasn’t really been an issue, but its definitely worth improving. Thanks the great ideas!
Hi Quinn,
Have you tried using a low power National Semiconductor LMC555 CMOS timer instead of the LM555?
Hi David! Nope, I didn’t try that. Worth a try if I decide to go back to batteries.
I’m in love…
I would have been tempted to make my own tilt switch using graphite rods from a mechanical pencil (no corrosion) and salt water in a tube… and add a big resistor in series to prevent hydrolysis by (greatly) limiting current.
Finally, a transistor/darlington pair/opamp to amplify/impedance match if necessary… which it probably is 🙂
Maybe one of those super-magnetic little balls* that are sometimes sold as a stress relief toy can be combined with a reed-switch or an hall-effect sensor to make up a tilt switch?
*) They seem to be banned rather more quickly than the toxic mercury though.
Great article! I’ve had to go through some of the same steps you went through for several designs & it’s both rewarding and challenging.
Plus, it gives you a chance to come with ever more ridiculous names for the product. 🙂
Just love it!
“The device spends most of its time in the Dirty state…” don’t we all.
I love blondihacks. More please. I once tried to build a doorbell but couln’t figure out how to run a small motor for 5 seconds after an instantaneous press and release of the button. Then my wife said it was too big and ugly (but it made a beautiful sound). then i just gave up
Hey, I know you…. 😉
Haha, dirty state indeed. More hacks are in the pipeline- glad you like ’em!
There are a couple of ways the battery-eating problem could have been reduced:
first, the 555 is not that energy-frugal. Its CMOS nephew, the 7555 is way better in this respect.
second, the state indication continuously eats at least some 3mA (through R9 and either the ‘dirty’ led or Q1). A SPST momentary switch in what is the supply for the display to show the state on demand, or using another (7)555 as an astable with a low duty cycle to pulse the display supply would clearly cut current consumption. As would using a PNP instead of an NPN to actually switch the ‘dirty’ led on instead of essentially shorting it. An even simpler way would be to tie the ‘dirty’ led between Vcc and IC1 pin 3 (with a series resistor, of course), but then you lose the possibility to easily pulse/switch the display power.
A different matter is that the ‘door open’ switch allows the timer cap to charge, but there’s no discharge when the door is closed (only via the 555’s internal resistance, which is quite high). If you now open the door briefly a couple of times repeatedly, adding up to a total of one minute and a bit, it would still allow the timer to complete and reset the state. I would have wired the door switch straight across C3, with the switch state closed when the door is, so that every time you open the door, the timer starts anew.
But otherwise, a nifty hack. And not using an Arduino gives you bonus points.
Those are great tips, thanks! Thats a good idea about the 7555. You’re also quite right about the “cumulative timer error” introduced by the way the cap and tilt switch are arranged. In practice, that hasn’t really been an issue, but its definitely worth improving. Thanks the great ideas!
Hi Quinn,
Have you tried using a low power National Semiconductor LMC555 CMOS timer instead of the LM555?
http://www.national.com/mpf/LM/LMC555.html#Overview
David
Hi David! Nope, I didn’t try that. Worth a try if I decide to go back to batteries.
I’m in love…
I would have been tempted to make my own tilt switch using graphite rods from a mechanical pencil (no corrosion) and salt water in a tube… and add a big resistor in series to prevent hydrolysis by (greatly) limiting current.
Finally, a transistor/darlington pair/opamp to amplify/impedance match if necessary… which it probably is 🙂
Maybe one of those super-magnetic little balls* that are sometimes sold as a stress relief toy can be combined with a reed-switch or an hall-effect sensor to make up a tilt switch?
*) They seem to be banned rather more quickly than the toxic mercury though.