Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

ESD protection for Aruduino Input Pins.

Status
Not open for further replies.

kkaranag

Newbie level 3
Newbie level 3
Joined
Apr 7, 2020
Messages
3
Helped
0
Reputation
0
Reaction score
0
Trophy points
1
Activity points
39
Dear all,
I am designing an project for automobile application , In which I require to protect my circuit from all possible type of practical failure.

For this project I have decided to build my own arduino board .

I will be taking 4 field digital input into my board , Fields input voltage will be in 20-28VDC(For logic 1) and 0 for logic 0.

To protect the circuit from high input voltage I have used optocoupler PC847 , and to protect the Inputs from ESD i have used TVS diode array SP0505BAJT. ( 5 diode array ,4+1 spare i have kept for future)

As I am designing this type of circuit for the first time , I require your view whether the selected circuit is okay or not, The value of resistance that I have used is okay or not and the most important TVS diode that I have selected is okay or not .

Kindly also provide if any additional type of protection will be needed for input
 

Attachments

  • Arduino ESD protection.PNG
    Arduino ESD protection.PNG
    22.5 KB · Views: 273

Hi,

First define the valid voltage levels: V_IH, and V_IL, not the arduino levels, but the 20/24V levels.
And define the valid timings.
Then the maximum erroneous signals. In volts, time, energy, or capacitance.
If you don't know how, then read through ESD, EMI/EMC documents..
Many members may say: "I don't know" ... but you can't design a circuit without electrical specifications.
(There is a good chance that you design either the protection level too high, too low, or may have unwanted influence on the usual signals)

BTW: This is not related to arduino, indeed you need the same for every 3.3V/5V digital system.
****

An optocoupler connected both sides to the same potential is a waste of money.
Optocouplers are for galvanic isolation .... which you don't use.

Use: R, D and C only.

But the part selection is only one part. Additionally you need a useful schematic ... and you need a suitable PCB layout.
Without a suitable PCB layout ... all the parts may be useless.

Klaus
 

I agree with Klaus, especially over sharing a common ground and in an automobile application where there can be significant voltage drops between different 'ground' points in the vehicle.

A better approach would be to rely on the input impedance of the Arduino being quite high and use a combination of series resistor then two small signal (BAT85 etc.) diodes between Arduino ground and Arduino supply. Restraining the input to the Arduino voltage range should protect it regardless of outside voltages.

You might see another problem, you assume logic low voltage will be 0V but in reality the drops around an automotive wiring might result in it being somewhat higher and possibly misinterpreted as a logic high. If that is the case, use the resistor and two diode approach I mentioned but also add a resistor across the input to ground, it can be quite a large value, 10K or more, then add a Zener diode to drop some of the incoming voltage. For example if you drop the incoming voltage by say 10V, you buy yourself 10V of logic low margin but still have at least 10 overhead for a logic high.

Brian.
 

klausST

Input is coming through electromechanical relay when the relay is open I am taking that as 0 V(Logic 0) condition , and when the Relay is close I am taking it as logic 1 condition.

Definitely to solve the problem of floating pin I will be making arduino pin pull up high.

As mentioned above the input is coming through electromechanical relay hence the input won't be high frequency input , actually it would be like hardly once in a minute.

PCB layout I have already done many time in the past , and also did the PCB layout for this project and I thing I won't be facing any problem in it.

Regarding Optocoupler , can you kinldy elaborate furhter on R D C circuit.
 

Hi,

sadly you missed to give values. Values with units we can calculate with.

Input is coming through electromechanical relay when the relay is open I am taking that as 0 V(Logic 0) condition , and when the Relay is close I am taking it as logic 1 condition.
Definitely to solve the problem of floating pin I will be making arduino pin pull up high.
Makes no sense for me. -->schow your schematic.

As mentioned above the input is coming through electromechanical relay hence the input won't be high frequency input , actually it would be like hardly once in a minute.
No timing information .. besides the "once a minute". This makes it hard to help.
Without values I can only give answers without values, too:
* You need to suppress unwanted frequencies to a uncritical low level, while you need to pass your wanted signal with your desried timing to a valid high level.

PCB layout I have already done many time in the past , and also did the PCB layout for this project and I thing I won't be facing any problem in it.
Many users wrote the same.... I have to believe.... but good to see that you don´t need help with this.
Many users before did not have enough experience with the very high frequency ESD / EMI / EMC signals. So even when they used suitable protection devices the protection was not given, resulting in unexpected resets and/or defective I/O pins.

Regarding Optocoupler , can you kinldy elaborate furhter on R D C circuit.
An optocoupler is an isolating device but you don´t use the isolation feature. An optocoupler is no protection device against ESD / EMC signals.

R = resistor mainly for current limiting (depending on the expected overvoltage signal a useful range is from simple 0603 chip resistor up to high voltage high power resistor)
D = Diode for voltage clamping (depending on the expected overvoltage signal a useful range is from smal signal diodes up to several kW transzorb)
C = capacitor, mainly used as low pass filter (depending on the expected overvoltage signal a useful range may be from "no capacitor at all" up to several microfarads, voltage rating depends additionally on circuit)

Klaus
 
esd protection.PNG

Thanks Klaus for your detailed reply. Based on your and other forum member suggestion I have decided not to go for optocoupler.

and decided two new schematic
1) As suggested by you using RC filter + diode
2) using npn transistor

schematic for the same I have attached.

please, kindly see and confirm which option is better for me. and is any further changes will be required on it.

regarding the frequency , my signal is simple on off signal and is coming from 24V electromechanical relay. relay common is connected to battery +ve(24V dc) terminal through MCB, Fuse and other assembly. (this part is not in my scope) and whenever driver engages engine PTO(Power Take off point) and similar few other things I will be getting this signal. As those operation is not be happening with any fixed frequency I mentioned 1 time per minute . actual frequency will be way lower then that.
 

Hi,

Not that bad.
I never used a BJT as protection device. But maybe it's base is stronger than an arduino's input.
But it's specification usually is not sufficient as ESD protection.

A zener as protection for a microcontroller input may work ... or may not work.
A 5.1V zener may start becoming conductive way before you want it, but on the other hand with an ESD pulse the voltage may be too high. But worst of all: it is an absolute voltage limit, but the microcontroller has a relative voltage limit. This means in ideal case it limits the voltage to 5.1V...but the microcontroller darasheet nay say "VCC +0.3V". So what if VCC is 3.3V .... or what is when the microcontroller is switched OFF at all?
--> VCC = 0V ... the microcontroller limit thus is 0.3V ... but the zener passes 5.1V...
--> no protection...
I vote for a ready to buy ESD protection diode. Dual diode.

But you still don't understand. ESD is high voltage (with unknown polarity).
Now you give informations for a resistor with just "10k" for example. This by far not sufficient.
A 10k 0603 SMD simply can't widthstand kilovolts...0414 THM will do..

You still don't understand that's not possible to give good advice without values.
It's the designer's job to decide the conditions.
Like timing. It's of no use to tell that a relay switches once a minute.
You have to decide what delay time is allowed from relay switching to stable arduino input.
Or do you say 30 seconds of delay is OK? 30 second surely is sufficient for the arduino to catch every switch cycle...
But if you say 30 seconds delay is not OK, then .... you know what you have to do....

You are free to "try and hope" ... but I assume I can't help this way.

Klaus
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top