Reducing EMI interference

Hi,

I am planning to create a data logging project with an Arduino, this project will be running on a racing sidecar, that has a 600cc motorcycle engine as the power system. It will be taking data from various analogue sensors and writing to an SD card, I'm looking to write a data point every 100ms.

I have some experience of using the arduino on a motorcycle engine, I built an ignition cut out circuit for use with a quickshifter, during the development of this circuit I had lots of problems with the EMI caused by the running engine, I cured this problem by putting a capacitor very close to the GPIO pin that the sensor was connected to.

I need to eliminate this interference for my new data logging project, otherwise the EMI will change the voltage on the analogue pins and I will get false readings. I am not sure that a capacitor next to each GPIO analogue pin is going to fit, and I'm not sure if it will affect the readings, capacitors take time to charge and discharge so the new reading could be delayed slightly.

Whats the recommended way to deal with this? A metal enclosure? Capacitors as I mentioned? Something else?

Thanks,

Try ferrite beads on the wires rather than capacitors.

Paul

I think the best approach (most robust for EMC) is to use a metal case and put capacitors as near the input wire as possible.

More concisely, the construction would be as shown in the attachment (sorry for the crude drawing).

Every wire must go through a small hole in the copper sheet with a capacitor connected directly from the wire to the ground plane. The copper plane would be connected to the metal case in multiple places.

If you want to add a ferrite bead, you would add it on the "noisy" side of this EMC shield plane.

The goal is to stop the high frequencies at one location (i.e. the ground plane). The use of SMD parts is essential as the lead length of a leaded capacitor can reduce its effectiveness as high frequency.

Ultimately is can be made very small (thin) and butted up against the side of a metal case would take minimal room.

This approach has been proven effective in precision analog circuitry designed for Military aircraft.

Good luck

Note: Every wire includes the power, both power and ground. You might not want to connect the power ground to the case. If it turns out you do, just solder it to the copper ground plane.

EMC.jpg

Eliminate wiring loops. Mentally follow the current path from the I/O pin to the sensor and back again to the ground pin on the CPU. How big a loop do you have? Reduce the loop area to the width of the wire's insulation.

Consider how much you can filter the signal on each input. Sometimes you need to compromise. When the interference causes more problems than the filtering.

What you also should consider is to make the current loops of the ignition system small as well. Reducing the radiation will do a lot to make things more manageable.

It is hard to give advice without knowing exactly what you have to work with. It isn't simple.

Ignition interference is mainly capacitive, not inductive, reducing the loop size isn't very useful compared to getting shielded plug leads.

This is what I am working with;

With the engine running, the voltage is around 14.8V. This is fed past a TVS diode and then into a LM2596 board that provides a steady 5V to the 5V pin on an arduino nano.

I will then attach an SD card breakout board, I will also attach a RTC board for accurate timestamps. Any recommendations about which modules to buy would be appreciated.

In my previous project I soldered the nano to a piece of stripboard, with all the components also soldered to it.

I am looking to tap into the sensors that are already present on the engine, I would like to log things like RPM, Coolant temperature, Current Gear. I believe these are running on 5V already, provided by the ECM. Unfortunately I do not have a scope but it is something I am looking at getting.

I would add extra sensors, these would be powered by the LM2596, these would include oil pressure (I believe the one connected to the engine is just a digital one), oil temperature, GPS position, accelerometer readings. If I need more analogue pins I can add another arduino and communicate over L2c, or add an external ADC multiplexer.

I was thinking of using twisted pair shielded ethernet cable to wire the sensors to the arduino.

I have no experience of SMD components, especially when using stripboard. Is it possible to have a ground plane?

Hi,
Helped on a project years ago for a 'dirt bike' ignition system... nasty environment is a running engine,

This really old couple of pages from my website might help...

E.S.D. Protection Basics

...especially the diagrams on the second page. With high voltages and nasty spikes flying all over, you have to try and think of all the paths current can take.

Yours,
TonyWilk

I am going to order some surface mount capacitors, I don't see why I can not solder them to the underside of some stripboard right next to the Analogue input pin?

I will also put the finished project into a metal enclosure.

I have 7 analogue inputs available on the nano, so should be able to get something working at least. Maybe this will need to be reduced to 5 pins though, as the SCL and SDA pins are integrated into pins A4 and A5 and I will need these for adding a real time clock, or extra arduino's etc.

rickerman:
I am going to order some surface mount capacitors, I don't see why I can not solder them to the underside of some stripboard right next to the Analogue input pin?

You want to keep any external 'noise' (EMI) from getting near your processor, if it's going in a metal box, you don't want it inside the box.

Note that any capacitor used to 'soak up' spikes simply couples that spike to ground, the 'spike current' travels thru that ground... which you don't want to be the Arduino's ground.

Consider this scratty Diagram:
InputProtection.png

The input protection components are as close to the input to the enclosure as possible, if you are using connectors it is sometimes necessary to mount components on the connector itself. Any ground current loops due to incoming spikes etc. are kept away from the actual processor.

Don't connect anything to ground from anywhere else on the metal enclosure, all ground connections should be to that big fat ground strip at one end - otherwise you end up creating a possible internal ground loop for current spikes.

(Used to do design of stuff that needed to pass pretty strict EMI, one of the tests was to take the running kit and apply 18Kv sparks everywhere on the enclosure and to all the connections... now that was fun!).

Yours,
TonyWilk

InputProtection.png

Unlike a CAN bus, whatever the capacitors/resistors added on an I2C bus, you will always have to deal with EMI in a motorcycle (or car) engine environment.

A huge advantage of CAN is that bus glitches are automatically handled by the hardware, corrupted messages are automatically re-transmitted. With SPI / I2C / UART, extra error detection and handling is required.

I don't see why I can not solder them to the underside of some stripboard right next to the Analogue input pin?

I'm not sure what you mean by this but it sounds like you plan to put the filtering near the Arduino input. As previously suggested by myself and TonyWilk it is imperative you keep the high frequency noise out of the box.

Consider the EMI is like water and the barrier capacitors are seals. This only works in the water is kept out of the container. Once it is inside, it cannot be easily protected against.

Ok, so it looks like I need to filter the signal wires as they enter the box, this was mentioned above.

I will need to come up with a robust way of connecting these wires to the box as they enter.

Also, I presumed that the case would be connected to ground also?

rickerman:
Ok, so it looks like I need to filter the signal wires as they enter the box, this was mentioned above.

I will need to come up with a robust way of connecting these wires to the box as they enter.

Yes, either like in JohnRob's picture by soldering surface mount capacitors to a wire thru the box and then securing that with epoxy or something. Or you can buy "Feedthru filters", some you solder into a hole in the box and others you bolt on - same thing, just more expensive. e.g. EMI Feedthrough Filters

Also, I presumed that the case would be connected to ground also?

Yes, preferably at the 'front edge' of the case where all your filtering is positioned.

Yours,
TonyWilk

P.S. Perhaps I should mention that all this EMI protection stuff isn't 'magic', voltages and currents still obey the same laws as 'more normal' signals - it's just that they may be a little surprising at first.
For example, a tiny 10,000V spike running into a small capacitor through, say, a 1k ohm series resistor will, for a tiny period of time, see an uncharged capacitor (essentially a 'short circuit') and a 1k load, V=IR is still obeyed so you will get a current of 10,000/1000 = 10 amps. If the wires or thin PCB traces that this current runs thru has a resistance of, say, 0.2ohm then there will be, for a very short time, a voltage of 2V across that track. So, what looks to you like a nice Ground Track might suddenly be 2V at one end and 0v at the other end - which is what interferes with the normal operation of your circuit.
All this might happen in a nanosecond, but it still happens.

Ok, what value of capacitors would you recommend?

Yes, preferably at the 'front edge' of the case where all your filtering is positioned.

As the case is metal, won't it all become GND? Regardless of where the connection is?