Учебное пособие по цифровому считыванию последовательного интерфейса - расчет значения сопротивления

9

В учебнике Arduino Digital Read Serial вы найдете простую кнопку. Мои вопросы сосредоточены вокруг резистора.

Зачем нужен резистор?

Я думаю, что понимаю это, но поправьте меня, если я ошибаюсь. Чтобы входной контакт считывал низкий сигнал и не плавал, мы должны подключить контакт к земле, когда кнопка не нажата. Когда кнопка будет нажата, у нас будет сигнал 5 В, поступающий как на контакт, так и на землю. Закон напряжения Кирхгофа гласит, что полное напряжение в замкнутом контуре должно равняться нулю, поэтому нам приходится иметь дело с этим 5 В, которое течет прямо на землю. Вот почему мы помещаем резистор между кнопкой и землей.

Как было выбрано значение резистора?

Это то, что мне неясно. Закон Ома гласит, что ...

resistance = voltage / current

Это источник питания 5 В, и спецификация Arduino Uno гласит, что этот вывод обеспечивает 40 мА постоянного тока. Так..

resistance = 5V / 0.04A = 125 Ohms

В последовательном цифровом чтении учебника, почему у нас резистор 10K Ома? Это слишком излишне, верно? Что приводит к другому вопросу: можете ли вы когда-нибудь создать слишком большое сопротивление, если ваша единственная цель - стереть напряжение?

Заранее спасибо за любые отзывы!

Рип Лееб
источник

Ответы:

6

Ты очень близко. Резистор предназначен для того, чтобы действовать как резистор с понижением напряжения; Если входной контакт является плавающим, это просто антенна, улавливающая случайный статический заряд. Ключевым моментом является то, что при подаче положительного сигнала (нажатием кнопки) источник положительного напряжения должен «перегружать» понижающий резистор, чтобы входной контакт считывал положительный.

Если бы не было никакого сопротивления, то входной контакт считывал бы в середине прямого пути, который не способствует положительному или отрицательному. Если не считать прямого короткого замыкания, какое состояние arduino будет читать, я подозреваю, будет либо случайным, либо каким-либо свойством источника питания; Это вероятно все еще прочитало бы основание.

С резистором сигнал считывается напрямую с положительного, до сопротивления нагрузки. Таким образом, он обязательно получит ВЫСОКИЙ сигнал.

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

Я хотел бы отметить, что, когда вывод Arduino установлен в режим ввода, он фактически не будет подавать ток. Он может быть смоделирован последовательно с резистором 100 мОм. см. http://arduino.cc/en/Tutorial/DigitalPins для деталей.

BrettAM
источник
2
Ключевым моментом здесь является то, что если вы не используете резистор, когда переключатель замкнут, вы замкнули +5 В на землю. Прямое короткое замыкание приведет к перегрузке блока питания и отключению цепи защиты на блоке питания, что приведет к отключению всего Arduino. Вам нужен резистор с достаточно высоким сопротивлением, чтобы ток оставался низким. Я обычно использую резистор 100 кОм, которого достаточно, чтобы при входном сигнале разомкнуть входной сигнал до 0 Вольт, и пропускает ток только в диапазоне 0,00005 Па, что является незначительной величиной тока. Резистор 10 кОм тоже работает, но это позволяет пропускать ток в 10 раз больше.
Дункан C
2

Зачем нужен резистор?

Входы Arduino имеют очень высокое сопротивление. Datasheed Atmega328 говорит 100 МОм для АЦП. Такие высокие значения хороши, но также имеют недостаток для борьбы с паразитными эффектами (сопротивление, индуктивность, емкость). Такие эффекты также могут быть использованы в качестве емкостных датчиков .

Как было выбрано значение резистора?

Резистор должен иметь произвольное значение, которое меньше входного сопротивления. 10k и выше хороши для отключения утечки на входе.

Однако вы также можете пропустить резистор при использовании внутренних подтягивающих резисторов. В этом случае вы имеете дело с негативной логикой:

pinMode(3, INPUT);
digitalWrite(3, HIGH);

На контакте 3 вы будете измерять, HIGHи кнопка должна быть подключена к контакту и заземлению. Внутренний подтягивающий резистор I / 0 имеет значение 50 кОм.


источник
1

Вы уже получили пару хороших ответов о том, зачем нужен понижающий резистор.

Подводя итог, вам необходимо подключить вход к земле, чтобы предотвратить случайное плавное поступление входа между высоким и низким значениями. Вы используете резистор, чтобы при замыкании переключателя не создавать короткого замыкания между источником + 5 В и землей.

Другой момент, хотя. Входы Arduino включают дополнительный внутренний, управляемый программным обеспечением подтягивающий резистор. Если вы сначала настроили вывод в качестве входа, а затем записали значение HIGH в этот порт, он активирует подтягивающий резистор. Это приводит к тому, что вывод отображается как ВЫСОКИЙ, когда к нему ничего не подключено.

Затем вы можете подключить ваш переключатель к земле вместо + 5V. Затем вам нужно изменить логику кода, чтобы обработать значение HIGH как не нажатое, а значение LOW - как нажатое. Это позволяет немного упростить проводку, поскольку вам не нужен внешний резистор.

Дункан С
источник