• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Pull Up резистор

pvvx

Активный участник сообщества
В остальном впечатлен советами в теме. Просто тащусь от них.
Вы не умеете тащиться.
К примеру, в совете измерить ВАХ ослом с генератором зашит прикол - помечено " :) " . Т.к. при таких замерах на дешман 8-ми битном осле ничего хорошего, кроме его шумов не выйдет.
Для этого необходим нормальный осел - со спец активными шупами и желательно от 16-ти бит на НЧ диапазоне.
В самом крайнем случае можно попытаться сделать это на дешевом (от 30 т.р.) 12-битном осле RIGOL из новой серии 8xxxx :)

Но даже такого оборудования у производителя ESP нет - по этому имеем полное отсутствие нормальной современной документации - в PDF нет графиков :p
 

pvvx

Активный участник сообщества
Достал из хлама ESP12E-Devkit.
Включил в USB.
Прошивка неизвестна.
Подключил PowerProfiller к ножке D2 и включил ему на вход генератор сигналов, выставив аналоговую (линейность боле 20 бит) пилу 0..5.0 В 0.1 Гц.
Путем подбора резистора из валявшихся под рукой, поменял шунт на PowerProfiller для измерения меньших токов (он был сделан не для таких малых токов).

Вышло что измерение тока ведется с выхода генератора (50 Ом) через сопротивление примерно 3.6 кОм (чтобы тут-же не сжечь ESP) на ногу с маркировкой "D2" на включенном ESP12E-Devkit:
1719008692069.png
Сохранил замер в Exel и слепил эту диаграмму.
Выходит такой кривой ток при спаде напряжения. При нарастании будет другой.
Пересчитывать ток и время в нормальные единицы лень.
И так ясно, что это генератор с областями "обратного сопротивления" на уровне переключения 2 с копейкой Вольт :)
 

pvvx

Активный участник сообщества
И сравнение этого замера на самом простом ослике:
1719011037071.png
1-й канал на выход генератора, далее резистор 100 кОм
2-й канал на резистор и к выводу "D2" на включенном в питание ESP12E-Devkit.
На уровне ~2.1 В всё тот-же спад.
 

pvvx

Активный участник сообщества
И в обратную сторону - нарастание напряжения:
1719011594507.png
Фиолетовый - это примерно и есть ток при напряжении желтого :)
 

pvvx

Активный участник сообщества
Если измерять так:
Например так:
1) включить пин на ввод.
2) включить амперметр между пином и землей и измерить Ia.
3) вычислить величину подтяжки как R=Vcc/Ia.
Тестер UT71B показывает 0.00 мкА :p И 0.00 мкА между входом и 3.3В.
Но если между GND платы и тестером поставить генератор с нарастающей пилой от 0 до 5В и периодом в 100 секунд (0.01 Гц), то тестер передает:
1719017251570.png
 

pvvx

Активный участник сообщества
В итого - переключение внутреннего элемента GPIO (триггера Шмитта) вносит на изменение тока на входную ножку примерно на 5 мкА.
Пример:
Источник - синус 1 кГц (желтый), через резистор на 100 кОм на вход GPIO4 (голубой):
1719021451455.png

Какое это "сопротивление" при данных токах (в плюс и минус!) и напряжениях, и как оно будет влиять на так-же нелинейное "сопротивление подтяжки" - выдумывайте сами :) :)
 

nikolz

Well-known member
У Вас выйдет неправильное значение.
На многие нормальные MCU/SoC обычно приводят эквивалентную схему коммутатора GPIO и описывают ток утечки, иногда и с графиком зависимостей от напряжения и температуры.
Но по ESP8266 вся информации только в форумах, от неизвестных деятелей. А при около 100 кОм ток при 3.3В будет 33 мкА, что сравнимо с нелинейными токами утечек входов.
Для примера измерьте входное сопротивление типового логического элемента - на графике тока будет изгиб на уровне напряжений переключения...
И даже качественный кремниевый резистор подтяжки подключается через нелинейный элемент. Да и резисторы в кремнии бывают с разными характеристиками - некоторые имеют большую зависимость сопротивления от приложенного напряжения.
Ещё надо учесть качество изготовления кристалла - у ESP он плюс-минус километр - кристаллы изготавливаются на древнем изношенном оборудовании (более 20 летней давности).
По этим причинам для дешевого класса MCU/SoC указывают только примерный эквивалентный диапазон "сопротивления" подтяжек, а не точные характеристики...
Полагаю, что эти явления есть.
Но вопрос о сопротивлении подтяжки.
Полагаю, что цель установки подтяжки обеспечить достаточный ток работы выходов с открытым коллектором(стоком) при подключении их по схеме "монтажное ИЛИ" и создание логической 1 при третьем состоянии на пине.
Максимальное значение этого тока будет определяться именно током к.з. Собственно это и измеряем.
--------------------
Указанное измерение даст заниженное значение резистора.
Можно конечно измерить и точнее, но нет смысла.
------------------
Так как внутренний резистор подтяжки у ESP десятки ком,
то разработчики рекомендовали ставить внешний резистор подтяжки 4...10 кОм.
--------------------
Но критерий истины -практика.
----------------------
Заинтересованные могут легко проверить данный метод на чипах TLSR,
для которых указаны точные значения резисторов подтяжки.
=============
еще есть сопротивление утечки.
т е подтяжка к земле - это тоже нагрузка и ее надо учитывать при установке внешней подтяжки.
 

pvvx

Активный участник сообщества
Полагаю, что цель установки подтяжки обеспечить достаточный ток работы выходов с открытым коллектором(стоком) при подключении их по схеме "монтажное ИЛИ" и создание логической 1 при третьем состоянии на пине.
Максимальное значение этого тока будет определяться именно током к.з. Собственно это и измеряем.
Опять бредятина...
"Подтяжку" включают совсем для других случаев...
Тем более когда работа с внешним источником с ОК.
Так как внутренний резистор подтяжки у ESP десятки ком,
то разработчики рекомендовали ставить внешний резистор подтяжки 4...10 кОм.
Балаболы указывали, что PullUp у ESP8266 100 кОм, а не десяток.
Вклад обратной связи входного элемента GPIO4 - до 5 мкА (-1.3 и +4 мкА в диапазоне 2..2.5В).
Если PullUp 100 кОм, то это 20 мкА на 2В, но какой разброс утечек от температуры, экземпляра, переключателей-коммутаторов на внутренние блоки неизвестно...
Я измерять PullUp не собираюсь, т.к. уже много лет не использую ESP8266 (точнее это ESP8089).
И это не все проблемы GPIO у ESP8089 (ESP8266). Следующая - это дикий резкий фронт при смене вывода, создающий помеху собственному приемнику. И т.д., включая отсутствие ESD защиты.
 

pvvx

Активный участник сообщества
И главное забыл - на входе присутствуют наводки от других пинов и работы WiFi. И эти помехи в виде импульсов опускают вход со внешним подтягивающим резистором на 100 кОм до нуля :eek:
 

pvvx

Активный участник сообщества
Заинтересованные могут легко проверить данный метод на чипах TLSR,
для которых указаны точные значения резисторов подтяжки.
Не легко. Там несколько вариантов PullUp и один имеет токи менее 3 мкА. А это по вашему 1 МОм. А шуп осла или влажная печатная плата уже в тех порядках.
И:
1. подключение куска провода к пину с такой подтяжкой наводит 50Гц до срабатывания. Особенно если имеется другая гальваническая связь со схемой (к примеру подключили GND осла).
2. сильно значатся емкости подключенные к такому входу и после включения PullUp надо хорошо пождать, прежде чем считывать входное значение. А т.к. активный цикл работы до сна SoC в BLE мал, типичный 1.5..7 мс, то надо применять другой алгоритм для опроса при включении PullUp1M - сначала включить PullUp100k, а затем переключить на PullUp1M... или что-то вроде... Т.к. если это выключатель/переключатель/геркон/..., то оставлять включенный PullUp не всегда можно - постоянно будет жрать эти +3 мкА при сне SoC в 0.8/1.8 мкА.
 

nikolz

Well-known member
Не легко. Там несколько вариантов PullUp и один имеет токи менее 3 мкА. А это по вашему 1 МОм. А шуп осла или влажная печатная плата уже в тех порядках.
И:
1. подключение куска провода к пину с такой подтяжкой наводит 50Гц до срабатывания. Особенно если имеется другая гальваническая связь со схемой (к примеру подключили GND осла).
2. сильно значатся емкости подключенные к такому входу и после включения PullUp надо хорошо пождать, прежде чем считывать входное значение. А т.к. активный цикл работы до сна SoC в BLE мал, типичный 1.5..7 мс, то надо применять другой алгоритм для опроса при включении PullUp1M - сначала включить PullUp100k, а затем переключить на PullUp1M... или что-то вроде... Т.к. если это выключатель/переключатель/геркон/..., то оставлять включенный PullUp не всегда можно - постоянно будет жрать эти +3 мкА при сне SoC в 0.8/1.8 мкА.
Как говорят в народе: "заставь дурака богу молиться, он и лоб расшибет"
---------------------
Не обязательно включать 1 мОм и даже 100 кОм.
Достаточно включить 10 кОм. и это просто.
 

pvvx

Активный участник сообщества
Не обязательно включать 1 мОм и даже 100 кОм.
Достаточно включить 10 кОм. и это просто.
А у указанных чипов нет встроенного PullUp на 10 кОм и случаи использования таких PullUp для его сферы применения сверх редки - токи GPIO по умолчанию до пары мА, а в максимуме переключаются до 4 мА.
 

pvvx

Активный участник сообщества
Как говорят в народе: "заставь дурака богу молиться, он и лоб расшибет"
При 100 кОм и емкости всей цепи в 25 пФ - постоянная времени RC-цепи 2.5 мкс. А это уже несколько чипов на шине, к примеру I2C с работой на 400 кГц. Типовая шина I2C с одним датчиком без проблем будет работать на частотах к 1МГц. Так что нафига малопотребляющему чипу PullUp на Амперы?
Это же не для устаревших чипов технологии того века, типа ESP, с сверхбольшими токами утечки...
 

pvvx

Активный участник сообщества
Достаточно включить 10 кОм. и это просто.
В среднем, для BLE и при опросе одного I2C датчика раз в секунду это приведет к увеличению среднего потребления примерно на 2%, если всё остальное спроектировано нормально. :p
Это зависимость не для датчиков и прочих чипов, выставляющих READY. Там увеличение среднего тока потребления будет больше на время обслуживания READY (+ ток в 330 мкА при среднем потреблении всея схемы 5..10 мкА).
Видно, что nikolz ни разу не разрабатывал никаких схем.
 
Сверху Снизу