Как включать и выключать датчики I2C с помощью Arduino Mega 2560?

Я хочу включать и выключать датчики I2C с помощью Arduino Mega 2560.


Я использую один NPN-транзистор макс. 0,4 А, который управляет линией Vcc к датчику.

Когда я подключаю свой Arduino к ноутбуку и скетч начинает работать, все в порядке. Датчик включен и работает.

Но когда я устанавливаю базу транзисторов на низкий уровень и отключаю Vcc, датчик ведет себя странно. Светодиод на панели отключения датчика светит очень слабо. Таким образом, плата датчика/отключения получает электричество откуда-то еще; вероятно, от соединений I2C.

Arduino Sensor Power Control Circuit


Те же результаты с этим небольшим экспериментом:

  1. Плата отключения, напрямую подключенная к Arduino (без транзистора)
  2. Контактный провод Vcc-3,3 В отсоединен от разъема Arduino

Как я могу правильно включать и выключать датчик I2C с помощью Arduino?

Нужно ли мне использовать дополнительные транзисторы для каждой линии I2C? Доступны ли лучшие схемотехнические решения или, может быть, программное решение?

Как я должен проектировать свою схему и программное обеспечение, если к моему Arduino подключено несколько датчиков I2C, и я хочу использовать их независимо друг от друга?


Используемое оборудование: Arduino Mega, Плата Для Отключения Датчиков


Выдержка из программного обеспечения для управления питанием:

void setup() {

    pinMode(7, OUTPUT);
    digitalWrite(7, HIGH);   

    ...

    delay(10000);                       
    digitalWrite(7, LOW);    

    ...
}

, 👍0

Обсуждение

Почему бы не использовать режим низкой мощности MPU6050? Индикатор питания и регуляторы мощности на плате Arduino потребляют больше тока., @Mikael Patel

Извлеките светодиод и переведите его в режим низкого энергопотребления, как было предложено., @KIIV

Пытаясь понять ваши реальные требования, я полагаю, что вы хотите добиться не **отключения питания датчика**, а **совместного использования одной и той же линии I2C между несколькими**: я прав? Если это так, пожалуйста, обновите свой вопрос соответствующим образом, потому что в противном случае вы будете получать одни и те же ответы снова и снова: *выключите датчик, не выключайте его*, @Roberto Lo Giacco

Вопрос в следующем: "Как включать и выключать датчики I2C с помощью Arduino Mega 2560?" **Как отключить их электричество, как полностью отключить и включить их, управляемые Arduino.** Как полностью включать и выключать несколько различных датчиков I2C, независимых друг от друга, с помощью Arduino., @William Roy


2 ответа


2

На выводах SDA и SCL установлены подтягивающие резисторы. Таким образом, их напряжение составляет 5 В. Отключив Vcc на датчике, вы запускаете датчик из спецификации, так как напряжение на выводах SDA и SCL превышает Vcc.

Большинство микросхем имеют зажимные диоды. Таким образом, чип зажимает 5 В на выводах I2C к Vcc. Таким образом, вы питаете чип через подтягивающие резисторы на выводах I2C.

Это объясняет, почему индикатор питания горит, но не так ярко.

,

-1

если ваш датчик потребляет не более 20 мА, вы можете подключить его к контакту ЗАЗЕМЛЕНИЯ с помощью контакта arduino, используя PIN-режим(датчик, ВЫХОД), аналоговую запись(датчик, 255) : на этом этапе питание к датчику не поступает, так как все его контакты высоки. Когда вы хотите снова включить питание датчика, вам необходимо снизить значение "255" до 0 , если ваш датчик использует 5 В , или примерно до 40, если ваш датчик использует 3,3 В. Я уже некоторое время использую эту систему без каких-либо проблем. Возможно, вам потребуется небольшая delay(50), чтобы дать время датчику включиться.

,