Обнаружение передачи I2C с помощью светодиода

Я собираюсь сделать проект с большим количеством Arduino, подключенных через I2C, где каждый из них может стать мастером на мгновение, чтобы объявить о событии. Поэтому я хотел бы посмотреть, насколько сильно используется шина. Поскольку будет центральная точка, я подумал о том, чтобы разместить там светодиод, от +5 В до линии синхронизации, чтобы он светился, когда происходит передача, и был черным, когда линия свободна. И таким образом я мог бы угадать уровень использования шины. (Тактовая частота фактически является ШИМ, часто сходящимся на ноль во время передачи, и при этом является простым +5 В, когда передача не активна).

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

Вопрос в следующем: знает ли кто-нибудь простую настройку, при которой светодиод будет управляться небольшим током до нуля (то есть инвертирующий усилитель будет максимально простым с достаточно высоким входным сопротивлением, чтобы не мешать обмену данными по протоколу I2C)?

Спасибо за все подсказки :)

, 👍0

Обсуждение

Просто возьмите один из современных мощных синих светодиодов. Они загорятся при токе всего 0,1 мА, возможно, даже ниже. Рассчитайте подходящий резистор с высоким значением, чтобы получить этот очень низкий ток., @Gerben

Спасибо, я попробовал, и он заработал даже с классическим красным светодиодом (так как у меня сейчас нет синего) и резистором 2К (примерно 1 мА), но его было плохо видно, особенно при коротких передачах. Тем не менее, он надежно работал с проводами длиной 30 см (и работал даже с резистором всего 330 Ом, что было легко заметить - но я бы не хотел проверять его в условиях шума на роботе), поэтому я в конце концов установил его с биполярным PNP с эмиттером на Vcc, базой через 2К на тактовый генератор и коллектором через 330 Ом + красный светодиод на GND. Светит тоже хорошо, потребляет всего около 2 мА от I2C. (Если хотите, заставьте его ответить, и я приму его), @gilhad


1 ответ


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

1

Это можно сделать с помощью двух N-канальных МОП-транзисторов или одного P-канального МОП-транзистора (в зависимости от того, что у вас есть локально / что вы можете достать / что находится в коробке с битами):

схема

В левой схеме первый MOSFET действует как затвор НЕ, а второй — простой переключатель низкого уровня. Вместе эта пара образует переключатель низкого уровня с активным низким уровнем.

Правая схема, которая несколько проще, использует одиночный P-канальный MOSFET в качестве переключателя верхнего уровня. Обычно он управляется N-канальным MOSFET для инвертирования логики, поскольку он по своей природе активен-низкий. Вам это не нужно, поэтому вы можете просто подключиться напрямую к затвору.

Обратите внимание, что все МОП-транзисторы являются транзисторами «логического уровня» с пороговым напряжением ниже 3 В (или -3 В в случае P-канала).

,

Спасибо и вам. У меня не было MOSFET под рукой, поэтому я использовал биполярный PNP и резистор 2К к его базе (т.к. 4К не открывал его полностью) во второй схеме (инвертированная логика). Работает как по волшебству :), @gilhad