why no one uses latching relays ?

  • Hi,

    I'm preparing to desing some actuators for my new flat using MySensors. I will be using relays for switching lights and wall plugs. As I search for some ready to use projects I find that all of them are using relays that require continous current flow to stay in one of the states. And normaly those relays consume around 0.5 W of power ! I thought that one of the goals of home automation is to reduce unnecessary power consumption. Considering that one uses a lot of relays in such system, 0.5W of power for single relay is totaly unacceptable. The simplest solution is to use latching relay which consumes power only during switching (and propably very infrequently). But I can't find any latching relay modules to buy. Why is that ?

  • Hero Member

    Are you searching for latching relays for your fuse box, like from Eltako, or latching relays for usage on a circuit board? I'm controlling the first mentioned in my fuse box with mysensors.

  • I'm talking about micro relays for PCB.

  • Mod

    The problem is how do determine if lights are on or off? I mean in case the arduino restarts after a power failure or unexpected reset, how can it knows what was the last state? A normal realy you can choose to either switch it on or off regardless of last state.

  • Hero Member

    @gohan I'm using a ACS712 to get the power consumption.

  • Mod

    @rozpruwacz so far I've only seen cheap non-latching relay modules from China.
    Controlling latching relays can be a bit harder for the ones requiring an H-bridge. I've controlled some with a dual mosfet driver which works great.

  • @gohan I don't get what is the problem. With latching relay, You can set the switch on/off regardless of the last state. I think that latching relays are even better in case of cpu failure (reset) because they holds their state. Additionally You can make some circuitry to indicate the current state to the cpu or store the state in the eeprom.

    @Yveaux how is using dual mosfet driver harder than an optoisolator that is in most of relay modules ?

  • Mod

    Sure it keeps the state but how does the arduino or controller knows what is the current state if they lost it because of a reset/reboot? For example you have light on and a rule/scene/voice command that wants to turns light on/off and the system has just been rebooted so normally it would assume everything is off (while lights are still on because of the latching relay), so now you will get inverted logic when you tell your controller to switch lights; so unless you use, like TimO, something that gives you feedback about lights being on or off (like the AC712, but could it be also a light sensor, it doesn't matter as long as it can give feedback about light's status), you may eventually end up with the logic inverted

  • Mod

    @gohan no, it all depends on the type of latching relays used. Some have a dedicated control to open/close, which doesn't depend on the current state.
    The main reason to use latching relays is to reduce power consumption. True that you can not retrieve the current state, but given the right relay you can always start from a defined situation after startup (e.g. Switched off as would be the case for most regular relays).
    Another option is to store the current state of the relay somewhere after switching, e.g. in eeprom.

  • Mod

    Ok for reducing power consumption, but a small 5v relay it is using less than 0.2W so unless you are using a battery operated node, that power usage is negligible

  • show me a relay with 0.2W power consumption, I couldn't find one.

  • Mod

    @rozpruwacz We were talking relay modules (like this one) which normally only take supply and a single control signal.
    Having to control the latching of the relay using an H-Bridge I find 'a bit harder' compared to just toggling an IO, regarding both software and hardware.

    For reference, this is the schematic I use to control a latching relay:


    It uses a MAX2226/4427/4428 or compatible MOSFET driver to drive the relay.

    And a function to switch it:

    #define RELAY_INA_PIN         (A0)
    #define RELAY_INB_PIN         (A1)
    #define RELAY_SET_TIME_MS     (30)
    static void switchRelay( const bool on )
        digitalWrite(RELAY_INA_PIN, on ? LOW : HIGH);
        digitalWrite(RELAY_INB_PIN, on ? HIGH : LOW);
        digitalWrite(RELAY_INA_PIN, LOW);
        digitalWrite(RELAY_INB_PIN, LOW);

  • You can make a circuit to control the latching relay just like normal relay, You don't have to use h-bridge. The simplest one would be to put a capacitor in series with the relay coil. Referring to your schematic, You could connect the A1 leg of the relay to a capacitor and that capacitor to the ground (leaving pin 5 of the IR4427S disconnected). That way, when you drive REALY_INA high, through the coil will flow the curent in one direction charging the capacitor. When capacitor will charge fully the curent will stop flowing. Then when you drive REALY_INA low, the capacitor will discharge and the curent will flow through the relay in reversed direction.

    So if there are ways to drive the lathing relay circuit the same way as normal relays, there could be as well ready made module that has this circuit and from the point of view of the microcontroller they would appear as normal relay modules. So why there are no such modules ?

    As I understand, your circuit needs to recieve pulses on RELAY_INA and RELAY_INB to properly work, and I think that this is dangerous because if the CPU will hang during relay shwitching it can damage the latch - because the latching relay has defined maximum pulse duration.

  • Mod

    I got an 8 channels relay board and according to specs it requires 20mA per channel, so 5v x 0.02A= 0.1 W if my math is correct

  • You are talking about current driving the board input or current consumed by the relay ? What board ? what relay ?

  • If you drop me a message I can tell you what kind of bistable relays we are using in the Crownstones (http://crownstone.rocks). We switch 16A using a relays from Panasonic. It's one of the most expensive parts of our BOM.

  • OMRON G5Q consume 0.2W : https://www.omron.com/ecb/products/pdf/en-g5q.pdf (125mW for 5V version). Very small packaging

  • I hear people's arguments that you do not know the last state of a latching relay on a power failure, but what if you stored the last state in the eeprom? I mean you store the node ID and other things that get remembered on a power failure, why not the relay state? Every time you change the state of the relay, store it. Doesn't seem that challenging.

  • Mod

    @dbemowsk exactly what I wrote above "Another option is to store the current state of the relay somewhere after switching, e.g. in eeprom." ;-)

Log in to reply

Looks like your connection to MySensors Forum was lost, please wait while we try to reconnect.