Запрос студенческого проекта(Создание самобалансирующегося робота)

В настоящее время я строю самобалансирующийся робот с использованием драйвера двигателей L298N и MPU6050 с использованием микроконтроллера arduino.

Мне удалось контролировать движения своих моторов без каких-либо проблем. После того, как я извлек данные из моего MPU6050, что было легко с помощью библиотеки MPU6050, я столкнулся с проблемой: при связывании движения двигателей в соответствии с показаниями MPU6050 датчик замерзает и перестает показывать свои данные на последовательном мониторе после нескольких показаний, двигатели продолжают двигаться. У меня даже есть конденсаторы, впаянные в мои двигатели, чтобы фильтровать шум. Я определенно уверен, что мой датчик работает идеально, потому что он был протестирован перед внедрением в схему и код драйверов двигателей.

Если кто-нибудь может дать мне какие-либо подсказки, почему датчик MPU перестает давать показания, пожалуйста.

- Спасибо.

, 👍1

Обсуждение

Вы когда-нибудь решали эту проблему? Я сейчас борюсь с той же проблемой. Я пробовал подтягивающие резисторы, но они ничего не исправляли., @Glenn


2 ответа


1

MPU6050-это устройство I2C. По умолчанию Arduino использует внутренние съемные резисторы в выводах ввода-вывода для съемников на шине I2C.

Это плохо - это делает шину I2C очень восприимчивой к шуму, а двигатели-очень шумные устройства.

Вам нужно убедиться, что на шине I2C есть соответствующие импульсные резисторы (3,3 Ком-это хорошо), и держите провода I2C как можно короче.

Кроме того, важно, чтобы источники питания были как можно более раздельными. Не поддавайтесь искушению использовать питание 5 В от Arduino для питания своих двигателей - вы должны использовать внешний источник питания, иначе двигатели вызовут сбои в работе микросхем и связи микроконтроллера.

,

Я использую батарею 12 В для питания своих двигателей, и заземление батареи соединено с заземлением драйвера моего двигателя, а затем установлено на arduino. Итак, вы имеете в виду, что я должен использовать резисторы 3,3 К и подключить их к контактам SDA и SCL на MPU6050??чтобы предотвратить любые колебания, влияющие на датчик, верно ? Спасибо, @Salah


0

Этот ответ отвечает на дополнительные вопросы в комментарии Салаха:

Я использую батарею 12 В для питания своих двигателей, и заземление батареи соединено с заземлением моего драйвера двигателя, а затем установлено на arduino. Итак, вы имеете в виду, что я должен использовать резисторы 3,3 К и подключить их к выводам SDA и SCL на MPU6050??чтобы предотвратить любые колебания, влияющие на датчик, не так ли ?

MPU-6050 будет нормально работать с Vdd = 3,3 В. Более конкретно, страница 14 таблицы данных 1788002.pdf для продуктов MPU-6000/MPU-6050 показывает

VDD = 2,375 В-3,46 В, VLOGIC (только MPU-6050) = 1,8 В±5% или VDD, TA = 25°C

Схема подключения на странице 39 показывает, что SDA и SCL подтягиваются к VLOGIC (который либо 1,8 В, либо VDD, скажем 3,3 В).

Одним из подходящих вариантов было бы работать с 8 МГц Mega и 6050 при 3,3 В и тянуть SDA и SCL до 3,3 В через резисторы 3,3 КОМ.

Другой выбор состоял бы в том, чтобы управлять 16 МГц Мега при 5 В, управлять 6050 при 3,3 В, тянуть SDA и SCL до 3,3 В через резисторы 3,3 КОМ и использовать переводы уровня 3,3 В/5 В на SDA и SCL в Мега.

Встроенные подтяжки для выводов ввода-вывода на Mega2560 и подобных устройствах рассчитаны на 20 КОМ мин, 50 КОМ макс., поэтому обеспечивают меньший восстанавливающий ток, когда устройство отпускает вывод, чем резистор 3,3 КОМ, и, таким образом, могут быть менее шумостойкими или работать менее быстро.

Важными вопросами для вашей электропроводки являются следующие:

1, Изолируйте моторный привод и логические приводы. Они могут использовать одну и ту же точку заземления, но ток двигателя не должен проходить через заземляющий провод или провода, которые подключаются к Arduino и MPU-6050. И используйте развязывающие конденсаторы по мере необходимости.

2, Включите MPU-6050 с напряжением 3,3 В или менее; подтяните SDA и SCL до этого уровня через резисторы 3,3 КОМ; используйте преобразователи уровня, если Mega работает при напряжении, отличном от MPU-6050.

Edit: О заземлении – Для подробного обсуждения см. analog.com статья. Общие сведения см. в разделе Звездное Заземление по адресу lh-electric.net, или в википедии, Шум земли, Отскокземли и Земля (электричество) Электроника. Под “ток двигателя не должен проходить через заземляющий провод или провода, которые соединяются с Arduino и MPU-6050” я подразумеваю использование отдельных проводов для проведения тока заземления. Как правило, это будет иметь значение только в том случае, если ток вашего двигателя высокий или шумный. Идея состоит в том, чтобы иметь тяжелый провод от заземляющего столба батареи к двигателям и отдельный провод от заземляющего столба батареи к Arduino и MPU-6050. Напряжение на проводе изменяется по мере изменения тока в проводе. Используя отдельные провода заземления, Arduino и MPU-6050 меньше подвержены влиянию изменений напряжения заземления, вызванных током двигателя.

,

Спасибо за ваше разъяснение,которое я обязательно попробую сделать на этой неделе, просто немного беспокоясь о том, что "эй, вы можете использовать одну и ту же точку заземления, но ток двигателя не должен проходить через провод заземления или провода, которые соединяются с Arduino и MPU-6050. И используйте развязывающие конденсаторы по мере необходимости ... "Вы имеете в виду, что мое заземление от драйвера l298N не должно быть подключено к arduino ??.Если это так, то как же тогда будет заземлен водитель двигателя ?Потому что мой вход 12 В подключен к драйверу двигателя от батареи а земля подключена к arduino, @Salah

@Salah, см. правка, @James Waldby - jwpat7

Привет,Спасибо за всю поддержку ,ребята, К сожалению, я все еще получаю те же результаты, в которых датчик все еще замерзает, а двигатели продолжают работать нормально.Я добавил подтягивающие резисторы 3,3 к на выводах SDA и SCL MPU6050 и все те же результаты .Интересно, есть ли у кого-нибудь другие предложения или кто-нибудь знает какой-нибудь идеальный датчик гироскопа, который я могу использовать, не сталкиваясь снова с такими трудностями .Помощь и поддержка будут очень ценны ребята спасибо, @Salah