Friday, December 27, 2013

[TC] Water Level Indicator with Alarm using 8051 Micro controller (AT89C51)

This article illustrates the construction and working of a liquid/water level indicator. Such an indicator is used in tanks to indicate the level of liquids and alert us when the tank is full. So by this circuit we can monitor the various levels of the tank and can avoid spillage of water and also we can configure our supplies according to the various levels of tank. Such module or circuit can be installed in big buildings where manual monitor of tanks is difficult and its indicator can be placed at some centralized place.





This water level indicator circuit works on the principle that water conducts electricity. A wire connected to VCC and four other wires are dipped in tank at different levels namely quarter, half, three-fourth, full and their output are taken on pins P3.0, P3.1, P3.2, P3.3 via a transistor BC547. Port P2 is connected to data pins of LCD and P1.0, P1.1, P1.2 are respectively connected to RS, RW, and EN pins of LCD.

Initially when the tank is empty LCD will show the message VACANT. As the tank starts filling up wire at different levels get some positive voltage, due to conducting nature of water. This voltage is then fed to their corresponding pins on controller. When level reaches to quarter level, LCD displays the messageQUARTER. On further rise of level, HALF and 3/4 QUARTER are displayed on LCD. When tank gets full LCD shows the message FULL CLOSE TAP. A buzzer is also provided to produce a alert the user when the tank gets filled. This buzzer can be made off by pressing the switch connected between pin 15 of controller and VCC.
Circuit Diagram :



CODE
// Program to make a Liquid level indicator using LCD
#include<reg51.h>
sbit rs=P1^0; //register select pin
sbit rw=P1^1; //read/write pin
sbit e=P1^2; //enable pin
sbit quat=P3^0; //pin connected to quater level of tank
sbit half=P3^1; //pin connected to half level of tank
sbit quat_3=P3^2; //pin connected to three -fourth level of tank
sbit full=P3^3; //pin connected to full level of tank
sbit spkr_on=P3^4;  
sbit spkr_off=P3^5; // pin to off speaker

void delay(int k) //delay function
{
int i,j;
for(i=0;i<k;i++)
  for(j=0;j<1275;j++);
}

void write(int j) //write function
{
rs=1;  //selecting command register
rw=0;  //selecting to write
P2=j;  //putting value on the pins
e=1;  //strobe the enable pin
delay(1);
e=0;
return;
}

void cmd(int j)  //command function
{
P2=j;  //put the value on pins
rs=0;  //selecting command register
rw=0;  //selecting to write
e=1;  //strobe enable pin
delay(1);
e=0;
return;
}

void puts(char *a) //puts function to print a string
{
unsigned int p=0;
for(;a[p]!=0;p++)
write(a[p]);
}

void lcd_init(void) // function to initialise the LCD
{
cmd(0x38); //setting 8-bit interface, 2 lines, 5*7 Pixels
delay(1);
cmd(0x0e); //turning on underline visible cursor
delay(1);     
cmd(0x01); //clearing screen
cmd(0x80); //moving cursor to the begining of line 1 of LCD
}

void main()
{
quat=half=quat_3=full=spkr_off=1; //configuring as input pins
quat=half=quat_3=full=spkr_off=0; //lowering input pins
spkr_on=1;    // making speaker on pin high,as it works on negative logic
while(1)
{
  while(quat==0&&half==0&&quat_3==0&&full==0&&spkr_off==0)   //condition when tank is empty
  {
   lcd_init();        // initialising LCD
   puts("VACANT");       //printing VACANT on lcd
  }
  while(quat==1&&half==0&&quat_3==0&&full==0&&spkr_off==0)	//condition when tank is quater
  {
   lcd_init();
   puts("QUATER");      //printing QUATER on lcd
  }
  while(quat==1&&half==1&&quat_3==0&&full==0&&spkr_off==0)	//condition when tank is half
  {
   lcd_init();     
   puts("HALF");      //printing HALF on lcd
  }
  while(quat==1&&half==1&&quat_3==1&&full==0&&spkr_off==0)	//condition when tank is three-fourth
  {
   lcd_init();
   puts("3/4 FULL");     //printing 3/4 FULL on lcd
  }
  while(quat==1&&half==1&&quat_3==1&&full==1&&spkr_off==0)	//condition when tank is full
  {
   lcd_init();
   puts("FULL;CLOSE TAP");     //printing FULL;CLOSE TAP on lcd
   spkr_on=0;// Enabling speaker
  }
  while(quat==1&&half==1&&quat_3==1&&full==1&&spkr_on==0&&spkr_off==1)//enabling high speaker_off pin
  {
   spkr_on=1;//disabling speaker
  }
}
}


21 comments:

  1. Thanks for sharing the source code. I have been looking for alarms for water level indicator.

    ReplyDelete
    Replies
    1. Welcome Luke.. Hope It Works For You..
      Visit Again..

      Delete
  2. I WANT TO FEED THIS INTEL 8051 MICROCONTROLLER IN HEX CODE.PLEASE TELL ME HOW TO DO IT

    ReplyDelete
  3. using keil convert you c program into hex file...then flash that hex file in your microcontroller using any programmer ( Unipro or USBasp) .

    ReplyDelete
  4. can you please give the code in assembly language

    ReplyDelete
  5. Useful circuit.Here is an ic based 6 led water level circuit with motor dry run alert.
    https://www.kjmindia.in/2018/06/6-led-water-level-indtr-with-mtr-dry.html

    ReplyDelete
  6. Nice Blog, Visit for the best SEO Service and Website Designing and Development for your business.
    PPC Company in Delhi

    ReplyDelete
  7. For the best Mutual fund Investment and for the best Mutual fund Schemes Visit Mutualfundwala.
    Mutual Fund Agent
    Mutual Funds India

    ReplyDelete
  8. For best sound and audio engineering course visit our website spingurus.
    audio engineering courses

    ReplyDelete
    Replies
    1. Hi, Do you know Optima Tech

      Optima Tech is leading company in the electronics industry. We provide complete printed circuit board assembly & PCB Design services. We are the manufacturer of PCB circuit board & specialize in PCB assembly & engineering services.

      Delete
  9. A Professional mobile app development Canada company offering Android & iOS app development services. I like its sharing. Thanks you

    ReplyDelete
  10. Thanks, you guys that is a great explanation. keep up the good work in your granite blog.

    ReplyDelete
  11. Icon Process Controls offers the industries best Submersible Level Sensor device which is usually used to monitor water/wastewater or the quality of moving forward in a designation. The sensor measurement applications are usually quite versatile and abundant and each one of them has to abide by engineering and constructional constraints and requirements.

    ReplyDelete
  12. What are some of the cheapest places to travel to in the world? From Asia to Africa and 123movies

    ReplyDelete
  13. Hi
    Thank for sharing New Blog, your all blog is informative and i am waiting your nuw blog, thank again for sharing blog.

    [URL="https://insurevic.com/en/car-insurance-oman/"]car insurance[/URL] | [URL="https://insurevic.com/"]insurance company in oman[/URL]
    [URL="https://insurevic.com/en/travel-insurance/"]travel insurance in oman[/URL]

    ReplyDelete
  14. Really Nice Blog! I want to say thanks for your time for this great blog, Keep it up Water level sensor

    ReplyDelete