Поскольку аппаратной реализации нет(открытый коллектор и пр.), предлагаю шину 1wire питать не от шины питания, а от вывода микроконтроллера через ограничительный резистор(номинал , а измерять другой ножкой. Плюс минус одна ножка- редко что то решает, но гарантировано не попадет в землю единичка с микроконтроллера. И управление уровнем становится элементарным. Большое спасибо вам за Ваши курсы.
Собрал конструкцию с этим датчиком. Код не отсюда. Работой этого датчика впечатлен. Рекомендую. Одно не понятно, возможно что то не так сделал - сотые доли градуса как то странно скачут.... Перескакивают через значения. Например, температура растет... 24,15гр.С, а затем 25.0гр.С. Почему нет с 24,16 по 24.99гр.С? Измерял на холоде до - 20гр.С и до 100гр.С - все нормально. Кто собирал, посоветуйте... Или это так и работает?
уважаемый narod stream а можно ли вместо DS18B20 .подключить lm 75 или lm335(они дешевле почти в три раза DS18B20) и как это сделать и нужно ли прошивку переделывать ?
спасибо за познавательные уроки. Вопрос - если на шине много датчиков их опрос будет зависеть только от их последовательного месторасположения? нужно опросить около 50 датчиков и их показания 1 или 0 должны оставаться в тойже последовательности в которой они подключены к шине.
"оставаться в той же последовательности, в которой они подключены к шине." Думаю, это очень неправильное предположение. Почитайте описание протокола 1wire. Каждое устройство (датчик) имеет свой адрес (2 в степени 48 для одного семейства датчиков) и набор команд для обмена. Контроллер формирует сброс, получает отклик от "датчика" (так будем называть подчиненный модуль), указывает адрес датчика для работы с ним. До следующего сброса (длинный ноль от микроконтроллера) все команды от микроконтроллера будут восприниматься только указанным датчиком. Адреса ваших датчиков можно узнать, подключая их по одному на шину и воспользоваться командой "прочитать адрес" или специальным более сложным алгоритмом определения всех адресов на шине. Это вкратце, чтобы Вы определились, нужно это Вам или нет.
Usto Yershovets Спасибо! Я уже думал об этом. У меня пока такой датчик только один, если появится несколько, я попробую их подключить. Мы в уроке пользовались упрощенным механизмом без использования ROM. Если использовать уникальные адреса и опрашивать, то в принципе можно реализовать наличие нескольких датчиков на шине. Просто получится всё это очень медленно, где-то секунда будет уходить на опрос каждого, а то и больше, но если никуда не спешить и измерять просто температуру в нескольких местах, то это нормально. Но вряд ли это потребуется где-то, кроме научных опытов. Как правильно раздельный контроллер на каждый датчик и по беспроводным технологиям передача на центральный контроллер.
Usto Yershovets Предполагается такая схема. 50 датчиков их имена 1-50. при срабатывании например 5 датчика он и должен быть на 5-м месте в сети. я так понимаю что при опросе датчиков по их уникальному имени мы не сможем определить их расположение в сети. допустим при выходе из строя 7-го датчика просто заменить его другим и он определился как 7-й в последовательности. Не хочется в датчик устанавливать МК с заранее прописанным именем-местом. может быть путаница при сборке сети и при замене датчиков. Можете подсказать как реализовать привязку датчика к его месту в сети.
Очень туманная постановка задачи. Имена с 1 по 50 - это бирка на датчике или имя переменной в программе или уникальный номер устройства для протокола 1wire(он там 64-битный) или номер окна, на котором он замыкается ? Для одного бита на именованый датчик - не слишком сложно. Может сдвиговый регистр? И не совсем понятно выражение "на 5-м месте в сети". Охранная с разнесенными датчиками?
Можно еще один вопрос? Вывод значения температуры на атмега8 выполнятеся нормально, а на аттини2313 выводится значение 55. Как ни крутил не понимаю в чем ошибка. Если есть возможность посмотрите пожалуйста проект. Заранее спасибо. Ссылка на гугл диск: drive.google.com/open?id=0B494-Gaikan8OTF2RkJDb0djZG8
Уроки отличного качества, только не бросайте это дело! У меня вопрос, я пробовал перенести этот проект на Таньку 2313А, но датчик DS18B20 никак не отвечает. Где искать ошибку в инициализации датчика или в настройках регистров контроллера? И как реализовать показания отрицательной температуры? Так же использовал для индикации 7-ми сегментный индикатор. Да и еще музыка из старой заставки лучше ruclips.net/video/Kw2aI7Hx4h8/видео.html
Спасибо за добрый комментарий! Музыка мне тоже больше нравилась, но должна быть короткой, не больше 5 секунд. Прошлую было до такой длины тяжело сократить, поэтому пока так. В тех.документации есть всё насчет знака. Знаковый бит находится в определённых регистрах регистра данных, вот и используйте его. Я просто не пробовал. Эксперементируйте. Возможно там по принципу знаковых целых величин. Где-то в датчиках MEMS в уроках по STM мы с этим делом игрались, я точно не помню.
Огромное спасибо за вашу работу !!!!!!!!!!!!!!!!!!!
Рад что есть такие люди как Вы! Спасибо за труды!
И Вам спасибо за то, что мои труды цените и смотрите мои уроки! Значит не зря стараюсь.
Добрый день. Спасибо за уроки)
Поскольку аппаратной реализации нет(открытый коллектор и пр.), предлагаю шину 1wire питать не от шины питания, а от вывода микроконтроллера через ограничительный резистор(номинал , а измерять другой ножкой. Плюс минус одна ножка- редко что то решает, но гарантировано не попадет в землю единичка с микроконтроллера. И управление уровнем становится элементарным.
Большое спасибо вам за Ваши курсы.
и снова интересный урок)))))
Собрал конструкцию с этим датчиком. Код не отсюда. Работой этого датчика впечатлен. Рекомендую. Одно не понятно, возможно что то не так сделал - сотые доли градуса как то странно скачут.... Перескакивают через значения. Например, температура растет... 24,15гр.С, а затем 25.0гр.С. Почему нет с 24,16 по 24.99гр.С? Измерял на холоде до - 20гр.С и до 100гр.С - все нормально.
Кто собирал, посоветуйте... Или это так и работает?
Огромное спасибо. Правда два раза уснул =)
Спасибо за урок
+Дима Дубина
Я рад, что Вам нравятся мои труды!
А почему в протеусе не видно отрицательную температуру.И как её вывести?
уважаемый narod stream
а можно ли вместо DS18B20 .подключить lm 75 или lm335(они дешевле почти в три раза DS18B20) и как это сделать и нужно ли прошивку переделывать ?
Конечно нужно всё переделывать, протоколы и шины даже совсем другие. Почитайте техническую документацию на данные датчики - и всё станет ясно.
спасибо за познавательные уроки. Вопрос - если на шине много датчиков их опрос будет зависеть только от их последовательного месторасположения? нужно опросить около 50 датчиков и их показания 1 или 0 должны оставаться в тойже последовательности в которой они подключены к шине.
Я не поробовал подключать более одного датчика
"оставаться в той же последовательности, в которой они подключены к шине." Думаю, это очень неправильное предположение. Почитайте описание протокола 1wire. Каждое устройство (датчик) имеет свой адрес (2 в степени 48 для одного семейства датчиков) и набор команд для обмена.
Контроллер формирует сброс, получает отклик от "датчика" (так будем называть подчиненный модуль), указывает адрес датчика для работы с ним. До следующего сброса (длинный ноль от микроконтроллера) все команды от микроконтроллера будут восприниматься только указанным датчиком.
Адреса ваших датчиков можно узнать, подключая их по одному на шину и воспользоваться командой "прочитать адрес" или специальным более сложным алгоритмом определения всех адресов на шине.
Это вкратце, чтобы Вы определились, нужно это Вам или нет.
Usto Yershovets Спасибо! Я уже думал об этом. У меня пока такой датчик только один, если появится несколько, я попробую их подключить. Мы в уроке пользовались упрощенным механизмом без использования ROM. Если использовать уникальные адреса и опрашивать, то в принципе можно реализовать наличие нескольких датчиков на шине. Просто получится всё это очень медленно, где-то секунда будет уходить на опрос каждого, а то и больше, но если никуда не спешить и измерять просто температуру в нескольких местах, то это нормально. Но вряд ли это потребуется где-то, кроме научных опытов. Как правильно раздельный контроллер на каждый датчик и по беспроводным технологиям передача на центральный контроллер.
Usto Yershovets
Предполагается такая схема. 50 датчиков их имена 1-50. при срабатывании например 5 датчика он и должен быть на 5-м месте в сети. я так понимаю что при опросе датчиков по их уникальному имени мы не сможем определить их расположение в сети. допустим при выходе из строя 7-го датчика просто заменить его другим и он определился как 7-й в последовательности. Не хочется в датчик устанавливать МК с заранее прописанным именем-местом. может быть путаница при сборке сети и при замене датчиков. Можете подсказать как реализовать привязку датчика к его месту в сети.
Очень туманная постановка задачи. Имена с 1 по 50 - это бирка на датчике или имя переменной в программе или уникальный номер устройства для протокола 1wire(он там 64-битный) или номер окна, на котором он замыкается ? Для одного бита на именованый датчик - не слишком сложно. Может сдвиговый регистр? И не совсем понятно выражение "на 5-м месте в сети".
Охранная с разнесенными датчиками?
Здравствуйте скажите пожалуйста вы можете создать урок по программированию радиодатчика на DS18B20 на радиомодулях RF с Ализкспресс
У меня у одного Atmel Studio 7 не определяет регистр SREG?
Подскажите пожалуйста, как выводить текущее значение температуры с датчика не на lcd дисплей, а на семисегментный индикатор.
Да в принципе разницы нет, просто вместо lcd.c использовать библиотеку из урока по 4-разрядному индикатору.
Можно еще один вопрос? Вывод значения температуры на атмега8 выполнятеся нормально, а на аттини2313 выводится значение 55. Как ни крутил не понимаю в чем ошибка. Если есть возможность посмотрите пожалуйста проект. Заранее спасибо.
Ссылка на гугл диск: drive.google.com/open?id=0B494-Gaikan8OTF2RkJDb0djZG8
Уроки отличного качества, только не бросайте это дело! У меня вопрос, я пробовал перенести этот проект на Таньку 2313А, но датчик DS18B20 никак не отвечает. Где искать ошибку в инициализации датчика или в настройках регистров контроллера? И как реализовать показания отрицательной температуры? Так же использовал для индикации 7-ми сегментный индикатор. Да и еще музыка из старой заставки лучше ruclips.net/video/Kw2aI7Hx4h8/видео.html
Спасибо за добрый комментарий! Музыка мне тоже больше нравилась, но должна быть короткой, не больше 5 секунд. Прошлую было до такой длины тяжело сократить, поэтому пока так. В тех.документации есть всё насчет знака. Знаковый бит находится в определённых регистрах регистра данных, вот и используйте его. Я просто не пробовал. Эксперементируйте. Возможно там по принципу знаковых целых величин. Где-то в датчиках MEMS в уроках по STM мы с этим делом игрались, я точно не помню.
а можно заставить термометр (термостат) определять математическую разность между большей и меньшей температуры
+Andrew Markelov
Ну конечно можно. Использовать две переменных и сохранять туда температуры. А затем вычитать друг из друга.