256 lpt

Upload: supankit

Post on 02-Jun-2018

217 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/10/2019 256 lpt

    1/17

    Imagine the convenience, if we could control different devices at home/industry by using asingle PC. Our project aims at the same and could be used to control the printer power, loads& other household electrical appliances. The circuit comprises decoder, inverter, latch &relay driver sections. To control these equipments we are using PCs Parallel port. The

    program of controlling is written in C language. It is compiled using Turbo C compiler.

    The project though a bit expensive, is very efficient in control of real world peripherals.

    Contents:

    1. INTRODUCTION2.

    PARTS LIST3. BLOCK DIAGRAM4.

    COMPONENT DESCRIPTIONo Parallel Porto IC 74LS154o

    IC 74LS74o 1C 74 LS05o 1C ULN 2803o Relay

    5.

    CIRCUIT DESCRIPTION AND WORKING6. SOFTWARE PROGRAM7.

    CONCLUSION

    INTRODUCTION:

    The PC parallel port is an expensive yet a powerful platform for implementing projectsdealing with the control of real-world peripherals. This port can be used to control the printeras also household and other electrical appliances. The computer program through theinterface circuit controls the relays, which, in turn, switch the appliances on or off.

    The parallel port has 12 outputs including 8 data lines and 4 control lines. The circuitdescribed here can be used to control up to 255 electrical appliances using only eight datalines from the parallel port. Besides, the software program allows the users to know thecurrent status of the loads.

    PARTS LIST:

    Semiconductors:ICl, IC2, IC3 74LS154 l-of-16 decoderIC4, IC5, IC6 74LSO5 inverterIC7-ICI4 74LS74 D-type flip/flopICI5, IC16 ULN2803 octal Darlington array driverMisc.Power supply 5V regulated DC, 12VregulatedDCRelay 12V,200-ohm, lC/O SPDT

    BLOCK DIAGRAM:

  • 8/10/2019 256 lpt

    2/17

    The block diagram in Fig. 1 depicts the main components of the switching system for 255electrical loads using PC. The control command to switch on/off the appliances is giventhrough the keyboard. The software program scans the input and as per the input command,the data is available at the parallel port.

    FIg 1. Block Diagram

    Out of eight bits, first four bits (D0 through D3) are data signal bits and the remaining fourbits (D4 through D7) are used as control signals. Control signals are given to decoder 1. Theoutput of decoder 1 is given to Enable pins of decoders 2 and 3. Data signals are given to

    both decoders 2 and 3. The outputs of decoders 2 and 3 are inverted and fed to a D-typeflip/flop that is used to latch the data. The latched data output is given to relay driver ICsULN2803. The relay drivers drive the relays for switching the appliances.

    COMPONENT DESCRIPTION:

    1. THE PARALLEL PORT:

    The parallel port or line printer terminal (LPT) port is a 25-pin D-type female connectoravailable at the back of your PC. A basic IBM PC usually comes with one or two LPT ports.The original parallel port, called standard parallel port (SPP), is a bundle of three ports (orregisters), namely, data port, status port, and control port. Pins 2 through 9 form the 8-bit data

    port. This port is purely a write-only port. This means it can be used only to output some datathrough it. Pins I, 14, 16, and 17 form the control port, which is capable of reading/writing.Pins 10 through 13 and pin 15 together form the status port. The status port is a read-only

    port. The details of 25-pin parallel port are given in Table 1.

  • 8/10/2019 256 lpt

    3/17

    TABLE 1: Parallel Port Pin Details

    The base address of the first parallel port (LPT1) is 0378 in hexadecimal (hex) notation (or888 in decimal notation). The base address of the second parallel port (LPT2) is 0278 in hex.

    In thisproject, weve used only LPT1.

    2. DM74LS154 : 4-LINE TO 16-LINE DECODER / DE-MULTIPLEXER:

    Each of these 4-line-to-16-line decoders utilizes TTL circuitry to decode four binary-codedinputs into one of six-teen mutually exclusive outputs when both the strobe inputs, GI andG2, are LOW. The de-multiplexing function is performed by using the 4 input lines toaddress the out-put line, passing data from one of the strobe inputs with the other strobe inputLOW. When either strobe input is HIGH, all outputs are HIGH. These de-multiplexers areideally suited for implementing high-performance memory decoders.All inputs are buffered and input clamping diodes are provided to minimize transmission lineeffects and thereby simplify system design.

    3. 74LS74 : DUAL D-TYPE POSITIVE-EDGE-TRIGGERED FLIP-FLOPS:

    These devices contain two independent D-type positive-edge triggered flip-flops. A low levelat the preset or clear inputs sets or resets the outputs regardless of the levels of the otherinputs. When preset and clear are inactive (high), data at the D input meeting the setup timerequirements are transferred to the outputs on the positive-going edge of the clock pulse.Clock triggering occurs at a voltage level and is not directly related to the rise time of theclock pulse. Following the hold time interval, data at the D input may be changed without

    affecting the levels at the outputs.

  • 8/10/2019 256 lpt

    4/17

    4. HEX INVERTER:

    It is used for inversion of input signal. Since outputs from the de-multiplexers are active low,we invert them. This IC has 6 not-gates and hence called a hex-inverter.

    5. ULN-2803 : OCTAL PERIPHERAL DRIVER ARRAYS:

    The eight NPN Darlington connected transistors in this family of arrays are ideally suited forinterfacing between low logic level digital circuitry (such as TTL, CMOS or PMOS/NMOS)and the higher current/voltage requirements of lamps, relays, printer hammers or other similarloads for a broad range of computer, industrial, and consumer applications. All devicesfeature open-collector outputs and freewheeling clamp diodes for transient suppression. TheULN2803 is designed to be compatible with standard TTL families while the ULN2804 isoptimized for 6 to 15volt high-level CMOS or PMOS.

    6. RELAYS:

    The relay is a device by means of which an electrical circuit can be controlled (opened orclosed) by sensing a change in the circuit in which it is connected. The relays can be eitherelectromagnetic or electronic. In this circuit the electromagnetic relay is used to connect ordisconnect the supply to the appliance to be controlled. It works on the principle ofelectromagnetic attraction and electromagnetic induction. These relays can be actuated by ACor DC quantities. In these relays there are one or more coils, movable elements, contactsystems etc.

    CIRCUIT DESCRIPTION AND WORKING:

    The circuit comprises decoder, inverter, latch circuit, and relay driver sections. The circuit,excluding relay drivers and relays, is powered by a 5V DC regulated supply. Relay driversand relays are driven by a 12V DC regulated supply. Each relay is rated 12V,200-ohm.

    The circuit for switching on/off 6 loads is shown in Fig. 2. For more than 6 loads, you canadd more ICs in a similar way as shown in this circuit. IC 74LSI54 is a 24-pin, 4-to-16 linedecoder IC. This IC is designed to accept four inputs and provide 16outputs. Input addressesAl through A4 to pins 20 through 23 of IC1 and IC2 (IC 74LSI54) each are given from thedata lines of the computer parallel port.

    In this circuit, only pins 2 through 9 of the parallel port are used, where data lines D0 throughD3 form the 4-bit data input and D4 through D7 are address-select or control lines for thecircuit. Pins 18 through 25 are shorted to ground. Data lines D0 through D3 are the inputaddresses for IC2, and data linesD4 through D7 are the input addresses for IC1.

    When Enable pins EI and E2 (active low) are high, all the outputs go high irrespective of theaddress inputs (AI through A4). Enable pins EI and E2 of ICI are grounded and its output

    pins YO through YI5 are connected to Enable pins of the respective decoder ICs.

    Initially all the data inputs (D0 through D7) are low. Thus, except Y0,all the outputs of ICIand IC2 are high. The output Y0 of IC2 is not used, for the reason that when all the input data

    is low, none of the outputs of IC 74LSI54 is used for switching the loads. Suppose, out ofeight input data lines, D0 is high. So, except Y1, all the outputs of IC2 will be high. YI is

  • 8/10/2019 256 lpt

    5/17

    then inverted using IC4 (IC 74LS05). The output of IC4 at pin 2 is given to pin 3 of IC7 (lC74LS74). IC 74LS74 is a dual D-type flip-flop used for latching the data.

    With an active rising edge of the clock pulse (CP-1 or CP-2), the data input will be locked inIC7 through IC14 until the next rising edge of the input clock pulse. The outputs of ICs

    74LS74 are given to relay driver ICs ULN2803 (lC-15 and IC-16), which, in turn, drive therelays. The relays are used to switch on/off the appliances.

    Fig 2. Circuit diagram of the project

    SOFTWARE :

    http://electrofriends.com/wp-content/uploads/2008/11/circuit2.jpg
  • 8/10/2019 256 lpt

    6/17

    The program to control the appliances is written in C. it is compiled using Turbo C compiler.The flow chart of the program is as follows

    Fig-3: Flow chart for Implementation of Program

  • 8/10/2019 256 lpt

    7/17

    Fig-4: Flow charts of the functions Used

    On running the program SRC_CODE.C the menu appears as shown below, asking for theoperation to be done.

  • 8/10/2019 256 lpt

    8/17

    The very first option shows the list of the loads that could be controlled using this softwarealong with their codes.

    The outstanding part of this software is activating of required PROFILES at once so that the

    burden of controlling of individual devices is eliminated.

  • 8/10/2019 256 lpt

    9/17

    The activation of night profile is as shown below. We can even set the user defined profiles.

    As a basic requirement the control over individual devices is also provided. If the user bymistake tries to switch ON the device which is already ON, the software detects it & thecorresponding message is displayed.

  • 8/10/2019 256 lpt

    10/17

    The software also allows the user to know the current status of the loads.

    SOURCE CODE:

    /* PROGRAM TO CONTROL MULTIPLE DEVICES USING PCS PARALLEL PORT */

  • 8/10/2019 256 lpt

    11/17

    #include#include#include#include#include

    FILE *status;int ch;char *dev_list[]={idle,TUBELIGHT,FAN,NIGHTLAMP,TELEVISION,

    AIRCOOLER,REFRIGERATOR,DVD_PLAYER,end };int day[]={0,2,4,6,0,1,3,5,7,0};int night[]={0,1,2,3,5,6,7,0,4,0};int out[]={0,3,0,1,2,4,5,6,7,0};int reset[]={0,0,1,2,3,4,5,6,7,0};int device[256];int port=0378;

    void activate(int *ptr);void switch_load(int);

    main(){int disp_menu();void disp_load();void profiles();void switching();void load_status();void exit_code();int welcome();int choice;int hour;status_file();for(;;){clrscr();hour=welcome();choice=disp_menu();

    switch(choice){case 1: disp_load();

    printf(\n\n\n Press any key to continue.);getch();

    break;case 2: profiles();

    break;case 3: switching();

    break;case 4: load_status();

    break;case 5: exit_code(hour);

  • 8/10/2019 256 lpt

    12/17

    default: printf(\n\n INVALID CHOICE);printf(\n\n\n\n\n PRESS ANY KEY TO RETURN TO MAIN MENU..);getch();}}

    }

    status_file(){int i=0;status=fopen(status.txt,r);if(status==NULL){

    puts(Unable to open device status file);exit(1);}

    while(1){ch=fgetc(status);if(i>=256)

    break;elsedevice[i]=ch;i++;}fclose(status);return(0);}

    welcome(){struct time t;struct date d;clrscr();

    printf(\n\n\t\t\t $$$ POWER CONTROL USING PC $$$\n\n\n);gettime(&t);getdate(&d);

    printf(\n\n TIME: %2d:%2d,t.ti_hour,t.ti_min);printf(\n\n DATE: %2d/0%d/%2d,d.da_day,d.da_mon,d.da_year);if(t.ti_hour>=05&&t.ti_hour=0xb&&t.ti_hour=011&&t.ti_hour

  • 8/10/2019 256 lpt

    13/17

    int choice;printf(\n 1.LIST OF LOADS & THEIR CODES);printf(\n 2.STANDARD PROFILES(DAY/NIGHT));printf(\n 3.SWITCHING);printf(\n 4.LOADS STATUS);

    printf(\n 5.EXIT\n);printf(\t\t\t\t ENTER YOUR CHOICE:);scanf(%d,&choice);return(choice);}

    void disp_load(){int i;clrscr();

    printf(\n THE LIST OF LOADS WHICH CAN BE CONTROLLED ARE:\n\n);

    for(i=1;strcmpi(&dev_list[i][0],end);i++)printf(\n\t %2d.%s,i,dev_list[i]);return;}

    void profiles(){char p;for(;;){clrscr();

    printf(\n STANDARD PROFILES:\n);printf(\n\n\t\t 1.DAY MODE);printf(\n\t\t 2.NIGHT MODE);printf(\n\t\t 3.OUT OF STATION);printf(\n\t\t 4.RESET);printf(\n\t\t 5.EXIT);printf(\n\n\n\n ENTER YOUR CHOICE: );p=getchar();switch(p){

    case d:case D:case 1: activate(day);return;case n:case N:case 2: activate(night);return;case o:case O:case 3: activate(out);

    return;case r:

  • 8/10/2019 256 lpt

    14/17

    case R:case 4: activate(reset);return;case e:case E:

    case 5: return;}}}

    void activate(int *ptr){int i;char c;

    printf(\n\nTHE FOLLOWING DEVICES WILL BE SWITCHED ON..\n);for(i=1;ptr[i]!=0;i++)

    printf(\n%d.%s,ptr[i],dev_list[ptr[i]]);printf(\n\nTHE FOLLOWING DEVICES WILL BE SWITCHED OFF..\n);for(i++;ptr[i]!=0;i++)

    printf(\n%d.%s,ptr[i],dev_list[ptr[i]]);printf(\n\n DO YOU WANT TO ACTIVATE THIS PROFILE.(y/n):);c=getch();

    printf(%c,c);getch();if(c==y'||c==Y'){for(i=1;ptr[i]!=0;i++)if(device[ptr[i]]==0)switch_load(ptr[i]);for(i++;ptr[i]!=0;i++)if(device[ptr[i]]==1)switch_load(ptr[i]);}}

    void switching(){

    int i,on_off;disp_load();printf(\n\n\n\nEnter the code of the device to be switched:);scanf(%d,&i);

    printf(OPTIONS:);printf(\t 0OFF\t 1ON\n);printf(\n ENTER YOUR CHOICE:);reenter: scanf(%d,&on_off) ;if(on_off==1){if(device[i]==1)

    {printf(\nThe Device is already ON);

  • 8/10/2019 256 lpt

    15/17

    getch();}elseswitch_load(i);}

    else if(on_off==0){if(device[i]==0){

    printf(\nThe Device is already OFF);getch();}elseswitch_load(i);}else

    {printf(Invalid option\n Please Re-enter);goto reenter;}}

    void load_status(){int i;clrscr();

    printf(\n\n THE FOLLOWING DEVICES ARE ON:\n);for(i=1;strcmpi(&dev_list[i][0],end);i++)if(device[i]==1)

    printf(\n%d.%s,i,dev_list[i]);printf(\n\nTHE FOLLOWING DEVICES ARE OFF:\n);for(i=1;strcmpi(&dev_list[i][0],end);i++)if(device[i]==0)

    printf(\n%d.%s,i,dev_list[i]);printf(\n\n\n\nPress any key to continue);getch();}

    void switch_load(int adrr){if(device[adrr]==0){device[adrr]=1;outportb(port,adrr);delay(50);outportb(port,000);}else

    {evice[adrr]=0;

  • 8/10/2019 256 lpt

    16/17

    outportb(port,adrr);delay(50);outportb(port,000);}}

    void exit_code(int hour){clrscr();

    printf(\t\t\t THANK YOU FOR USING THIS SOFTWARE \n);if(hour>=013||hour=256)

    break;elsefputc(ch,status);i++;}fclose(status);

    return 0;}

    CONCLUSION:This project, can be effectively and conveniently utilized for the control of differentappliances. As this project could be extended to control about 255 devices, this could be usedfor computerization of an office, home, or a firm. Though it is quiet costlier, the circuit issimple and the working mechanism could be easily understood. An added advantage of this

    project is that we are able to know the status of the device to be controlled. The program tocontrol the appliances is written in C language which is more user friendly and easy tounderstand than other programming languages.

    Disadvantages / Improvements:-If at all a new device has to be added to the hardware the software doesnt support this to

  • 8/10/2019 256 lpt

    17/17

    achieve which the source code has to be changed manually.The status of all the devices that are switched are maintained in a database which may notcoincide with actual status of the devices as we are not reading the status directly from theHARDWARE.