Fully Automatic Front Loading Whirlpool Washing Machine Timer Control Board Emulation

by balakrishnan_prashanth in Circuits > Arduino

3178 Views, 5 Favorites, 0 Comments

Fully Automatic Front Loading Whirlpool Washing Machine Timer Control Board Emulation

20220712_133522.jpg

Timer Control Board failed, on a Front Loading Fully Automatic Washing Machine. The machine does not continue in Cycle, stops inbetween and gives out flashing red / green lights.

Supplies

Materials Used -

  1. Logic Analyzer with GUI.
  2. CH341 Programmer (only to extract the contents of the EEPROM onboard the motherboard)
  3. Soldering Iron, Solder
  4. Arduino Mega 2560
  5. Jumper Cables

Problem

20220712_133522.jpg
20220712_133252.jpg

The Timer control board on the right not responding. 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. Even the individual program modes, of Spin, Drain, Rinse/Spin do not work. The Machine is more than 10 years old, which means that a spare would be difficult to get. Tried scrap yards, different individual scrap owners, washing machine spare parts shops, etc.

Documentation Availability

Very little documentation available on this particular model. Got just one document of a Whirlpool Washing machine, and tried to understand the error from the troubleshooting page. The error was mentioned as a F21 error, which is a User Interface Error, which happens when the main control board is not able to communicate with the display board (which in this case is a Timer Control Board).

Protocol Identification

20220712_133339.jpg
20220712_133252.jpg

There were four wires connecting the mother board to the Timer Control Board. The chip used on the Motherboard was a MC908AP48, for which documentation is available online. The chip used on the Timer Control Board is an ATMEGA88. On this the 4 pins connecting to the Motherboard were 5VDC, SCL, SDA and GND. i2C was the mode through which the main motherboard was communicating and there was another EEPROM chip 24LC16 on the i2C bus, which was used to store information of the current cycle etc, so as to resume on the event of a power failure.

Backup

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

Plenty of documentation available on the CH341 programmer and backup / restoration / storage.

Reading the I2c

Connected the Logic Analyzer to the i2c bus, namely the SDA to Channel 1, SCL to Channel 2. The software i used has an ability to read the data in i2c. Just remember that normally in i2c the data is read in 7 bits. Could see that the Motherboard is constantly asking for a slave @ address 0x3A, with NAK (Not Acknowledged) signal. Now it is assumed that the slave address, is 0x3A. Now the plan was to emulate an arduino on this i2c bus with a slave address as above.

Arduino Programming

Basic Example Program was available in the Wire Library, slave_sender. Just had to change the slave address to 0x3A, and delete the wire.write line. Added two lines for blinking the inbuilt led everytime there was a request from the Master.

Thats it ! Connected the wires to the main board, and arduino mega. Connected the entire setup to the washing machine. Pressed start, and Voila ! It works.

Conclusion

The Time Control Board in this case, was merely a display unit. The motherboard already had all the data related to the wash cycle. So the arduino now is more a watchdog / beacon, which keeps reassuring the motherboard of the Timer Control Board's presence.

Improvement

20230110_144608.jpg
20230110_144616.jpg
Untitled.png
Untitled2.png
20230114_093258.jpg

I intend replacing the mega with a ATTINY85 chip. Probably with an LED indication, so that i can understand that there is a communication going on.

Edit: Added ATTINY45 chip, (didnt have the ATTINY85 chip). Adding Pics of i2c logic troubleshooting as well. If you are wondering what the two LEDS are for, one is for the working of ATTINY45 chip power up, and other for everytime a request from Master is received by Slave.