I had that all-high-voltage oldie dishwasher that stopped working. Its program switch has burned and I could not find the replacement part. But it is a quite good challenge for an Arduino project. :)
Plan:
- Connect the switches directly to Arduino like door, water lever switches
- Replace dumb thermostat by thermistor to allow different temperature operations
- Manage high voltage stuff by relay board like motor, heater, water valve
- Add LED output and USB connector to the front panel
Switches
I decided to switch +5V and use pulldown resistors for each.
Thermistor
I have found many good descriptions on the web for that part. See the links. My only job was to build a thermistor into the thermostat housing. The sink has that sized hole, and I only have rubber sealing for it. I just removed the bimetal switch by a screwdriver and used epoxy glue to seal the thermistor.


Relay board
It switches 230V, so I wanted to keep far from other electronics. An old floppy cable was long enough and I also saved some soldering with it.

Pump motor
Fortunately it does not need any electronics, just 2 hot wires manage the way of rotation which manages the wash/flush-to-drain modes by the both turbine chambers. That is connected to a single relay's NO and NC connector. The 3rd neutral wire also connected to an other relay to let me switch it on/off.


Display
I had a TM1637 at home: 4 digit 7 segment. It is recently used for clocks. I decided to use the 1st 2 digits for time and other 2 digits for temperature. I also wanted some alphabetic debug messages here like 'door is open' or 'intake' or 'flushing out', so I needed to modify the library to manage all segments separately. The lib only supports writing hexadecimal characters 0-9, A-F.


Program, how it works
I kept the original power switch to power on/off the relay card and the aurdino - together with its phone charge adapter. I added a potentiometer into the place of the old program switch, so I can use it to set the wash time and temperature - depending on the mode switch. That is when arduino boots with opened door. When door is closed during the boot it will start a pre-defined program which is good for the most washing jobs: 30 minutes at 40 degree Celsius, or 50 minutes on 60 degree - also depending on the state of the mode switch.


Future plan
- Use PCB
- Use resistor array to simplify the board
- Maybe an LED matrix display instead of the LCD
- It is a small dishwasher with few dishes. Even using the smallest dishwasher tablet sometimes I got some leftover detergent. Maybe one rinse cycle is not enough.
🛠️ เจาะลึกเบื้องหลังการทำงาน (Deep Dive / Technical Analysis)
A broken motherboard on a $600 dishwasher turns it into a giant piece of scrap metal. The Upcycled Dishwasher project violently bypasses the proprietary manufacturer lockouts! By completely ripping out the dead PCB and manually wiring the 240V Heater Coil, the massive AC Water Pump, and the Solenoid Drain valves directly into custom Arduino 10-Amp relays, you resurrect the steel beast with an infinite, custom-coded State Machine brain.
Interfacing the 240V Relays
Washing machines run on immensely terrifying current.
- The State Machine logic defines the exact stages of cleaning.
Stage 1: Fill.The Uno commandsRelay 1 (Water Inlet Valve)HIGH. It counts the pulses from a flow meter, dropping the relay when 3 gallons enter the tub.Stage 2: Heat.The Uno triggersRelay 2 (Heater Coil). WARNING: A heater coil pulls thousands of Watts. You MUST use a highly specialized, snubber-protected 30-Amp Contactor Relay, not a cheap blue plastic Arduino relay, or it will instantly catch fire!Stage 3: Wash.The Uno triggersRelay 3 (Main AC Water Pump).- An exact timing loop (
millis()) runs for 20 minutes, vigorously blasting the dishes with hot water before commanding a drain purge!
The EEPROM Failure Lock
Dishwashers take 2 hours to run. If your house loses power at minute 55, a dumb Arduino starts over from minute zero upon reboot and floods the kitchen.
- The Execution: You must implement persistent data storage using
<EEPROM.h>. - Every 5 minutes, the Arduino violently writes its current "Stage" into the hard ROM.
EEPROM.write(0, currentStage); - When the massive machine boots up from a blackout, it reads
Stage=3from ROM and beautifully resumes the wash cycle exactly where it died!
Appliance Execution Array
- Arduino Mega 2560 (Mandatory. An Uno will crash when a massive 240V AC pump turns on due to EMI spikes; the Mega has better 5V ground-plane routing!).
- Heavy Duty 30-Amp Solid State Relays (SSR) or Magnetic Contactors (Crucial for safely managing extreme inductive AC power loads).
- Water Flow Sensors and DS18B20 Steel Temp Sensors placed inside the wash tub.
- (DANGER: Working with 110V/240V Mains Electricity mixed with pooling water requires extreme physical insulation, fuses, and absolute knowledge of GFCI circuit breakers!)