Аналоговая запись (PIN, 1023) <>Цифровая запись (PIN, HIGH)

Этот вопрос очень похож на этот. Я использую ESP8266, для которого максимальное значение analogWrite равно 1023, а не 255 для некоторых других плат Arduino, но я считаю, что принцип тот же.

Я подключаю 3 светодиода непосредственно к 3 выходам через токоограничивающие резисторы.

Когда я включаю их с помощью analogWrite (PIN, 1023), они не такие яркие, как когда один и тот же светодиод управляется одним и тем же выводом с помощью digitalWrite (PIN, HIGH). Это наводит меня на мысль, что либо 1023 не дает 100% рабочего цикла, либо максимальное напряжение в аналоговом корпусе меньше, чем в цифровом. Можно ли этого ожидать? Значимы ли вывода (4,5 и 14)?

Другие подобные вопросы и ответы привели бы меня к мысли, что они должны быть одинаковыми.

, 👍0

Обсуждение

Попробуйте проверить напряжение на выводе, но в основном напряжение меньше на 0,1 при использовании шим, чем при простой настройке высокого значения вывода., @xbox gamer

Попробуйте измерить ток и посмотреть, есть ли разница. Это может быть правдой. Я знаю, например, что процессоры STM имеют низкоскоростные и высокоскоростные выходы, и они имеют разные характеристики обработки тока. Если это проблема в вашем приложении, вы можете буферизировать выходной сигнал, управляя транзистором, подключенным к светодиоду, вместо того, чтобы управлять светодиодом напрямую., @Gerben

максимальное значение по умолчанию равно 255. https://arduino-esp8266.readthedocs.io/en/latest/reference.html#analog-output, @Juraj

Диапазон по умолчанию изначально был 1023, поэтому он немного отличается от версии к версии, @xbox gamer

извините, да, это 1023. документ изменен на 3.0.0, @Juraj


1 ответ


2

Я могу подтвердить, что 1023 действительно дает 100% рабочий цикл. Я подключил выход моего D1 Mini к своему осциллографу и получил постоянное напряжение.

Я также могу подтвердить, что одно и то же напряжение выводится для digitalWrite() и analogWrite().

Однако выходные драйверы могут быть разными. При использовании analogWrite() может использоваться более слабый выходной драйвер, который не может выдавать столько тока, поэтому напряжение падает немного больше, чем при использовании digitalWrite(). Однако даже с резистором 470 Ом, подключенным между выходом и GND (наименьшее значение, которое я мог легко передать в варианте со сквозным отверстием) Я вообще не вижу никаких изменений в напряжении.

Так что, если есть какие-то различия, то это может быть какая-то переменная, которая показывает различия в вашем конкретном подразделении, но не в моем.

,