Balakrishnan Prashanth's Arduino I2C Responder Board Brings a Dead Washing Machine Back to Life

With the time display board dead, an older Whirlpool washer refused to do its duty — but a "dummy" reply board solved the problem.

ghalfacree
almost 2 years ago HW101 / Debugging

Faced with a faulty washing machine, maker Balakrishnan Prashanth decided against replacing it or even paying for official parts — instead reverse engineering the failed control board and replacing it with an Arduino Mega 2560 to trick it into proper operation.

"[The] timer control board failed on a front-loading fully-automatic washing machine," Prashanth explains of the problem he set out to solve. "The machine does not continue in [the wash] cycle, stops in between and gives out flashing red/green lights. No indication of the remaining time, temperature, speed of the spin cycle, etc. At the moment, as soon as start cycle is pressed, the machine does a preliminary gauge of the weight of the clothing, the tap is open or not, etc. Then pre-wash, rinse, spin/drain, start light flashes red/green and the machine stops there."

A faulty washing machine can only mean one thing: time to bust out the logic analyzer. (📷: Balakrishnan Prashanth)

The only clue Prashanth had was the error code F21, which documentation suggested was a "User Interface Error" displayed when the main control board can't communicate with the timer control board hosting the display. Taking the control panel apart, Prashanth found a custom board connected to the main board via four wires and hosting a Microchip ATmega88 microcontroller and a 24-series EEPROM chip.

"First thing to do was to take a backup of the EEPROM, using [a] CH341 programmer," Prashanth writes. "I have been in situations when I did not take backup [or] did not make a document identifying all wires [and] screws that I remove, and then find myself stranded when I could not put it back together."

This sensible step completed, Prashanth set about identifying exactly how the board worked — connecting the two signal wires, which turned out to be I2C, to a logic analyzer. Finding the motherboard looking for a secondary device and failing to find it, Prashanth set about figuring out how to create an alternative.

The original control board proved unnecessary, with its Arduino replacement simply acknowledging I2C commands. (📷: Balakrishnan Prashanth)

The result: an Arduino sketch running on an Arduino Mega 2560, but not one which attempts to replicate the full functionality of the failed control board. Instead, it simply acknowledges I2C messages from the main board — and blinks its on-board LED. The result is a loss of the visible timer countdown on the front of the machine, but a happy main board that allows the wash cycle to continue as-expected.

Prashanth has written up his experiment on Instructables, along with a picture of a dedicated board built around an ATtiny85 — to free up the Arduino Mega 2560 for future projects.

ghalfacree

Freelance journalist, technical author, hacker, tinkerer, erstwhile sysadmin. For hire: freelance@halfacree.co.uk.

Latest Articles