4
\$\begingroup\$

So my problem is simple: I have an IC that provides an output pin to alert you when some condition is met. The output pin is open-collector, high-impedance when active. I want to monitor this output on another IC (a microcontroller, specifically).

Is this as simple as having a pull-up on the output so when it's "on"... the level goes low and I just monitor for the high-to-low transition? I feel like I'm overthinking this, but it's not immediately setting off a light-bulb in my head.

\$\endgroup\$

4 Answers 4

3
\$\begingroup\$

Yes, all you have to do is to add a pull-up resistor to the open-collector output, provided that the other IC input doesn't need much current it will be OK.

The typical value for the pull-up resistor is 10 K.

\$\endgroup\$
4
\$\begingroup\$

Yes! It's that simple. That's part of the reason open collector is so popular.

You'll find that all the cheap comparators (e.g. LM393) have OC outputs.

If you attach a pull-up a resistor from the range of 1kΩ − 15kΩ everything should be O.K. If you want to do everything properly, consult the IC's datasheet for the OC current ratings and use an appropriate resistor.

\$\endgroup\$
3
  • \$\begingroup\$ So what am I attempting to match: the current sinkable by the IC to the current that will pass when the line is pulled highed by the pull-up? i.e. if the IC could sink 1mA, and Vcc was 5V, I'd want a 5k resistor. \$\endgroup\$ Commented Sep 12, 2012 at 12:26
  • \$\begingroup\$ Approximately, yes. You want to stay below that maximum current sinking value. There will be a voltage drop between the OC output and GND, since there is a transistor there. This voltage drop will slightly decrease the current and ensure that you won't exceed that 1mA, for instance. \$\endgroup\$ Commented Sep 12, 2012 at 12:53
  • 1
    \$\begingroup\$ There is another consideration as well. When the open collector output goes OFF the pullup transition will follow an RC curve based upon the capacitance of the circuit node. If the pullup resistor value is too large and the repetition rate of the OFF-ON-OFF transitions open collector is high this capacitance effect can prevent the signal from attaining a full logic high level. A quick scope check can determine if this is a problem in your circuit. \$\endgroup\$ Commented Sep 12, 2012 at 14:25
4
\$\begingroup\$

Jonny and Bruno already confirmed that this is the right way to do it. Most microcontrollers have internal pull-up resistors on their I/O pins, so you could use that and save an external part. You may have to enable the pull-up resistor, since they're not always enabled by default.

Open collector outputs have two main uses:

  • wired-ANDing a line, by connecting more outputs to the same pull-up resistor. The line will be low if at least one open collector output pulls it low. Typically used in I2C, for instance.
  • Connect to a different voltage: a 3.3 V logic output can be pulled up to for instance 5 V to connect to TTL level.

For high speed the open collector has a disadvantage, however. While the transistor can sink enough current to discharge a capacitive load fast (think of a long wire), the pull-up resistor will make rising edges slower, depending on the RC time constant.

\$\endgroup\$
3
  • \$\begingroup\$ I'm going to be connecting this output to two pins, actually: one GPIO pin and one external interrupt pin. In my mind, I like having the external pull-up to make sure both pins can be defaulted and still see the intended signal. In the case of the pin doing the pull up being misconfigured, it'd still allow the external interrupt pin to catch the level change. In my case, the signal will simply be the output from my main regulator and my power path controller IC for connecting and disconnecting USB power.... so it will be fairly slow and I don't think the RC time constant will hurt me here. \$\endgroup\$ Commented Sep 12, 2012 at 17:13
  • \$\begingroup\$ @Toby - No, the RC won't be a problem. I just mentioned it because it sometimes is important. For I2C for instance the falling edge must be shorter than 300 ns, while for the rising edge they had to allow 1000 ns. \$\endgroup\$
    – stevenvh
    Commented Sep 12, 2012 at 17:15
  • \$\begingroup\$ Fair enough. :) \$\endgroup\$ Commented Sep 12, 2012 at 17:19
0
\$\begingroup\$

One point not yet mentioned is that while a resistor may be used to pull up an open-collector line, it will waste more current for a given level of performance than would some other methods. The problem is that while the open-collector output is simply sitting low, the resistor passes the most current even though nothing is happening and thus speed really doesn't matter, and only half as much current when the output is approaching half-rail and speed does matter. A constant-current source would pass the same amount of current in both scenarios. Some more sophisticated circuits can do even better, passing only a little bit of current when the output is simply sitting low, but increasing the current as soon as it starts to move. Such approaches can greatly reduce quiescent current without significantly sacrificing performance; the biggest danger is that if the output isn't being driven hard low, they may (depending upon the exact approach) draw excess current and/or oscillate. Still, active approaches may be helpful in some cases where one needs to e.g. detect quickly when a switch opens but doesn't want to burn much current through the switch while it's sitting idle.

\$\endgroup\$
3
  • \$\begingroup\$ So what's an appropriate solution schematic / part in this case? At 3.3V, with 3.3k pull-ups, I'm burning 1mA for each of them... which I'm OK with but if I could cut that by an order of magnitude.. I wouldn't say no. :) \$\endgroup\$ Commented Sep 12, 2012 at 21:19
  • \$\begingroup\$ Many microcontrollers' "weak pull-up" circuits behave more like current sources than like resistors, which is good for this sort of application. Otherwise I don't know of any nice monolithic "active pull-up" solutions. \$\endgroup\$
    – supercat
    Commented Sep 12, 2012 at 22:48
  • \$\begingroup\$ Isn't a pull-up or pull-down weak by definition? Seeing that it's there to hold the line one way or the other, but is easily overridden by a direct connection to the opposite rail. \$\endgroup\$ Commented Sep 12, 2012 at 23:34

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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