Hello i have several power management IC that have an active low indicator for a fault, it would be a waste to dedicate a single digital pin for each of them. So i thought of to interface them to a single digital pin. I do not need to know which of them has a fault, i just need to know that there is a fault.

enter image description here

How do i safely do this? and as a follow up question if the fault voltage is 5v and the arduino pins only take 3.3v how do i shift it down with minimal components. can i just add a resistor in series?


If the ICs output 5V and your Arduino is 3.3V, you can simply use one voltage divider at the Arduinos pin to divide the voltage down to 3.3V.

But there is still one important thing to connect them safely: You have to check, if the outputs of the ICs are driven actively high, when no fault occured, or if they simply use a pullup resistor internally.

A pin, that is actively driven high, does not have an overcurrent protection. So, if one IC would pull it's pin to low and the others are still high, a high current would flow between them, potentially destroying them. In that case you need current limiting resistors in series with the ICs (directly at the ICs, so that the resistors are between them).

On the other side, if the ICs output a high level through a pullup resistor, you are safe to connect them directly, as there can only flow a very little current through the pullup resistors. Often such a situation is called Open-Drain (passive high level through pullup resistors, active low level by driving the pin to low through a MOSFET, like used in a digital output pin). In that case you don't need the current limiting resistors.

EDIT: The datasheet of the ICs, that you linked to states that the fault output is an

Active-low open-drain output

Also the example circuit shows an external pullup resistor. That means, that the fault pin is internally connected to a MOSFET, which will connect the pin to ground in case of a fault. Otherwise the pin is floating. The external pullup resistor will pull the pin state to a high level, when the MOSFET is not activated. This is good for you, since you can now simply use 1 resistor (one resistor is enough for all ICs), to pull the level up to 3.3V. Then you directly have the correct level for your Arduino and you don't need a voltage divider.

  • according to the datasheet sample circuit fault is pulled up so does this mean that the voltage divider and a pull up ? is the only thing i have to change in my circuit
    – Jack
    Nov 28 '19 at 12:29
  • Ah, yes. Though, since the IC doesn't use an internal pullup, you can simplify the circuit by directly pulling up to 3.3V with an external resistor instead of to 5V. Then you don't need the voltage divider. The high level will then be 3.3V. I will add this to the answer
    – chrisl
    Nov 28 '19 at 12:41
  • oh yes ! thats an amazing trick to do. pulling it up to 3.3 thus reducing the components. Thank you good sir. Additional question good sir, do i have to adjust the pull up resistor so that the line all have 10k resistance equivalent on them , or it does not matter?
    – Jack
    Nov 28 '19 at 12:45
  • 3
    Or you can use the Arduino's internal pull-up. Nov 28 '19 at 12:58
  • @EdgarBonet or that . but i think its a good design practice to include one anyway :)
    – Jack
    Nov 28 '19 at 20:20

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.