High Power Safety : Fault Correction via Contactor
-
I feel like I should know this…. But is there any heater enable / fault functionality built into the Duet to enable a contactor?
From what I’ve read recently, SSRs with mains voltage can be dangerous for two reasons: 1) because these often fail to the “on” state, and 2) even when off there is a possibility of enough ‘leakage’ current to kill someone.
I would like to add in a contactor that would function as follows:
For heaters 1 and 2, a contactor is placed after the SSR on each wire, but before the heater load. The first time heater 1 or 2 is turned on, the duet energizes the contactor and enables the heaters. When a fault is detected by the software, the duet de-energizes the contactor, cutting any power even if the SSR failed to the ‘on’ state.
Does anyone have experience doing this? Seems like a necessary precaution for safety using SSRs.
-
Anyone know if conditional G-code can do something like this with a preheat command or something?
-
@TLAS It's 5:30 a.m in my part of the world and the caffeine hasn't kicked in yet, so take the following with a pinch of salt. But I guess you could use a gpio pin to switch an optically isolated relay. Not sure what the logic level is, probably 3.3v so you might need a level shifter to switch the relay. Then you could query the object model to see if the state of heater 0 is active and if it is, make the gpio pin high, which would activate the relay.
Of course, nothing is ever 100% failsafe as the relay itself could fail on if there was any arcing across the contacts, but it's another level of protection.
A simpler solution that a lot of people use is a thermal fuse. Wire it to the feed of the SSR, then if it fails in the on state, the temperature will rise and trigger the fuse which will cut power.
-
Good thoughts. On the gpio pin, is there something that is looped / checked more continuously? I haven’t looked at GPiO pins since the duet 1 days.
-
@TLAS said in High Power Safety : Fault Correction via Contactor:
Good thoughts. On the gpio pin, is there something that is looped / checked more continuously? I haven’t looked at GPiO pins since the duet 1 days.
That's a good point - I told you I wasn't awake. TBH, I'm no expert on conditional gcode so someone with more knowledge than I needs to jump in here. There is something called daemon.g or some such which runs continuously in the background but the polling/update frequency might be a bit too slow for what you are trying to do.
-
@deckingman
That might still be a good solution to look into. I’ll do some digging. -
@TLAS For things that will kill people if not properly managed, I've used a "Watch dog".
For this application, you could attach a timed-relay set to something like 5 seconds to the coil of your contactor.
Then, have a GPIO that pokes the timer and it will stay closed for 5 seconds.
If you poke it every 4.99 seconds (or anything faster than that) the heater will stay enabled.If you ever miss a time slot, the heater will be automatically disabled. This could be because the Duet crashed (unlikely!) or your code noticed the heater fault and stopped poking the GPIO pin.
There are a million time delay relay boards on that Jungle website.
If you want to discuss this in more detail, just reply here.
-
@alankilian
That’s a great application and approach! I used a timer previously on a project back in college but kind of forgot about them in the digital age.In regard to the duet side of the timer - is that something to do via conditional gcode in daemon.g or more pi-based functionality?
-
@alankilian @deckingman
Looks like daemon.g with a G4 command should do the trick. Thanks for the tip on the timers!