• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе 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 ни разу не разрабатывал никаких схем.
 
Сверху Снизу