Yahoo Groups archive

AVR-Chat

Index last updated: 2026-04-28 22:41 UTC

Thread

Circuit for protecting analog inputs?

Circuit for protecting analog inputs?

2006-07-08 by Ryan

Hi everyone,

I need to protect an analog input for an AVR.  Protect it from ESD,
users connecting it wrong (i.e. to +12V power), etc.  Any suggestions
on what to use?  Unity gain opamp?  "transorb" or similar transient
device???  Discussion welcome.  Thanks,

Ryan

Re: [AVR-Chat] Circuit for protecting analog inputs?

2006-07-09 by Ned Konz

Ryan wrote:
> Hi everyone,
> 
> I need to protect an analog input for an AVR.  Protect it from ESD,
> users connecting it wrong (i.e. to +12V power), etc.  Any suggestions
> on what to use?  Unity gain opamp?  "transorb" or similar transient
> device???  Discussion welcome.  Thanks,

There have been a number of good responses here. However, most are 
overkill IMO. You don't really need external diodes, for instance, as 
long as you can limit the input current into the internal diodes to less 
than 1-10mA or so (see the data sheet).

You can easily simulate various ESD scenarios with a SPICE program. I've 
done so, and found that the R/C network that I initially wanted to use 
wasn't safe enough. Problem is that when the C charges up to where the 
input protection diodes want to start conducting, you can have 
additional energy that has to go somewhere. And it goes through the 
diodes. Adding a second R between the R/C junction and the input pin 
then lets you limit the current into the input diodes to something safe, 
even with a multi-KV input.

You also don't say what input voltage range you're looking at, nor what 
frequencies you're trying to measure.

Assuming that you're reading sensor input (slowly varying) and can stand 
some filtering, this kind of circuit can work quite well (and will also 
do some low-pass filtering for you).

Here's an example of an input protection circuit that I've used for a 
0V-to-Vcc input. It has a rolloff around 160 Hz.

The input impedance seen by the AVR pin is effectively just the 1K, 
because the 10nF is so much bigger than the internal s/h capacitor.


input --- 100K -+-- 1K -- AVR pin
                 |
                10nF
                 |
       ----------+

Here's the SPICE (SwitcherCADIII) model for this (testing a +/-7.5KV ESD 
input discharged from a 100pF cap via a 1.5K resistance). I used 1N914 
diodes to model the input diodes (I'm only interested in the current 
through them).

Note that the peak current through the negative diode D1 is less than 
5mA; through D2 it's less than 1mA.

With a different ESD model (say 200pF through 1 ohms) the peak current 
is still under 10mA worst case with the +/- 7.5KV inputs.



* I:\src\SWCadIII\esdtest2.asc
V1 N002 0 -7.5k
C1 N006 0 100p
C2 N007 0 0.01?
R1 N007 input 100k
R2 P001 N006 1.5k
S1 P001 input 0 N004 MySwitch
S2 N002 N006 N004 0 MySwitch
D2 output N008 1N914
D1 0 output 1N914
V2 N008 0 5
V3 N004 0 PWL(0 0 10u 0 10.001u 1 100u 1 100.001u 0 200u 0 200.001u -1 
300u -1 300.001u 0)
R3 output N007 1000
C3 output 0 5p
V4 input 0 1 AC 1 Rser=10k
V5 N001 0 7.5K
C4 N005 0 100p
R4 P002 N005 1.5k
S3 N001 N005 N003 0 MySwitch
V6 N003 0 PWL(0 0 400u 0 400.001u 1 500u 1 500.001u 0 600u 0 600.001u -1 
700u -1 700.001u 0)
S4 P002 input 0 N003 MySwitch
.model D D
.lib C:\Program Files\LTC\SwCADIII\lib\cmp\standard.dio
;ac oct 10 1 1e6
.model MySwitch SW(Vt=0.5 vh=0.1)
.tran 800u
.backanno
.end




Enjoy,
-- 
Ned Konz
ned@bike-nomad.com
http://bike-nomad.com

Re: [AVR-Chat] Circuit for protecting analog inputs?

2006-07-11 by Alexandre GuimarĂ£es

Hi,

    This thread is getting more and more interesting.... And I am thinking 
more and more how much overkill I do in many of my projects... At least they 
do not blow on my face frequently :-)

    What about using a "spark gap" on the PCB right where the signal get's 
inside the box ? I use it at all my DB-9 and DB-25's.. This guarantees that 
the voltages inside the box will never be over 2KV.. This way we could make 
a input circuit with just passive components that is really idiot proof 
unless someone plugs the inputs to 127 volts continually ! We have also to 
be carefull with the clearance over the resistors, 2 in series would 
probably be a better option.. The "spark gap" is just a semi-circle on the 
PCB without solder mask placed very close to the DB-25 pins and connect to 
ground.

    That would be something like this:

 input -+- 47K ---------- 47K -+-- 1K -- AVR pin
        |                      |
     Spark Gap                10nF
with 0.18 mm Clearance         |
        |                      |
       -+----------------------+

     Is there any "normal" situation in a automotive environment that would 
blow the AVR with this input circuit ???

Best regards,
Alexandre Guimaraes
Show quoted textHide quoted text
> There have been a number of good responses here. However, most are
> overkill IMO. You don't really need external diodes, for instance, as
> long as you can limit the input current into the internal diodes to less
> than 1-10mA or so (see the data sheet).
>
> You can easily simulate various ESD scenarios with a SPICE program. I've
> done so, and found that the R/C network that I initially wanted to use
> wasn't safe enough. Problem is that when the C charges up to where the
> input protection diodes want to start conducting, you can have
> additional energy that has to go somewhere. And it goes through the
> diodes. Adding a second R between the R/C junction and the input pin
> then lets you limit the current into the input diodes to something safe,
> even with a multi-KV input.
>
> Here's an example of an input protection circuit that I've used for a
> 0V-to-Vcc input. It has a rolloff around 160 Hz.
>
> The input impedance seen by the AVR pin is effectively just the 1K,
> because the 10nF is so much bigger than the internal s/h capacitor.
>
>
> input --- 100K -+-- 1K -- AVR pin
>                 |
>                10nF
>                 |
>       ----------+

Move to quarantaine

This moves the raw source file on disk only. The archive index is not changed automatically, so you still need to run a manual refresh afterward.