why no one uses latching relays ?
-
@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 ?
-
@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 ?
@rozpruwacz
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 -
@rozpruwacz
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@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. -
show me a relay with 0.2W power consumption, I couldn't find one.
-
@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 ?
@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); delay(RELAY_SET_TIME_MS); 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 ?
PS.
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. -
show me a relay with 0.2W power consumption, I couldn't find one.
-
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
-
OMRON G5Q consume 0.2W : https://www.omron.com/ecb/products/pdf/en-g5q.pdf (125mW for 5V version). Very small packaging
@Fabien just for completeness, that's specced for 10A. The Panasonic ones are not much bigger, http://eu.mouser.com/Electromechanical/Relays/General-Purpose-Relays/_/N-5g36?P=1z0z1s3, e.g. http://eu.mouser.com/ProductDetail/Panasonic-Industrial-Devices/ADW1212HLW/?qs=sGAEpiMZZMtSzCF3XBhmW2w01ZqnWsnJ%2FIRuNGt%252bt2Q%3D are specced for 16A.
-
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.
-
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.
-
There is a very minor edge case where you switch the relay and lose power before writing the state. Probably would never happen in reality. I think a bigger problem, which should be solvable) is if you lose power to your whole house, some relays would latched on and you could have surges or other problems. Hopefully latching relays are robust enough to handle it.
Another solution to the state problem is to have a power up routine that set all relays to a predefined state, then you know. That may be annoying if you reboot the system while someone is reading and the lights go off. This could happen with the more common relays also. The state problem is a lesser worry. The bigger worry is what happens when power comes back, do the relays leave things in a safe state while things initialize.
It comes down to trade offs, save some power and maybe have some imperfect behavior, or use a bit more and have fewer oddities. I think you almost have to decide for each relay.
-
I believe that with latching relay there is also a way to make the relay go into specific state during power outage - with a capacitor that stores some energy, that energy may be used to switch the relay into this specifi state. So I think that latching relays can do all the things non-laching relays can and also more :) and they are much more energy efficient. So my biggest issue is why there is so little of them on the market and hardly no ready made modules with required circuitry to handle them. And they are sooooo expensive ... :(
-
You can store the state in FLASH indeed, and have a rotating scheme to reduce wear. However, in practice it should also go fine if you store the information outside your system.
Suppose you have a phone that remotely SETs the relay. Now the relay gets powered off and on through some fluke. The next time it is powered on and its state is the same as that on the phone, because that device is oblivious to this entire sequence of events.
Next time the phone remotely does a RESET and the relay will toggle as expected.
If (1) someone else does change the state of the relay and (2) the chip is recycled, then you will be out of sync with the actual state for one cycle. After sending a SET or RESET it is synchronized again.
-
I believe that with latching relay there is also a way to make the relay go into specific state during power outage - with a capacitor that stores some energy, that energy may be used to switch the relay into this specifi state. So I think that latching relays can do all the things non-laching relays can and also more :) and they are much more energy efficient. So my biggest issue is why there is so little of them on the market and hardly no ready made modules with required circuitry to handle them. And they are sooooo expensive ... :(
@rozpruwacz i think your answer is "sooooo expensive", i suspect they are more complicated to build, so even if they were popular they would still cost more. As for the power cost, to put it in perspective, if you use 14w led bulbs, and your automation saves you 1 hour of bulb use, that will run your relay for 28hours at .5w. Now that doesn't help much if you are trying to run the relay on batteries/solar.