Почему значение analogRead уменьшается, когда я уменьшаю значение резистора?(Я использую digitalWrite(high) к положительной клемме резистора)
В принципе, моя схема содержит только 1 резистор(как и основная светодиодная схема).
Я попытался узнать, каково фактическое напряжение digitalWrite(высокое). Я не понимаю, почему значение analogRead не фиксируется на 1023, а вместо этого уменьшается, когда я уменьшаю значение резистора. Более того, значение приходит к нулю, когда мое значение резистора достигает 1 Ом. Очень ценю любую помощь здесь.
@footycrazy, 👍1
Обсуждение2 ответа
Лучший ответ:
Вывод цифрового выхода может обеспечивать только определенный ток: рекомендуемый максимум 20 мА, абсолютный максимум 40 мА. Когда вы приблизитесь к этим значениям и превысите их, напряжение снизится, так как внутреннее оборудование драйвера не сможет обеспечить достаточный ток для удержания напряжения.
С помощью резистора вы обеспечиваете путь постоянного тока к земле. При высоких значениях R это не сильно отличается (так как ток через резистор на землю ниже максимального тока драйверов цифровых выводов max current). Когда вы понижаете R, ток через него к земле становится больше. Таким образом, цифровой контактный драйвер должен обеспечивать больший ток для удержания напряжения. Когда он становится слишком низким, драйвер не может обеспечить достаточный ток, напряжение падает.
С R на 1 Ом вы в основном закорачиваете вывод цифрового выхода на землю, так как 1 Ом на самом деле не так уж много сопротивления. При 5 В (что является выходным напряжением Uno) вы получите через него ток U/R = 5 В / 1 Ом = 5А
. Водитель не может этого обеспечить. В реальной жизни драйвер вывода, скорее всего, будет убит этим текущим розыгрышем.
В дополнение к ответу Крисла стоит отметить, что в спецификации микроконтроллера (здесь ATmega328P), в разделе “Типичные характеристики”, есть подраздел “Pin-драйвер Сила”. В этом подразделе приведены некоторые типичные кривые зависимости напряжения от тока , показывающие, что:
- кривые не совсем линейны, хотя нелинейность невелика при напряжении питания 5 В
- они сильно зависят от температуры
- при температуре окружающей среды поведение контактов близко к идеальному источнику напряжения последовательно с резистором 25 Ом.
Кривые идут только до 20 мА, так как поведение для более высоких токов не характеризуется.
Исходя из этого, вы можете догадаться о показаниях напряжения, которые вы ожидаете. Например, если вы используете резистор 470 Ом (что безопасно), выходное контактное сопротивление и внешний резистор образуют делитель напряжения. Ожидаемое напряжение , которое вы читаете, равно
(5 V) × (470 Ω) / (470 Ω + 25 Ω) = 4.747 V
- else if игнорируется, если не Serial.println что-либо до
- Всегда определяет тот же вывод, что и HIGH, даже если он не подключен
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
- Использовать все контакты как цифровые входы/выходы
- Float печатается только 2 десятичных знака после запятой
- Arduino как USB HID
- Serial1' was not declared in this scope
если вы откроете клапан с левой стороны, то давление с правой стороны упадет., @Juraj
Этот мой пост в блоге поможет вам понять, что происходит: https://majenko.co.uk/blog/our-blog-1/what-exactly-is-a-gpio-pin-10, @Majenko