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

Search This Blog

Labels

25AA010A (1) 8051 (7) 93AA46B (1) ADC (30) Analog Comparator (1) Arduino (15) ARM (6) AT89C52 (7) ATMega32 (56) AVR (57) CCS PICC (28) DAC (1) DHT11 (2) Display (105) Distance Sensor (3) DS18B20 (3) dsPIC (2) dsPIC30F1010 (2) EEPROM (5) Environment Sensor (4) esp8266 (1) I2C (29) Input/Output (67) Interrupt (19) Keil (5) Keypad (10) LCD (47) Master/Slave (1) MAX7221 (1) MCP23017 (5) MCP23S17 (4) Meter (3) MikroC (2) Motor (15) MPLABX (71) Nokia 5110 LCD (3) OLED (2) One-Wire (6) Oscillator (8) PCB (6) PCD8544 (3) PCF8574 (5) PIC (107) PIC12F (2) PIC16F628A (2) PIC16F630 (1) PIC16F716 (3) PIC16F818 (10) PIC16F818/819 (2) PIC16F84A (15) PIC16F876A (1) PIC16F877A (9) PIC16F88 (1) PIC16F887 (60) PIC18 (19) PIC18F1220 (4) PIC18F2550 (3) PIC18F4550 (12) PWM (11) RTC (8) Sensor (10) SH1106 (1) Shift Register (11) Shift Registers (3) SPI (24) STM32 (6) STM32 Blue Pill (6) STM32CubeIDE (6) STM32F103C8T6 (6) SysTick (3) temperature sensor (11) Thermometer (21) Timer/Counter (31) TM1637 (2) UART (7) Ultrasonic (4) Voltmeter (7) WDT (1) XC16 (2) XC8 (94)