Noise on I2C bus

Discussion in 'The Projects Forum' started by skybox, Aug 18, 2010.

  1. skybox

    Thread Starter Active Member

    Mar 2, 2009
    Hi guys,

    Designing a mini robot with the following motor drivers:

    I am getting noise on my I2C bus whenever the motor drivers are activated. This is causing various errors on devices I am communication with I2C

    Are there any tips on how to cancel out this noise? I am using a 10k pullup with 3.3V from the uP (PIC 33F series) for the I2C SDA, SCL lines.

    I know this is not really detailed post, but I am looking for design tips more than anything else.

    Any tips would be appreciated. Thanks!
  2. blueroomelectronics

    AAC Fanatic!

    Jul 22, 2007
    Post your schematic. Put 0.1uf caps on the motor terminals.
  3. sage.radachowsky


    May 11, 2010
    Go a bit lower in resistance if you can. (5k?)

    Slow the I2C speed as slow as you can without affecting performance.

    Use a little RC low-pass so long as it won't affect your bits.

    Do you have a picture of the noise, or an idea of the time-scale? What's your preferred bit rate?
  4. Papabravo


    Feb 24, 2006
    Separate the digital logic ground and the motor ground on your PC board. Connect the two grounds at "one point only" at the power supply. Make sure you have sufficient bulk storage and HF bypass caps on both supplies. Is this a prototype or have you already cut PC boards?

    "please Vasily - one ping only!"
    Capt. Ramius -- The Hunt for Red October
  5. Skeebopstop

    Active Member

    Jan 9, 2009
    Post a schematic and might be able to help more.

    1. I2C is not a robust communication protocol for noisy environments. Use strong pull ups, my guess is you might get away with 3k3. Check the drive strength of the driver IC to ensure it can sink and source enough current.
    2. Star point grounding.
    3. Strong segreggation of motor power and logic power (i.e. differential cap followed by common mode choke followed by two common mode caps - aka to earth).
    4. Hit your I2C with some checksums and retry loops
    5. Ensure your power rails driving the IC are on linear regulators (less ripple and much higher bandwidths).
    6. Beware of miller capacitance making the driver outputs to the motor very very dirty (see literature) and coupling into your micro where I assume your I2C resides.
    7. confirm a reset line isn't being hit with some noise

    just pick out any of these suggestions and give em a whirl and see if it quiets up. Schematics and layout for potentially more suggestions.
  6. kubeek

    AAC Fanatic!

    Sep 20, 2005
    Don´t use I2C, it is not good for noisy environments. CAN should get you better reliability as it is an automotive standard.