Thursday 18 April 2013

VISITOR COUNTER


VISITOR COUNTER


Figure 1: MICRO CONTROLLER CIRCUITRY


Figure 2: SENSING CIRCUITRY AT ENTRY AND EXIT POINT OF GATES



Abstract:

Visitor counter is a reliable circuit that takes over the task of counting number of persons in the room. When somebody enters into the room then the counters incremented by one. The total number of persons inside the room is displayed on the seven segment display module. The microcontroller does the above job it receives the signal from the sensors, and this signals operated under the control of software which is stored in ROM.

Application:

·         It can be used to count the number of persons entering a hall in the up mode at entrance gate. In the down mode it can count the number of persons leaving the hall by decrementing the count at exit gate.
·         It can also be used at gates of parking areas and other public places.

Components required:


S.NO.
COMPONENTS
SPECIFICATION
QUANTITY
1.

2
2.
(RX-TX PAIR)
2
3.
TRANSISTOR
BC 547
4
4.
Op Amp
LM358
2
5.
CAPACITOR
10UF
33UF
1
2
6.
CRYSTAL
11.0592
1
7.
RESISTOR
330OHM
10K
1K
7
6
4
8.
VOLTAGE REGULATOR
7805
1
9.
VAR RESISTOR
4.7K
10K
2
1
10.
COMMON ANODE
4
11.
AT89S52
1

Working:                                           

In this circuit, two infrared (IR) sensor modules are used each for up and down counting, respectively. Whenever an interruption is observed by the first IR sensor, it increments the counter value. Similarly, when the second sensor detects an obstacle, the count is decremented. The count value is calculated depending upon the sensors input and is displayed on a set of four seven segment displays.
 The data pins of each 7-segment display are connected to port P2 of the microcontroller AT89S52.
 The first four pins of port P1 (P1^0-P1^3) are connected to control pins to enable a particular 7-segment.
P3^5 & P3^6 are configured as input pins at which the sensors are connected.
The sensor inputs are defined as up and down selector modes for the counter in the code. Each time the first sensor is blocked, it gives a high signal at P3^5 and the count value gets incremented. The value gets decremented when P3^6, connected to second sensor, gives high input. At each step, the value of the counter is sent to be displayed on the segments.

Program to make a visitor counter using IR sensor and 8051 microcontroller
#include <reg51.h>
#define msec 1
unsigned int num=0;
sbit dig_ctrl_4=P1^3;  //control pins of seven segments
sbit dig_ctrl_3=P1^2;
sbit dig_ctrl_2=P1^1;
sbit dig_ctrl_1=P1^0;
unsigned int digi_val[10]={0x40,0xF9,0x24,0x30,0x19,0x12,0x02,0xF8,0x00,0x10};
unsigned int dig_1,dig_2,dig_3,dig_4,test=0;
unsigned char dig_disp=0;
sbit up=P3^5;  //pin to make counter count up
sbit down=P3^6;  //pin to make counter count down
void init()  // initialize of output pins and Timer0
{
up=down=1;
dig_ctrl_4 = 0;
dig_ctrl_3 = 0;
dig_ctrl_2 = 0;
dig_ctrl_1 = 0;
TMOD=0x01;
TL0=0xf6;
TH0=0xFf;
IE=0x82;
TR0=1;
}
void delay()  //time delay
{
TMOD=0x01;
    TL0=0x36;
    TH0=0xF6;
    TR0=1;
    while(TF0==0);
    TR0=0;
    TF0=0;
}
void display() interrupt 1  // Function to display the digits on seven segment
{
TL0=0x36;
TH0=0xf6;
P2=0xFF;
dig_ctrl_1 = dig_ctrl_3 = dig_ctrl_2 = dig_ctrl_4 = 0;
dig_disp++;
dig_disp=dig_disp%4;
switch(dig_disp)
{
  case 0:
  P2= digi_val[dig_1];
  dig_ctrl_1 = 1;
  break;

  case 1:
  P2= digi_val[dig_2];
  dig_ctrl_2 = 1;
  break;

  case 2:
  P2= digi_val[dig_3];
  dig_ctrl_3 = 1;
  break;

  case 3:
  P2= digi_val[dig_4];
  dig_ctrl_4 = 1;
  break;
}
}
void main()
{             
   init();
  while(1)
   {             unsigned int i;
   for(i=0;i<100;i++)
   {
       delay();
 }
  if(up==0&&down==1)  //check if up pin is pressed
     {
  test++;
     num=test;
     dig_4=num%10;
  num=num/10;
     dig_3=num%10;
  num=num/10;
     dig_2=num%10;                                                                                                           
  dig_1=num/10;
  if(test==9999)
  test=0;
  }
    if(up==1&&down==0)  //check if down pin is pressed
    {
  test--;
     num=test;
     dig_4=num%10;
  num=num/10;
     dig_3=num%10;
  num=num/10;
     dig_2=num%10;
  dig_1=num/10;
  if(test==0)
  test=9999;
 
  }
}
}
 





No comments:

Post a Comment