Как стать автором
Обновить

Комментарии 45

Очень странные схемы.

  1. Не хватает защиты линии. Поставить какой-нибудь защитный диод и последовательный резистор.

  2. Не жирно ли 10 мкФ на второй схеме? Думаю хватит сильно меньше. Даже, что то вроде 0.47 мкФ.

Стабилизация, напряжение прыгать не должно. А 10 мкФ потому что "какой был", обычный мелкий электролит.

Если разрабатывать как фабричное изделие - другое дело, может и хватило бы 0.47

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

Как раз датчики температуры лучше беспроводные. Угадать, где его лучше разместить - сложно, перенести - ещё сложнее. Измерять температуру можно и не каждую секунду,

У беспроводных проблемы с батарейкой, она заканчивается. И надо пойти ее поменять.

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

Можно запитать его где-то рядом с местом измерения, а данные отдавать по вайфаю

Тогда он уже не беспроводной, а еще один с проводами )

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

А не лучше ли выкинуть R1 D1 C1 и запитать схему от 5в ? Никакой необходимости в 12в не видно. А защиты проца от длинной линии очень не хватает.

Скажем так, особенность конструкции в целом.

Нужно бесперебойное питание всякой прочей аппаратуры в доме, роутеров-камер и прочего, что также требует аккумуляторов, в итоге вышло что есть Большой Аккумулятор на 12в (а мог бы быть и на 24), и вот эти 12 вольт идут как стандартное питание, оно уже есть по умолчанию.

Для питания всяких ESP оно понижается до 3.3, но тут нужно больше, поэтому просто беру 12.

DC-DC
DC-DC

Совершенно типовой DC-DC. Использую в практически всех самоделках. Разместив на плате таких два - получаю и 5 и 3.3 вольт.
Потому что на делителях и мощность "зря" выделяется и напряжение свинцового ИБП не такое постоянное в процессе разряда. Ну и отключение питания реализуется одним gpio - достаточно замкуть EN на Gnd - преобразователь отключился.

тогда можно применить вот такую схему

Напряжение на конденсаторе будет еще меньше 3,3В.

Шина же 5 В, диод съест 0.7 В, будет вплоть до 4.3 В после долгого простоя шины, разве не так?

0.6 если обычный диод, 0.1 если Шоттки

Так-то ему и 4 хватит, вопрос в длительности, насколько хватит, 10 мкФ хватит с запасом

У Шоттки 0,1В ? Это у каких? Обычно 0,3В.

Ну, не 0.1, конечно, но 0,156 вполне себе у быстрых шоттки норма. Применяются в импульсных БП.

А есть еще германиевые, типа д9, если у кого остались...
В стародавние времена их полно было везде, у них тоже что-то около 0.1.

у ESP 3.3V

Вон там схема с транзистором для чего, по вашему?
Как раз для того чтобы поднять напряжение шины до 5, и согласовать это с питанием ESP 3.3

Нет, 5 - 0.6(0.1) = 4 с чем-нибудь.

Там оно как: сам процесс измерения - 200-300 мс, потом передача, и всё это время датчик работает на внутреннем конденсаторе, у которого небольшая ёмкость. Когда питание было всего 3.3 - оно тоже работает, но очень быстро напряжение падает. Внешний конденсатор даст достаточно времени, работа стабильнее, и 4 вольт хватит

Я думал, тут будет про восстановление фронтов с помощью микросхемы сброса.

Проблема фронтов - это другая проблема, тут про питание датчиков...

Я бы не назвал данный каскад усилителя с общим затвором "умным" решением. Простым - да, умным - нет.

Если GPIO работает в режиме OD тогда при лог.1 каскад должен быть в режиме истокового повторителя и ограничить напряжение на истоке до напряжения на затворе. Только это гаоантированно работает лишь с полевыми транзисторами с неизолированным затвором. Как оно будет на полевом транзисторе с изолированным затвором - мало кто знает. Эти транзисторы больше для ключевых (дискретных) режимов а не линейных.

Когда GPIO будет давить исток к земле, то весь ток с шины пойдёт в ногу GPIO. А в статье про доинную шину. Длинная шина это и индуктивность и, самое главное, ёмкость. А ещё датчик может закоротить на Vcc. И привет ноге.

Правильная схема будет что-то типа управляемого генератора тока. Я такие собирал для K-Line, можно даже оптическую развязку сделать.

Вы усложняете.
Датчик не может закоротить на Vcc, потому что у него нет ничего кроме шины данных и земли, некуда коротить, разве что на землю. Это не страшно, просто работать ничего не будет.
Режим работы тут как раз дискретный, и работает оно вполне понятно как.

Вот то, что емкость линии может влиять на возможность "прижатия" - это да.
Но тут ведь какое дело - если емкость линиии настолько велика, что МК не может ее "прижать", или у него отгорает ножка - то как ее сможет прижать микросхема датчика?
Тогда и она не сможет, а значит, смысла во всей этой линии просто нет, такая линия будет просто неработоспособна.

Это вообще не "Универсальное решение на все случаи жизни!" - я просто привел пример как оно сделано и работает. Возможно, у кого-то оно так работать не будет.

Датчик не может закоротить на Vcc, потому что у него нет ничего кроме шины данных и земли, некуда коротить, разве что на землю.

Ну, видимо, вы ещё не встречали датчики, побитые статикой.

Так статикой, или на Vcc? )

Там всего 2 линии, Vcc среди них нет - как датчик закоротит одну из линий на Vcc, если Vcc нет?
Это 1-wire, это не линия связи между разными устройствами со своим питанием, типа K-line.

Статика (в том числе и наведённая на линию) выбивала кристалл так, что он коротил ноги. Бывало что к VCC, бывало что к GND. А бывало что и туда и туда, защита выбивала питание.

Это понятно. Статикой можно выбить что угодно.
Речь о том что там НЕТ Vcc. Вообще нет.

Есть 2 провода и 3-хногая микросхема, которая к ним подключена. К ней больше ничего не подключено внешнего, как ее ни выбивай и не закорачивай она эти два провода может только замкнуть между собой.
Это 1-wire.

Вы про фантомное питание? Последняя картинка в статье. Там да, проблемы этой не будет. А вот при подключении по первой картинке - будет. Разница лишь в длине линии: при её длине выше определённого предела фантомное питание не обеспечит работоспособность датчика(-ов).

О том и речь, что по 1 картинке - это пример из инструкций по подключению ds1820 к Arduino, и он хорошо работает при компактных размерах, "на столе".

А вот другие варианты - другое дело. И питание там не фантомное, самое обычное, просто надо понимать как оно там работает и как это можно увеличивать.

Так-то при достаточно длинной линии вообще ничего работать не будет, из-за сглаживания фронтов импульсов (лишь один человек сказал) и большого роста количества ошибок.

А вот другие варианты - другое дело. И питание там не фантомное, самое обычное, просто надо понимать как оно там работает и как это можно увеличивать.

Когда питание подаётся вместе с сигналом оно называется фантомным. Что для микрофонов что для 1wire. Заметьте, что в случае 1wire это питание закорачивается на массу, поэтому требует развязки и буферного элемента (в вашем случае диод и конденсатор).

У MAX/Dallas была аппнота по этой теме. 47 нанофарад ёмкости линии выдерживает 1-wire мастер, по их рекомендациям реализованный. Полкилометра витухи (91 пф/м)

Таки в статье не хватает фоток реализованного. Автор теории накидал, а вот сколько метров у него линия в реальности, например?

Как вы себе представляете "фотки" кабеля, лежащего в гипсокартонных коробах и закладных трубах? )

Обычная витая пара, соединения на скрутках, с ответвлениями. Проложена где просто в коробе, где через гофру или ПНД - вот например к колодцу ПНД закопана, чтобы не раздавило, а в стене удобнее гофру прокладывать.

"Длинная линия" в электронике это линия, длина которой превышает длину распространяющейся в ней волны

Абсолютно безосновательное заявление о ненужности пина питания. Актуально только для DS1820-PAR — версии чипа для чисто паразитного питания, там он действительно не подключен внутри чипа.

Следующая итерация улучшения ситуации, которую ожидал, но не увидел в статье — это активный pull-up — не с помощью резистора, а с помощью constant current source — для борьбы с паразитной ёмкостью длинной линии и медленным нарастанием при отпускании пуллдауна. Тогда оно будет не по экспоненте, а линейным.

Отдельный разговор это то, что если на шину посадить целую гряду термодатчиков -PAR-подверсии, то оно вообще работать не будет: нужно на время замера делать strong pull-up, иначе на все чипы тока не хватит.

До полутора миллиампер доходит ток потребления одного чипа во время измерения температуры согласно даташиту.

Даже если бы предложенный пуллап в 470 ом был подключен к +5V-шине с бесконечно низким выходным импедансом, уже при токе 6 mA падение на пуллапе составит 470*0.006=2.82V.

Более чем на 1/2 упадет напряжение питание при одновременном запуске измерения всего лишь на 4 чипах, Карл! На четырёх! Хотя на шину их можно посадить сотню.

Но это при условии что та нода, к которой подключен верхний конец пуллапа, имеет нулевой output impedance. А пуллап по факту подключен к средней точки делителя резистор-стабилитрон, и выходной импеданс этой ноды далеко не ноль. Почему было там 7805 не поставить вместо этой порнографии со стабилитроном? В итоге наверное даже два-три одновременно запущенных на измерение чипа на шине уложат шину

Что за шляпу предлагает нам автор?

Совсем забыл: там же стоит конденсатор 10 uF у каждого датчика, чтобы обеспечить каждый датчик энергией. Так вот, если предположить, что во время измерения термодатчик потребляет ток 1.5 mA вне зависимости от напряжения питания, достаточно 16 миллисекунл чтобы разрядить конденсатор 10 uF с изначальных 5V до 2.5V (минимальное напряжение для работы чипа — 3V, то есть на 2.5V чип уже не будет работать). Между тем, процедура замера температуры длится как минимум 94 миллисекунды (в самом грубом 9-битном режиме), а в худшем случае — 750 миллисекунд (в 12-битном режиме).

Так что этот конденсатор — мёртвому припарка. Заряд из «локального» конденсатора чип очень быстро высосет, а с шины взять нужный ток несколько устройство одновременно не смогут из-за подтягивающего резистора.

Если интересно, можно даже просимулировать. Симулировать будем с упрощениями:

  • Термодатчик потребляет 1.5 mA вне зависимости от напряжения питания

  • Диодом перед «локальным» конденсатором пренебрегаем.

  • Пуллап сделан к «супермощной» +5V-шине, а не к маломощной RD-цепочке.

4 термодатчика, одновременно делающих преобразование:

просадят напряжение на шине до минимально допустимого (+3V) уже за 24 мс — что в четыре раза меньше, чем требуется чипу для совершения термопреобразования с минимальной точностью (94 мс). Вывод: чипы перестанут работать раньше, чем смогут сделать какой-то замер.

3 термодатчика, одновременно делающих преобразоание:

просадят напряжение на шине до минимально допустимого где-то за 40 мс — опять же, раньше, чем процесс измерения завершится, в итоге измерения не состоятся вообще.

2 термодатчика, одновременно делающих преобразование:

смогут закончить начатое измерение термпературы при любой настроенной точности (от 8 бит до 12 бит — 94...750 мс)

Но это пуллап к идеальной +5V-шине. Без учёта «стабилитронного» подхода.

Один вопрос: вы это ДЕЛАТЬ пробовали сами, или только в программе посчитали? )

- ваш Паваротти - хрень полная!
- а где ты его слушал?!
- да мне сосед вчера напел...

Там всё совершенно не так как вы рассчитываете, потому что реальность далека от упрощений. Да и работает оно немного не так как вы думаете...
Оставайтесь с нами, напишу )

Мастер шины, типично, не запускает преобразования на нескольких термометрах одновременно.

Вот именно.

Но штатная ардуиновская библиотека запускает (потому что в куче примеров по программированию МК с 1-wire именно так написано, "для всех сразу")

Ну, это же пример... Просто скелет для понимания принципа.
Соверешенно аналогичное, спрашивают меня про демо-скрипт в 20 строчек: "А как он будет реагировать на <возможная ошибка>?".
Ну и даю ссылку на боевую реализациюю, в которой те ж 20 строк и еще 300 - проверки и обработки нештатного поведения.

боевую реализациюю, в которой те ж 20 строк и еще 300 - проверки и обработки нештатного поведения

Жиза. Помню, какую анальную эквилибристику надо делать для обработки ошибок и внештатных состояний у I2C контроллера в STM32... Там ещё из ерраты 2 абзаца кода надо учитывать...

А если говорить про "штатную" реализацию в ардуино IDE i2c - то там, ЕМНИП можно так и остаться в while библиотеки при отсутствии адресуемого на линии. Ну или если устройство пропустило команду.

Кошмар!

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

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации