Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: mega8 не получается найти ds18b20
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
TechMike
Доброго дня.

Имеется сеть из ds18b20 в квартире по топологии звезда, на концах звезды (две ветви) находятся 3+3=6 датчиков, шина проложена на UTP5E, в центре сейчас роутер с программой digitemp.
Задача была заменить роутер на mega8 для сбора температуры с датчиков ds18b20.
Схема прилагается.
В реультате облом, датчики не ищутся, периодически находятся аж 35 шт но не тех, а с произвольным ROM. На двух датчиках воткнутых в макетку все работает идеально.
Перестроить шину не получится, кабель уже заложен в принтуса, если только на радиоканал перевести.
Было предпринято:
вставка доп. задержки в ресет шины.
запаралелено еще две ножки МК для лучшей подтяжки.

Не помогло.
В приложении осцилограммы.
Сейчас прихоит на ум:
сделать полевиком активную подтяжку к питанию с программынм уравлением.
установить на концах звезды шины восстановители сигнала: востановитель цифровых сигналов
Что посоветуете?
Нажмите для просмотра прикрепленного файла
Нажмите для просмотра прикрепленного файла
Нажмите для просмотра прикрепленного файла
Нажмите для просмотра прикрепленного файла
kovigor
Цитата(TechMike @ Dec 27 2014, 18:32) *
Что посоветуете?

1. Взять-таки осциллограф и на месте все выяснить. Это самый простой и быстрый способ решения вашей проблемы.
2. С "землями" Меги и датчиков все гуд ? В смысле, у вас куча датчиков и в центре Мега. Так вот, я подозреваю, что датчики в тех местах, где они установлены, не изолированы от труб отопления, бетонных полов, арматуры и проч. Т.е., у каждого (или не у каждого) датчика есть гальваническая связь со зданием, причем связь эта всякий раз реализуется через разные сопротивления (сопротивление бетонного пола и сопротивление труб, например, различаются очень заметно). Проблема усугубляется тем, что датчики дополнительно заземлены на Мегу через кабель, в результате начинается натуральный кавардак. Или я не прав ?
3. 100 пик на кварце - это атас. Равно как и кнопка сброса, вызывающая КЗ в линии питания sm.gif
4. От C2 один вред, уберите его поскорее ...
TechMike
Цитата(kovigor @ Dec 28 2014, 00:46) *
1. Взять-таки осциллограф и на месте все выяснить. Это самый простой и быстрый способ решения вашей проблемы.
2. С "землями" Меги и датчиков все гуд ? В смысле, у вас куча датчиков и в центре Мега. Так вот, я подозреваю, что датчики в тех местах, где они установлены, не изолированы от труб отопления, бетонных полов, арматуры и проч. Т.е., у каждого (или не у каждого) датчика есть гальваническая связь со зданием, причем связь эта всякий раз реализуется через разные сопротивления (сопротивление бетонного пола и сопротивление труб, например, различаются очень заметно). Проблема усугубляется тем, что датчики дополнительно заземлены на Мегу через кабель, в результате начинается натуральный кавардак. Или я не прав ?
3. 100 пик на кварце - это атас. Равно как и кнопка сброса, вызывающая КЗ в линии питания sm.gif
4. От C2 один вред, уберите его поскорее ...


1. что собственно и делаю, уже раз в пятый, у самого уже идей не осталось, нужна помощь.
2. считаю, что нормально, т.к. этот косяк уже исправлял когда только начинал делать шину с датчиками, все датчики прилегающие к поверхностям от них изолированы и выводы датчиков в отдельных термоусадках.
3. это ошибка на схеме, там 22пФ, кнопка сброса на пине ресета.
4. чем он плох, емкость на порядок сократить, а так в паре с керамикой очень даже?
adnega
Попробуйте на каждый датчик установить 1 кОм резистор между DATA и VCC.
cant
поставьте ключ подтяжки и сопротивление R2 уменьшите (у Вас 6 датчиков + длинные провода и все это нужно запитать через 4,3К а потом прокачать это все через бедную мегу) вот и глючит

даже в даташите есть рекомендация работать через ключ подтяжки уже с одним датчиком, если нет внешнего питания
TechMike
Цитата(adnega @ Dec 28 2014, 01:28) *
Попробуйте на каждый датчик установить 1 кОм резистор между DATA и VCC.


Так не получился, датчики закатаны в термоусадку, часть на улице в герметике. Можно в конце лучей шины поставить такой резистор на 3 и 3 датчика одновременно, до датчиков в этом случае будет где-то 5метров.
adnega
Цитата(TechMike @ Dec 28 2014, 13:42) *
Можно в конце лучей шины поставить такой резистор...

Что ж, физика - экспериментальная наука.
TechMike
Цитата(cant @ Dec 28 2014, 12:54) *
поставьте ключ подтяжки и сопротивление R2 уменьшите (у Вас 6 датчиков + длинные провода и все это нужно запитать через 4,3К а потом прокачать это все через бедную мегу) вот и глючит

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


Пробовал R2 уменьшить до 2к, не помогло.
Ключь по какой схеме поставить (Pull-Down или Pull-Up)?
В Application Note 148 есть разные варианты.
cant
на пять метров мега точно не вытянет. У вас бы не возникло вопросов при проброске питания напрямую, а не через линию связи.

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

мне кажется, вам будет достаточна схема APPENDIX B – IMPROVED CPU BUS INTERFACE

из Application Note 148

APPENDIX C – ADVANCED 1-WIRE NETWORK DRIVER на мой взгляд весьма избыточна для вас
adnega
Цитата(cant @ Dec 28 2014, 15:22) *
У вас бы не возникло вопросов при проброске питания напрямую, а не через линию связи.

+100
С паразитным питанием не пробовал, а активное: сотни метров - без проблем.
Настоятельно рекомендую переделать подключение. Изыскать лишний провод и подать по нему питание на датчики.
TechMike
Цитата(adnega @ Dec 28 2014, 15:44) *
+100
С паразитным питанием не пробовал, а активное: сотни метров - без проблем.
Настоятельно рекомендую переделать подключение. Изыскать лишний провод и подать по нему питание на датчики.

Это все наработки прошлого,все новое с питанием и вот хочу на 485 перетащить шину.

Цитата(cant @ Dec 28 2014, 15:22) *
на пять метров мега точно не вытянет. У вас бы не возникло вопросов при проброске питания напрямую, а не через линию связи.

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

мне кажется, вам будет достаточна схема APPENDIX B – IMPROVED CPU BUS INTERFACE

из Application Note 148

APPENDIX C – ADVANCED 1-WIRE NETWORK DRIVER на мой взгляд весьма избыточна для вас


Позволю немного не согласиться, судя по осцилограммам, датчикам не хватает энергии, чтобы отработать на шине обмен и думаю надо делать Pull-Up, например как в AN4206 вот на этой картинке

Я не к тому что самый умный или пробывать не хочу, просто пробывал уже подтягивать полевиком к земле и не получилось, схема была похожая как раз на APPENDIX B – IMPROVED CPU BUS INTERFACE в AN148.
Вот осцилограмма сброса и ответа датчика при К2=4,7k
Нажмите для просмотра прикрепленного файла
видно что нарастающий фронт после окончания сброса завален. Тоже самое при запаралеливании еще двух портов mega8 на шину (чтобы больше отдать по току в шину):
Нажмите для просмотра прикрепленного файла
Нажмите для просмотра прикрепленного файла
уже лучше но видимо недостаточно. А вот если поставить еще R2=2k
Нажмите для просмотра прикрепленного файла
т.е. стало хуже, появились выбросы.

Согласны с моими выводами?

Схему поправил.
Нажмите для просмотра прикрепленного файла
adnega
Цитата(TechMike @ Dec 28 2014, 16:59) *
т.е. стало хуже, появились выбросы.

А не земля ли это подпрыгивает?
R2 (а еще лучше дополнительное R2') нужно установить на конце линии рядом с датчиком.
TechMike
Цитата(adnega @ Dec 28 2014, 18:07) *
А не земля ли это подпрыгивает?
R2 (а еще лучше дополнительное R2') нужно установить на конце линии рядом с датчиком.


1k?
adnega
Цитата(TechMike @ Dec 28 2014, 18:24) *
1k?

У вас же есть скоп. Подобрать, чтоб фронты стали рабочими.
cant
Цитата(TechMike @ Dec 28 2014, 15:59) *
Позволю немного не согласиться, судя по осцилограммам, датчикам не хватает энергии, чтобы отработать на шине обмен и думаю надо делать Pull-Up, например как в вот на этой картинке

Согласны с моими выводами?


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

Как вы этого добьетесь, уже другой вопрос: ТОЛЬКО ВЫ знаете как проложены провода и какой они длины.

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

TechMike
Цитата(cant @ Dec 29 2014, 09:50) *
если вы внимательно прочитаете мое предыдущее сообщение, то там четко указано, что вам необходимо обеспечить достаточное питание вашим датчикам.

Как вы этого добьетесь, уже другой вопрос: ТОЛЬКО ВЫ знаете как проложены провода и какой они длины.

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


Посоветуйте пожалуйста техническое решение для решение мой задачи.
adnega
Цитата(TechMike @ Dec 29 2014, 10:43) *
Посоветуйте пожалуйста техническое решение для решение мой задачи.

Никто не требует подавать питание по тем же самым проводам, что и линия связи. Просто подайте самым удобным способом.
А на самом деле быстрее вскрыть плинтуса и термоусадки, чтоб сделать все по правильному.
TechMike
Цитата(adnega @ Dec 29 2014, 12:17) *
Никто не требует подавать питание по тем же самым проводам, что и линия связи. Просто подайте самым удобным способом.
А на самом деле быстрее вскрыть плинтуса и термоусадки, чтоб сделать все по правильному.


Это крайний вариант и самый не удобный способ.
adnega
Цитата(TechMike @ Dec 29 2014, 13:40) *
Это крайний вариант и самый не удобный способ.

Но при этом 100% рабочий.
Можно сделать по-проще, но при определенных фазах луны работать не будет.
cant
тогда пробуйте вариант APPENDIX C – ADVANCED 1-WIRE NETWORK DRIVER

в этом сучае должно пойти наверняка.

только на тайминги обращайте внимание.
TechMike
pullup собрал по вот этой схеме:

С фронтами стало лучше, было:
Нажмите для просмотра прикрепленного файла
стало:
Нажмите для просмотра прикрепленного файла

Функцию сброса отладил по таймингам из AN132.
Но не отрабатывает корректно функция записи в шину. На датчиках в макетке все замечательно. А на шине, при чтении ROM, что-то не срастается.
Посоветуйте где подсмотреть тайминги для длинных шин(AN132 не дало результата даже для данных линии до 600м), чтобы не подбирать долго и муторно?

Схема:
Нажмите для просмотра прикрепленного файла
TechMike
Переделал всю шину и датчики на трехпроводную, топологию переделал в шину из звезды, сделал активную подтяжку с помощью компаратора, все равно всех ds18b30 мк не видит или не стабильно видит.
Чуть посже присоеденю осцилограммы.
Onkel
Цитата(TechMike @ Apr 6 2015, 09:20) *
Переделал всю шину и датчики на трехпроводную, топологию переделал в шину из звезды, сделал активную подтяжку с помощью компаратора, все равно всех ds18b30 мк не видит или не стабильно видит.
Чуть посже присоеденю осцилограммы.

есть т.н. "китайские" ds18b20, я делаю приборы где по 4 штуки, приходится подбирать - не все умеют работать по 4 (даже по 4 ) штуки. Каждый отдельно работает, а вот соединяешь их 4 вместе - висяк, питание честное, не паразитное. Встречал и у других людей жалобы на "не совсем настоящие" 18b20, виснут при соединении нескольких в шину на одноплатниках. Так что попробуйте по одному, а потом отобрать те, что работают вместе. Сам день убил, пока дошло до такой возможности - ну не любят некоторые 18b20 друг друга. Почему - не выяснял, мне проще подобрать.
TechMike
Цитата(Onkel @ Apr 10 2015, 21:55) *
есть т.н. "китайские" ds18b20, я делаю приборы где по 4 штуки, приходится подбирать - не все умеют работать по 4 (даже по 4 ) штуки. Каждый отдельно работает, а вот соединяешь их 4 вместе - висяк, питание честное, не паразитное. Встречал и у других людей жалобы на "не совсем настоящие" 18b20, виснут при соединении нескольких в шину на одноплатниках. Так что попробуйте по одному, а потом отобрать те, что работают вместе. Сам день убил, пока дошло до такой возможности - ну не любят некоторые 18b20 друг друга. Почему - не выяснял, мне проще подобрать.


Именно таких проблем нет, в ПК (роутера) все датчики находятся и опрашиваются отлично, а вот с mega8 не все так радужно.
andrey videoplus
А какое удаление в по линии? Не пробовали в проге ставить точки прохождения, скажем на сведодиод. А осцилограмы сделаны возле датчиков или на ножке мк?
TechMike
Цитата(andrey videoplus @ Sep 17 2015, 09:31) *
А какое удаление в по линии? Не пробовали в проге ставить точки прохождения, скажем на сведодиод.


От мастера получается максимум 21 метр. Что за точки прохождения, как они связаны со светодиодом?
При атачил визуально как шина 1wire выглядит у меня, вместо роутера как раз должне быть девайс на mega8.

Нажмите для просмотра прикрепленного файла
andrey videoplus
только я так понимаю вместо роутера атмега? Если есть возможность влезть программный код - предлагаю прогнать программу по частям от начала до конца с выводом на светодиод точек прохода.
например, даем старт, потом ждем ответ, если ответ приходит засветить светодиод и стоп программа. если нет разбираемся почему мк не "видит ответа". если есть переносим точку прохода дальше по программе до самого конца, и ищем участок, после которого все идет не так как должно.
но судя по всему у Вас проблема с таймингами (временные интервалы). И еще важно делать осцилограмму возле ножки мк, так мы будем понимать что он читает и какие временные интервалы делает
TechMike
Цитата(andrey videoplus @ Sep 17 2015, 09:59) *
только я так понимаю вместо роутера атмега? Если есть возможность влезть программный код - предлагаю прогнать программу по частям от начала до конца с выводом на светодиод точек прохода.
например, даем старт, потом ждем ответ, если ответ приходит засветить светодиод и стоп программа. если нет разбираемся почему мк не "видит ответа". если есть переносим точку прохода дальше по программе до самого конца, и ищем участок, после которого все идет не так как должно.
но судя по всему у Вас проблема с таймингами (временные интервалы). И еще важно делать осцилограмму возле ножки мк, так мы будем понимать что он читает и какие временные интервалы делает


Тайминги скорее всего и плывут или не те. Оссцилограф есть, но он весь обмен, например поиск всех датчиков, записать от начала и до конца не может, т.к. не расчитан на это. Тогда уже выводить на не светодиод, а собирать в буфер и потом выдать в usart.
andrey videoplus
на светодиод это образно. Я бы поступил так: отключил все датчики и проверил с одним, если не работает подключил бы напрямую к контроллеру. Если напрямую работает, а удаленно нет. Значит проблема с линией, надо увеличивать тайминги, и таким образом понижать скорость. Как правило "валит фронты" длинная линия, вернее ее емкость. Из практики лечится только понижением скорости. Я в свое время намучился с этой проблемой. Это при условии что нет помех, по этому кабелю больше ничего не подключено?? Если да - отключить все, даже безобидный удаленный светодиод. причем отключать все контакты.

Если даже напрямую не работает тут уже поэтапно методом "светодиода"))).

P.S. Только сейчас заметил что в линию подается отдельно 5В и 12В, я так понимаю для питания еще чего-то? Тоже отключите, импульсный блок питания дает пульсации, и чем больше ток тем больше наводки.
TechMike
Цитата(andrey videoplus @ Sep 17 2015, 12:08) *
на светодиод это образно. Я бы поступил так: отключил все датчики и проверил с одним, если не работает подключил бы напрямую к контроллеру. Если напрямую работает, а удаленно нет. Значит проблема с линией, надо увеличивать тайминги, и таким образом понижать скорость. Как правило "валит фронты" длинная линия, вернее ее емкость. Из практики лечится только понижением скорости. Я в свое время намучился с этой проблемой. Это при условии что нет помех, по этому кабелю больше ничего не подключено?? Если да - отключить все, даже безобидный удаленный светодиод. причем отключать все контакты.

Если даже напрямую не работает тут уже поэтапно методом "светодиода"))).


Попробую с новой биллиотекой по принципу как написали. На макетке пока все работает.
andrey videoplus
Если на макетке работает с одним датчиком - также на макетке собрать и проверить работу всех датчиков одновременно. Это сэкономит время в будущем.
TechMike
Цитата(andrey videoplus @ Sep 17 2015, 12:55) *
Если на макетке работает с одним датчиком - также на макетке собрать и проверить работу всех датчиков одновременно. Это сэкономит время в будущем.


с 3шт. на макетке работает нормально, т.е. проблемы именно при работе с реальной шиной.
andrey videoplus
Лучше не меняйте библиотеку, ведь с этой точно все работает. отключите от шины все лишнее со всех сторон и по одному подключайте датчик в места их установки, начиная от ближнего и до дальнего. После каждого подключенного датчика проверяйте работоспособность.
Может проблема не в таймингах, а в наводках.
Onkel
Цитата(andrey videoplus @ Sep 17 2015, 13:05) *
Лучше не меняйте библиотеку, ведь с этой точно все работает. отключите от шины все лишнее со всех сторон и по одному подключайте датчик в места их установки, начиная от ближнего и до дальнего. После каждого подключенного датчика проверяйте работоспособность.
Может проблема не в таймингах, а в наводках.

может и в датчиках. у меня датчики по полтора бакса с митино, по одному все работают, а в группах по 4 не все работают, видно как -то мешают друг другу- приходится подбирать.
Сергей Борщ
Цитата(Onkel @ Sep 18 2015, 12:57) *
может и в датчиках. у меня датчики по полтора бакса с митино, по одному все работают, а в группах по 4 не все работают, видно как -то мешают друг другу- приходится подбирать.
Простите, а на какой завод вы это будете ставить (чтобы при случае стороной обходить)?

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

Покажите хотя бы осциллограммы на датчиках. "Библиотеки" из интернета в большинстве своем пишутся абы как, но, видимо, подбирать датчики под библиотеку с помойки все же проще, чем разобраться как это работает и сделать правильно=надежно.
andrey videoplus
Цитата(Onkel @ Sep 18 2015, 12:57) *
может и в датчиках. у меня датчики по полтора бакса с митино, по одному все работают, а в группах по 4 не все работают, видно как -то мешают друг другу- приходится подбирать.


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

Готовые библиотеки хороши когда Вы делаете "для себя", но если планируется производство - то нельзя лениться, нужно изучить протокол и написать свою библиотеку.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.