1

I want to use a wired OR connection to connect some pins of the 74HC595 shift register to an Arduino Digital Input Pin. How do I choose proper diodes for this situation?

  • Maximum rated forward current has to be higher than whatever current a single pin of the 74HC595 produces.
  • The V_F forward voltage drop has to be as low as possible to make sure that a HIGH from the shift register has still a voltage high enough to result in a HIGH at the Arduino pin after passing through the diode.
  • Switching time has to be low enough to match the shift register's frequency.

So far, so good? What did I miss?

By the way, I haven't decided on the voltage for VCC, yet. Most likely, either 5 V or 3.3 V.

schematic

  • Why?? Your "requirements" are contradictory; RTL went out of vogue in the early 1960s precisely because it was slow (among other problems). You have not specified the frequency, but it is unlikely to be so high that you need to worry. This also is not an Arduino question? – Milliways Jun 30 '17 at 2:01
  • @Milliways Thank you for your comment. :-) You seem really taken aback by my question. I'm just getting started with electronics and Arduino, so it's fairly probable that I'm approaching something the completely wrong way. With RTL, do you mean Register-transfer_level? I'm having problems understanding the correlation. Could you elaborate, please? – Liam Jun 30 '17 at 14:39
  • Concerning the relevance towards Arduino, I was thinking that the microcontroller on hand plays a part in choosing the proper diode. Despite the diode's voltage drop, I still have to reach the HIGH logic level for exactly this microcontroller. Isn't this dependent on which microcontroller is being used? – Liam Jun 30 '17 at 14:45
2

For this, almost any diode will work. Searching, it turns out that the 1N4148 is a popular ubiquitous choice. But don't go out of your way to obtain this particular diode.

Maximum rated forward current has to be higher than whatever current a single pin of the 74HC595 produces.

You should turn your thinking around. Consider the nominal high voltage of the 74HC595, subtract the forward bias diode voltage drop (usually 0.7V for a silicon diode) and divide that by the resistor you pick. That will be the current passing out of the 74HC595, through the diode and resistor. Only a small amount of current will pass into the Arduino. It should be negligible for most applications. You should pick a resistor high enough to only allow milliamps of current to pass through this circuit.

The V_F forward voltage drop has to be as low as possible to make sure that a HIGH from the shift register has still a voltage high enough to result in a HIGH at the Arduino pin after passing through the diode.

Check the voltage margin allow for a logical high input to the Arduino (Atmel processor). I think 3V - 0.7V = 2.3V is still considered a logical high. However, if you think this is too close, then switch to the 5 volt Arduino where the 0.7 volt drop will make less difference.

Switching time has to be low enough to match the shift register's frequency.

I doubt this will be a problem. That is, I doubt the CMOS logic will surpass the speed at which the diode can turn on / off.

  • Isn't there a very short period of time, when a diode in front of a former HIGH pin (now LOW) is still conducting and now allows for a short into this now LOW pin? – Liam Jul 10 '17 at 23:23
  • There might be. But I believe it will not be noticeable relative to the time it takes for a CMOS device to charge up and start conducting or discharge and stop conducting. Almost all logic chips use CMOS like technology these days. – st2000 Jul 11 '17 at 6:07
  • Aah, I might be getting somewhere now. You're saying the shift register needs some time to switch from LOW to HIGH as well - and this time is enough time for the diode to switch to reverse biased? – Liam Jul 12 '17 at 21:39
  • That almost right. A computer designer is interested in something called propagation delay. Every "gate" (which is made up of transistors and in some cases diodes) contribute to the over all propagation delay. There are dozens of gates in the shift register. So there is significant delay between the shift register's clock input changing and the shift register's outputs changing. The software program you write for the Arduino and hard ware you are designing will have to work in harmony to pull this off. Adding diodes as you have done will add an insignificant amount of propagation delay. – st2000 Jul 13 '17 at 3:52
  • After reading about propagation delay, this seems important to explain that the additional diode won't "affect the signal". (So thank you very much for introducing me to this technical term!) However, I feel terrible for suggesting this, because your answer helped me so much already - is it possible you misunderstood my follow-up question? There is a short period of time which the diode needs to switch from forward bias to reverse bias. Isn't it possible, that current flows through this still forward biased diode (during its switching time) into the (now LOW) output pin, and harm the IC? – Liam Jul 13 '17 at 22:21

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.