We would like to use an I2C bus with a cable length of 2m (unshielded twisted pair) on a motorcycle. The I2C bus connects an arduino to a sensor and is set to 10kHz (we have tried the common 100kHz and 400kHz as well). The arduino is powered using motorcycle power with an M3-ATX 6-24V DC/DC regulator in between: https://www.cartft.com/catalog/il/834 this is supposed to smooth voltage spikes from the alternator when the engine is running.
Unfortunately we cannot power the arduino by separate battery or uncouple it from the motorcycle electronically (might be an absolute last resort but should be avoided).
When the engine of the motorcycle is not running and the arduino is only powered via the motorcycle battery we observe the following signal and our I2C bus works:
However if we start the engine of the motorcycle we see the following signal and the I2C bus does not work.
here is a zoomed in view of the noise we are observing. We believe this is due to the alternator of the engine.
How do we smooth the signal of the I2C bus appropriately? We thought that the DC/DC converter would be sufficient and have previously tried simple buck converters but no luck. The power coming out of the DC/DC converter is unfortunately not very smooth.
Any help or suggestions would be greatly appreciated!
Thanks
EDIT: noise is also present in the power lines (3.3V at the arduino) although it appears to have a much lower amplitude than the noise seen on the I2C bus.
Here power without engine running:
Here power with engine running:
Best Answer
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.