Sunday, 26 June 2016

Protection Against High/Negative Voltage for Arduino


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!




Answer




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:


schematic


simulate this circuit – Schematic created using CircuitLab



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.


No comments:

Post a Comment

arduino - Can I use TI's cc2541 BLE as micro controller to perform operations/ processing instead of ATmega328P AU to save cost?

I am using arduino pro mini (which contains Atmega328p AU ) along with cc2541(HM-10) to process and transfer data over BLE to smartphone. I...