Проводка геркона

Я пытаюсь подключить простой геркон к своей малине, чтобы проверить, открыта ли моя дверь или нет. Я нашел множество руководств в Интернете, но все их схемы ведут себя по-разному, поэтому я решил создать сам и проверить, кажется ли это разумным.

Мой первый тест просто зажигает светодиод, когда переключатель пропускает ток. Поскольку мой светодиод 2В 20мА, резистора (3,3-2)/0,02 = 65 Ом должно хватить, но у меня только 100 Ом, должно быть нормально?

введите описание изображения здесь

Следующим шагом является захват события переключения в GPIO 5, прослушивающем входное напряжение 3,3 В.

Я хочу, чтобы через мой контакт протекал максимальный ток 1 мА, поэтому я выбираю резистор около 3 кОм. Скажите 5k для безопасных целей.

введите описание изображения здесь

Вот в чем проблема. В каждом примере, который я нашел, наиболее часто используемый резистор составляет 10 кОм, и это всегда что-то вроде этого:

введите описание изображения здесь

Зачем мне такой большой резистор? И почему я должен также подключаться к GND, если мой GPIO получает достаточное количество напряжения и тока (или 0, когда переключатель выключен)?

Заранее спасибо.

Если вы не поместите резистор между GND и GPIO, цифровой вход не будет равен нулю, когда переключатель НЕ подключен, он будет иметь высокий импеданс .

Ответы (2)

Мой первый тест просто зажигает светодиод, когда переключатель пропускает ток. Поскольку мой светодиод 2В 20мА, резистора (3,3-2)/0,02 = 65 Ом должно хватить, но у меня только 100 Ом, должно быть нормально?

Это будет замечательно.

Следующим шагом является захват события переключения в GPIO 5, прослушивающем входное напряжение 3,3 В. Я хочу, чтобы через мой контакт протекал максимальный ток 1 мА, поэтому я выбираю резистор около 3 кОм. Скажите 5k для безопасных целей.

Вы запутались в этот момент.

схематический

смоделируйте эту схему - схема, созданная с помощью CircuitLab

Рис. 1. Типичный вход микроконтроллера с дополнительным внутренним подтягивающим резистором.

Входной импеданс (сопротивление) контакта GPIO очень высок. Если вы подключите его к V +, он может потреблять пару микроампер даже при отсутствии резистора. Это делает его очень чувствительным к блуждающим напряжениям или электромагнитным полям и, если не принять меры, может привести к случайному включению и выключению входа. Способ решить эту проблему состоит в том, чтобы добавить подтягивающий или подтягивающий резистор с достаточно низким сопротивлением, чтобы выполнить эту работу. 10k обычно является хорошим балансом между достаточно низким и не настолько низким, чтобы мы тратили энергию впустую из-за увеличения тока через него.

Потребность в подтягиваниях настолько распространена, что большинство производителей включают их внутри с опцией конфигурации, позволяющей их включить.

На вашей третьей диаграмме у вас есть переключатель на «высокой стороне», что означает, что вам нужен понижающий резистор. Если у чипа нет внутреннего раскрывающегося списка, вам придется добавить внешний. 10к должно хватить.

Например, на рисунке 3 GPIO установил подтягивающий резистор, и когда переключатель выключен, GPIO будет источником тока 5 В / 10 кОм = 0,5 мА, и он будет считываться как логический 0. Когда переключатель включен, потенциал GPIO будет 5 В, поэтому ток не будет течь, GPIO будет считывать логическую 1.
Рисунок 2 представляет то же самое с включенным подтягивающим резистором GPIO (если он есть). Основное правило заключается в том, что GPIO не должен иметь плавающий провод, действующий как антенна, поэтому всегда необходимо «подключать» подтягивающий или подтягивающий резистор.
Пример на рис. 1 невозможен из-за чрезмерного тока, который MCU должен был бы потреблять.

схематический

смоделируйте эту схему - схема, созданная с помощью CircuitLab

Вот как подключить переключатель и светодиод к MCU. Включите также подтягивающий резистор для лучшего подавления шума.

Так что я должен обновить резистор? Я рассчитал это значение для падения напряжения на светодиоде, как мне его рассчитать?
А не могли бы вы объяснить это немного подробнее? «На рисунке 2 показано то же самое с включенным подтягивающим резистором GPIO (если он есть)».
@lateralus Вы должны определить правильный потенциал для GPIO, когда переключатель выключен. Это делается с помощью встроенных резисторов подтягивания вверх/вниз (если ваш микроконтроллер имеет такую ​​возможность) или добавления внешнего резистора. В примере 3 уже есть внешний резистор, поэтому подтяжка вверх/вниз не требуется. Пример 2, когда переключатель выключен, GPIO находится в плавающем состоянии, поэтому не имеет определенного состояния. Он будет читать 0 или 1 независимо от того, какой шум он улавливает.