Как включать и выключать датчики I2C с помощью Arduino Mega 2560?
Я хочу включать и выключать датчики I2C с помощью Arduino Mega 2560.
Я использую один NPN-транзистор макс. 0,4 А, который управляет линией Vcc к датчику.
Когда я подключаю свой Arduino к ноутбуку и скетч начинает работать, все в порядке. Датчик включен и работает.
Но когда я устанавливаю базу транзисторов на низкий уровень и отключаю Vcc, датчик ведет себя странно. Светодиод на панели отключения датчика светит очень слабо. Таким образом, плата датчика/отключения получает электричество откуда-то еще; вероятно, от соединений I2C.
Те же результаты с этим небольшим экспериментом:
- Плата отключения, напрямую подключенная к Arduino (без транзистора)
- Контактный провод Vcc-3,3 В отсоединен от разъема Arduino
Как я могу правильно включать и выключать датчик I2C с помощью Arduino?
Нужно ли мне использовать дополнительные транзисторы для каждой линии I2C? Доступны ли лучшие схемотехнические решения или, может быть, программное решение?
Как я должен проектировать свою схему и программное обеспечение, если к моему Arduino подключено несколько датчиков I2C, и я хочу использовать их независимо друг от друга?
Используемое оборудование: Arduino Mega, Плата Для Отключения Датчиков
Выдержка из программного обеспечения для управления питанием:
void setup() {
pinMode(7, OUTPUT);
digitalWrite(7, HIGH);
...
delay(10000);
digitalWrite(7, LOW);
...
}
@William Roy, 👍0
Обсуждение2 ответа
На выводах SDA и SCL установлены подтягивающие резисторы. Таким образом, их напряжение составляет 5 В. Отключив Vcc на датчике, вы запускаете датчик из спецификации, так как напряжение на выводах SDA и SCL превышает Vcc.
Большинство микросхем имеют зажимные диоды. Таким образом, чип зажимает 5 В на выводах I2C к Vcc. Таким образом, вы питаете чип через подтягивающие резисторы на выводах I2C.
Это объясняет, почему индикатор питания горит, но не так ярко.
если ваш датчик потребляет не более 20 мА, вы можете подключить его к контакту ЗАЗЕМЛЕНИЯ с помощью контакта arduino, используя PIN-режим(датчик, ВЫХОД), аналоговую запись(датчик, 255) : на этом этапе питание к датчику не поступает, так как все его контакты высоки. Когда вы хотите снова включить питание датчика, вам необходимо снизить значение "255" до 0 , если ваш датчик использует 5 В , или примерно до 40, если ваш датчик использует 3,3 В. Я уже некоторое время использую эту систему без каких-либо проблем. Возможно, вам потребуется небольшая delay(50), чтобы дать время датчику включиться.
- Несколько датчиков I2C с одинаковым адресом
- Проблемы с подключением I2C на ESP8266 — 12F, какие контакты использовать?
- Как перевести Arduino Nano в спящий режим с низким энергопотреблением (<0,05 мА)
- Лазерный датчик ToF (VL53L0X) не работает
- MAX30100 не работает
- Как использовать 3-ножный фототранзистор?
- Считывание значений с емкостного сенсорного датчика TTP229 на arduino
- Использует ли подтягивающий резистор меньше энергии батареи, чем подтягивающий резистор?
Почему бы не использовать режим низкой мощности MPU6050? Индикатор питания и регуляторы мощности на плате Arduino потребляют больше тока., @Mikael Patel
Извлеките светодиод и переведите его в режим низкого энергопотребления, как было предложено., @KIIV
Пытаясь понять ваши реальные требования, я полагаю, что вы хотите добиться не **отключения питания датчика**, а **совместного использования одной и той же линии I2C между несколькими**: я прав? Если это так, пожалуйста, обновите свой вопрос соответствующим образом, потому что в противном случае вы будете получать одни и те же ответы снова и снова: *выключите датчик, не выключайте его*, @Roberto Lo Giacco
Вопрос в следующем: "Как включать и выключать датчики I2C с помощью Arduino Mega 2560?" **Как отключить их электричество, как полностью отключить и включить их, управляемые Arduino.** Как полностью включать и выключать несколько различных датчиков I2C, независимых друг от друга, с помощью Arduino., @William Roy