I am currently on a student project where I have to create a portable device that allows the output of sensors connected to it to be displayed on a 16x2 LCD screen using an Arduino Uno R3.

One of the important requirements is that, while the majority of the sensors that will be connected have an output range of 0-5V which the I/O pins of the Arduino can handle, some sensors can have an output range of 0-16V. So it is important that the device has the appropriate protection against over voltage/negative voltage as well as any signal conditioning required for values outside the 0-5V range.

What I've decided so far is to use a voltage divider to lower the maximum value of 16v to 5v and to use a zener clamping circuit to to keep the input to the Arduino pin between 0-5V as well as including a buffer amplifier to ensure the output voltage only changes according to the sensor.

Here is a schematic of what I am planning to do:

enter image description here

Will this method work, what do I need to do to solve this problem?

Thank you very much for reading!

  • \$\begingroup\$ I don't see any voltage rails on that schematic, please include them, to me this schematic says that the arudino, op amp, and LCD are unpowered. \$\endgroup\$
    – Voltage Spike
    Commented May 9, 2019 at 15:19
  • \$\begingroup\$ @laptop2d Apologies, I should have mentioned that the Arduino will be powered via the USB port, but for the sake of clarity I have added a 5V power supply to the Vin pin and a ground connection to the GND pin \$\endgroup\$ Commented May 9, 2019 at 15:40

2 Answers 2


Is a Zener clamp going to work for input protection of MCU inputs?

I would suggest that the use of zeners will not provide the protection you think.

The idea of buffering your inputs and providing clamp protection is a good one.
If you are designing professional solutions you SHOULD provide adequate protection for you MCU inputs. It is NOT a good idea to ever depend on the intrinsic diodes in the MCU to provide clamping.

I'd suggest that something like this would work for you:


The TLV9001 is DESIGNED with input clamps that can tolerate several mA. The actual clamp voltage is about 0.5 above VDD and 0.5V below GND. The MCU input is protected/buffered because the opamp supply limits the output voltage. You still of course need to provide your input voltage divider to get the signal within range.

In the configuration shown above you could apply a +/-50v signal and expect only 2.5mA of clamp current to flow.
By making the input buffer 'tolerant' of higher symmetrical voltage inputs, you can protect the A/D input and move transient (surge protection) to the edge of your board where it belongs. If the buffer is +/=50V tolerant then your input surge clamps can be at higher voltages, say +/-30V. An Asymmetrical TVS such as the ESD108-B1-CSP0201 would appear viable.

You might also look at this answer I gave using the same device to scale the input into a range. It needs no input voltage clamps beyond that provided by the TLV9001.

If you have longish wiring for the input signals it may certainly be appropriate to use surge protection devices and here is a great app note on selection of the devices. Clamping here can be at a much relaxed level, for example, putting in 20-30V surge protection would work well directly on you input wiring point.

Update: I assume you are buffering the A/D input to the MCU you show. In this case you need to ensure that your signal can get to the VDD level and zero to ensure you use the whole span of the A/D. The Elcodis EL2001CN you show is NOT appropriate for the task. This device is NOT a rail to rail output opamp, and it does not have a gain of 1.

  • \$\begingroup\$ I included zener diodes as a way to protect the non-inverting input of the op amp as I'm told that inputting a voltage higher than the supply of the op amp (which will be 5v) is a bad idea, is this not necessary? This is just in case the sensors have any sort of glitch I'm not aware of as I'm not told what type of sensors will be hooked up, just that I should expect between 0-16v and provide adequate protection in case it isnt for whatever reason. \$\endgroup\$ Commented May 10, 2019 at 8:06
  • \$\begingroup\$ @House_Byrne Did you read the answer I gave? Zeners are NOT a good clamp mechanism. The typical 5v1 Zener is likely to have a range of 4.9-5.2V depending on the current flowing. There is a huge difference in surge protection (typically a TVS diode) and signal clamping. Zeners are asymmetrical and not viable IMO for signal clamping. \$\endgroup\$ Commented May 10, 2019 at 12:35
  • \$\begingroup\$ Ah I see what you mean now thank you clarifying, so just to make sure the op amp requires no further protection to its input besides the voltage divider used to lower the 16v signal to 5v \$\endgroup\$ Commented May 10, 2019 at 12:56
  • \$\begingroup\$ @House_Byrne The circuit shown is tolerant up to +/-50V levels but you may well want to add ESD/Surge protection to the voltage divider. I updated the schematic. It's up to you to decide if you need ESD/Surge protection, If it's a professional application then I would certainly add it. But understand that you probably need BOTH a high voltage tolerant input AND ESD/Surge protection in any industrial application. \$\endgroup\$ Commented May 10, 2019 at 13:26

If a sensor has a voltage range higher than permitted for the uC, you have to convert this voltage with a voltage divider, as you mentioned.

The sensor providing a higher output voltage does not implicate the need for a protection against overvoltage (you wouldn't add this feature to a 5V sensor, even though there might be voltage peaks as well). Don't get paranoid just because voltages higher than the logic level are involved. If you still want overvoltage protection you should protect the sensor itself and rely on the sensors specification regarding its output range.

  • \$\begingroup\$ You want a voltage divider, and between it and your processor you want something to clip any high voltage that does get through the divider. Say you have a signal that normally varies between 0 and 10 V. Divide it by two, your processor is happy. Now you get a glitch on the 10V signal, and there's 20V going to your divider. Ooops. Now your processor sees 10V, and is very unhappy with you. It probably has overvoltage protection built in. How much current can it handle? More than what comes through the divider? Certainly less than an external diode. \$\endgroup\$
    – JRE
    Commented May 9, 2019 at 16:11
  • \$\begingroup\$ That's a different story and such a glitch can occur in compatible logic levels as well. There is no need for an overvoltage protection because the sensor runs at a higher voltage, the voltage divider is just fine. \$\endgroup\$
    – Sim Son
    Commented May 9, 2019 at 16:26
  • \$\begingroup\$ @SimSon So I should remove the two zener diodes that I have put and just use a voltage divider and have the internal ESD in the uC handle any voltage spikes IF they occur? \$\endgroup\$ Commented May 9, 2019 at 16:29
  • \$\begingroup\$ @House_Byrne Absolutely NOT. Do NOT use the internal intrinsic diodes in the MCU to clamp overvoltage. Always clamp external to the MCU. Clamping with Zeners is problematic if you want accurate clamp voltages. Zeners are OK to clamp within the voltage divider, but the resolution is poor. \$\endgroup\$ Commented May 9, 2019 at 17:09

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.