Riding the Flow

musings from the shire

Washing Machine Modding

So I have this washer-dryer which I really like, used it for years and for this reason even bought exact same model when moved to a new house.
It very good no-frills design, and, most importantly, actually performs all functions well - for example, dryer function actually produces *almost dry* laundry unlike my first Bosch which only produced damp&hot.
But it has one downside - it does not have an audible signal. With the main annoyance that you often miss the end of a cycle, which most commonly happens - you load the machine, it runs for some hours, then you busy with other things, and then its finished, but you've forgotten to check it. Its not the end of the world, but laundry sitting inside drum for long time quickly becomes wrinkled (and in dryer case it gives opportunity for moisture to re-settle).
Also even if you listening for machine to become quiet, this does not actually mean its ready to open the door - because there is time-delay lock on the door which clicks open only some minutes after.
Previously I've already done some repairs to it (when badly clipped cable got in contact with cooling fan which produced screeching sounds when dryer was on and chopped cable insulation). So I was familiar with layout more or less, and even managed to find the service manual with schematics.
So I've decided to mod the end cycle buzzer indication using some dirt cheap Arduino parts. The idea is very simple - Arduino sits here and monitors state of door lock, when it opens, it beeps for my attention.

Luckily, there is no shortage of space inside for extra components to go. Also wiring & indicator board is readily accessible.
As a micro-controller, I've used cheap (~1.0-1.5£) Arduino Nano clone. If I wanted to be fancy (say, make my PC to produce notifications), I could have used slightly more expensive micro with WiFi  - but decided not to, because, in this case it was a bit fussy to access micro for re-programming (if, for example, WiFi network settings needed to be changed).
For sound, I've used a piezoelectric passive buzzer - these can be connected directly to output pins, and use ToneAC library to produce beeps. I like how it makes possible to code recognizable chiptunes/beep sequences to know exactly what signal is for.
After doing some probing with multimeter, I've easily found 5V and GND on the LED board, and there were ready pads to which I've soldered the wires to supply Arduino with power.
BTW when checking out the control board I found that it actually had a place for the buzzer (and for some extra components) - but, apparently to save cost, it was omitted. I considered tapping into these, but decided not to since it appeared to miss quite a lot of components and it was not certain if they used micro program which actually tried to actuate the buzzer (and if it even was actuated on end cycle and not, say, just when you turned switch around).
Now it was the key task - how to monitor the state of door lock. Door lock device was easy to spot and wiring accessible, however, after doing some multimeter checks I've found it was using 240V (both for actuating and actual "lock engage" indicator line). And I prefer not to muck around with mains voltage unless absolutely necessary (more on that later).
So I've decided to try alternative approach first - try to sense state of "lock" LED indicator on front panel. Since LED panel appeared to be 5V driven, it should have required least amount of interfacing with Arduino input pins.
So I've tried to probe around on control board to find that "padlock symbol" LED supply pins. But I've quickly found that LED board used multiplexing LED matrix design - when there is no control line per each LED, but instead couple of control lines which controller cycles over quickly to light each LED for fraction of time. However in this case it still should have been possible to find a "cross point" between two lines which is point for "door lock" LED lamp. After some more multimeter probing I've apparently found such two lines which jumped between ~5V pulses  and 0V when door lock indicator switched on/off. What remained is to adjust Arduino program to look for such pulses with some delay filtering to filter possible noise.
After I've did a trial run on shortest (drain) program, apparently everything worked great - when door unlocked, Arduino started beeping.
But I've also noticed that even when washer control switch was "off", 5V power was actually supplied - because there was no proper "off" switch. Sadly, like with many appliances today it did always ran internal MCU and consume some power unless you physically unplugged it/switched socket off. While actual used power was miniscule, it created some complication - that it did not silence the beeping by intuitive action of turning control switch to "off" and kept beeping for remaining time out period because 5V power was always on. But it was fairly easy to mitigate - I've just added some extra logic to Arduino program to abort beeping if it seen no voltage at all on indicator LEDs at least for a second.
So I've re-assembled everything and put washing machine back in niche. Imagine my disappointment when I've tried turning switch to one of wash programs and it suddenly started beeping (when door lock didn't even engage). In retrospect, I should have at least tried to cycle through all available options - apparently my hookup was affected not only by "lock" LED, but by some of the other LEDs indicating spin speed (which are not always active thats why it worked on some programs but not on others), due to multiplex LED matrix design.
At this point I gave up trying to hookup to LED board, since it was proving to be too complicated and decided to just hookup to actual lock device - since this should have been 100% fool proof. The only complication was that I needed to monitor for presence of 240V AC and convert this to Arduino 5V logic level somehow. And apparently reducing voltage to such large factor is not easy - at least in efficient way. E.g. if you just try to use resistors, they will dissipate quite a lot of power as heat, at range of couple of watts, and you will need beefy resistors. Also to be entirely safe, 5V circuit should remain isolated from 240V circuit - otherwise if something fails (e.g. resistor shorts), you may find 240V going into your 5V logic, things catching on smoke/fire/and/or/shocking.
So at the end I have found 3 ways of more or less efficient & safe monitoring of presence of 240V via low-voltage logic:

  1. Use a relay with 240V control coil, connect Arduino input to relay output. Relay will usually consume in the range of 0.5W when active. Also its not that cheap device, since 240V control coil should be relatively beefy and usually they only made to control 240V outputs at the least too - using it on 5V is quite overkill (though will obviously work just fine). And being mechanical its most prone to failure.
  2. Connect a cheap 5V low power switching supply to the monitored 240V line - and connect supply output to Arduino input. These power supplies are amazingly efficient, and ones which use transformer (flybacks) are providing insulation between low and high voltage sides. At low price point I wouldn't expect it to be very robust, but it should be fine for our application - when we actually want to run it with virtually no load at all.
  3. Use a neon lamp connected to 240V signal, and use a simple photo-resistor on Arduino side to check presence of light. Neon lamps usually consume amazingly low power (say 0.1W tops), and it automatically gives you isolation between input and output - since you are actually creating an optocoupler this way. The only potential downside that lamp will eventually fail, its longevity not as good as LED, but not as bad as incandescent. I would say its ten thousands of hours - should be more than fine for many applications.

Since I've already had a 240-5V converters lying around, I just went with approach (2). And it worked splendidly - now my washing machine tells me clearly & exactly when it finished and door lock disengaged. Though I've ordered couple of some very cheap switches with neon lamps for future projects when the need to check presence of 240V may arise.


Post a comment