Introduction: Reminder to Switch on the Air-conditioning in the Car

Air-conditioning system has many fittings. The fittings need to be lubricated by the special gas of the system. The fittings will lose the elasticity and the lifetime, if the lubrication doesn’t occur during longer time. In most cases this is the root cause, the system has lower cooling capacity.

In the past I used my air-conditioning system in the warm day at summer. My car has been problem with the gas amount of system year by year. I bought it four years ago, it is 10 years old. When the air-conditioning was repaired, the mechanic advised, I need to switch on the system minimum every week for some minutes to lubricate the fittings. I had forgotten it before I made this project.

Every week when the car is started first time, the device makes an acoustic signal to remind me for switch on the air-conditioning. The signal is bip-bip-bip.

Step 1: Part List and Hardware:

Part list:

  • Arduino Nano
  • DS1307 with battery
  • 5V Passive buzzer
  • 12V Power supply from the cigarette lighter, because it is activated during the motor running.

Hardware:

  • DS1307 SDA connect to the A4 (arduino), SCL connect to the A5 (arduino), GND and 5V
  • Passive buzzer connect to the D10 and D12

Step 2: Explanation: How It Works

After starting the car the module get the power and start. First you need to know the signal was played on the week or not. How to do this? First you need to determine the week number of the year. You can get it half part from the DS1307 and half part from using a date formula. The arduino communicate with RTC module on I2C. The week no. is stored in the EEPROM and you need to compare it after starting. If the week no. is different from the saved week no. the arduino will make the acoustic signal and save the new value in the EEPROM. After it on this week the signal won’t be played again. The signal is delayed with an optional value.

Furthermore I wrote a serial monitor for testing the project and setting, reading the time from the RTC.

You find the date formula for the number of the week on the internet: http://en.wikipedia.org/wiki/ISO_week_date#Calculating_the_week_number_of_a_given_date

Step 3: The Code

//Makes a signal every week at the first start of the car.<br>//It reminds you to switch on the air conditioning minimum once per week.
#include 
#include 
#include 
int addr = 0; //EEPROM address
int WN; //Week number
int DOW; //Day of the Week
int STORED; //Stored value in the EEPROM
void setup()
{
  Serial.begin(9600);
  Wire.begin();
  pinMode(10, OUTPUT); //Negative output of Buzzer
  digitalWrite(10, LOW);
  pinMode(12, OUTPUT); //Positive output of Buzzer
  delay(100);
  //SET TIME
  //To set time need to remove the  "/*" before the RTC.stopClock();
  //NOTE!!! After setting time put back the "/*" and upload the program again!!!
  //It is important to put back "/*" and upload again. If you forget to do this, the time will be setting each starting    
  /*
   RTC.stopClock();
   RTC.fillByYMD(2014,10,2);
   RTC.fillByHMS(19,41,30);
   RTC.setTime();
   RTC.startClock();
   //*/
  RTC.getTime(); //Read the date and time
  DOW = RTC.dow; //Day of week should be from 1 to 7
  //The RTC.dow start from 0 = Sunday, 1 = Monday ...
  //To compensate this, you need to set Sunday = 7 in the next line
  if (RTC.dow == 0) //Normally Sunday is O, but in our case Sunday needs to be 7
    DOW = 7; 
  WN = ((RTC.ydn-DOW+10)/7); //Here is the date formula to determine the number of the Week
  STORED = EEPROM.read(addr); //Read the EEPROM
  if (STORED != WN){ //Here follows the signal
    delay(10000);    //Delayed with any value
    Signal_aircond(); //Signal, it is on the end of the program
    EEPROM.write(addr, WN); //Overwrite the EEPROM with the new Week no.
    Serial.println("OK"); 
  }
  else {  // Writing to the serial monitor
    Serial.print(RTC.year, DEC);
    Serial.print('/');
    if (RTC.month < 10)
      Serial.print("0");
    Serial.print(RTC.month, DEC);
    Serial.print('/');
    if (RTC.day < 10)
      Serial.print("0");
    Serial.print(RTC.day, DEC);
    Serial.print(" ");
    Serial.print(RTC.hour, DEC);
    Serial.print(':');
    if (RTC.minute < 10)
      Serial.print("0");
    Serial.print(RTC.minute, DEC);
    Serial.print(" Week no.:");
    Serial.print(WN);
    Serial.print(" Week no. in the EEPROM:");
    Serial.print(EEPROM.read(addr));
    Serial.print('\n');
  }
}
void loop()
{
}
void Signal_aircond()
{
  tone(12,3000,500);
  delay(900);
  tone(12,3000,500);
  delay(900);
  tone(12,3000,500);
}

Comments

author
ibenkos (author)2014-10-18

Smart idea! Thanks for shearig :)

author
Inthedoghouse (author)2014-10-08

Interesting idea and well thought out project but this is very strange advice from an automotive
"professional". Any time you turn the defrost setting on in your car you are cycling the ac compressor so there is no particular need to do this. I have been an automotive technicians for 13 years and have never heard of this. I work on several ac jobs every week through the summer months and have only seen an issue with rotting seals on vehicles that have been stored for very long periods or have had the wrong compressor oil added. In rare cases sometimes when the wrong type of seals are used for r134a systems they will deteriorate rapidly and cause leaks wherever they are used.

author
jkranyik (author)Inthedoghouse2014-10-08

If you have automatic climate, it can run your climate in the winter
to help dehumidifying. In my case I have manual AC and this function
isn't available for me. You can read about the prevention of the AC at
the end of the following link:

http://www.automotive.com/news/when-running-your-car-s-air-conditioner-in-winter-is-a-good-thing-6951/

author
carlos66ba (author)2014-10-08

Interesting. I had never heard of this idea that the AC needed to run every now and then. Can anyone confirm this?