Вопросы по работе с термометрами DS18B20
Помогите пожалуйста разобраться, у меня такая проблема:
в общем стоит на авто термометр, термостат управления вентилятором охлаждения, оба устройства на МК и подключены к одному датчику DS18B20. Термометр показывает температуру как положено, термостат включает вентилятор когда положено. Все работает. Оба устройства на пик16ф84. В термометре по схеме со средней ножки датчика подтяжка - резистор на 10к к плюсу. В термостате тоже на 10к. Тут я подцепил к датчику еще одно устройство на меге8. Те два устройства продолжали исправно регестрировать температуру, а новое не определяло эту самую тепературу. Так вот вопрос, может ли такая комбинация устройств работать в принципе? Если да, то в чем может быть причина не видиния третим устройством датчика?
Ставить второй датчик расточительствоЮ, да и место для него нет.
в общем стоит на авто термометр, термостат управления вентилятором охлаждения, оба устройства на МК и подключены к одному датчику DS18B20. Термометр показывает температуру как положено, термостат включает вентилятор когда положено. Все работает. Оба устройства на пик16ф84. В термометре по схеме со средней ножки датчика подтяжка - резистор на 10к к плюсу. В термостате тоже на 10к. Тут я подцепил к датчику еще одно устройство на меге8. Те два устройства продолжали исправно регестрировать температуру, а новое не определяло эту самую тепературу. Так вот вопрос, может ли такая комбинация устройств работать в принципе? Если да, то в чем может быть причина не видиния третим устройством датчика?
Ставить второй датчик расточительствоЮ, да и место для него нет.
- Pooher
- Мучитель микросхем
- Сообщения: 491
- Зарегистрирован: Вс янв 07, 2007 01:45:48
- Откуда: Российская Федерация, будь она неладна...
delay писал(а):Так, какова же частота опроса датчика получается? Насколько я знаю высокую частоту им давать нельзя, - будут греться.
В бесконечном цикле, это на частоте кристала получается?
Запуск преобразования температуры не рекомендуется выполнять чаще одного раза в секунду. В противном случае DS-ка начинает греться, и соответственно, врать.
Научить нельзя, можно научиться. Пифагор.
Вставь недостающие буквы в слово *у*ня. Если у тебя получилось слово кухня, значит ты интеллигентный человек.
Вставь недостающие буквы в слово *у*ня. Если у тебя получилось слово кухня, значит ты интеллигентный человек.
- delay
- Нашел транзистор. Понюхал.
- Сообщения: 173
- Зарегистрирован: Чт мар 20, 2008 20:33:43
- Контактная информация:
Я делал так.
Опрос датчиков. Выявление количества. Индикация количества.
Получение данных с 0-го датчика. Индикация номера 0-го датчика. Пауза 300 мс. Т.е. в течении 300 мс на индикаторе показан номер 0-го датчика. Индикация температуры 0-го датчика. Пауза 500 мс. Т.е в течении 500 мс показывается температура 0-го датчика. Следующий датчик. и так по кругу. В прерываниях - динамическая индикация. На момент опроса датчиков - запрет прерывания. Таким образом у меня один датчик опрашиватеся один раз в ~2.5 с
Опрос датчиков. Выявление количества. Индикация количества.
Получение данных с 0-го датчика. Индикация номера 0-го датчика. Пауза 300 мс. Т.е. в течении 300 мс на индикаторе показан номер 0-го датчика. Индикация температуры 0-го датчика. Пауза 500 мс. Т.е в течении 500 мс показывается температура 0-го датчика. Следующий датчик. и так по кругу. В прерываниях - динамическая индикация. На момент опроса датчиков - запрет прерывания. Таким образом у меня один датчик опрашиватеся один раз в ~2.5 с
- delay
- Нашел транзистор. Понюхал.
- Сообщения: 173
- Зарегистрирован: Чт мар 20, 2008 20:33:43
- Контактная информация:
Сейчас глянул листинг своей программы. Оказывается тайминг опроса у меня задается в таймере 1. В теле его функции инвертируется значение переменной Х. В случае, когда Х не равен 0 происходит опрос. А длительность индикации номера датчика и температуры можно менять исходя из их количества.
Еще у меня используется прерывание таймера 2 для звукового сигнала в случае выхода температуры за допустимый диаппазон. А таймер 0 для динамической индикации.
Еще у меня используется прерывание таймера 2 для звукового сигнала в случае выхода температуры за допустимый диаппазон. А таймер 0 для динамической индикации.
сергейф писал(а):исправно регестрировать температуру, а новое не определяло эту самую тепературу. Так вот вопрос, может ли такая комбинация устройств работать в принципе? Если да, то в чем может быть причина не видиния третим устройством датчика? Ставить второй датчик расточительствоЮ, да и место для него нет.
если я правильно вас понял, то у вас на один датчик 3 контроллера.
и у каждого контроллера подтяжка информационной линии по 10к.
Во первых проверьте работоспособность ус -ва на mega8 , во вторых
надо согласовать работу трех устройств, на один датчик.
Зы. вообще-то я бы от такой схемы отказался. 3 устройства и один датчик, один датчик выходит из строя и 3 ус-ва остаются без "глаз" , вдобавок возможен пиндык двигателю.
сергейф писал(а):да у меня один датчик на три устройства.
устройство на меге работает точно.
На термометре и термостате подтяжка 10к, на 3-ем устройстве подтяжку убрал.
проверяйте правильность подключение меги к шине.
неплохо бы посмотреть схему соединения всех устройств к одному
датчику. очередность опроса установлена.? как опрашиваете датчик,
по номеру, или как единственное ус-во на шине во всех контроллерах?
вот схема.
в устройствах на пике я к сожалению не знаю как опрашивается датчик (прикрепил исходник термостата на пике, может поможет, исходников термометра и устр-ва на меге нет), но в устройстве на меге датчик опрашивается как одно устройство на шине это я точно знаю.
Еще скажу что устройства разробатывал не я, все они найдены в сети, в разные периоды моей жизни. Соответственно очередность опрашивания не установлена.
в устройствах на пике я к сожалению не знаю как опрашивается датчик (прикрепил исходник термостата на пике, может поможет, исходников термометра и устр-ва на меге нет), но в устройстве на меге датчик опрашивается как одно устройство на шине это я точно знаю.
Еще скажу что устройства разробатывал не я, все они найдены в сети, в разные периоды моей жизни. Соответственно очередность опрашивания не установлена.
- Вложения
-
- .GIF
- (3.07 КБ) 700 скачиваний
-
- therm18B20охлаждает.ASM
- (19.09 КБ) 605 скачиваний
сергейф писал(а):вот схема.
в устройствах на пике я к сожалению не знаю как опрашивается датчик (прикрепил исходник термостата на пике, может поможет, исходников термометра и устр-ва на меге нет), но в устройстве на меге датчик опрашивается как одно устройство на шине это я точно знаю.
Еще скажу что устройства разробатывал не я, все они найдены в сети, в разные периоды моей жизни. Соответственно очередность опрашивания не установлена.
просмотрел вашу схему, есть вопрос, у вас +5В каждого контроллера
обьединены или нет? судя по исходнику опрос датчика у вас ведется
как единственного датчика на шине. номер датчика и контроль посланных данных не ведется. если питания не объединены то
для меги резистор тоже нужен. Попробуйте поставить резистор, если работать не будет, то можно попробовать запитать все контроллеры
от одного источника +5в, и если не получиться, то видимо придется
переписывать софт на контроллерах, и дорабатывать схему.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
интересно, а как решается вопрос одновременных или почти одновременных обращений к датчику от разных МК? в этом случае однозначно будут искажения данных!
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
+5в не объеденены, для каждого устройства свой стабилизатор напряжения.
резистор для меги ставил всеравно не работает.
объеденить +5в попробую в ближайшее время.
кстати термометр с этого сайта статья называется "Двухточечный термометр на DS18B20 и микроконтроллере PIC16F84 (A)", только программа у меня переделана чтобы термометр был включен постояно. Там выложен исходник но почему-то мне кажется что там хекс не от этого исходника (я мало соображаю в программировании поэтому могу ошибаться). Вот я его выложил.
А переписать софт можно только на меге и то если автор согласиться.
Еще, напомню, что термометр с термостатом работают вместе исправно, подключаю устройство на меге оно не определяет температуру, а термометр с термостатом продолжают исправно определять.
резистор для меги ставил всеравно не работает.
объеденить +5в попробую в ближайшее время.
кстати термометр с этого сайта статья называется "Двухточечный термометр на DS18B20 и микроконтроллере PIC16F84 (A)", только программа у меня переделана чтобы термометр был включен постояно. Там выложен исходник но почему-то мне кажется что там хекс не от этого исходника (я мало соображаю в программировании поэтому могу ошибаться). Вот я его выложил.
А переписать софт можно только на меге и то если автор согласиться.
Еще, напомню, что термометр с термостатом работают вместе исправно, подключаю устройство на меге оно не определяет температуру, а термометр с термостатом продолжают исправно определять.
- Вложения
-
- timerb20.asm
- (9.81 КБ) 590 скачиваний
сергейф писал(а):+5в не объеденены, для каждого устройства свой стабилизатор напряжения.
резистор для меги ставил всеравно не работает.
объеденить +5в попробую в ближайшее время.
не обьединяйте на прямую +5в источников от разных контроллеров,
может получиться пых...
запитывайте все контроллеры от одного источника +5В.
вероятнее всего у вас не получиться 3 разных устройства обьединить
одним датчиком, и разработанных без учета друг друга. Мегу таки лучше
посадите на свой датчик, меньше усилий и нервов затратите.
- shtorm
- Нашел транзистор. Понюхал.
- Сообщения: 185
- Зарегистрирован: Чт янв 22, 2009 14:03:25
- Контактная информация:
ув. Коты!
извените что не в тему...
подскажите как можно решить такой вопрос:
//ds18b20, mega8,CVAVR, семимегментник.
при опросе датчика гаснет индекатор ровно на столько времени сколько занимает внутренее преобразование в зависимости от режима работы датчика...как обойти эту проблему используя стандартные библиотеки?(желательно) ф-цию опроса использую штатную:
temp=ds18b20_temperature(&ds18b20_rom_codes[i][0]);
я использовал тоже самое в проекте с жк дисплеем но там боялся что собьються таймеры но вовремя опроса таймеры работают четко...а вот почему семисегментник гаснет?
P.S. мдя...тема походу заеженна ((
извените что не в тему...
подскажите как можно решить такой вопрос:
//ds18b20, mega8,CVAVR, семимегментник.
при опросе датчика гаснет индекатор ровно на столько времени сколько занимает внутренее преобразование в зависимости от режима работы датчика...как обойти эту проблему используя стандартные библиотеки?(желательно) ф-цию опроса использую штатную:
temp=ds18b20_temperature(&ds18b20_rom_codes[i][0]);
я использовал тоже самое в проекте с жк дисплеем но там боялся что собьються таймеры но вовремя опроса таймеры работают четко...а вот почему семисегментник гаснет?
P.S. мдя...тема походу заеженна ((