Esd / emf protection

I am using an input pin atmega328p to monitor the electronic potentiometer output of a motor controller (5v).
I am sometimes getting random wild transients of 8v or so. All are very short less than a millisecond.

Question.

  1. Is this considered Emf or esd?
  2. TVS diode to gnd had little effect. Why? Clamping voltage of tvs is at 7v. Transients too quick?
  3. Going to try ceramic caps. What value?
    1uf? 0.1uf? 10nF?
  4. Ceramic cap - series with a 15kOhm resistor?

Which should work best?

  1. Is there any benefit in connecting two ceramic caps,one to input - gnd, and one to input - 5v at the same time (I guess to protect from positive and negative spikes) or only cap input - gnd only is recomended.

Thanks
I really find this forum so helpful. I contribute when I can.

Well, Emf mean electromotive force, which is the definition for "voltage". so any pulse you see is voltage.

But esd means electrostatic discharge, so unless you have some type of static electrostatic generation somewhere in your project, then it could not be esd.

Obviously, from the description, you have been watching for the pulse with an oscilloscope, please tell us how often do you see the pulse and is it a regularly occurring pulse or is it random?

Please show a schematic or at least a block diagram of your project, including the power supplies. And at what point are you seeing the pulse and are you looking at the pulse with a ground reference?

1 Like

Please provide full specs or a link to the motor controller.

The "knee-point" of a TVS is smaller than a zener, but still, you should only use them for power supply protection, not for input pin protection. A Schottky diode from pin to VCC (clamping) could be a better solution. If that's the right one depends on the full sensor information you're going to post next.
Leo..

A link to the actual devices you are using would be useful.

Are you sure the voltage you are seeing is seperate from the supply to the motor?

As it makes no sense for the output to change in a msec (the motor could not respond) I dont see why you cant use a simple RC filter.

But without a schematic to show the ground arrangement its not possible to give a firm recommendation

Contributing more information about your problem will help.

Ha. I obviously meant that I answer other people's questions when possible .

I will have to get back to the lab for schematics.

Correction 80v not 8v

If that is on a pin or your Arduino, then why is it still working?

It is not. It blew through the input and shorted it to ground.
This happened despite having a 0.1uf cer cap to 5v and 0.1uf cer cap to gnd.

This is a 24v battery powered motor controller.
Controller has inputs.....potentiometer +5, wiper, and 0v (gnd).

I am using mcp4151 as a digital potentiometer to control the motor through the microcontroller.
The wiper output of digital potentiometer is also routed to an analog input pin of the microcontroller the for monitoring.

After mcp4151 failed randomly after some time I checked with an oscilloscope and found that when power is connected or sometimes while the motor is running, there may be a spontaneous burst of noise of + or- 60ish volts. The about 4 cycles ups and downs lasting less than a millisecond.

I traced the source to +, -, and wiper input of the controller.

If you need a schematic, no problem, will take some time

Is your motor a brushed motor? Are the field coils in series with the armature or parallel?
How is it possible for a noise from the motor to get through your controller electronics or is it? You need to show the schematic and the point where you detect to pulse and sometime tell if the pulse is at all repetitive.

The thing is that I am not looking to mess with the controller, motor, or battery. So the source is irrelevant I just want to locally protect my atmega328p inputs.

Atmega328p is running off the 24v battery with a 5v voltage regulator. Has 100uf elec. Cap, tvs diode, and 10uF ceramic cap. 5v ----gnd.

I will try to create a schematic and screenshot of the oscilloscope readings over the weekend.

My question still remains. The source of the spike is irrelevant since I do not want to add anyhting on the motor controller side.

Should input protection be Caps or tvs diode or both?
If caps, only one to input---- gnd? Or better if I do one to input--- gnd AND input--- 5v ?
Also which value 10nf? 0.1uf, 1uf, or 10uf.

And you don't want to solve the problem at the source of the signal, so what do you really want to do? If you have an extra pulse somewhere, sometime, then fix it with software. If the pulse is not normal, ignore it.

That 60v - 80v random event destroyed one mcp4151 and destroyed the input monitoring input pin on the atmega328p.
I am assuming it is back emf from the motor or some other inductive force that goes through the controller. Since the event has more voltage than the system's 24v. The controller most probably has it's own protection. The potenteiometer input of the controller is not protected because they are only expecting a analog protentiometer to be connected to it and not a digital pot and microcontroller.

The thing is that I am not looking to mess with the controller, motor, or battery. So the source is irrelevant I just want to locally protect my atmega328p inputs.

Atmega328p is running off the 24v battery with a 5v voltage regulator. Has 100uf elec. Cap, tvs diode, and 10uF ceramic cap. 5v ----gnd.

I will try to create a schematic and screenshot of the oscilloscope readings over the weekend.

The source of the spike is irrelevant since I do not want to add anyhting on the motor controller side.

My question is simple. How do I locally protect an input pin from random extremely quick transients of + or - 60v

Should input protection be Caps or tvs diode or both?
If caps, only one to input---- gnd? Or better if I do one to input--- gnd AND input--- 5v ?
Also which value 10nf? 0.1uf, 1uf, or 10uf.

Effective input protection relies on an understanding of the source and characteristics of the transient.

Fundamentally, you need to make a voltage divider that will reduce the transient to a safe level without significantly distorting your readings. So you need to make the impedance of the transient higher, and the impedance of the protected device lower.
So put a resistor or a choke (or both) in series, and a capacitor to ground at your input pin.
There is a discussion about input protection here

We will look forward to that.

Because in order to work, it must be part of a comprehensive, multi component strategy that takes into account the characteristics of both the signal source and the input. It's a good idea to precede the TVS with a low series resistance, to limit dV/dT to something it can handle. A poly fuse will do that, and also provide DC overload protection.

Also when you use a TVS, the physical layout of the circuit is crucial. The TVS must have a low impedance path to ground.

As mentioned, the power supply should be similarly protected.

The best way to protect an input pin is

  1. increase the source impedance (series resistor), so the fault current is manageable.
  2. channel that current to VCC and ground with Schottky clamping diodes.

The best way to reduce multiple triggering or code lockups from RF is with capacitors.

There might be no safe way to protect an output pin.
Note that all pins of the MCP4151 must be within the supply limits of the chip.
Leo..

General rules to follow:
-separate motor sources from controllers.If not, make sure line regulation specs match application.
-always remember sources are designed to source not sink. A transient back feeding into your source will most likely lift the entire rail.
-use single point grounding

Here is a goto configuration based on what your protecting. Important component is the zener clamp. On analog inputs, use input TVS clamps into high ohm divider with a cap on input. Keep in mind this cap adds a pole and will impact response.

Agreed, if TVS is on the VCC rail.
That protects against spikes on the supply chain, and it dumps excess current from input clamping diodes to ground. Important if the MCU is not able to use that current (asleep).
Many sites tell beginners to use zeners on input pins, which is wrong.
Leo..

I mentioned that, but it's not always possible, because it also limits bandwidth. Or at least, it has to be kept to a minimum value.