Two Contactors Just Exploded

Okay.. I've learned this the hard way. I used IND I/O to control Forward and Reverse of a 3 phase AC Induction Motor. Everything went well initially until I cut off electricity. As soon as I turned the IND I/O back on, both contactors exploded and there was huge explosion sound. It seems like when IND I/O start up, it produces output voltage simultaneously on all ports for a fraction of a second. This action connected both contactors simultaneously and caused short between the phases. I've even interlocked the control coil of both contactors to pass through each other's NC port so when one contactor is active, another one cannot turn on. The problem is, I connected the IND I/O to contactor through two very fast Solid State Relay. The process happened so fast that the electricity reached both contactors before the NC coil has time to disconnect each other's coil. I wish I could upload my wiring diagram but unfortunately I have no enough karma. The following is how I wired them:

DIO CH1 ( Output ) --> 24 Vdc Solid State Relay --> Forward Contactor

DIO CH2 ( Output ) --> 24 Vdc Solid State Relay --> Reverse Contactor

Now, I've heard that setting all Digital IO Ports mode to OUTPUT first and set them to LOW before configuring each port for INPUT / OUTPUT during setup() will prevent IND I/O to produce any voltage output during start up. Is this solution guaranteed? Or is there any other methods? Please provide solution as this is a very dangerous bug. Luckily nobody died today.


I removed every codes from inside loop() and only initialized the setup() so basically it does nothing after start up. I set all dio ports to OUTPUT and set everything LOW. I then disconnected the USB and plug 24Vdc power into IND I/O. I can still see both Solid State Relay indicator blinked for a fraction of second ( around 1/4 second ) during start up. Then I connected  one Solid State Relay through a mechanical relay's NC Port. The wiring as follow:

IND I/O CH 1 --> Mechanical Relay Coil --> Mechanical Relay NC-A --> Mechanical Relay NC-B --> Solid State Relay Coil.

The Solid State Relay still blinked which means the mechanical relay's NC is not fast enough to cut off electricity flowing to SSR coil.

Does anybody know what caused the IND I/O to produce signal output during start up or how to stop it? I am now quite positive that this is what caused my contactors to explode yesterday as they were connected to 380Vac, 1000KVa transformer source.


I tried uploading empty sketch to the IND I/O and the problem appears to be solved. Then I wrote the following in setup(): 

Indio.digitalMode(1, OUTPUT);
Indio.digitalMode(2, OUTPUT);

and I found out that both Solid State Relay are turned on. Then I add:

Indio.digitalWrite(1, LOW);
Indio.digitalWrite(2, LOW);

It reproduce the symptoms: dio port output HIGH for a fraction of second. Aha! Now I know what happen. It seems like by default, dio port will output HIGH once we set the mode. Then turn them down as soon as the cpu reach the next statement to make them LOW.

Question: Is there a way to tell the board to output nothing by default until there is command to make them HIGH?


Interestingly, I wrote the following in setup():

Indio.digitalMode(1, INPUT);
Indio.digitalMode(2, INPUT);

No codes other than above was written in setup(). loop() is empty. Guess what? Both my solid state relays that were connected to dio 1 & 2 were on! I was surprised, those ports were configured to receive voltage input but were outputting 24Vdc instead. No wonder "The recommended way to declare dio INPUT is to set them as OUTPUT first, turn them LOW, then set them as INPUT".

Question: Is this a bug? Wouldn't this conflict with 24Vdc input from sensor?

Albert Tobing
Albert Tobing
| 5 1 3
Asked on 12/9/16, 11:07 AM

Very interesting! For one thing, as you are working with SSRs, why don't you just connect them the opposite way, ie. to +24VDC and reverse logic? Second, you set OUTPUT and then write LOW. Why don't you do the opposite? You are just filling registers here, so maybe writing LOW before writing OUTPUT could do the trick. In case of reverse logic, you would write HIGH, but from your tests it seems that you can just write nothing if you reverse. Anyhow I would write something before setting OUTPUT, to make sure you avoid random states. Third, it is very strange that on a INPUT you are getting a voltage, unless pull-ups are on, which could be at startup. Maybe the SSRs are just too sensitive, switching on just the pull-up current.

Stefano Giuseppe Bonvini
on 12/10/16, 9:29 AM

Woah, writing LOW before defining INPUT or OUTPUT actually worked ! I always thought I have to define INPUT/OUTPUT first before setting LOW/HIGH. However, how reliable is this solution? I am afraid one day the IND I/O malfunction and my contactors explode again..

Albert Tobing
on 12/10/16, 9:52 AM

Fyi, I connected one dio port to 24Vdc Relay coil and set the mode to INPUT. The relay also turned on permanently, as long as IND I/O is on.

Albert Tobing
on 12/10/16, 9:54 AM

This is interesting, but you shoud post the type of relay, to be able to check parameters.

Otherwise it is a generality and will end in creating doubts in other people.

Anyhow it means that while in INPUT mode there is a trickle current and it is more than needed by the SSR.

I am quite positive that if you switch on the pull'up and connect to +24VDC it should go off.

Did you test it on different outputs?

It could be that particular I/O is partly damaged,

Il 10 dicembre 2016 alle 10.54 Hsieh Chieh Huei <> ha scritto:

Fyi, I connected one dio port to 24Vdc Relay coil and set the mode to INPUT. The relay also turned on permanently, as long as IND I/O is on.

Hsieh Chieh Huei
Sent by Industruino using Odoo about Forum Post Two Contactors Just Exploded


Stefano Giuseppe Bonvini
on 12/10/16, 10:50 AM

Okay, the mechanical relay type is 24Vdc, Schneider, Type RXM2AB2BD. Thanks a lot for your help, Stefano. It should do for now. Next, I will check if using mechanical interlock will guarantee prevention of both contactors from turning on at the same time.

Albert Tobing
on 12/10/16, 11:55 AM

That is a very good suggestion. It indeed solved all problem and I now have much more confident that those contactors won't have any chance to short again. Tomorrow I will rewire everything. Thanks a lot for the suggestion. I wish I could mark your comment as answer but unfortunately I dont have enough karma to do that =(

Albert Tobing
on 12/10/16, 2:48 PM

This sounds very strange to me. Computing speed is so much higher than switching speed of contactor that if that was the case they would just tick in the worst case. So I think we should investigate more deeply in the computational part of the issue. The I/O chip is the NXP PCA9555BS, of which you can find the datasheet. I am totally positive that on power-on all I/O is configured as input, so unless there is any reason in the discrete hardware to revert that, I don't think that is possible at all. One fact to keep in mind always when operating an Industruino is that it is a two-board machine. This is very good in terms of safety and noise reduction, but it is possible to run in one of two mistakes when connected to USB: 1) when connected to USB only, the CPU will compute but nothing will come out of the I/O. Switching on the I/O power afterwards will not initialize the I/O properly. 2) when powering I/O with USB connected, the I/O will be in a random state because the CPU will not execute setup(). Before getting into strange hardware issues, I would check the software against these conditions, also related to sensors, and generally to see if something has been missed. But of course the Industruino team will run a series of tests and answer on this issue more properly.

Stefano Giuseppe Bonvini
on 12/9/16, 11:33 AM

This problem seemed a serious issue at start, but as usually happens, it was due to a incorrect application.

A system should be designed to make it impossible to get damaged in case of a faulty condition, and this system was not.

I also happened to burn contactors in big power generators, because start-up current is tenfolds operating current.

But in this case the problem was a redundant projects, in that part of the circuit would wire the motor one way and another part in the opposite way, so when both were switched on for whatever reason, disaster occurred.

After checking all possible causes, which are enumerated earlier, this was the final solution:


Simple answer would be:

output 1 = on/off

output 2 = direction

rather than

output 1 = forward

output 2 = reverse

That would avoid any type of problem!


Re: the type of relay used, it has a minimum operation current of 10 mA, or 240mW@24Vdc.

I don't know if this is somehow comparable with the leak current of I/O, but I don't think so, unless as I said something was damaged.

Stefano Giuseppe Bonvini
Stefano Giuseppe Bonvini
| 2 0 2
Answered on 12/10/16, 3:18 PM

Your answer

Please try to give a substantial answer. If you wanted to comment on the question or answer, just use the commenting tool. Please remember that you can always revise your answers - no need to answer the same question twice. Also, please don't forget to vote - it really helps to select the best questions and answers!

Ask a Question

Keep Informed

About This Forum

This community is for professionals and enthusiasts of our products and services.

Read Guidelines

Question tools

30 follower(s)


Asked: 12/9/16, 11:07 AM
Seen: 7706 times
Last updated: 12/10/16, 3:30 PM