Page 2 of 27

Re: Термометр на ATtiny2313 и DS18B20

Posted: 14 Apr 2009 15:03
by hardlock
Прилепил сюда на всяк случай...

Re: Термометр на ATtiny2313 и DS18B20

Posted: 20 Apr 2009 18:14
by Sasha
подскажите как проверить ds18b20 (они продаются уже прошитые ли надо самому)

Re: Термометр на ATtiny2313 и DS18B20

Posted: 20 Apr 2009 19:17
by hardlock
Sasha wrote:они продаются уже прошитые ли надо самому
Ничего прошивать не надо. В них только устанаваивается разрешение 9 - 12 бит. Всё остальное уже в них есть и не (пере)программируется.
Проверить проще всего собрав термометр и прям на рынке или в магазине подключить датчик. Должен показывать температуру сразу (через 1 секунду после включения).

Re: Термометр на ATtiny2313 и DS18B20

Posted: 20 Apr 2009 19:22
by Sasha
В них только устанаваивается разрешение 9 - 12 бит.это как ?простите за глупые вопросы

Re: Термометр на ATtiny2313 и DS18B20

Posted: 20 Apr 2009 19:29
by hardlock
программно. Если Вы правильно поняли, то это цифровые датчики. Общение с ними происходит по протоколу 1-wire. Крроме считывания температуры и друхих параметров (8 байт серийный номер и т.д.) можно в него ещё кой чего записать. Например установить разрешающую способность измерения. При 12 битах (по-умолчанию) получается одно деление 0,0625 градуса Цельсия. В инете инфы по ним масса. Почитайте.

Re: Термометр на ATtiny2313 и DS18B20

Posted: 23 Apr 2009 15:50
by Telek
Поизвращался еще над термометром. Теперь термометр имеет настройки:
1. Время индикации(задержка перед засыпанием) (5-90секунд с шагом 5с).
2. Отображать/не отображать температуру измеренную до засыпания, после просыпания(off/on). Если off - после просыпания до первого измерения текущей температуры(в течении 1сек на экране ---), если on в течении первой секунды отображается предыдущая температура.
3. Периодичность автоматического измерения температуры(0-60мин с шагом 1мин) 0 = автоматическое измерение выключено.
Вход в настройки по длинному(более 1сек) нажатию на кнопку в режиме отображения температуры. Изменение настраиваемого параметра - короткое нажатие на кнопку. Переход к настройке следующего параметра и запоминание параметра - длинное нажатие. Значения сохраняются во флешке. Если в течении 10сек не менять значение - происходит автоматический выход без сохранения.

Кроме этого термометр запоминает мин/макс температуру. Для просмотра в режиме отображения температуры - короткое нажатие на кнопку - мин значение, повторное нажатие -макс значение, следующее нажатие - выход в режим отображения температуры. Если в течении 10 сек ничего не нажимать - выйдет автоматом. При отображении мин/макс температуры длинное нажатие - сброс соответствующего значения.

Теперь об автоматическом измерении и периодичности. Если значение - 0, автоматическое измерение не проводится. Т.е. термометр просыпается только по нажатию кнопки. Соответственно мин и макс значения запоминаются только в моменты ручного просыпания. Если хочется чтобы термометр сам периодически замерял температуру(для корректного запоминания мин/макс значений) - выставляем значение от 1-до 60(минуты). Тогда с заданным периодом термометр будет просыпаться и замерять температуру и засыпать. Во время измерения в автоматическом режиме температура на экран не выводится(на экране на время измерения отображаются все точки... чисто для контроля, что все пучком - работает :-) )
Выключение режима автоматического измерения служит для продления жизни батареек. В режиме когда автоматическое измерение выключено микропроцессор засыпает в Power-Down, т.е. реагирует только на внешнии прерывания, но при этом кушает меньше 1мкА. В режиме автоматических измерений уже в Power-Down заснуть нельзя - нужна работа таймера. Поэтому микропроцессор засыпает в режиме Idle. Чтобы как-то еще уменьшить потребление, частоту процессора снижаю на время спячки до 31250Гц... Потребление в Idle в таком режиме составляет порядка 0.1мА
Т.е. алгоритм примерно такой:
Перед спячкой проверяется значение переода автоматического измерения. Если 0 - засыпаем в Power-Down. Если больше нуля - уменьшаем частоту до 31250, выключаем таймерТ0(отвечает за периодичность измерений в нормальном режиме),включаем таймер(Т1), который разбудит через заданное время для автоматического измерения. и засыпаем процессор в Idle. Далее, когда срабатывает таймер, повышаем частоту до нормальной(1МГц) измеряем и опять по кругу(снижение частоты, перезапуск таймера(Т1), спячка ). Если микропроцессор будится после Idle по кнопке - опять делается почти тоже самое: повышение частоты до нормальной, стопорение таймера (Т1 - в данном случае отвечает за автоматическое пробуждение из Idle), запуск таймера Т0(отвечает за периодичность замеров температуры в режиме отображения) и т.д.

Все эти извращения с понижением частоты делал с целью уменьшения потребления, т.к. хочу питать от батареек. Разводки платы пока нет, т.к. собрано пока все на макетке.
Можно также все испытать в протеусе, если взять модель в из предыдущего варианта. Единственное - нужно в модели выствить фузе бит предделителя на 8(CKDIV8), т.к. иначе протеус будет глючить с записью во флеш. Если делать в "железе" - то настройка фьюзов по дефолту(т.е. как с завода) - 8МГц от внутреннего генератора и предделитель на 8(CKDIV8)... хотя если собирать в "железе" на фьюз предделителя пофиг, т.к предделитель все равно настраивается в самой программе.

ЗЫ. Код во вложении. (Наконец-то нашел как тут вложения прикручиваюся :-) )

Re: Термометр на ATtiny2313 и DS18B20

Posted: 23 Apr 2009 15:58
by hardlock
Telek, браво! :bravo:
Это самая большая награда мне! Когда кто-то не просто повторяет конструкцию, но и дорабатывает её...

Спасибо, что не забыли отписаться! :drink:

Re: Термометр на ATtiny2313 и DS18B20

Posted: 23 Apr 2009 16:12
by Telek
Да не за что, тебе тоже огромное спасибо за то, что выкладываешь проекты с исходниками - можно покрутить и по извращаться.

ЗЫ. Вот еще приложил схему, т.к. она чутка изменена, в плане использования портов.

Re: Термометр на ATtiny2313 и DS18B20

Posted: 26 Apr 2009 20:02
by Telek
Сделал термометр в железе. Прилагаю фотоотчет.

Добавлено спустя 3 минуты 21 секунду:
И еще пару фоток. Завтра скину печатку и прошивку под эту печатку.

ЗЫ. В железе собирал с транзисторами на общих коллекторах индикаторов.

Re: Термометр на ATtiny2313 и DS18B20

Posted: 26 Apr 2009 22:09
by hardlock
Telek wrote:В железе собирал с транзисторами на общих коллекторах индикаторов
Если не секрет, зачем? Ведь делалось всё для упрощения конструкции?

Re: Термометр на ATtiny2313 и DS18B20

Posted: 26 Apr 2009 23:07
by Telek
hardlock wrote: Если не секрет, зачем? Ведь делалось всё для упрощения конструкции?
Перестраховался. Хотел питать от 3в и ниже(две батарейки ААА). Напряжение достаточно низкое, и поэтому с транзисторами как-то ярче получается и плюс не хотелось нагружать порты при низком питании - процессору и так тяжко. Но на макетке все делал без резисторов и т.д. - проработало это все у меня недели 2-3(причем ребенок постоянно игрался) - ничего не сгорело, глюков тоже не было. Больше за яркость волновала. Тем более в корпусе место было - поэтому решил заполнить под завязку. Кстати, при сборке место закончилось и я выкраивал уже милиметры... :mrgreen: даже думал микропроцессоры крышку обточить, проклиная себя за то, что жалко было ставить процессор в мелком корпусе :-)

Re: Термометр на ATtiny2313 и DS18B20

Posted: 26 Apr 2009 23:11
by hardlock
Telek wrote:Больше за яркость волновала
А не пробовали без транзисторов? Большая разница в яркости получилась? А то я в транзисторами вообще не собирал, а падение напряжения на портах (при 5В питании) без них - мизерное.

Re: Термометр на ATtiny2313 и DS18B20

Posted: 27 Apr 2009 10:57
by Telek
hardlock wrote:
Telek wrote:Больше за яркость волновала
А не пробовали без транзисторов? Большая разница в яркости получилась? А то я в транзисторами вообще не собирал, а падение напряжения на портах (при 5В питании) без них - мизерное.
Я на макетке все делал без транзисторов, + цеплял транзистор на один разряд... субективно разница практически не заметна. Поэтому конечно по хорошему транзисторы можно не ставить... и схема проще и деталей меньше.

Re: Термометр на ATtiny2313 и DS18B20

Posted: 27 Apr 2009 11:08
by hardlock
Telek wrote:и схема проще и деталей меньше.
:-) к чему собственно и стремился при разработке схемы...

вот моя конструкция переносного термометра:
IMG_2621.JPG
IMG_2625.JPG
сверху кнопка, которая коммутирует питание (без фиксации, поэтому её нужно удерживать).
Питание - одна батарейка ААА. Преобразователь - один из описаных GSM Power.

Re: Термометр на ATtiny2313 и DS18B20

Posted: 27 Apr 2009 11:21
by Telek
О как компактненько! и корпус зачетный... это из чего такой корпус?
ЗЫ. Понравилось как заделал клеммы для батарейки.

Re: Термометр на ATtiny2313 и DS18B20

Posted: 27 Apr 2009 11:27
by hardlock
Telek wrote:это из чего такой корпус?
у нас на радио рынке продают - совсем дешёвенькие (по 1гривне). ни наименования, ничего...
Продаются красные, чёрные (непрозрачные), тёмно-серые (дымчатые прозрачные). Половинки взаимозаменяемые. Собираются на 4-х пыптиках (видно возле клем батарейки).

Была ещё идея сделать шунтирование кнопки транзистором, управляемым от МК, но всё никак руки не дойдут, блин... :(

Re: Термометр на ATtiny2313 и DS18B20

Posted: 01 May 2009 23:10
by hardlock
Анатолий Николаевич wrote:Как ввести в конструкцию термометра второй датчик? (хочется температуру дом/улица).
Надо переписывать программу под 2 датчика. Изначально проект планировался как самая простая конструкция и 2 датчика не предполагалось. Как появится время могу попробовать сделать такой проект, но пока его (времени) нет...
Анатолий Николаевич wrote:Почему на пределе минус значение температуры -28,3 градуса, а показания 58,5 градусов? Как решить эту проблему?
Это прошивка от термометра или термостата?
Очень странно. Вроде проверял в морозилке - всё было нормально. Доступ к конструкции (на работе всё) будет только после праздников. Поэтому сейчас ничего сказать не могу. Как только проверю - сразу отпишусь.

Re: Термометр на ATtiny2313 и DS18B20

Posted: 09 May 2009 22:46
by Yoake
Вот собрал схемку на макетной плате на ATtiny2313, прошил http://www.hardlock.org.ua/cgi-bin/down ... led_oa.rar этим файлом, всё запустилось, но на дисплее белиберда :)
Cначала показывает 0.0, а потом всякую ерунду, как будто сегменты полностью перепутаны. Кучу раз перепроверил соответствие распайки, на всяк случай пересмотрел посегментно дисплей - всё соответствует вроде... чуть позже попробую в протеусе прогнать.

Ещё чуть помучился, пробным путём определил, что все сегменты сдвинуты на 1, т.е. вместо сегмента A загорается В, вместо В - С и т.д. странно всё это...
Как вариант можно немного поправить программу :)

Всё, разобрался :)
В моём LED индикаторе сегменты промаркированы иначе. Совести нет у производителей - никаких стандартов нет :))))

Re: Термометр на ATtiny2313 и DS18B20

Posted: 09 May 2009 23:41
by hardlock
Yoake wrote:В моём LED индикаторе сегменты промаркированы иначе. Совести нет у производителей - никаких стандартов нет )))
Вот поэтому я и нарисовал посегментно индикатор с указанием наименования...

Re: Термометр на ATtiny2313 и DS18B20

Posted: 10 May 2009 11:03
by Yoake
Вобщем работает всё отлично, только перепаивать проводки обламался - отредактировал исходник и всё ок :)
Теперь вот подумываю подключить 4 датчика. Схему оставлю эту же, только кнопку добавлю для циклического переключения показаний. Нажал кнопку, показывает номер следующего датчика, опустил - показывает его температуру... может немного будет неудобно, зато минимум кнопок :)
Вобщем буду изучать протокол передачи данных... если что-то получится, отпишусь.

Re: Термометр на ATtiny2313 и DS18B20

Posted: 23 May 2009 11:35
by Bobi
Уважаемый Hardlock.
Очень понравилась Ваша конструкция термометра.
Я не программирую контроллеры, но хочется повторить для дома сие девайс.
Убедительная к Вам, просьба.
Вышлите мне на e-mail:[email protected] прошивку для ОК, DS18b20, показания с десятыми долями и,
если есть возможность, на два датчика (дом-улица).
Буду очень благодарен за помощь.

Re: Термометр на ATtiny2313 и DS18B20

Posted: 23 May 2009 17:10
by hardlock
Bobi wrote:Вышлите мне на e-mail прошивку для ОК
А что Вам не позволяет скачать с основного сайта? Там есть и готовые прошивки и исходники...
Bobi wrote:если есть возможность, на два датчика (дом-улица).
нет - пока такой прошивки нет.

Re: Термометр на ATtiny2313 и DS18B20

Posted: 23 May 2009 18:02
by Bobi
Уважаемый Hardlock.
С основного сайта пробовал скачивать прошивку с ОК, но...
в результате скачивается файл размером 369 байт и не открывается.
Пробовал несколько раз. Скачивал Оперой.
В файле для Протеуса стоит датчик DS18S20. С датчиком DS18B20 девайс в Протеусе отказывается работать.
Да и с датчиком DS18S20 десятые доли не отображаются.
Исходя из этого я решил обратиться с, упомянутой выше, просьбой.

Re: Термометр на ATtiny2313 и DS18B20

Posted: 24 May 2009 08:01
by hardlock
Bobi wrote:Скачивал Оперой.
В этом вся проблема. Сейчас переделываю механизм скачивания на всём сайте. Для ОК - во вложении.

Re: Термометр на ATtiny2313 и DS18B20

Posted: 24 May 2009 10:36
by Bobi
Уважаемый Hardlock.
Подскажите, почему в Протеусе такая белиберда?
При подаче сигнала на 5 ногу высвечивается знак (-) и 0.0
Подскажите, где ошибка?