Single wiring что это
Есть ли смысл в подключении акустики по bi-wiring?
Вопрос, в принципе, понятен из заголовка-
Ответы
Да,смысл есть,я разницу слышу.Попробуйте.
вопрос может не очень правильный,сильна ли разница?
Конечно в разы лучше не станет,как ниже написали вау эффекта не будет.
и еще вопрос,а что меняется?детальность или насыщенность,может басы глубже?
Детальность становится лучше,прозрачность.Насчёт баса на своём сетапе не замечал.Мне кажется улучшения более заметны на вч и сч
И что вам мешает провести ряд экспериментов? Еще шажки к совершенству? И это будет ваш бесценный опыт. Ваше творчество.
5 процентов это хороший прирост
Разница в звучании между однопроводным и двухпроводным подключением акустики на разных АС и компонентах в той или иной степени заметна. Но, по своему опыту скажу, что лучше взять акустический кабель более высокого класса для обычного подключения АС, чем ставить эксперименты с биваринговым дешевым кабелем. Вместо штатных перемычек на АС лучше поставить перемычку из высококачественного акустического кабеля, который используется для однопроводного подключения колонок.
Лучше один кабель, более высокого класса.
В бивайринге смысла ноль, вот биампинг совсем другое дело.
Я не заметил ощутимого прироста и вау эффекта.
Было подключено таким образом полгода гдето. Сейчас подрубил обычным способом только потому, что подключил к усилку две пары колонок. Если одну пару уберу, то снова подрублю бивайр. Пусть будет так)
а Вы в замене проводов слышите разницу?Ну межблочников или силовых?
На мой взгляд сетевые кабели заменить более важно,чем межблочные.
Питание очень важно,недаром аудиофилы даже от столбов ведут отдельный кабель в дом.Была статья про одного японца,как он в доме делал электричество.
а у Вас parasound 21?
Марк Левинсон 33. Моноблоки с двойным инвертором. Вырабатывают собственное, чистое, синусоидальное, сетевое напряжение.
Нет,у меня другая техника,но я предпочитаю не озвучивать бренды,могу сказать,что у меня не один сетап,так как есть несколько помещений,где я периодически бываю и слушаю музыку или смотрю кино.
Николай, как вы смотрите на домашнюю станцию постоянного тока? С гаммой потребляемых напряжений- токов?
На мой взгляд сетевые кабели заменить более важно,чем межблочные
Вот здесь, NikolaNR, согласиться с вами никак не могу. Межблочный кабель всегда остаётся в приоритете, с него всё и начинается, ибо как тогда быть в случае если конструкцией самого аппарата замена сетевика вовсе не предусмотрена? К тому же, далеко не все ещё способны заметить разницу между стоковым кабелем и фирменным. Да, построение системы начинается с розетки, но никак не с силового кабеля компонентов.
Я баловался раньше межблоками и акустическими. Разницы не слышу. Сейчас межблок между усилком и сидюком обычный винтажный японский от каккойто аппаратуры. Обычный тюльпан. На акустику у меня атлас экватор 2.0 и атлас спикер. Мне кажется они не делают бас гудящим. Но это мое только субъективное мнение.
Честно сказать межблочники я тоже не слышу.Когда собирал систему много лет назад ещё скептически относился к силовым(сетевым) проводам.И был шокирован насколько меняется звук.Акустические тоже слышу.Хотя может это всё эзотерика?или изотерика?))
Да как не назови, это происки менеджеров от лукавого)).
Кстати заменил штатный силовой на красивый китайский с али)) чисто ради эстетического удовольствия) или истетического?))
Да, би-вайринг, и конечно, его развитие, следующую ступень, би-ампинг.
В Dynaudio 2 клеммы на АС.
И во многих других акустических системах тоже. Это говорит только о уверенности производителя, что внутри его АС сигналы полос разделяются достаточно хорошо и не взаимодействуют, или взаимодействуют, если того требует расчёт производителя. В этом случае дополнительные клеммы излишни.
Мне почему то чтото внутри подсказывает что я и биампа не услышу))
К тому же, биампинг-это разумно. Бивайринг- полная ерунда.
))) Ерунда со всех точек зрения.
Ерунда, но работает. Иногда так, как надо.
Интересное безапелляционное и голословное утверждение «начинающего аудиоманофила» (цитата взята из профиля) с музыкальным центром вместо системы!)))
Вычитали где или друзья/знакомые подсказали?
Зачем безапелляционно утверждать о чем то с чужих слов.
Из за подобных советов в сети полный разброд.
Поддерживаю,уже лет двадцать все подключаю по би-вайрингу,для меня это давно решенный вопрос и закрытая тема.
Вы сначала купите себе хоть какую-то хай-фай технику,а потом мы с удовольстаием ваши советы послушаем.
Я никакого влияния бивайринга и смены кабелей на своей системе с Хеко не замечал, когда стояли Кантон Референс вроде бы смена кабелей влияла, но это не точно.
ИМХО, надо вкладывать в кдп, акустику, усиление и источник, проводами заморачиваться только если довели вышеуказанное до ума
ИМХО, надо вкладывать в кдп, акустику, усиление и источник,
Может я и не понял чего. С Кирхгофом не знаком. Но где там последовательно? Там все параллельно.
во многой акустике возможность 2-ух парного подключения сделана для галочки, я вижу смысл такого подключения если имеется например ресивер с возможностью подключения по биампингу и акустика с «грамотным» фильтром для биампинга а если имеется усилитель я бы не заморачивался с этим и купил бы качественный медный(или каму как нравится) кабель.
не совсем понял, схема, есть схема, даже для галочки.
Да разделяются, но потом(в акустике) в какой то степени соединяются, а вот в какой зависит от реализации фильтра.
А активную акустику тоже надо правильно «приготовить» её не так много единицы(на нашем рынке)я бы сказал ради которой можно перейти на неё с классического домашнего хай-фая, вот автозвук это другое дело не одно авто настроил в основном 2-ух, 3-ех полосный фронт + сабвуфер.
Я в том смысле, что разделить токи НЧ и ВЧ на первом этапе, до фильтров, в любом случае хорошо. Другое дело, воспользуется ли разработчик колонок результатом, получит ли выгоду для итогового звучания, вопрос открытый. То что выдаёт акустика в виде звукового поля, к бивайрингу относится постольку, поскольку. Интермодуляция (в сигнале) и интерференция (в воздухе), разные явления. По поводу активной акустики, согласен, только на первый взгляд всё достаточно просто. Когда я делал себе би-ампинг с классом А, не стал в это дело ввязываться. Хотя задумка была, сделать активные ламповые фильтры, передумал, хлопотно. Так и оставил работать колоночные фильтры. Результат и так нормальный.
Очень похожая ситуация была, Qed anniversary брал ( уж очень хвалили в журналах ), середина, высокие хорошие, но с НЧ явно ослабление, продал в пол цены ( благо бюджетные ), взял VDH The Wind, другое дело.
На ламповых усилителях не то, что би-варинг, разницу между оригинальным кимбер кабель 8тс и обычной медяшкой от primier не услышал (в итоге кибер продал, а до сих пор использую обычный кабель). А вот меж. блок сразу услышал, но там разница в материалах самого проводника. Собственно эпопея с акустическими и меж.блочными проводками для себя закрыл. Как то общаясь с грамотным и опытным радио инженером он сказал, если усилитель добротно спроектирован, ни какие супер провода не нужны. Но вот вопрос, где взять такие усилители?
Не один радиоинженер не верит в кабели,сколько не общался с такими-все говорят разводилово.))
Разницу при смене кабелей можно не слышать по двум причинам, низкое разрешение системы или одного из ее компонентов и второе менее возможное, особенности слуха.
Вот это странно. Можно слышать или не слышать, но не верить. Нормальный инженер должен понимать, любое прохождение сигнала по среде распространения, подразумевает взаимодействие этого сигнала с этой средой. И неизбежно вытекающее, изменение оного.
Благодарю. А если серьёзно, мы, современное человечество, продолжаем много тысячелетнюю (миллионолетнюю?) цепочку эволюции. Результаты её и темпы, нам пока неизвестны и непонятны, пока.
Влияет. Все влияет к сожалению..
Подскажите, есть ли логика в том какой терминал усилителя (A, B) подключать к какому терминалу акустики (верхний, нижний)? Или разницы нет и при бивайринге в режиме усилителя A+B условно одинаковый сигнал дойдёт до акустики, а там уже фильтры сделают своё дело?
Вопрос, на самом деле, не такой простой и, ответ на него не так очевиден. Во многом это зависит от корректности разводки выхода внутри усилителя и от конструкции выходных клемм (закруток). Если клеммы качественные, провода выхода (и этих проводов четыре, по количеству клемм) припаяны непосредственно к ним, то разницы нет. Также не имеет значения, как подключать, если клеммы расположены в линию. Если клеммы ножевого типа (с широкими плоскими выводами) то нижнюю пару надо подключать к ВЧ секции. Так как в этом случае «ножи» конструктивно короче, то при прохождении по ним сигнала, на ВЧ (как более тонкую и уязвимую часть спектра), влияние будет меньше.
Single wiring что это
МЫ РАБОТАЕМ:
info@rusinstall.ru +7(499) 391-72-14 Обратный звонок Каталог Идеи и решения Магазин О нас Контакты Статьи Акции Оплата Главная Статьи Биампинг и биваринг: есть ли разница и слышна ли она?
Если вы выбираете что использовать, один кабель 12 AWG или две пары кабелей 12 AWG в биваринг соединении, второй вариант предпочтительнее, так как общее сопротивление, видимое усилителем, будет ниже. Однако, этого же можно добиться, используя один кабель 9 AWG.
Биампинг
Биампинг предполагает использование двух отдельных каналов усилителя на динамик, один для подключения к каждой паре винтовых клемм. При этом получаем несколько разделений: активный против пассивного, горизонтальный против вертикального.
Активный биампинг
Активный биампинг предполагает использование активного кроссовера, который разделяет электрический сигнал на высокие и низкие частоты до того, как он достигнет усилителей, что позволяет каждому каналу воспроизводить только тот диапазон частот, который к нему относится. С точки зрения звуковых различий, установка пассивного кроссовера в динамиках для активного биампинга безусловно имеет потенциал изменений, но будут ли эти изменения положительными или отрицательными зависит от качества реализации, а также от качества пассивного кроссовера. Будьте осторожны: преобразование пассивного динамика в активный задача непростая, из-за сложностей и затрат, связанных с активными кроссоверами, дополнительным усилением и кабелями. С технической точки зрения, в независимости от возможных улучшений, связанных с активными кроссоверами, активный биампинг позволяет напрямую соединять усилитель с драйвером, что дает гораздо более мягкую нагрузку, чем та, что предоставляет типичный пассивный динамик. Это также может привести к более эффективной системе, учитывая, что энергия не тратится впустую в виде тепла в пассивных компонентах кроссовера. Интермодуляционные искажения в усилителях снижаются, учитывая, что каждый канал усилителя воспроизводит небольшую часть звукового спектра.
Разделенная нагрузка также значительно снижает вероятность разрушения твитера в результате перегрузки усилителя. Не менее важно также то, что активный биампинг способствует более эффективному распределению мощности, то есть возможно разместить небольшой усилитель для относительно чувствительного твитера и оставить мощный 1000 Вт усилитель для более прожорливых вуферов.
Пассивный биампинг
Пассивный биампинг использует пассивные кроссоверы, встроенные в динамики, вместе с каждым каналом усилителя, воспроизводящим полный диапазон сигнала для отдельного управления высокими и низкими частотами. По сравнению с активным биампингом, преимущества пассивного биампинга менее очевидны. Но, тем не менее, разделение высоких и низких частот дает некоторый эффект, так как каждый усилитель теперь определяет различную нагрузку, чем было бы при нормальных обстоятельствах при индивидуальном управлении всем динамиком. Вообще, отдельные сети выполнены таким образом, что частоты «вне группы» будут иметь очень высокий импеданс по отношению к ожидаемой полосе пропускания драйверов, и, следовательно, будут требовать значительно меньше фактической мощности от усилителя.
Из-за разделения появляется несколько практических преимуществ. Потенциальная выходная способность увеличивается, поскольку тратится небольшая мощность на воспроизведение вышеупомянутых частот «вне группы». Как и при активном биапминге, также уменьшается риск выхода из строя твитера при перегрузке усилителя. Однако с точки зрения звуковых различий, они несущественны. Различия можно получить, просто используя один мощный усилитель с аналогичными или лучшими показателями производительности, чем два небольших усилителя.
Горизонтальный и вертикальный биампинг
Горизонтальный и вертикальный биампинги могут применяться как для активного, так и для пассивного биампинга и подразумевают использование многоканальных усилителей. В случае горизонтального расположения один усилитель используется для управления высокими частотами нескольких динамиков, а другой усилитель используется для управления низкими частотами. Преимущество заключается в том, что вы можете выбирать усилители, которые наилучшим образом подходят для конкретной задачи. Например, вы хотите использовать ламповый усилитель для средних и высоких частот, а большой твердотельный усилитель для низких. Вертикальное расположение действует наоборот, так что два канала от одного усилителя используются для управления и высокими, и низкими частотами одного динамика. Это помогает лучше распределять ресурсы и оберегать усилитель от перегрузки низкими частотами.
Примечание: Важно использовать усилители с аналогичными структурами усиления для обеспечения соответствия между разделами низких и высоких частот акустической системы для правильной интеграции.
Вывод
Итак, лучше ли биампинг или биваринг по сравнению с подключением с одним кабелем или одним усилителем? Как было сказано ранее, преимущества биваринга, как правило, незначительны, если вы изначально используете акустический кабель с низким калибром. Биампинг может обеспечить улучшения в звучании и динамике в зависимости от оборудования и реализации. Однако, при работе с лучшим усилением и компонентами и кроссоверами динамиков, единственный усилитель, подключение пассивного динамика может по-прежнему предлагать невероятную четкость, часто сравнимую с конкурирующими активными альтернативами.
Как перестать бояться и полюбить 1-wire
Мне очень нравится протокол 1-wire своей простотой и удобством для применения в системах «умный дом». Недавно я писал программную эмуляцию одной микросхемы и погрузился во внутренности этого протокола. Чтобы накопленные знания могли принести пользу не только мне, я решил написать данную статью. Но в статье я хочу рассказать не про абстрактные диаграммы сигналов и кодирование данных — перепечаток такого материала есть достаточно, а хочу рассказать про более практические вещи. А именно: рассмотрю проверенные лично схемы адаптеров, собранные из простых и доступных деталей, и расскажу, как из Linux получить доступ к устройствам 1-wire. Попутно расскажу про сам протокол, будет и пример низкоуровневой работы, и пример доступа из JavaScript, а также рекомендации владельцам Raspberry Pi. Эта статья в первую очередь для тех, кто хочет разобраться с протоколом практически с нуля, чтобы начать его использовать в своих проектах. Возможно те, кто уже хорошо знаком с протоколом, также найдут что-то новое для себя.
Протокол 1-wire является проводным протоколом (в отличие от беспроводного), для кого-то это преимущество, а для кого-то — недостаток. Сеть 1-wire состоит из шины, к которой подключаются устройства 1-wire. На шине может присутствовать множество «подчиненных» устройств и только один «мастер». Подчиненные устройства могут общаться только с мастером и только по его запросу. Шина 1-wire состоит только из одной линии «данных» (отсюда и название — «однопроводный»), но для работы также необходима линия «земля», а для питания устройств еще и линия «питания». При небольшом количестве подчиненных и их небольшом энергопотреблении возможно также так называемое «паразитное» питание от линии данных. Таким образом, для подключения устройства по 1-wire Вам понадобится 3 (или 2) провода и мастер сети. Мастером сети может быть, например, микроконтроллер или ПК + адаптер 1-wire.
Физический уровень
Как же по одной линии происходит взаимодействие с множеством устройств? На физическом уровне линия устроена по принципу «монтажного И», это значит, что линия будет в состоянии логической «1» (уровень около 5V), если все устройства на линии перевели ее в состояние логической «1», а в состоянии логического «0» (около 0V), если хотя бы одно из устройств перевело ее в состояение логического «0». На практике это реализовывается подключением линии через резистор (называется «резистором подтяжки») к напряжению питания, а каждое из устройств может только замыкать линию с землей при помощи встроенного транзистора. Такой тип выхода устройств называется «открытый коллектор» или «открытый сток», англ. «open-drain». Резистор подтяжки обычно расположен в мастере сети (адаптере).
Очевидно, что при паразитном питании ток поступает через резистор подтяжки, и чем больше ток потребления устройств, тем ниже будет проседать напряжение линии. Стандартом регламентировано напряжение лиии 4.5-5.5V, хотя многие устройства и могут работать при значительно более низких напряжениях, но не все. Для снижения проседания напряжения можно уменьшить сопротивление резистора подтяжки, но согласно стандарту, сопротивление не должно быть менее 500 Ом. На практике сопротивление резистора подтяжки можно взять 1кОм, если будет использоваться паразитное питание, и, например, 4.7кОм, если питание будет по отдельной линии.
GPIO адаптер
Простейший адаптер 1-wire можно построить с помощью GPIO:
По такой схеме устроен «адаптер» при использовании GPIO микроконтроллера, работающего от напряжения 5V, соответсвенно на его портах допустимо напряжение до 5V. Но на портах Raspberry Pi допустимо напряжение до 3.3V, поэтому резистор подтяжки можно подключать только к 3.3V. Такой адаптер будет работать с некоторыми устройствами, но, как уже говорилось, не все устройства могут работать с пониженным напряжением. Эту проблему легко решить с помощью двунаправленого преобразователя логических уровней:
Диод между истоком и стоком на схемах иногда не обозначают, но он всегда есть в реальных транзисторах.
Схема адаптера с использованием GPIO для Raspberry Pi будет выглядеть следующим образом:
В этой схеме убран резистор подтяжки, подключенный к истоку, с этим «хаком» схема продолжит работать. Т.к. напряжение на GPIO (и на истоке) станет меньше чем 3.3V (напряжение на затворе) на величину напряжения затвор-исток, при которой открывается транзистор. Напряжения на GPIO будет достаточно, чтобы GPIO его воспринимал как логическую «1».
Канальный уровень
Для понимания принципа работы следующего типа адаптера, разберемся, как работает мастер 1-wire на канальном уровне. В 1-wire есть всего четыре примитива канального уровня: отправка ресет, чтение присутствия, отправка бита 0, отправка бита 1 и она же по совместительству чтение бита. Для понимания принципа будет достаточно рассмотреть только два последних: отправка бита 0 реализуется путем установки на линии логического «0» в течение 60-120мкс, отправка бита 1 — путем установки «0» в течение около 8мкс, чтение бита — путем последующего чтения состояния линии, если линия вернулась в «1», значит подчиненное устройство передало бит 1, если задержалась в «0» не менее, чем на 15мкс — значит подчиненное таким способом передало бит 0.
Пассивный адаптер
Следующий типа адаптера построен на использовании UART. Если по UART на скорости 115200 BAUD передать байт FFh, то на TX появится логический «0» только во время передачи стартового бита, это около 8мкс, подчиненные устройства это воспримут как отправку бита 1, а если передать байт 00h — появится логический «0» примерно на 78мкс, подчиненные устройства это воспримут как отправку бита 0. А что если TX соединить с RX? Мы будем получать из UART ровно то, что передали: передали FFh — получили FFh. А если эту линию принудительно задержать в логическом «0» чуть дольше, то получим уже не FFh, а, например, FEh, FCh, F8h, F0h и т.д. Таким простым способом реализуется чтение бита. Схема адаптера, построенного на использовании UART, он еще называется «пассивным» адаптером, будет такой:
По такой схеме также часто строится «адаптер» для микроконтроллера, имеющего аппаратный UART. В схеме необходимо использовать только диод Шоттки, т.к. важно малое падение напряжение на диоде. Диод в этой схеме — это «хак» для преобразования выхода «пуш-пулл» (англ. push-pull) в подобие выхода «открытый коллектор». В выходе пуш-пулл к выходу коммутируется транзисторами либо земля, либо напряжение питания, а в выходе открытый коллектор коммутируется только земля, а для «обозначения» логической «1», выход переводится в высокоимпедансное состояние, в этом состоянии выход можно подтянуть резистором к любому напряжению и он беспрепятственно приобретает это напряжение.
Как мы помним, в Raspberry Pi на всех портах допустимо напряжение до 3.3V, поэтому нужен вот такой «пассивный» адаптер для UART 3.3V:
В этой схеме также необходимо использовать только диод Шоттки.
Аппаратные адаптеры
Существует еще и третий тип адаптеров — аппаратные, это микросхемы-конвертеры в 1-wire, выпускаются они для трех протоколов: USB, UART, i2c. У них есть преимущества по сравнению с предыдущими типами, например, в «пассивном» адаптере используется прием/передача целого байта для приема/передачи одного бита, а в аппаратном на этом получаем выигрыш в 8 раз (на самом деле аппаратно реализованы и другие функции: ресет, алгоритм поиска), кроме скорости это и упрощение, и сокращение кода, что очень актуально для микроконтроллеров.
Но главное преимущество аппаратных адаптеров это «активная» подтяжка. Разберемся с этим подробнее, для наглядности рассмотрим случай с паразитным питанием. При кратковременном нахождении линии в логическом «0», устройства питаются от своих встроенных конденсаторов, разряжая их, а при возвращении линии в логическую «1», конденсаторы начинают заряжаться, потребляя повышенный ток от линии. Как мы помним, ток идет через резистор подтяжки, имеем RC-цепь с переходным процессом с постоянной времени t=R*C, что проявляется в медленном нарастании напряжения на линии. Очевидным выходом в этой ситуации является кратковременное уменьшение сопротивления резистора подтяжки для сокращения постоянной времени переходного процесса. Эта техника и называется активной подтяжкой, реализовывается путем коммутации линии с напряжением питания на несколько микросекунд (вспоминаем тип выхода пуш-пулл). Это очень помогает на длинных или не очень качественных линиях, т.к. сами проводники также имеют сопротивление.
Конверторы из USB и i2c мне не доводилось использовать, а вот схему с применением микросхемы-конвертера из UART (DS2480B) я приведу, но позже и в чуть более продвинутом исполнении.
Гальваническая развязка
В предыдущих рассмотренных схемах линии земля, питание и данные прямо или косвенно соединяли внутренние схемы всех устройств. Такой вариант подойдет, если устройства будут под Вашим контролем и в безопасной среде, скажем в пределах квартиры или дома. Но если, например, датчик, работающий по 1-wire необходимо установить на крышу (метеостанция), то необходимо задуматься о защите. В данном случае речь идет о защите внутренних схем дорогостоящего оборудования от повышенного напряжения или статических разрядов. Защитить ПК или Raspberry Pi можно, отвязав его гальванически от всех линий 1-wire.
Развязывать необходимо две вещи: питание (и вместе с ним землю) и сигналы. Питание адаптера можно обеспечить от отдельного БП или использовав DC-DC преобразователь с гальванической развязкой (например B0505S). Сигналы можно развязать с помощью оптронов, это пара светодиод-фототранзистор в закрытом общем корпусе. Оптрон позволяет передавать сигнал только в одном направлении, а линия 1-wire является двунаправленной и, к сожалению, нет простых схем сделать двунаправленную гальваническую развязку. Это же касается GPIO, USB и i2c. А вот в UART обе линии RX и TX являются однонаправленными, поэтому получится сделать адаптер как пассивный, так и на аппаратном 1-wire-UART конвертере. Необходимо учесть, что в пассивном адаптере используется скорость UART 115200 BAUD, а аппаратный производит обмен данными на скорости 9600 BAUD. При выборе оптронов необходимо обращать внимание на параметры tON, tOFF, они должны быть существенно меньше 1/BAUD.
К сожалению у меня не нашлось быстрых оптронов, а PC817C, которые были в наличии, уверенно работали только до 19200 BAUD. Примерно таким образом я бы реализовал пассивный адаптер с гальванической развязкой, но, в отличие от остальных схем, эту схему я не проверял:
Полевой транзистор в этой схеме использован для создания большого входного сопротивления «приемной» части. Бонусом гальванической развязки является то, что схема одинаково будет работать и при напряжении UART 5V, и при 3.3V.
И, как было обещано, схема адаптера с применением 1-wire-UART конвертера (микросхема DS2480B) с гальванической развязкой:
Это самый совершенный из всех перечисленных адаптеров.
Приведу также свой вариант его реализации на макетной плате:
Две перемычки используются для подачи GND и +5V на DC-DC в случае UART 5V, а при подключении к UART 3.3V одна убирается и контакт подключается к +5V, второй перемычкой землю также можно сделать отдельной от земли UART.
Эмуляторы адаптеров
За неимением микросхемы DS2480B можно воспользоваться ее программной эмуляцией на любом микроконтроллере AVR, который имеет аппаратный UART. Такой МК установлен практически во всех Arduino. Здесь приведу схему, как из популярного программатора USBasp на микроконтроллере ATmega8A сделать 1-wire адаптер:
Для прошивки Вам, естественно, понадобится второй программатор. Код эмулятора и готовую прошивку можно скачать отсюда, код взят из проекта tinyowd, в эмуляторе не реализована активная подтяжка и некоторые функции.
Сетевой уровень
На сетевом уровне мастер при общении с подчиненными устройствами уже может оперировать байтами. Как мы помним, на канальном уровне при отправке бита 1 происходит и одновременное чтение, и в ответ можно получить бит 0. Таким образом при отправке байта, на его основе формируется байт ответа, в котором некоторые биты могут быть обнулены.
Все подчиненные устройства «слышат» мастера одновременно, но отвечать должно только одно. Для этого после начальной процедуры «отправка ресет, чтение присутствия» осуществляется процедура «адресации подчиненного», после которой весь последующий обмен данными осуществляется только с выбранным подчиненным, а все остальные устройства эти данные игнорируют до следующего цикла «отправки ресет».
Существует всего четыре команды сетевого уровня, которые понимают все без исключения подчиненные: CCh (SKIPROM), 33h (READROM), 55h (MATCHROM), F0h (SEARCHROM). Но есть и некоторые другие, например, ECh (ALARM), A5h (RESUME) и Overdrive-варианты предыдущих команд, которые понимают не все устройства. На самом деле две первые команды адресуют не одно а все устройства, первая (SKIPROM) используется для широковещательной рассылки команд, например «запустить на всех устройствах измерение температуры», а сама температура будет прочитана позже по отдельности с каждого устройства. Вторая (READROM) используется только когда известно, что устройство на шине может быть только одно. Но для проверки на сетевом уровне есть еще контрольная сумма адреса, так что, если ответят несколько устройств, контрольная сумма это позволит выявить.
Адреса 1-wire, их еще называют идентификаторами, имеются только у подчиненных устройств. Адреса имеют длину 8 байт, из которых независимые только 7, а восьмой байт содержит контрольную сумму этих семи байтов адреса. Адреса всех устройств уникальны, они прошиваются при изготовлении и изменить их уже нельзя. Первый байт адреса всегда одинаков для одного типа микросхем, т.е. по нему можно однозначно определить название микросхемы. Этот байт носит название «адрес семейства».
После процедуры «адресации подчиненного» последующий обмен данными уже относится к сеансовому и более высоким уровням модели ISO OSI и может отличаться для разных семейств устройств.
Низкоуровневая работа
Продемонстрирую, насколько просто происходит работа с DS2480B. Для этого в одном терминале из командной строки bash запускаем:
Эта команда будет читать из UART и выводить на экран в шестнадцатеричном формате каждый прочитанный байт. В другом терминале будем отправлять байты в UART.
Первым делом отпрявляем Break для сброса DS2480B, для этого снижаем скорость UART ниже 9600 BAUD и предаем 00h, DS2480B при чтении в стоп-бите обнаружит логический «0», воспримет это как команду сброса и приведет свое состояние в исходное (окажется в режиме команд):
После чего возвращаем скорость на 9600 BAUD:
Отправляем любую команду (в данном случае это команды DS2480B) для калибровки скорости DS2480B, на которую DS2480B никак не отреагирует, например, безобидную команду чтения параметра конфигурации 01h:
Отправляем команду C1h, которая генерирует «отправку ресет» на шине 1-wire, в ответ получим CDh если на 1-wire последовал импульс «присутствия», или EDh если «присутствия» не последовало (ответ наблюдаем в другом терминале):
Переключаем DS2480B в режим данных, в ответ ничего не получаем:
В режиме данных все байты, которые передаются в UART транслируются конвертером побитно в 1-wire и при передаче битов 1 автоматически происходит чтение бита, которое может обнулять биты в исходном байте. Модифицированный таким образом байт конвертер отправляет обратно в UART. Отправляем команду 33h, теперь это уже команда READROM сетевого уровня протокола 1-wire, в ответ получим 33h без изменений:
В ответ на READROM устройство (для простоты подключаем на шину только одно устройство) отправит свой ID, для этого ему необходимо послать 64 единичных бита (идентификаторы состоят из 8 байт), которые в ответе будут модифицированы:
Вот что будет в другом терминале после выполнения всех вышеперечисленых команд:
Идентификатор подчиненного устройства здесь будет 288df444020000a6, где 28 — адрес семейства (датчики температуры DS18B20), a6 — контрольная сумма адреса, проверять ее должны мы, а не DS2480B.
Естественно, в Linux так никто не работает с 1-wire. Но при программировании микроконтроллеров или драйверов, все происходит именно подобным образом.
Высокоуровневая работа
В ОС Linux есть два подхода к высокоуровневой работе с устройствами 1-wire:
Драйверы ядра
Драйверы ядра делятся на драйверы для адаптеров и драйверы для подчиненных устройств. Драйверы адаптеров создают уровень абстракции W1, объединяя шины 1-wire от всех доступных адаптеров. Далее есть два варианта использования уровня абстракции W1: использование его в приложениях, например, в owfs как еще один вид «адаптера», или использование поверх него драйверов подчиненных устройств (тоже в ядре).
Для работы с 1-wire с помощью драйверов ядра достаточно загрузить драйвер адаптера. Например, для DS2490 (это аппаратный 1-wire-USB конвертер):
Для DS2482 (это аппаратный 1-wire-i2c конвертер) предварительно необходимо загрузить драйвер для конкретного i2c контроллера и затем сообщить ему адрес адаптера на шине i2c:
В случае Raspberry Pi в файле /boot/config.txt добавить строку, или можно даже несколько:
Тогда при загрузке ядра модуль w1-gpio загрузится автоматически. К сожалению, в ядре (на момент написания статьи это linux-rpi-5.4.y) драйверы для DS2480B и пассивного адаптера не реализованы.
Несмотря на простоту этого способа, я его не рекомендую по причине того, что драйверы все еще сырые, для некоторых устройств реализован не весь функционал, а для многих устройств драйверов вообще нет.
Для установки owfs необходимо выполнить аналоги следующих команд для своего дистрибутива:
Или скомпилировать из исходных кодов отсюда: github.com/owfs/owfs/releases
Следующим шагом необходимо добавить адаптеры в файл конфигурации. Пример файла конфигурации /etc/owfs.conf :
Как можно заметить, контрольная сумма адреса не указывается, owserver сам ее вычисляет. К owserver также можно обращаться и с другого хоста:
Естественно, для этого в /etc/owfs.conf должно быть:
Следует предостеречь, что в owserver нет никаких разграничений прав доступа, поэтому любой, кто может подключиться к порту owserver может как читать, так отправлять команды и записывать на подчиненные устройства.
Доступ из JavaScript
Полезные советы
Если необходимо организовать несколько 1-wire шин, то потребуется несколько UART интерфейсов. Для этого можно восопользоваться несколькими USB-UART конвертерами. А в Raspberry Pi 4 можно активировать до пяти аппаратных UART, для этого в /boot/config.txt нужно добавить:
Напомню, что так же, как и в случае с GPIO, если мы используем встроенный UART на Raspberry Pi, необходимо применение преобразователя логических уровней или гальванической развязки, т.к. все GPIO на Raspberry Pi работают с напряжением до 3.3V.
Сравнение с ModBus
Для понимания, какое положение занимает 1-wire в сравнении с другими подобными протоколами для автоматизации, я провел сравнение с популярным протоколом ModBus. ModBus также использует модель мастер-подчиненные и в связке с RS485 также может работать используя всего два провода.
Как можно заметить, 1-wire более медленный, не такой гибкий и не такой помехозащищенный, что не дает ему права называться «промышленным». Но его характеристик более чем достаточно для домашней автоматизации в системах «умный дом». А используемые напряжения и простота «адаптера» для микроконтроллера делают его идеальным для разработки собственных устройств на МК.
Выводы
Протокол 1-wire на самом деле является очень легким в освоении. Я надеюсь, что статья поможет пролить свет на многие ранее не понятные моменты, которые могли быть препятствием на пути к использованию данного протокола.
Для знакомства с протоколом владельцам Raspberry Pi я рекомендую начать со сборки адаптера на GPIO. В файле /boot/config.txt добавить:
Установить owfs и записать в /etc/owfs.conf всего три строки:
Владельцам ПК или ноутбука рекомендую приобрести USB-UART конвертер (он Вам еще не раз пригодится, они бывают на микросхемах FT232, PL2303, CP210X и др. — подойдет любой) и собрать пассивный адаптер. Установить owfs и записать в /etc/owfs.conf тоже всего три строки:
И в том и в другом случае после перезагрузки выполнить:
Следующим шагом рекомендую сборку адаптера на DS2480B с гальванической развязкой.
Приведу несколько полезных 1-wire подчиненных устройств, которые стоит попробовать: