Hybrid Relay Designing, Programming, and Simulation
Table of Contents
This Article is about Hybrid Relay designing, Programming, and Simulation. The Hybrid relay simulation is designed in Proteus and the Program is written in the Arduino IDE. After studying this Article completely you will be able to make a prototype model of the Hybrid Relay.
PDU which stands for the Power Distribution Units available in the Markets are using either Electro-Mechanical relay’s (EMR) or the Solid state Relays ( SSR) Technology for Controlling the outlets. The reliability of the Solid-state relays is much higher than that of the electromechanical relays, but if studied individually then we come to know that both have some disadvantages, like for example the Solid State relay’s consume more power than the electro mechanical relay’s while electromechanical relays are cheap on the other hand. But when we dig deeper we come to know that electromechanical relays has poor reliability when it comes to arcing. So my research is on how to use the electro mechanical relay and solid-state relay together to minimize the arcing.
As we know from the study that the relay contacts life cycle reduces when the contacts are open while current still flowing through the contacts, this result in the electrical Arc which has high temperature and damages the relay / switch contacts as the resistance increases which further result in high temperature, then a time comes when the contacts weld together and relay remains in the ON state.
Theory of Operation
The hybrid relay consists of an electro-mechanical relay and solid-state relay. The hybrid relay uses a mechanical relay for current load and a Triac (solid state switch/relay) to initially turn on the load current and at the end of the cycle to turn the load current off, which will minimize the electrical arc across the relay.
When there is no command from the microcontroller both the electro mechanical relay and solid-state relay/ Triac are OFF and hence the load is OFF.
Turn On State –
when the command signal is applied from the microcontroller to turn on the load, the SSR solid-state relay/Triac carries the load for the first cycle at turn ‘ON’. The Triac, being solid state turns on at zero volts in the sine wave, thereby eliminating the arc.
Conduction State –
at the end of the first cycle, the mechanical relay pulls in to carry the load for the duration of the on signal. The Triac is turned off, thereby only the relay carries current.
Turn Off State –
when the signal from the microcontroller is given to turn of the load first off all the Triac turns on and the electro mechanical relay is turned off and then the Triac also turns off The Triac conducts for the last AC cycle to eliminate any arcing when the relay opens. At zero volts in the sine wave, the Triac is turned off.
From the above figures and theory of operation it is quite clear that how the advantages of both the electro mechanical relay and solid state relay are merged to make a hybrid relay.
The figure below shows the general schematic and the sequence diagram of a hybrid relay based on a Triac/Solid-State relay in parallel with a mechanical switch.
The figure above shows how each switch is controlled to drive the load.
Hybrid relay Designing in Proteus:
On the left side i started with a step down transformer and then used a full wave bridge rectifier to convert the ac in to dc and also connected one wire to the oscilloscope so that I can see the rippled dc. This conversion from ac to DC is must as we have to find the zero crossing.
A wire from the output of the full wave bridge rectifier is connect to the resistors at the base of the 2n2222 npn transistor, at the collector of the 2n2222 a 10k pull up resistor is used which is connected with the 5v source. This npn transistor will turn ON and turn OFF as per the rippled dc at 50Hz. A wire from the middle of the 10k resistor and collector is connected with the Arduino pin2 which has a hardware interrupt. Pin2 of the Arduino will be used for detecting the zero crossing.
The other side of the Arduino Uno consists of the electro mechanical relay , the type of relay used is SPDTA ” Single pole and double throw”. This relay is controlled with a driver circuit which consists of the 2n2222 npn transistor and a 10k resistor. Which I already explained above in the electro mechanical relay construction and working.
An optocoupler is used which as a an inside led for that i connected a 330 ohm resistor as per the discussion above. Both the electro mechanical relay and Solid State relay are connected in parallel with a load “lamp” for the demonstration of the ON OFF cycle. Both the electro mechanical and solid state relays are controlled by the controller.
Two push buttons are connected with the microcontroller to control the ON and OFF the load.
When there is no control signal to the ssr and electro mechanical relay, the load is off and on the Oscilliscope we can only see the Zero Crossing and the cycle.
When I turned on the Start switch” push button” as you can see red line show the Triac which turns on and then after that the electro mechanical relay turns ON, then again the Triac turns off. As you can see clearly the relay is on and the load is also ON. So this load will remain ON until we press the stop button.
When the stop button is pressed as you can clearly see first the Triac/SSR is turned on and then the electro mechanical relay is turned off and then again the Triac is turned OFF. And as you can clearly see the load is also off and both the SSR and electro mechanical relay are OFF.
The start and stop operations both at the same time.
The turning ON and turning OFF of both the switch “Electro mechanical relay and Solid-State relay” entirely depends on the programming. The ON and OFF timing can be changed through the programming. In the programming Delays are not used as delays effects the normal execution of the program.
In my program I have used the Interrupt to monitor the zero crossing, each time it passes through the zero crossing an interrupt is generated. As it’s just a simulation prepared for the demonstration that how a hybrid relay actually works. In actual implementation there is possibility of faulty operation. Because the actual manufacturing involves a lot of testing and trouble shootings.
Hybrid Relay Advantages:
As the Hybrid relay consists of both the components “Electro mechanical relay” and “Solid-State relay” , Hybrid relay has the following Benefits
- Power Efficiency
The Power efficiency of the Hybrid relay is high as the electro mechanical relay contacts has less resistance so the conduction loss is very low as compared to Triac if used alone.
- Relay Reliability
There is no mechanical relay bounce.
- Load Reliability
SSR Solid-state relay technology allows a progressive soft-start or soft-stop to be fulfilled. Due to the soft start and soft stop we can achieve A smooth motor acceleration and deceleration which reduces mechanical system wearing and avoids any kind of damage to applications like pumps, fans, tools or compressors.
- Saves space “Volume”
- Fast response time
Spark free Operation
// A program through which first of all we turn on the scr and the emr " electro mechanical relay" stays off. as the relay turns on then the scr turns off
// and then the relay remains on
// when we press the stop button then first of all scr turns off and then the relay turns off.
// we do the above process at the zero crossing.
int frequencyrelay = 13; //
volatile byte freqcount;
unsigned int frequency;
unsigned long timeold;
int flag1 = 0;
int triac = 12;
int startb = 7; // start button
int stopb = 8; // stop button
int flag2 = 0; // for start button
int flag3 = 0; // for stop button
//Interrupt 0 is digital pin 2, so that is where the IR detector is connected
//Triggers on FALLING (change from HIGH to LOW)
attachInterrupt(0, freq_fun, FALLING);
//Turn on IR LED
pinMode(startb , INPUT);
freqcount = 0;
frequency = 0;
timeold = 0;
if( digitalRead(startb) == HIGH)
flag2 = 0;
if( digitalRead(stopb) == HIGH)
flag3 = 0;
frequency = freqcount / 2;
if (freqcount > 50 )
freqcount = 0;
// to start
if(digitalRead(startb) == LOW)
if(digitalRead(stopb) == LOW)
// to stop
// this function is used to detect the zero crossing
// and increments the freqcount variable.
//Each rotation, this interrupt function is run twice, so take that into consideration for
if((digitalRead(startb) == LOW) && (( frequency > 0 ) && (frequency < 2 ))&& (flag2 == 0) )
flag2 = 1;
if ( (flag2 == 1 ) && ((frequency > 1) &&(frequency < 3)) )
digitalWrite( frequencyrelay, HIGH);
if( (digitalRead(frequencyrelay) == HIGH) && ( frequency > 3) ) // keep it 3
if((digitalRead(stopb) == LOW) && (( frequency > 0 ) && (frequency < 2 ))&& (flag3 == 0) )
flag3 = 1;
if ( (flag3 == 1 ) && ((frequency > 1) &&(frequency < 3)) )
digitalWrite( frequencyrelay, LOW);
if( (digitalRead(frequencyrelay) == LOW) && ( frequency > 3) ) // keep it 3