Electronic – Interfacing signals between two parts at different voltage levels

microcontrollersignalvoltage

I would like to connect four output pins of a certain IC to four input pins of an AVR microcontroller (Atmega328).

I'm running the IC at VCC that varies between 3.50V and 4.00V. It outputs signals (for status indication) with an Output High spec of V_HIGH = VCC – 0.30, per the datasheet. Thus, in my case, minimum V_HIGH for an output signal from this IC will vary between 3.20V and 3.70V.

But I'm running my microcontroller at VCC = 3.30V, and I want it to read the inputs from the IC above (and not damage the microcontroller obviously).

What is a robust, hopefully simple, way to address this problem?

I am thinking perhaps a diode, to create a voltage drop, in series with each of the signals.

Best Answer

Well, the old fashioned way is using a resistor and a Zener diode of appropriate voltage (mind the polarity!), but if you really wamt a professional solution, I think this would cut it:

5V <-> 3.3V bidirectional level converter

EDIT: you wrote:

Thus, in my case, V_HIGH for an output from this IC will be 3.70V.

Which is not correct. I think that it is meant that it is at least 3.7V, but it might as well as be as high as VCC, which is 4V. (I'm not sure if this sentence is correct English though)

My experiences (ahem, mistakes, to be totally honest) show that these devices tolerate decent amounts of abuse, but I wouldn't intendedly run it under these conditions without level matching.

EDIT2: it's late, and I forgot the most obvious solution: a simple voltage divider on the pins. Especially as they are output only - this should be OK. Be careful with the values though, use resistors so that the lowest HIGH level on the output side should result in a voltage higher than the lowest HIGH level specified on the sensing side, but the highest levels shouldn't result in voltages higher than the specification on the receiver side.

Related Topic