Site Loader

Улучшенный термостат на ATtiny2313 и DS18B20 (ATtiny2313, С CAVR.ru

Рассказать в:

По многочисленным просьбам дорабатываю конструкцию «Термостат на attiny2313 и ds18b20». Теперь умеет:

  • Измерение температуры от -55°С до +125°С (шаг 0,1°С)
  • Установка температуры от -55°С до +124°С (шаг 0,1°С !!!).
  • Гистерезис от 0,1°С до 25°С

Схема.

На схеме показан второй вариант включения термодатчика, если он не захотел работать по однопроводной шине (что встречается очень редко).Обратите внимание, что подтягивающий резистор на 11 выводе должен быть именно 4,7кОм. Уменьшение или увеличение может привести к нестабильной работе датчика в случае включения по однопроводной схеме.

Индикатор можно применять как с общим анодом, так и с общим катодом — просто разные прошивки.

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

Управление:

Кнопками «+» и «-» устанавливают температуру включения нагрузки (на экране в первом сегменте отобразится символ подчёркивания «_»). 

При одновременном нажатии обеих кнопок устройство переходит в режим изменения гистерезиса (на экране в первом сегменте отобразится символ «d«). Длительное удержание одной из кнопок приводит к ускоренному перебору значений. При отсутствии нажатий на кнопки в течении 5 секунд прибор переходит в режим отображения измеренной температуры, при этом происходит запоминание изменённых параметров в энергонезависимую память.

Индикация:

В первом сегменте отображается точка, если Т < Т уст., т.е. нагрузка включена. Точка отображается во всех режимах, даже при изменении установленной температуры или гистерезиса (если сохраняется условие 

Т < Т уст.). В этом же сегменте будет отображаться знак минуса «-» при отрицательной температуре.

Логика изменения состояния управляющих выводов:

Довольно часто возникают вопросы насчёт этого, поэтому немного нарисую.

Пример 1 (нагрев):

  • Установим температуру = 25,5°С, гистерезис (dt) = 1,2°С.
  • Текущая температура 20 градусов. (pd2 = 1, pd3 = 0, горит «точка«).
  • Такое состояние будет сохранятся пока температура не достигнет Т уст. + dТ = 26,7°С.
  • Когда температура достигнет 26,7°С состояние выводов поменяется (pd2 = 0, pd3 = 1, не горит «точка«)
  • Такое состояние будет сохранятся пока температура не опустится до Т уст. = 25,5°С.
  • Когда температура опустится до 25,5°С состояние выводов поменяется (pd2 = 1, pd3 = 0, горит «точка«)
  • И так далее….

Пример 2 (охлаждение):

  • Установим температуру = -5,2°С, гистерезис (dt) = 1,5°С.
  • Текущая температура 20 градусов. (pd2 = 0, pd3 = 1, не горит «точка«).
  • Такое состояние будет сохранятся пока температура не упадёт до Т уст. = -5,2°С.
  • Когда температура упадёт до -5,2°С состояние выводов поменяется (pd2 = 1, pd3 = 0, горит «точка«)
  • Такое состояние будет сохранятся пока температура не поднимется до Т уст. + dТ = 6,7°С.
  • Когда температура поднимется до 6,7°С состояние выводов поменяется (pd2 = 0, pd3 = 1, не горит «точка«)
  • И так далее….

Таким образом термостат можно применять для использования как в нагревательных целях (тепловентилятор, обогревательный котёл, инкубатор и т.д.), так и для охлаждения (холодильник, морозильник, и т.д.).

Печатная плата:

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

Обратите внимание на перемычки под резисторами в районе стабилитронов — они для того, чтобы можно было не устанавливать резисторы, которые отвечают за защиту от статического электричества (на схеме помечены звёздочкой).

Исходник один на все варианты — компилируется в нужную версию путём комментирования (раскомментирования) нужных дэфайнов:

#define cathode //для индикатора с ОК
//#define anode //для индикатора с ОА

#define heat //точка отображается если t < tуст.
//#define cold //точка отображается если t > tуст.

Биты конфигурации (fuses), для тех кто шьёт из ponyprog:

Обратите внимание!!! Раньше предлагалось выставить bodlevel0 и bodlevel1, что включало brown-out detection (bod) — контроль за напряжением питания. Это полезно при нестабильном питании и предохраняет содержимое энергонезависимой памяти (eeprom) от порчи во время падения напряжения питания. Но как оказалось есть некоторые подводные камни. При включенном 

bod и температуре кристала близкой к 0°С работа устройства оказывалась очень нестабильной — постоянно происходил сброс. Причём уровень bod не влиял на стабильность работы (пробовал 1.8В, 2.7В, 4.3В). Питание при этом оставалось стабильное (питание от батарейки) — проверялось осциллографом. Поэтому рекомендую убрать «галочки» в конфигурации с всех bodlevel.

Для нагревателя («точка» горит, когда t < tуст.) 
Скачать прошивку для индикатора с ОК(-) 
Скачать прошивку для индикатора с ОА(+)

Для холодильника («точка» горит, когда t > tуст.) 
Скачать прошивку для индикатора с ОК(-) 
Скачать прошивку для индикатора с ОА(+)

Скачать исходный код на С (codevisionavr)

Скачать разводку печатной платы (sprint-layout)

Автор Юрий. Е-mail: hardlock (пёсик) bk Сайт автора.

Обсуждение статьи на форуме


Раздел: [Устройства на микроконтроллерах]
Сохрани статью в:
Оставь свой комментарий или вопрос:

Очередной термостат на Tiny2313 и DS18B20

РадиоКот >Схемы >Цифровые устройства >Бытовая техника >

Очередной термостат на Tiny2313 и DS18B20

Категорически приветствую всех Котов, а заодно и поздравлю с Новым 2017 годом. 

Также хочу выразить благодарность котам за постоянную помощь в реализации идей: ARV, Z_h_e, Albert_V, pyzhman, Kavka, oleg110592 и другим, кого не упомянул…

Наконец-то и я решил опубликовать на любимом сайте свое творение, долго не решался, но подобных термостатов было собрано уже штук 6 и все исправно трудятся в течение года. Все они включают/выключают различные вентиляторы для охлаждения при достижении «верхней» температуры. 

Собственно о чем речь. Заказали мне как-то изобрести простенький термостат (даже проще — термометр) и собрал я его ради интереса из того, что было под руками, а также в учебных целях (распотрошить протокол 1-Wire).

Термостат очень простой и представляет из себя устройство с семисегментным четырехразрядным индикатором. Собран на микроконтроллере ATTiny2313. Подключается к нему всего один внешний датчик DS18B20. Двумя кнопками настраивается температура верхнего порога (во всем диапазоне температур работы датчика от -55 до +125 градусов Цельсия), при нажатии на любую кнопку пропадает значок градуса в правом разряде, через некоторое время (ориентировочно 30 секунд) термостат переходит в режим контроля температуры, а значение выставленного порога сохраняется в памяти EEPROM.

В режиме контроля температуры отображается значок градуса в правом разряде индикатора. При достижении установленной температуры включается нагрузка (см. схему там транзистор с открытым коллектором) и на индикаторе в правом разряде еще появляется десятичная точка (символизирует о работе нагрузки). Когда температура упадет на пару градусов — нагрузка отключается. Вот и все! 

Описаний протокола 1-Wire в сети очень много, поэтому в него уже углубляться не буду, скажу лишь одно для начинающих, что всегда старайтесь разбить большую задачу на много маленьких. Так и в программировании, не пытайтесь освоить все сразу (в том числе и из описания этого протокола, как и любого другого), разбивайте на блоки. Общение микроконтроллера с датчиком это не все сразу. Это какие-то команды и ответы на них. А команды — это байты циферок (как и ответы). А байты уже состоят из битов! Так вот! Минимальная единица информации — бит — вот с чего надо начинать в изучении и написании своей библиотеки. Все задержки/интервалы начинаете с битов чтения и записи. А если смогли записать/считать один бит, то потом уже оформляете дальше чтение и запись целого байта. А потом уже просто все — передаете команду, а подпрограммы все выполняют. ))) Надеюсь, поможет. 

И сейчас меня может начнут пинать, но я все равно сделал по своему. Если внимательно изучите исходник (а он на ассемблере с комментариями), то увидите, что у меня нет определения адреса датчика, как и нет подсчетов контрольных сумм. Поэтому и датчик в моем термостате всего один. В любом случае, исходный код свободный и открытый, так что для усовершенствования годится — дерзайте, исправляйте и цепляйте кучу датчиков. ))) А можем и вместе покумекать, тогда вопросы на форум, будут интересные идеи — доработаем. 

Итак, вот схема (сильно не серчайте, устройство было вообще без схемы, а схема уже потом создавалась, как модель в Протеусе, тем более по своей природе коты ленивы и я тоже):

Как видите, сама схема не отличается каким-либо разнообразием и изысками, впрочем, как и большинство устройств с микроконтроллерами. Почему она именно такая? А все очень просто, сначала я взял индикатор, потом микроконтроллер и примерил одно к другому. Так разрабатывалась печатная плата. Где выводы индикатора и микроконтроллера совпали, там и получились дорожки, а значит и порты заняты именно эти. Заметьте также, на схеме не указаны цепи питания, а на плате разводка под стабилизатор типа 7805 и конденсаторы. Настоятельно рекомендую ставить стабилизатор в корпусе ТО-220. Но если его использовать просто как термометр, то у меня дома он вообще питается от какой-то старой пятивольтовой зарядки для телефона, работает без стабилизатора.

Транзистор на схеме любой. На плате разведен под корпус типа SOT-23, т.е. маленький поверхностный. Рекомендую туда поставить вообще какой-нибудь полевой типа IRLML0030. Все силовые цепи по моей задумке внешние и управляются через реле. 

Кстати, в архивах есть и модель Протеуса, где можно все понажимать (не забудьте указать микроконтроллеру файл с прошивкой). 


Сначала, конечно делаем ЛУТ и травим. (Рисунок платы в СпринтЛайауте прилагается)

 

Для эксперимента я на первый образец ставил стабилизатор типа 78L05, но его мало, т.к. индикаторы довольно много жрут. Почему и советую поставить помощнее. Слева на плате видны штырьки — это для подключения питания и нагрузки. Справа три штырька для подключения самого датчика температуры, а снизу для подключения кнопок! (всегда сверяйтесь со схемой). Также на фотографии видны провода — это припаян программатор, в конце, конечно, все они убираются. 

Прошитый термостат сразу начинает показывать температуру окружающей среды. Внимание, если датчик не подключен, то он всегда будет показывать -1 градус Цельсия (по умолчанию). ))))

Давайте теперь запихаем это чудо-юдо в какой-нибудь корпус! Ведь, хоть какое-то устройство у Кота должно быть в корпусе. )

Переднее дымчатое стекло взял от какого-то принтера сломанного.

Малость шлифанем и чуток заполируем. 

 

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

Готово! Результат см. выше. 

Если кто-то захочет поменять разводку платы — пожалуйста, тогда можно применить микроконтроллер в любом корпусе. Индикатор, который использовал я называется KEM5461AG (общий катод). Были и зеленого и красного и желтого цвета. Соответственно программа под них и создавалась. У кого будут другие индикаторы по разводке ног и по общим анодам — плату и прошивку правьте сами. Тем более, я даже призываю к этому. Не следует тупо повторять конструкцию — это не по-кошачьи. Резисторы в анодах индикатора на свое усмотрение, у меня стоят 100 Ом (кстати, на схеме они не показаны, а на плате есть). Индикация динамическая, поэтому 100 Ом в самый раз. Резистор в базе транзистора тоже зависит от того транзистора, который вы будете использовать. Для биполярного пойдет в районе 1 кОм или больше. Для полевого в районе 200 Ом. И еще рекомендую базу (затвор) притянуть к земле каким-нибудь резистором в районе 10 кОм (на схеме и плате его нет). 

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

Надеюсь кому-нибудь да пригодится в образовательных целях. 

Все вопросы как всегда в форум. 

Файлы:
Клеим стеклышко
Плата
Архив с прошивкой и исходником

Все вопросы в Форум.


Как вам эта статья?

Заработало ли это устройство у вас?

Улучшенный термостат на ATtiny2313 и DS18B20 — схемы на микроконтроллерах — Каталог файлов

Улучшенный термостат на ATtiny2313 и DS18B20


    По многочисленным просьбам дорабатываю конструкцию термостата. Теперь умеет:

  • Измерение температуры от -55°С до +125°С (шаг 0,1°С)

  • Установка температуры от -55°С до +124°С (шаг 0,1°С !!!).

  • Гистерезис от 0,1°С до 25°С

Схема (кликабельно): 12.11.2009 привёл названия сегментов в соответствии с даташитом на индикатор.

На схеме показан второй вариант включения термодатчика, если он не захотел работать по однопроводной шине (что встречается очень редко). Обратите внимание, что подтягивающий резистор на 11 выводе должен быть именно 4,7кОм. Уменьшение или увеличение может привести к нестабильной работе датчика в случае включения по однопроводной схеме.

Индикатор можно применять как с общим анодом, так и с общим катодом — просто разные прошивки.

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

Управление:

Кнопками «+» и «-» устанавливают температуру включения нагрузки (на экране в первом сегменте отобразится символ подчёркивания «_«).
При одновременном нажатии обеих кнопок устройство переходит в режим изменения гистерезиса (на экране в первом сегменте отобразится символ  «d«). Длительное удержание одной из кнопок приводит к ускоренному перебору значений. При отсутствии нажатий на кнопки в течении 5 секунд прибор переходит в режим отображения измеренной температуры, при этом происходит запоминание изменённых параметров в энергонезависимую память.

Индикация:

В первом сегменте отображается точка, если Т < Т уст., т.е. нагрузка включена. Точка отображается во всех режимах, даже при изменении установленной температуры или гистерезиса (если сохраняется условие Т < Т уст.). В этом же сегменте будет отображаться знак минуса «» при отрицательной температуре.

Логика изменения состояния управляющих выводов:

Довольно часто возникают вопросы насчёт этого, поэтому немного нарисую.

Пример 1 (нагрев):

  • Установим температуру = 25,5°С, гистерезис (dT) = 1,2°С.

  • Текущая температура 20 градусов. (PD2 = 1, PD3 = 0, горит «точка«).

  • Такое состояние будет сохранятся пока температура не достигнет Т уст. + dТ = 26,7°С.

  • Когда температура достигнет 26,7°С состояние выводов поменяется (PD2 = 0, PD3 = 1, не горит «точка«)

  • Такое состояние будет сохранятся пока температура не опустится до Т уст. = 25,5°С.

  • Когда температура опустится до 25,5°С состояние выводов поменяется (PD2 = 1, PD3 = 0, горит «точка«)

  • И так далее….

Пример 2 (охлаждение):

  • Установим температуру = -5,2°С, гистерезис (dT) = 1,5°С.

  • Текущая температура 20 градусов. (PD2 = 0, PD3 = 1, не горит «точка«).

  • Такое состояние будет сохранятся пока температура не упадёт до Т уст. = -5,2°С.

  • Когда температура упадёт до -5,2°С состояние выводов поменяется (PD2 = 1, PD3 = 0, горит «точка«)

  • Такое состояние будет сохранятся пока температура не поднимется до Т уст. + dТ = 6,7°С.

  • Когда температура поднимется до 6,7°С состояние выводов поменяется (PD2 = 0, PD3 = 1, не горит «точка«)

  • И так далее….

Таким образом термостат можно применять для использования как в нагревательных целях (тепловентилятор, обогревательный котёл, инкубатор и т.д.), так и для охлаждения (холодильник, морозильник, и т.д.).

Печатная плата:

Печатную плату (Downloads: 3 401) я немного изменил, по сравнению с термометром и прошлой версией термостата, но она пригодна для использования и в них тоже. Тут убрал кварц и добавил контактные площадки для подключения кнопок и управления нагрузкой.

Обратите внимание на перемычки под резисторами в районе стабилитронов — они для того, чтобы можно было не устанавливать резисторы, которые отвечают за защиту от статического электричества (на схеме помечены звёздочкой).

Прошивки: (09.02.2009) выложены новые версии прошивок. Рекомендую обновиться т.к. найдено несколько некритичных ошибок и кой-чего оптимизировано. Обратите внимание на FUSES.

# Имя ПримечаниеКликов

Исходник один на все варианты — компилируется в нужную версию путём комментирования (раскомментирования) нужных дэфайнов:

#define Cathode //для индикатора с ОК
//#define Anode //для индикатора с ОА

#define heat    //точка отображается если T < Tуст.
//#define cold  //точка отображается если T > Tуст.

Биты конфигурации (FUSES), для тех кто шьёт из PonyProg:

Обратите внимание!!! Раньше предлагалось выставить BODLEVEL0 и BODLEVEL1, что включало Brown-out Detection (BOD) — контроль за напряжением питания. Это полезно при нестабильном питании и предохраняет содержимое энергонезависимой памяти (EEPROM) от порчи во время падения напряжения питания. Но как оказалось есть некоторые подводные камни. При включенном BOD и температуре кристала близкой к 0°С работа устройства оказывалась очень нестабильной — постоянно происходил сброс. Причём уровень BOD не влиял на стабильность работы (пробовал 1.8В, 2.7В, 4.3В). Питание при этом оставалось стабильное (питание от батарейки) — проверялось осциллографом. Поэтому рекомендую убрать «галочки» в конфигурации с всех BODLEVEL.

Если есть вопросы или предложения — пишите на ФОРУМ!

Термостат на ATtiny2313 и DS18B20 (ATtiny2313, С) — Устройства на микроконтроллерах — Схемы устройств на микроконтроллерах

Данная конструкция стала прямым продолжением конструкции «Термометр на ATtiny2313 и DS18B20». Как там упоминалось, хотелось универсальности схемы. Вот я её немного «универсализировал»… Собственно схема изменилась не сильно: 12.11.2009 привёл названия сегментов в соответствии с даташитом на индикатор.

Добавились кнопки «-» и «+» на выводы PA0 (5 нога) и PA1 (4 нога) (там где должен быть кварц в ATtiny2313 полноценный порт!) и управление реле на вывод PD3 (7 нога) и PD2 (6 нога). На выводе 6 появится логическая «1», если измеренная температура будет больше установленного порога, а на выводе 7 — если меньше. Это позволило использовать реле как с НЗ (нормально замкнутыми) контактами, так и НР (нормально разомкнутыми) контактами. Таким образом, без переделки печатной платы получаем ещё одно устройство! 

На схеме показан второй вариант включения термодатчика, если он не захотел работать по однопроводной шине (что встречается очень редко).Обратите внимание, что подтягивающий резистор на 11 выводе должен быть именно 4,7кОм. Уменьшение или увеличение может привести к нестабильной работе датчика в случае включения по однопроводной схеме. 

Печатная плата:

Как видим для 7-й ноги я не предусмотрел контактную площадку. Придётся подпаивать резистор прямо к ноге микроконтроллера… ну и транзистор лепить навесом. Кнопки тоже не очень удобно лепить, но что поделаешь. Вот как это выглядит в маленьком корпусе, залитом термоклеем:

Реле использует нормально замкнутые контакты (в моём варианте). Это сделано для того, чтобы в режиме вентилятора, когда термостат обесточен, тепловентилятор мог нормально функционировать. Т.е. логической «1» на выводе 7 соответствует отключенная нагрузка, логическому «0» соответствует включенная нагрузка. 

Кнопками «+» и «-» выставляется нижний порог температуры, по умолчанию = 22. В режиме изменения перед температурой отображается знак «t«. Примерно так:

При одновременном нажатии обеих кнопок термостат входит в режим установки dt (дельта температуры). По умолчанию он равен 1, т.е. температура будет поддерживаться в пределах от 22 до 23 градусов. Если dt установить 2, то температура будет поддерживаться в пределах от 22 до 24 градусов. Десятые доли градусов не выставляются. Для инкубаторов можно чуть доработать прошивку и тогда можно будет выставлять с точностью до 0,1 градуса!!!. Мне пока лень, поэтому если кому будет нужно — пишите. Выглядит этот режим вот так:

На графике изображена логика изменения состояния выводов:

Если нет нажатий кнопок в течении 5 секунд индикация возвращается к отображению измеренной температуры. 

В режиме измерения температуры индикатор отображает текущую измеренную температуру, и в первом сегменте символ «L» обозначает включенную нагрузку. Например:

  • установленная температура 24 градуса, дельта 1 градус, измеренная температура 22,5 градуса. На индикаторе будет «L22.5«.
  • установленная температура 24 градуса, дельта 1 градус, измеренная температура 25,7 градуса. На индикаторе будет » 25.7«.

Вот так выгладит устройство приделанное к тепловентилятору DeLonghi. В качестве блока питания использовался ЗУ от мобильного телефона. ЗУ было куплено на радио рынке за 6 грн (совсем китайское). Его выходное напряжение доведено до 12 Вольт (нужно для срабатывания реле) путем домотки вторичной обмотки. ЗУ импульсное, на одном транзисторе, без обратной связи. Реле и ЗУ спрятано внутри тепловентилятора, а термодатчик выведен наружу (торчит снизу) и обмотан в фольгу. Фольга нужна для исключения паразитного нагрева, например солнцем (корпус датчика чёрный и даже зимой через окно умудрялся нагреваться).

Устройство обкатано в течении всей зимы 2007-2008 у меня на работе. Отопления в здании ещё нет (тянем газ), поэтому все грелись как могли. Тепловентилятор работал круглосуточно (естественно нагрел — выключился, остыло — включился). Комфорт, по сравнению с обычным тепловентилятором просто на высоте!!! У меня всю зиму постоянная температура — 21 градус, в то время как обычный тепловентилятор не может держать температуру столь точно — то сильно нагреет, то холодно. Единственная хитрость — направлять его надо на окно, а не на себя! Тогда вся комната прогревается равномерно, начиная от окна.

Скачать прошивку для индикатора с ОК(-) 
Скачать прошивку для индикатора с ОА(+) 
Скачать исходный код на С (CodeVisionAVR)

Автор Юрий. Е-mail: hardlock (пёсик) bk Сайт автора.

Обсудить статью на форуме

Термометр на ATtiny2313 и DS18B20 (ATtiny2313, С) | Библиотека устройств на микроконтроллерах

В Интернете есть куча схем термометров на AVR, но как всегда хочется чего-то своего.. Да и мозги размять тоже следует. Этот термометр был одним из первых моих проектов.

Чего хотелось:

  • минимальные размеры (в разумных пределах)
  • минимальная стоимость
  • простота конструкции
  • высокая повторяемость
  • универсальность (об этом чуть позже)

Что получилось:

Посмотрев подобные конструкции и покурив описалово на тиньку, которая оказалась под рукой (ATtiny2313), пришёл к выводу, что можно несколько упростить существующие конструкции и немного улучшить их характеристики.

Схема.

На схеме показан второй вариант включения термодатчика, если он не захотеть работать по однопроводной шине (что встречается очень редко). Обратите внимание, что подтягивающий резистор на 11 выводе должен быть именно 4,7кОм. Уменьшение или увеличение может привести к нестабильной работе датчика в случае включения по однопроводной схеме.

Как видим эта схема отличается от подобных отсутствием транзисторов на управление сегментов. Таким образом схема упростилась на 4 транзистора и 4 резистора, по сравнению с аналогичными схемами. Тут некоторые скажут: «так нельзя — большая нагрузка на порты!!!». Читаемdatasheet на сей контроллер «DC Current per I/O Pin — 40.0 mA«. У нас 8 сегментов в каждом символе, по 5 мА каждый — получается 40мА!!!.

Теперь посмотрим графики из того же описания:

Из графиков видно, что ток может достигать и 60 мА и даже 80 мА на пин. Ну не будем увлекаться — нам 5 мА на сегмент (40мА на символ) хватит с головой! Ограничительные резисторы подобраны для получения тока около 5 мА на сегмент. В моей схеме стоят 470 Ом. Яркость сегментов при этом отличная!!! Так, чё-то я увлёкся теорией.

Практика!!!

Печатную плату рисовал исходя их соображений «как можно меньше, но как можно проще». Поэтому она получилась с несколькими перемычками…

На рисунке есть место под кварц — это для небольшой универсальности — у меня было несколько штук AT90S2313, у которых нет внутреннего генератора. КРЕНка применена в корпусе SOT-89. Защитные стабилитроны BZX79-C5V1 в корпусе DO-35. Конденсаторы в фильтре питания — 10mkF * 16V танталовые (других не нашлось), размера 3528 (SMD-B). Я их обычно не ставлю, а вместо них — 1mkF * 50V размера 1206.Глюков связанных с питанием не замечено.

Ну и далее фотки платы:

пустая плата, изготовленная «лазерным утюгом»

собранная плата: вид со стороны проводников (не хватает стабилизатора)

вид со стороны элементов (не запаян индикатор)

Далее запаиваем индикатор и программируем:

Проект собран по кускам, что-то из готовых проектов из Интернета, что-то дописано мной… Оригинальной идеей стала динамическая индикация. Проблема заключалась в том, что во время общения с датчиком температуры DS18B20 возникали моменты, когда «сканирование» индикации останавливалось. Поэтому обновление индикатора сделано не по прерываниям, а в главном цикле программы, и ещё вставлено кой-где в процедуре общения с датчиком… Плюсом данного способа стала высокая частота обновления, что исключило проблему мерцания.

Чуть не забыл — фьюзы для нормальной работы термометра:

Итак, прошили, включили… Хм… работает!!!

Итак как видим получилось довольно простое (куда уж проще???) устройство, которое по размерам не превышает размер индикатора. Кроме всего ещё и точность высокая: по описанию датчика — «±0.5°C accuracy from –10°C to +85°C». Как показала практика точность гораздо выше — около ±0,1°C. Сверял 10 экземпляров с лабораторным термометром, прошедшим метрологический контроль…

Скачать прошивку для индикатора с ОК(-)
Скачать прошивку для индикатора с ОА(+)
Скачать исходный код на С (CodeVisionAVR)

Автор Юрий. Е-mail: hardlock (пёсик) bk Сайт автора.

Термостат на ATtiny2313 и DS18B20 улучшенный — Термометры — Конструкции для дома и дачи

Представляю Вам улучшенный термостат на ATtiny2313 и DS18B20.
Теперь термастат умеет:
Измерять температуру от -55°С до +125°С (шаг 0,1°С)
Установка температуры от -55°С до +124°С (шаг 0,1°С !!!).
Гистерезис от 0,1°С до 25°С
Названия сегментов приведены в соответствие с даташитом на индикатор.

На схеме штрих пунктиром показан второй вариант включения термодатчика, если он не захотел работать по однопроводной шине (что встречается
очень редко). Обратите внимание, что подтягивающий резистор на 11 выводе должен быть именно 4,7кОм. Уменьшение или увеличение может
привести к нестабильной работе датчика в случае включения по однопроводной схеме.
Индикатор можно применять как с общим анодом, так и с общим катодом — просто разные прошивки.

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

Управление:

Кнопками «+» и «-» устанавливают температуру включения нагрузки (на экране в первом сегменте отобразится символ подчёркивания «_»).
При одновременном нажатии обеих кнопок устройство переходит в режим изменения гистерезиса (на экране в первом сегменте отобразится символ «d»). Длительное удержание одной из кнопок приводит к ускоренному перебору значений. При отсутствии нажатий на кнопки в течении 5 секунд прибор
переходит в режим отображения измеренной температуры, при этом происходит запоминание изменённых параметров в энергонезависимую память.

Индикация:
В первом сегменте отображается точка, если Т < Т уст., т.е. нагрузка включена. Точка отображается во всех режимах, даже при изменении установленной температуры или гистерезиса (если сохраняется условие Т < Т уст.). В этом же сегменте будет отображаться знак минуса «-» при отрицательной температуре.
Логика изменения состояния управляющих выводов:
Довольно часто возникают вопросы насчёт этого, поэтому нарисую.

Пример 1 (нагрев):

-Установим температуру = 25,5°С, гистерезис (dT) = 1,2°С.
-Текущая температура 20 градусов. (PD2 = 1, PD3 = 0, горит «точка»).
-Такое состояние будет сохранятся пока температура не достигнет Т уст. + dТ = 26,7°С.
-Когда температура достигнет 26,7°С состояние выводов поменяется (PD2 = 0, PD3 = 1, не горит «точка»)
-Такое состояние будет сохранятся пока температура не опустится до Т уст. = 25,5°С.
-Когда температура опустится до 25,5°С состояние выводов поменяется (PD2 = 1, PD3 = 0, горит «точка»)
И так далее….
Пример 2 (охлаждение):

-Установим температуру = -5,2°С, гистерезис (dT) = 1,5°С.
-Текущая температура 20 градусов. (PD2 = 0, PD3 = 1, не горит «точка»).
-Такое состояние будет сохранятся пока температура не упадёт до Т уст. = -5,2°С.
-Когда температура упадёт до -5,2°С состояние выводов поменяется (PD2 = 1, PD3 = 0, горит «точка»)
-Такое состояние будет сохранятся пока температура не поднимется до Т уст. + dТ = 6,7°С.
-Когда температура поднимется до 6,7°С состояние выводов поменяется (PD2 = 0, PD3 = 1, не горит «точка»)
И так далее….

Таким образом термостат можно применять для использования как в нагревательных целях (тепловентилятор, обогревательный котёл, инкубатор и т.д.),
так и для охлаждения (холодильник, морозильник, и т.д.).
Печатная плата:

Обратите внимание в SMD варианте на резисторы в районе стабилитронов (Точнее по ними) — они отвечают за защиту от статического электричества
(на схеме помечены звёздочкой в штрих пунктире на печатке в ЛАУ 5 при наведнии курсора подсвечиваютя (100* и 100*(VCC)) их можно замениь
премычками. В архиве также есть печатка под DIP.
FUSES:
Биты конфигурации , для тех кто шьёт из PonyProg:

Обратите внимание!!! Раньше предлагалось выставить BODLEVEL0 и BODLEVEL1, что включало Brown-out Detection (BOD) —
контроль за напряжением
питания. Это полезно при нестабильном питании и предохраняет содержимое энергонезависимой памяти (EEPROM) от порчи во время падения напряжения питания. Но как оказалось есть некоторые подводные камни. При включенном BOD и температуре кристала близкой к 0°С работа устройства оказывалась очень нестабильной — постоянно происходил сброс. Причём уровень BOD не влиял на стабильность работы (пробовал 1.8В, 2.7В, 4.3В).
Питание при этом оставалось стабильное (питание от батарейки) — проверялось осциллографом. Поэтому рекомендую не ставить «галочки» в конфигурации
с всех BODLEVEL.
Прошивки:

Исходник один на все варианты — компилируется в нужную версию путём комментирования (раскомментирования) нужных дэфайнов:

#define Cathode //для индикатора с ОК
//#define Anode //для индикатора с ОА

#define heat //точка отображается если T < Tуст.
//#define cold //точка отображается если T > Tуст.
Скачать архив можно Download (+93) под одноимённым названием.
<a href=»http://cxema.my1.ru/load/9-1-0-508″>Файлы к статье Термостат на ATtiny2313 и DS18B20 улучшенный </a> 

 

 

Термостат на ATtiny2313 и DS18B20 улучшенный CAVR.ru

Рассказать в:
Представляю Вам улучшенный термостат на ATtiny2313 и DS18B20. Теперь термастат умеет: Измерять температуру от -55°С до +125°С (шаг 0,1°С)
Установка температуры от -55°С до +124°С (шаг 0,1°С !!!).
Гистерезис от 0,1°С до 25°С
Названия сегментов приведены в соответствие с даташитом на индикатор.

На схеме штрих пунктиром показан второй вариант включения термодатчика, если он не захотел работать по однопроводной шине (что встречается
очень редко). Обратите внимание, что подтягивающий резистор на 11 выводе должен быть именно 4,7кОм. Уменьшение или увеличение может
привести к нестабильной работе датчика в случае включения по однопроводной схеме.
Индикатор можно применять как с общим анодом, так и с общим катодом — просто разные прошивки.

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

Управление:
Кнопками «+» и «-» устанавливают температуру включения нагрузки (на экране в первом сегменте отобразится символ подчёркивания «_»).
При одновременном нажатии обеих кнопок устройство переходит в режим изменения гистерезиса (на экране в первом сегменте отобразится символ «d»). Длительное удержание одной из кнопок приводит к ускоренному перебору значений. При отсутствии нажатий на кнопки в течении 5 секунд прибор
переходит в режим отображения измеренной температуры, при этом происходит запоминание изменённых параметров в энергонезависимую память.

Индикация: В первом сегменте отображается точка, если Т < Т уст., т.е. нагрузка включена. Точка отображается во всех режимах, даже при изменении установленной температуры или гистерезиса (если сохраняется условие Т < Т уст.). В этом же сегменте будет отображаться знак минуса «-» при отрицательной температуре.
Логика изменения состояния управляющих выводов:
Довольно часто возникают вопросы насчёт этого, поэтому нарисую.

Пример 1 (нагрев):
-Установим температуру = 25,5°С, гистерезис (dT) = 1,2°С.
-Текущая температура 20 градусов. (PD2 = 1, PD3 = 0, горит «точка»).
-Такое состояние будет сохранятся пока температура не достигнет Т уст. + dТ = 26,7°С.
-Когда температура достигнет 26,7°С состояние выводов поменяется (PD2 = 0, PD3 = 1, не горит «точка»)
-Такое состояние будет сохранятся пока температура не опустится до Т уст. = 25,5°С.
-Когда температура опустится до 25,5°С состояние выводов поменяется (PD2 = 1, PD3 = 0, горит «точка»)
И так далее….
Пример 2 (охлаждение):
-Установим температуру = -5,2°С, гистерезис (dT) = 1,5°С.
-Текущая температура 20 градусов. (PD2 = 0, PD3 = 1, не горит «точка»).
-Такое состояние будет сохранятся пока температура не упадёт до Т уст. = -5,2°С.
-Когда температура упадёт до -5,2°С состояние выводов поменяется (PD2 = 1, PD3 = 0, горит «точка»)
-Такое состояние будет сохранятся пока температура не поднимется до Т уст. + dТ = 6,7°С.
-Когда температура поднимется до 6,7°С состояние выводов поменяется (PD2 = 0, PD3 = 1, не горит «точка»)
И так далее….

Таким образом термостат можно применять для использования как в нагревательных целях (тепловентилятор, обогревательный котёл, инкубатор и т.д.),
так и для охлаждения (холодильник, морозильник, и т.д.).
Печатная плата:
Обратите внимание в SMD варианте на резисторы в районе стабилитронов (Точнее по ними) — они отвечают за защиту от статического электричества
(на схеме помечены звёздочкой в штрих пунктире на печатке в ЛАУ 5 при наведнии курсора подсвечиваютя (100* и 100*(VCC)) их можно замениь
премычками. В архиве также есть печатка под DIP.
FUSES: Биты конфигурации , для тех кто шьёт из PonyProg:

Обратите внимание!!! Раньше предлагалось выставить BODLEVEL0 и BODLEVEL1, что включало Brown-out Detection (BOD) — контроль за напряжением
питания. Это полезно при нестабильном питании и предохраняет содержимое энергонезависимой памяти (EEPROM) от порчи во время падения напряжения питания. Но как оказалось есть некоторые подводные камни. При включенном BOD и температуре кристала близкой к 0°С работа устройства оказывалась очень нестабильной — постоянно происходил сброс. Причём уровень BOD не влиял на стабильность работы (пробовал 1.8В, 2.7В, 4.3В). Питание при этом оставалось стабильное (питание от батарейки) — проверялось осциллографом. Поэтому рекомендую не ставить «галочки» в конфигурации
с всех BODLEVEL.
Прошивки:

Исходник один на все варианты — компилируется в нужную версию путём комментирования (раскомментирования) нужных дэфайнов:

#define Cathode //для индикатора с ОК
//#define Anode //для индикатора с ОА

#define heat //точка отображается если T < Tуст.
//#define cold //точка отображается если T > Tуст.
Скачать архив можно Download (+93) под одноимённым названием. <a href=»http://cxema.my1.ru/load/9-1-0-508″>Файлы к статье Термостат на ATtiny2313 и DS18B20 улучшенный </a>      АРХИВ:  Скачать
ОБНОВЛЕННЫЕ ПРОШИВКИ: Скачать 


Раздел: [Термометры]
Сохрани статью в:
Оставь свой комментарий или вопрос:

alexxlab

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *