mmcordeiro
Published © GPL3+

How to repair a Dehumidifier with Arduino Uno

Make a controller to replace the control board of a dehumidifier that burned

BeginnerFull instructions provided2,012
How to repair a Dehumidifier with Arduino Uno

Things used in this project

Hardware components

Arduino UNO
Arduino UNO
×1
Power Supply 5VDC 2Amps
×1
Relay 5VDC 220/110VAC 10AMPS
×1
Resistor 2.21k ohm
Resistor 2.21k ohm
×1

Hand tools and fabrication machines

Soldering iron (generic)
Soldering iron (generic)

Story

Read more

Schematics

SCHEME

Diagram

Diagram of new control board

Code

ArduinoDehumidifier

Arduino
Repair a old control board of a dehumudufiers
/*  Created by Mário Cordeiro, you can see the presentation in video  in the Youtube MA2COR channel Tecnologies
 *  https://www.youtube.com/channel/UC1UEzlX6C7bHL-PeAGvP-Kw
 *  This sketch controls a  dehumidifier, the ON, OFF , radiator temperature and water tank

 */

#define RelayFAN 2 //Controls  FAN
#define RelayCOMP 3 //Controls the compressor
#define Temperature A0 //measure the temperature in the compressor radiator by using the thermocouple from the dehumidifier


int value = 0;
int ledUnfreeze = 8; // unfreeze light indicator when the thermocouple read low temperature ice formation 
int ledON = 4; // ON - dehumidifier ON
int ledTank = 5; // warning light of full or out Water tank 
int inputPin = 6;   // Check if water tank is full or out
int Buzzer = 7;   //Buzzer ON/OFF/Water tank full or out
int flagH = 0;  //To run once
int flagM = 0;
int flagL = 0;

void setup()
{
  
  pinMode(RelayFAN,OUTPUT);
  digitalWrite(RelayFAN,LOW);
  pinMode(RelayCOMP,OUTPUT);
  digitalWrite(RelayCOMP,LOW);
  pinMode(Buzzer, OUTPUT);
  digitalWrite(Buzzer, LOW);  
  pinMode(inputPin, INPUT);
  digitalWrite(inputPin, LOW);  
  pinMode(ledON, OUTPUT);
  pinMode(ledTank, OUTPUT);
  pinMode(ledUnfreeze, OUTPUT);    
  Serial.begin(115200);
  delay(10);


}


void loop() {



 value = digitalRead(inputPin); // Check if tank is full or out (3V3- Digital 1 HIGH, 0V - digital 0 LOW)
     Serial.print("Tank: ");  
           Serial.println(value);
        delay(200);
        while (value == 0){
            digitalWrite(ledON, LOW);
            digitalWrite(ledUnfreeze, LOW);
            digitalWrite(RelayFAN,LOW);
            digitalWrite(RelayCOMP,LOW);
            digitalWrite(Buzzer, HIGH);
            tone(Buzzer, 1800, 500);
            delay(500);
            noTone(Buzzer);
              // if the LED is off turn it on and vice-versa:
              if (digitalRead(ledTank) == LOW) {
                digitalWrite(ledTank, HIGH);
                delay(500);
                } else {
                  digitalWrite(ledTank, LOW);
                  delay(500);
                        }
            value = digitalRead(inputPin); // Check inside de loop (3V3)                 
        }
              
             int Temp = analogRead(Temperature);     // Read de voltage in A0 and convert it to digital 0-1023
             Serial.print("ConvertedTemp: ");//I made some tests with the thermocouple in water at 0 degrees, 10, 20, 30, .... 80º and made conversion in 0-1023
             Serial.println(Temp);             
                if ((Temp > 700) && (flagH == 0)){     //Prevent ice formation, ICE in  evaporator, Unfreeze process
                digitalWrite(RelayCOMP,LOW);
                delay(100);
                digitalWrite(ledUnfreeze, HIGH);
                delay(100);
                digitalWrite(RelayFAN,HIGH);
                digitalWrite(ledTank, LOW);
                tone(Buzzer, 1800, 2000);
                delay(1000);
                noTone(Buzzer);                
                flagH = 1;
                flagM = 0;
                flagL = 0;noTone(Buzzer);
                }
                if ((Temp > 200) && (Temp < 701) && (flagM == 0)){ //Normal working
                digitalWrite(RelayFAN,HIGH);
                digitalWrite(RelayCOMP,HIGH);
                delay(100);
                digitalWrite(ledUnfreeze, LOW);
                delay(100);
                digitalWrite(RelayCOMP,HIGH);
                digitalWrite(ledTank, LOW);
                digitalWrite(ledON, HIGH);
                tone(Buzzer, 1800, 1000);
                delay(1000);
                noTone(Buzzer);                                
                flagH = 0;
                flagM = 1;
                flagL = 0;                
                }                
                 if ((Temp < 201) && (flagL == 0)){ // High temperature in evaporator. Prevents damage
                digitalWrite(RelayCOMP,LOW);
                delay(100);
                digitalWrite(ledUnfreeze, HIGH);
                delay(100);
                digitalWrite(RelayFAN,HIGH);
                digitalWrite(ledTank, LOW);
                digitalWrite(ledON, LOW);
                tone(Buzzer, 1800, 1000);
                delay(1000);
                tone(Buzzer, 1800, 1000);
                noTone(Buzzer);                                                        
                flagH = 0;
                flagM = 0;
                flagL = 1;   
                } 
        }

Credits

mmcordeiro

mmcordeiro

0 projects • 0 followers

Comments