728x90

728x90

Monday, May 18, 2020

PIC16F887 set and reset an output relay-controlled lamp

A set/reset relay commonly found in many simple industrial control system such PLC. But such type of relay are more expensive than the common electro-mechanical relays.


electromechanical relay
commonly found electromechanical relays

Anyway, we can implement the set/reset relay using digital IC, or using a simple microcontroller.

PIC16F887 is general purpose microcontroller. We can program it for simple tasks or even more complex tasks.

In this example, I use two push button to set and relay an output relay. All I/Os locate at the same port.

The relay output turns a AC lamp on and off.

PIC16F887 set and reset an output relay-controlled lamp
Schematic diagram.
RD7 connects to SW3 to set the output.
RD6 connects to SW2 to reset the output.
In the simulation, I assume that the AC source is 110V 50Hz, identical to
the AC light bulb.

Source code is written using XC8.

#include<xc.h>
// PIC16F887 Configuration Bit Settings
// CONFIG1
#pragma config FOSC = XT
#pragma config WDTE = OFF
#pragma config PWRTE = OFF
#pragma config MCLRE = ON
#pragma config CP = OFF
#pragma config CPD = OFF
#pragma config BOREN = ON
#pragma config IESO = ON
#pragma config FCMEN = ON
#pragma config LVP = ON
// CONFIG2
#pragma config BOR4V = BOR40V
#pragma config WRT = OFF
#define setButton RD7
#define resetButton RD6
#define outputRelay RD0
void main(){
    //Clear PortD
    PORTD=0x00;
    //RD7 and RD6 are output
    TRISD=0b11000000;
    while(1){
        if(setButton==0) outputRelay=1;
        if(resetButton==0) outputRelay=0;
    }
}

I took a screen shot of the simulation.

PIC16F887 set and reset an output relay-controlled lamp
Simulation screen shot.
Lamp and relay turned on due to set button pressed.



No comments:

Post a Comment

320x50

Search This Blog

tyro-728x90