Обнаружение передачи I2C с помощью светодиода
Я собираюсь сделать проект с большим количеством Arduino, подключенных через I2C, где каждый из них может стать мастером на мгновение, чтобы объявить о событии. Поэтому я хотел бы посмотреть, насколько сильно используется шина. Поскольку будет центральная точка, я подумал о том, чтобы разместить там светодиод, от +5 В до линии синхронизации, чтобы он светился, когда происходит передача, и был черным, когда линия свободна. И таким образом я мог бы угадать уровень использования шины. (Тактовая частота фактически является ШИМ, часто сходящимся на ноль во время передачи, и при этом является простым +5 В, когда передача не активна).
Конечно, прямое подключение — не самая лучшая идея, так как это нарушит работу подтягивающих резисторов и испортит протокол (так как при каждом отключении тактовой частоты будет расходоваться много энергии), поэтому должен быть какой-то разделитель/усилитель.
Вопрос в следующем: знает ли кто-нибудь простую настройку, при которой светодиод будет управляться небольшим током до нуля (то есть инвертирующий усилитель будет максимально простым с достаточно высоким входным сопротивлением, чтобы не мешать обмену данными по протоколу I2C)?
Спасибо за все подсказки :)
@gilhad, 👍0
Обсуждение1 ответ
Лучший ответ:
Это можно сделать с помощью двух N-канальных МОП-транзисторов или одного P-канального МОП-транзистора (в зависимости от того, что у вас есть локально / что вы можете достать / что находится в коробке с битами):
В левой схеме первый MOSFET действует как затвор НЕ, а второй — простой переключатель низкого уровня. Вместе эта пара образует переключатель низкого уровня с активным низким уровнем.
Правая схема, которая несколько проще, использует одиночный P-канальный MOSFET в качестве переключателя верхнего уровня. Обычно он управляется N-канальным MOSFET для инвертирования логики, поскольку он по своей природе активен-низкий. Вам это не нужно, поэтому вы можете просто подключиться напрямую к затвору.
Обратите внимание, что все МОП-транзисторы являются транзисторами «логического уровня» с пороговым напряжением ниже 3 В (или -3 В в случае P-канала).
Спасибо и вам. У меня не было MOSFET под рукой, поэтому я использовал биполярный PNP и резистор 2К к его базе (т.к. 4К не открывал его полностью) во второй схеме (инвертированная логика). Работает как по волшебству :), @gilhad
- 74HC595 регистр сдвига не работает
- Проблема с настройкой i2c OLED wemos D1 mini shiled (64*24)
- Рекомендация по модулю или подходу к проектору?
- HTU21 на GY-21 breakout board I2C проблема
- MOSFET диммер с ИК-управлением
- Как получить стабильное светодиодное освещение без сцинтилляции по шине I2C
- Как подключить несколько датчиков MPU-9250 IMU к одному Arduino Uno?
- Питание светодиодной ленты - Сколько ампер?
Просто возьмите один из современных мощных синих светодиодов. Они загорятся при токе всего 0,1 мА, возможно, даже ниже. Рассчитайте подходящий резистор с высоким значением, чтобы получить этот очень низкий ток., @Gerben
Спасибо, я попробовал, и он заработал даже с классическим красным светодиодом (так как у меня сейчас нет синего) и резистором 2К (примерно 1 мА), но его было плохо видно, особенно при коротких передачах. Тем не менее, он надежно работал с проводами длиной 30 см (и работал даже с резистором всего 330 Ом, что было легко заметить - но я бы не хотел проверять его в условиях шума на роботе), поэтому я в конце концов установил его с биполярным PNP с эмиттером на Vcc, базой через 2К на тактовый генератор и коллектором через 330 Ом + красный светодиод на GND. Светит тоже хорошо, потребляет всего около 2 мА от I2C. (Если хотите, заставьте его ответить, и я приму его), @gilhad