Почему Arduino I2C так чувствителен к RFI/EMI?

У меня есть проект робота с двумя двигателями, в котором MP6050 используется для измерения относительного курса (рысканья), и у меня возникают проблемы с шиной I2C, когда двигатели работают. Я сделал большую часть вещей, предложенных здесь и в других местах; 2,2K подтягивания по сравнению со значением по умолчанию, максимально короткие (3 см) провода I2C, MPU6050 как можно дальше от драйверов двигателя, уменьшенная тактовая частота I2C до 100 кГц и т. д. и т. д. (дополнительные сведения см. в моем запись в блоге на эту тему).

Итак, мой вопрос: почему шина I2C так чувствительна к радиопомехам и электромагнитным помехам, особенно при подтягивании 2,2 К к +5 В? Глядя на уровни с помощью моего O'scope, можно увидеть колебание 0-4,6 В, поэтому трудно поверить, что токи, вызванные электромагнитными помехами, могут быть достаточно высокими в диапазоне 2,2 К, чтобы понизить «высокий» уровень до уровня «0». , так что что-то еще должно происходить. Может быть, электромагнитные помехи попадают в схему выходного драйвера MPU6050, вызывая его отключение? Если это так, возможно, помогут емкостные обходы на линиях I2C. Есть идеи? Являются ли другие модули IMU менее восприимчивыми к электромагнитным помехам драйвера двигателя?

ТИА

Фрэнк

, 👍0

Обсуждение

Это оригинальная ардуино? Рассматривали ли вы ESP8266/32 в качестве альтернативы? Они имеют экранированные чипы., @user2497

Я вообще не рассматривал это. Я заказал макетную плату от Adafruit и попробую ;-), @user3765883


1 ответ


1

Поместите заземляющую пластину между линиями передачи данных и силовыми и сигнальными линиями, используемыми для привода двигателя. Заземляющая пластина GPS в порядке, см. ссылку ниже. Вы можете просто отрезать кусок металлического листа по размеру или даже использовать сложенную металлическую фольгу, соединенную с землей. Моторы просто шумные, а I2C чувствителен. Даже обновление ЖК-дисплея I2C может вызвать шум. Мне нравится использовать экранированный провод (например, для наушников или кабеля HDMI), если мои линии передачи данных имеют длину более дюйма. Вы можете экранировать линии металлической фольгой и термоусадкой, но это беспорядок.

Используйте оптоизолятор для включения двигателей, если пластины заземления недостаточно. Если они работают только в одном направлении, добавьте защитный диод и конденсатор на 330 пФ, чтобы уменьшить шум. Но они, вероятно, больше всего шумят при работе. Удачи в этом.

https://www.imnasa.com/en/ground-plate -200x64x12mm-for-gps-etc.html

,