Страница 6 из 16

Добавлено: Пт апр 03, 2009 16:12:10
delay
Так, какова же частота опроса датчика получается? Насколько я знаю высокую частоту им давать нельзя, - будут греться.
В бесконечном цикле, это на частоте кристала получается?

Добавлено: Сб апр 04, 2009 14:41:35
сергейф
Помогите пожалуйста разобраться, у меня такая проблема:
в общем стоит на авто термометр, термостат управления вентилятором охлаждения, оба устройства на МК и подключены к одному датчику DS18B20. Термометр показывает температуру как положено, термостат включает вентилятор когда положено. Все работает. Оба устройства на пик16ф84. В термометре по схеме со средней ножки датчика подтяжка - резистор на 10к к плюсу. В термостате тоже на 10к. Тут я подцепил к датчику еще одно устройство на меге8. Те два устройства продолжали исправно регестрировать температуру, а новое не определяло эту самую тепературу. Так вот вопрос, может ли такая комбинация устройств работать в принципе? Если да, то в чем может быть причина не видиния третим устройством датчика?
Ставить второй датчик расточительствоЮ, да и место для него нет.

Добавлено: Сб апр 04, 2009 15:44:45
Pooher
delay писал(а):Так, какова же частота опроса датчика получается? Насколько я знаю высокую частоту им давать нельзя, - будут греться.
В бесконечном цикле, это на частоте кристала получается?
Запуск преобразования температуры не рекомендуется выполнять чаще одного раза в секунду. В противном случае DS-ка начинает греться, и соответственно, врать.

Добавлено: Сб апр 04, 2009 21:21:29
delay
Pooher писал(а):Запуск преобразования температуры не рекомендуется выполнять чаще одного раза в секунду. В противном случае DS-ка начинает греться, и соответственно, врать.
Вот-вот, и я об этом. Да и время опроса датчика при 12 битах занимает немало времени.

Добавлено: Сб апр 04, 2009 21:51:36
sachok
У меня 9 бит результата это на 1 датчик 100мс потом у меня 3 датчика а это уже 300мс плюс задержки в цикле и того выходит около 1 раза в секунду.

Добавлено: Сб апр 04, 2009 22:01:45
sachok
Какими методами Вы рекомендуете делать опрос допустим 1 раз в 2 секунди? Настраивать перывания, считать время или есть более гуманные методы?

Добавлено: Сб апр 04, 2009 23:11:00
delay
Я делал так.
Опрос датчиков. Выявление количества. Индикация количества.
Получение данных с 0-го датчика. Индикация номера 0-го датчика. Пауза 300 мс. Т.е. в течении 300 мс на индикаторе показан номер 0-го датчика. Индикация температуры 0-го датчика. Пауза 500 мс. Т.е в течении 500 мс показывается температура 0-го датчика. Следующий датчик. и так по кругу. В прерываниях - динамическая индикация. На момент опроса датчиков - запрет прерывания. Таким образом у меня один датчик опрашиватеся один раз в ~2.5 с

Добавлено: Вс апр 05, 2009 10:34:00
delay
Сейчас глянул листинг своей программы. Оказывается тайминг опроса у меня задается в таймере 1. В теле его функции инвертируется значение переменной Х. В случае, когда Х не равен 0 происходит опрос. А длительность индикации номера датчика и температуры можно менять исходя из их количества.
Еще у меня используется прерывание таймера 2 для звукового сигнала в случае выхода температуры за допустимый диаппазон. А таймер 0 для динамической индикации.

Добавлено: Вс апр 05, 2009 17:43:00
rat_bor
сергейф писал(а): исправно регестрировать температуру, а новое не определяло эту самую тепературу. Так вот вопрос, может ли такая комбинация устройств работать в принципе? Если да, то в чем может быть причина не видиния третим устройством датчика? Ставить второй датчик расточительствоЮ, да и место для него нет.
если я правильно вас понял, то у вас на один датчик 3 контроллера.
и у каждого контроллера подтяжка информационной линии по 10к.
Во первых проверьте работоспособность ус -ва на mega8 , во вторых
надо согласовать работу трех устройств, на один датчик.
Зы. вообще-то я бы от такой схемы отказался. 3 устройства и один датчик, один датчик выходит из строя и 3 ус-ва остаются без "глаз" , вдобавок возможен пиндык двигателю. :shock:

Добавлено: Вс апр 05, 2009 18:18:16
сергейф
да у меня один датчик на три устройства.
устройство на меге работает точно.
На термометре и термостате подтяжка 10к, на 3-ем устройстве подтяжку убрал.

Добавлено: Пн апр 06, 2009 19:12:25
rat_bor
сергейф писал(а):да у меня один датчик на три устройства.
устройство на меге работает точно.
На термометре и термостате подтяжка 10к, на 3-ем устройстве подтяжку убрал.
проверяйте правильность подключение меги к шине.
неплохо бы посмотреть схему соединения всех устройств к одному
датчику. очередность опроса установлена.? как опрашиваете датчик,
по номеру, или как единственное ус-во на шине во всех контроллерах?

Добавлено: Вт апр 07, 2009 15:38:47
сергейф
вот схема.
в устройствах на пике я к сожалению не знаю как опрашивается датчик (прикрепил исходник термостата на пике, может поможет, исходников термометра и устр-ва на меге нет), но в устройстве на меге датчик опрашивается как одно устройство на шине это я точно знаю.
Еще скажу что устройства разробатывал не я, все они найдены в сети, в разные периоды моей жизни. Соответственно очередность опрашивания не установлена.

Добавлено: Вт апр 07, 2009 21:28:46
rat_bor
сергейф писал(а):вот схема.
в устройствах на пике я к сожалению не знаю как опрашивается датчик (прикрепил исходник термостата на пике, может поможет, исходников термометра и устр-ва на меге нет), но в устройстве на меге датчик опрашивается как одно устройство на шине это я точно знаю.
Еще скажу что устройства разробатывал не я, все они найдены в сети, в разные периоды моей жизни. Соответственно очередность опрашивания не установлена.
просмотрел вашу схему, есть вопрос, у вас +5В каждого контроллера
обьединены или нет? судя по исходнику опрос датчика у вас ведется
как единственного датчика на шине. номер датчика и контроль посланных данных не ведется. если питания не объединены то
для меги резистор тоже нужен. Попробуйте поставить резистор, если работать не будет, то можно попробовать запитать все контроллеры
от одного источника +5в, и если не получиться, то видимо придется
переписывать софт на контроллерах, и дорабатывать схему.

Добавлено: Вт апр 07, 2009 21:49:53
ARV
интересно, а как решается вопрос одновременных или почти одновременных обращений к датчику от разных МК? в этом случае однозначно будут искажения данных!

Добавлено: Ср апр 08, 2009 07:36:11
rat_bor
никак он не решается, каждое устройство работает на датчик само по себе, не принимая в расчет наличие других контроллеров. а не пересекаются они наверное потому, что у каждого контроллера разный
период времени отводится на индикацию.

Добавлено: Ср апр 08, 2009 09:49:03
сергейф
+5в не объеденены, для каждого устройства свой стабилизатор напряжения.
резистор для меги ставил всеравно не работает.
объеденить +5в попробую в ближайшее время.
кстати термометр с этого сайта статья называется "Двухточечный термометр на DS18B20 и микроконтроллере PIC16F84 (A)", только программа у меня переделана чтобы термометр был включен постояно. Там выложен исходник но почему-то мне кажется что там хекс не от этого исходника (я мало соображаю в программировании поэтому могу ошибаться). Вот я его выложил.
А переписать софт можно только на меге и то если автор согласиться.
Еще, напомню, что термометр с термостатом работают вместе исправно, подключаю устройство на меге оно не определяет температуру, а термометр с термостатом продолжают исправно определять.

Добавлено: Ср апр 08, 2009 20:41:00
rat_bor
сергейф писал(а):+5в не объеденены, для каждого устройства свой стабилизатор напряжения.
резистор для меги ставил всеравно не работает.
объеденить +5в попробую в ближайшее время.
не обьединяйте на прямую +5в источников от разных контроллеров,
может получиться пых...
запитывайте все контроллеры от одного источника +5В.
вероятнее всего у вас не получиться 3 разных устройства обьединить
одним датчиком, и разработанных без учета друг друга. Мегу таки лучше
посадите на свой датчик, меньше усилий и нервов затратите.

Добавлено: Ср апр 08, 2009 21:17:48
shtorm
ув. Коты!
извените что не в тему...
подскажите как можно решить такой вопрос:
//ds18b20, mega8,CVAVR, семимегментник.
при опросе датчика гаснет индекатор ровно на столько времени сколько занимает внутренее преобразование в зависимости от режима работы датчика...как обойти эту проблему используя стандартные библиотеки?(желательно) ф-цию опроса использую штатную:
temp=ds18b20_temperature(&ds18b20_rom_codes[0]);

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

P.S. мдя...тема походу заеженна ((

Добавлено: Чт апр 09, 2009 07:57:07
сергейф
rat_bor писал(а): вероятнее всего у вас не получиться 3 разных устройства обьединить
одним датчиком, и разработанных без учета друг друга. Мегу таки лучше
посадите на свой датчик, меньше усилий и нервов затратите.
ладно так и сделаю :(

Добавлено: Чт апр 09, 2009 08:11:55
delay
shtorm писал(а):ув. Коты!
вот почему семисегментник гаснет?
Если у вас вывод индикации в прерывании, то он будет гаснуть на время опроса, если вы как предусматривается на время опроса отключаете прерывания.