Menu

728x90

468x60

Navbar

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

336x280

Search This Blog

Labels

23K256 (1) 24C16B (2) 25AA010A (2) 8051 (7) 93AA46B (1) ADC (34) Analog Comparator (1) Arduino (16) ARM (13) AT89C52 (7) ATMega32 (58) ATMega644P (27) AVR (87) AVR PCB (2) Bootloader (1) CCS PICC (31) Change Notify Interrupt (CNI) (2) DAC (2) DHT11 (4) Display (133) Distance Sensor (3) ds1307 (10) DS18B20 (5) ds3231 (1) ds3232 (2) dsPIC (5) dsPIC30F1010 (3) dsPIC30F2010 (5) EEPROM (5) Environment Sensor (5) ESP32 (1) esp8266 (1) Graphical LCD (2) I2C (38) ILI9341 (1) Input/Output (76) Interrupt (22) IoT PCB (1) Keil (5) Keypad (16) KS0108 (2) LCD (75) LM35 (3) Master/Slave (2) MAX7221 (1) MCP23017 (8) MCP23S17 (7) MCP4921 (1) MCP4922 (2) Meter (3) MikroC (2) Module PCB (1) Motor (15) MPLABX (73) Nokia 5110 LCD (4) OLED (2) One-Wire (7) Oscillator (8) PCB (10) PCD8544 (3) PCF8574 (10) PIC (108) PIC12F (3) PIC16 (105) PIC16F628A (3) PIC16F630 (2) PIC16F716 (4) PIC16F818 (11) PIC16F818/819 (3) PIC16F84A (16) PIC16F876A (2) PIC16F877A (9) PIC16F88 (2) PIC16F887 (60) PIC18 (19) PIC18F1220 (5) PIC18F2550 (5) PIC18F4550 (12) PICKit2 (1) PICMicro PCB (4) Pin Change Interrupt (1) PWM (12) RTC (12) SBN0064G (1) Sensor (13) SH1106 (3) Shift Register (13) Shift Registers (10) Software TWI (2) SPI (39) ST7735 (1) STM32 (11) STM32 Black Pill (1) STM32 Blue Pill (12) STM32 HAL (5) STM32CubeIDE (13) STM32F103C8T6 (9) STM32F401CCU6 (1) SysTick (4) temperature sensor (13) TFT (1) TG12864A (1) Thermometer (22) Timer/Counter (32) TM1637 (2) twi (10) UART (8) Ultrasonic (4) Voltmeter (7) WDT (1) XC16 (2) XC8 (96)