Reduce noise on 2m I2C bus using motorcycle power

The I2C bus just isn't suited for that. Keep in mind that it was originally designed to work with everything located on one PCB, or at least in one chassis. It has been stretched (at one point, analog computer monitors used it for identification to the computer, so it worked over the video cable), but when it has the speeds were low, and it was using shielded cable.

If you are going to get it to work at all, you need to shield the cable, you need to power the sensor from your Arduino, and you need to not ground the sensor to the motorcycle chassis -- let it get its ground from the cable.

If you can't do that, or if you try it and it doesn't work, then you need to have the sensor co-located with a processor (another Arduino, perhaps) that sends out data using a different protocol (i.e. RS-422) or you need to find another sensor that uses a more robust protocol.


If the power supply is clean enough, or if you can clean it up, you could try a pair of PCA9615 differential I2C drivers to make your connection less susceptible to noise.

Datasheet here, break-out board with RJ-45 connector here.

I don't know if this will work for you; I have never tried these myself, but I thought I'd mention these ICs from the makers-of.

Tags:

Noise

Arduino

I2C