Dish-O-Tron 6000

A device to detect when the dishes in the dishwasher are clean or dirty

I’m absentminded in general, but especially so when it comes to the dishwasher. I can never remember whether the dishes are clean, whether the machine needs to be run, or emptied, or whatever. I needed a solution to this problem. My first thought was to hang a flippable sign on the door that said “clean” on one side, and “dirty” on the other. Simple, logical, and functional. My second thought was, “What?!? That’s dangerously under-engineered. I can make something much more ridiculous than that”.

This contraption is the result.

Important Update!  After reading up on the Dish-O-Tron, be sure and check out the improvements I’ve made since this was written!


Here’s a video showing the Dish-O-Tron 6000 in action!

As you can see, all you do is slap it on the door, and turn it on. Then use your dishwasher as you normally would! It’s brilliant!*

*Product may not actually be brilliant. Void where prohibited.

The challenge here is to automatically detect when the machine is running (so we know when dishes have been cleaned), and to automatically detect when the machine has been unloaded (so we know when the dishes inside are dirty once again). The former is done by detecting the temperature of the door panel. When the machine runs, it gets quite warm. The unloading detection is a bit tricky, because we need to distinguish between grabbing a quick dish or two (thus leaving the machine full but still clean), versus unloading the machine completely. This is done by detecting when the door is fully open (using a rolling-ball tilt switch), then waiting a full minute. If the door is open that long, it’s because I’m unloading it. If the door only opens part way, or only opens briefly, I’m probably just grabbing a clean bowl for my cereal, but don’t feel like unloading the machine right now.

So, here’s the schematic:

The upper 555 is configured bistable, and tracks the state of the dishes (Clean or Dirty). The initial state is Dirty. The 3103 thermistor forms a voltage divider that pulls pin 2 low enough to flip the state when the machine gets warm. The lower 555 is configured astable. It starts timing when the tilt-switch is closed, and if a minute passes without the tilt-switch opening again, the upper 555’s state is reset again. Simple!

Here's the schematic with the functional units marked. You can see there are also manual controls for setting the state, since there are bound to be cases where the device gets out of sync with the real world. Also note that the Dirty state is just the inverse of the Clean state. The device really only tracks whether the dishes are Clean. The lower 555 is only enabled when the upper 555 is in the Clean state. If the dishes are dirty, I don’t care what the door is doing. The unloading timer’s RC circuit has a trim pot in it, so I can tune it if I find that I unload the machine quicker or slower than expected.

With the basic design settled, the next step was to figure out the voltage divider for the thermistor. For that, I needed to know how warm my dishwasher gets. I ran a full cycle with a 3103 taped to the door, and kept an eye on the resistance.

This was actually kinda neat to watch. Here’s a video. Okay, I thought it was neat. Shut up.

Using that setup, I graphed the results to determine a good trigger point. The trick is that it still has to work when the ambient temperature is high (such as in August, since I have no A/C). That means trying to choose the hottest point in the cycle, with a bit of margin for error. I decided to set the cut-off at 7.5k. That’s close to as hot as the machine gets, and it represents about 33°C, which is hotter than my kitchen ever gets. Just in case though, the voltage divider has a trim pot in it that provides lots of room to play with this. I believe that graphing the temperature profile of my dishwasher is the dorkiest thing I have ever done.

The next step was to breadboard it and test it.

Once it was working on the breadboard, I soldered it up, and tested the real circuit. The little metal can is the rolling-ball tilt switch, mounted outboard on some stiff wire so that the angle can be adjusted as needed.

Once the PCB was done, I bench-tested it by sticking LEDs in the header connection, and simulating the thermistor with a 10k pot.

For the casing, I decided to gut a broken old Palm Pilot that a friend gave me. It’s about the right form factor, and it has nice holes already well-placed for the I/O elements. I mounted magnets to stick it to the dishwasher, and the thermistor sticks through a crack in the original battery hatch such that it contacts the door panel.

I built a chassis harness with all the I/O elements, and routed it to the header on the PCB. This way the PCB is removable, in case I ever want to futz with it some more.

Next I test-fit everything, and did a full chassis shakedown. Holding a soldering iron near the thermistor (no touchy!!) did a nice job of simulating a dishwasher cycle.

I modified the shell a bit to suit my needs, then gave it a nice coat of white to match the dishwasher. An old wire hanger makes a nice painting jig.


Now, don’t forget to  read up on the improvements I’ve made since this was written!

9 thoughts on “Dish-O-Tron 6000”

  1. Joshua says:

    This is awesome and awesome use of the 555, I’ve missed working with that little bugger. I may have to make one of these. But i’ll give full credit to you of course. 🙂

    1. blondihacks says:

      Thanks, Joshua! I’ve actually been working on a revision B to improve some quirks. I’ll be posting an addendum to it soon.

  2. Brian says:

    This is simply brilliant. You have managed to get the most functionallity out of the least work. I REALLY like your ideas for determining clean vs dirty. I doubt I would have thought of one minute fully open to decide “dirty”.

  3. blondihacks says:

    Thanks Brian! 🙂 This design has a few weaknesses, which I’ve since ironed out after using it for a few months. I’ll be writing a followup to this in a couple of weeks detailing the changes. Stay tuned!

  4. Alex says:

    Measuring the temperature of your dishwasher through its cycle isn’t quite dorky enough.

    What you need to do is run multiple tests over the course of the year, and graph surface temperature of dishwasher door versus ambient air temperature.

    Your initial value of 33°C is certainly worthy of elegant hack status, no question about that!

    1. blondihacks says:

      Haha, that would be taking it to the next level, for sure.

  5. Tomaz Z. says:

    Great idea and a wonderful hack! However… please don’t use HUGE images as thumbnails next time. Not everyone has a fast internet connection. 😉 (The first image is 3264×2448 pixels when it could’ve been less than 10% of that for a thumbnail. Took forever to load.)

    1. blondihacks says:

      Whoops, sorry about that! WordPress is supposed to be making low res thumbnails automatically. I’ll look into that and see why it isn’t. Thanks for letting me know!

  6. trent says:

    first off, nice touch on the project case! zeroed in on that right away!
    very inpressive circuit and presentation too!
    u got a boyfriend?! lol

    but seriously NICE WORK!

Comments are closed.