Arduino выдает 4,7 В вместо 3,3 В при использовании связи / датчика I2C?

Датчик TOF050C-VL6180X не реагировал, поэтому я проверил его с помощью мультиметра, и его контакты VIN и GND показали 4,7 В. Перепроверил Мега напряжение, ничего не подключено, показывает стабильные 3.6В. Подключил другой ToF, и он отлично работает при напряжении 3,6 В.

Итак, это доказывает, что датчик поврежден (возможно, сначала он питался от 5 В), но я не понимаю, как он потребляет больше, чем регулируемые 3,3 В? Если бы он был закорочен, он бы показал 0 В, а если бы что-то сгорело, он бы разомкнул цепь и показал бы ~ 3,3 В, верно? Так как же получить 4,7 В из ниоткуда? Есть идеи, что я здесь не понимаю?

Спасибо!

ОТРЕДАКТИРОВАНО: Дополнительная информация, я пытался максимально изолировать проблему

1) Неработающий датчик показывает 4,7В 1) Неработающий датчик показывает 4,7 В на мультиметре

2) Рабочий датчик показывает 3,4 В и выводит расстояние до последовательного порта. Рабочий датчик показывает 3,4 В на мультиметре

3) Вот это и становится странным. Я загрузил простой скетч мигания, и теперь рабочий датчик тоже показывает 4,7 В

Рабочий датчик показывает 4,7 В на мультиметре

4) Итак, я попытался отключить SDA/SCL, оставив питание подключенным, с работающим скетчем мигания, и снова 3,3 В!

Arduino выдает 3,3 В на датчик

**Попытался выполнить те же действия с другим устройством Mega, и всегда показывает 3,3 В независимо от конфигурации!

Теперь я очень растерялся. Итак, Arduino частично поврежден, а связь I2C ведет себя странно? Безопасно ли использовать проект, если он технически работает?

, 👍-1

Обсуждение

почти невозможно угадать правильно ... пожалуйста, предоставьте принципиальную схему соединений ... также предоставьте описание того, как вы подключили вольтметр, @jsotola

@jsotola Мой проект представляет собой беспорядок из проводов, и я надеялся, что причин для такой несовместимости напряжения очень много, но ты прав, ты не ясновидящий. Поэтому я попытался изолировать и детализировать проблему в редактировании., @Maksiss


1 ответ


Лучший ответ:

1

Провод Arduino Wire позволяет внутренний подтягивающий резистор на SDA и SDL. Внутренние подтяжки указаны от 20k до 50k. Таким образом, вы подаете 5 В (или около того) на датчик, хотя и через соединение с высоким сопротивлением. Значит, напряжение не появляется из ниоткуда.

Вполне вероятно, что в микросхеме датчика или на плате датчика имеются защитные/зажимные диоды, которые передают эти сигналы через диод к разъему 3,3 В микросхемы.

Таким образом, ваш SCL/SDA может рассматриваться как очень слабый (примерно через 35 кОм), пытающийся подать питание на ваш стабилизатор 3,3 В, который, вероятно, просто блокирует ток. Если датчик/плата не использует ток, о котором можно говорить, либо потому, что он не работает нормально, либо потому, что он разряжен, вы должны измерить 5 В минус падение напряжения на диоде или примерно 4,7 В, которые вы видите.

Если вы предполагаете, что оба внутренних резистора имеют номинал 20 K как «наихудшее» значение случай сценария для расчета, ток, необходимый для падения с 5 В до 3,3 В, составляет 85 мкА. Таким образом, при нагрузке 170 мкА на плате контактное соединение 3,3 В вернется к уровню 3,3 В. Около 170 мкА будет проходить через резистор 20 кОм с напряжением 3,3 В на нем. Поэтому, если вы хотите поэкспериментировать, возьмите любой резистор от 470 Ом до чуть менее 20 кОм параллельно с вашим измерением 3,3 В / GND и посмотрите, не упадет ли ваше измерение 4,7 В до нормального выхода 3,3 В.

,

Не могу сказать, что я на 100% понимаю объяснение, но проверил его с резистором 560 и 18k, и оно действительно возвращается к 3,3 В, спасибо! Таким образом, мертвый датчик вытягивает 5 В из подтягивающего резистора I2C, потому что на датчике нет нагрузки ... но затем, добавляя нагрузку к 3,3 В, он каким-то образом игнорирует 5 В, поступающие от I2C? В конце концов, все в порядке, и плата просто не самого высокого качества, с упомянутым наихудшим сценарием подтяжки ~ 20K? Не о чем беспокоиться, и я могу продолжать работать с платой?, @Maksiss

Кроме того, поскольку это не совсем конкретная проблема с датчиком, есть ли лучшее название, которое я мог бы использовать? Например, «Arduino выдает 4,7 В вместо 3,3 В при использовании связи / датчика I2C?». Не могу найти никаких сообщений о такой проблеме, поэтому, если кто-то ищет, он поймет, что все, что подключено к 3,3 В, просто мертво., @Maksiss

Интересный. Ну, может быть, я отменю эту часть ответа. Принципиальная часть этого состоит в том, что есть путь к 5В. Он не генерируется спонтанно. Внутри ATMega2560 фактически есть пара резисторов номиналом от 20 до 50 кОм, которые можно включить, чтобы подключить SCL и SDA к VCC (5 В). Обычно они включаются при использовании библиотеки Wire. Нагрузка важна здесь, потому что она осуществляется через сопротивление. Вы также можете получить 5 В, активно управляя ими ВЫСОКИМ, но я не видел вашего кода. Я посмотрю вопрос для деталей., @timemage

О, было ли что-то неожиданное в моем ответе? Вот как выглядело [тестирование резистора](https://i.imgur.com/qfc1rF3.jpg), если вам интересно - макетная плата с питанием от контакта 3,3 В, с резистором и датчиком параллельно. Код является просто базовым примером из библиотеки «Adafruit_VL6180X», и в этом примере нет ничего, что могло бы управлять контактами ВЫСОКИМ, но, возможно, глубже в библиотеке. И поскольку вы ничего не упоминаете о странном поведении платы Arduino, я буду считать, что она работает в допустимых пределах, как зеленый свет., @Maksiss

Я не собираюсь объяснять весь процесс мышления в комментариях. Но, вкратце, мой опыт использования и помощи с этим типом платы и прикрепления такого рода вещей привел меня к предварительному предположению, что плата обычно исправна, если только пользователь не сообщил об использовании напряжения выше 5 В, дыма, тепла, запаха или света или если это было довольно определенно доказано, что это не нормально. Если мне станет скучно, я могу поиграть с таким же экспериментом с резисторами и сопоставимым Arduino или иным образом удалить часть ответа, которую вы более или менее показали как бесполезную., @timemage