084-Двуканальный термометр-термостат на ATmega8.

Автор: | 19.04.2012

25.11.2012 Внимание! Программа термостата обновлена до версии v2b_1.

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

В качестве датчиков использовал DS18B20. Микроконтроллер (ATmega8) работает от внутреннего задающего генератора на 4 мГц (дополнительно, на плате предусмотрена возможность установки кварца).  Из-за артефактов динамической индикации (заметно было подмигивания в момент опроса датчика) пришлось отказаться от чтения ROM датчика и подсчёта CRC. Тем не менее, в устройстве используются два датчика, которые подключены к разным выводам МК. Один измеряет температуру наружного воздуха, другой в ящике. Термостатирование организовано только для датчика №2 (ящик).


Термометр-термостат разделён по двум корпусам. В одном управляющая часть и дисплей, в другом блок питания и реле управления нагрузкой. На плате управления предусмотрена установка стабилизатора питания с конденсаторами для питания микроконтроллера, но так как питание приходит и так 5 v он не впаян (в случае питания от блоков питания с выходным напряжением больше 5 v, его необходимо впаять).  Корпус управления снабжён кронштейном который позволяет устанавливать его как на DIN-рейку или просто саморезами к стене.


Разъёмы устройства:
— по USB разъёму передаются управляющие сигналя для включения реле;
— через аудио разъёмы подключены датчики температуры.

Так как программа занимает 66 % памяти, решено было сделать ещё и второй канал управления, на всякий случай, от РВ5. В данной программе второго канала нет, и понадобится ли вообще, пока не знаю, но на ПП второй канал организован в полном объёме, только не установлено реле.

Описание работы термостата.
Устройство имеет три кнопки для управления. Кнопка (ОК), (Up), (Dn). При включении питания на индикаторе высвечивается температура датчика №1 (наружный воздух).


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


При повторном нажатии кнопки (ОК), на дисплей выводится температура датчика №1, а светодиод HL1 гаснет.

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


Для изменения уставки порога, необходимо нажать кнопку (ОК). Значение на дисплее начнёт мигать, сигнализирующее о готовности к изменению уставки. Уставку можно менять в пределах от +1 до +10 градусов, с дискретностью 1 градус. Увеличение значения происходит с помощью кнопки (Up), а уменьшение с помощью кнопки (Dn). Для сохранения уставки или просто для перехода на следующий порог, необходимо нажать кнопку (ОК). На дисплее высветится нижний порог и у четвёртого разряда засветится нижний сегмент, указывающий, что это нижний порог.


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

Рекомендую для качественного хранения картошки, уставку включения (нижний порог) обогрева установить +2, уставку выключения (верхний порог) +4.

Для удобства контроля состояния температуры в ящике, был введён дополнительный алгоритм сигнализации о низкой температуре в ящике. Что он из себя представляет? Когда на дисплее отображается температура датчика №1, а температура в ящике снижается (допустим, из-за неисправности нагревателя) и достигает значения ниже +1 градуса, светодиод  HL1 начинает мигать, сигнализируя о низкой температуре в ящике. Если температура в ящике поднимется выше + 2 градусов, светодиод перестанет мигать.

Алгоритм неисправности датчиков. При неисправности датчика да дисплее выводится надпись Err №. Номер обозначает код неисправности от 1 до 3. Цифра 1 обозначает – нет высокого уровня, 2 – нет датчика, 3 – высокий уровень не восстановлен.


Когда на дисплее отображается температура датчика №1, и произошла неисправность датчика №2,то светодиод HL1 начинает мигать, сигнализируя о неисправности. Таким образом, при выведенной на дисплей температуре датчика №1 Вы не пропустите возникшую неисправность термостата. Естественно при неисправности датчика №2, обогрев отключается.

Ещё несколько моментов. Термостат отключен если уставка нижнего порога равна уставке верхнего порога, или уставка нижнего порога выше уставки верхнего порога. Если неисправны датчик №1 или №2, то в меню уставок, значение уставки Вы не увидите, хотя уставку изменить можно, но вслепую. Это сделано для того, что бы пользователь не лез изменять уставки при неисправных датчиках.


Файлы для сборки устройства.

084_Termostat_PCB_ATtmega8_OK.zip (8203 Загрузки)
7_seg_term_OK_v2b_1_ATtmega8.zip (Одна Загрузка)
Termostat_7_LED1.zip (6311 Загрузок)
084-Fusebits.png (6809 Загрузок)
Для Algorithm Builder и UniProf галочки ставятся как на картинке.
Для PonyProg, AVR Studio, SinaProg галочки ставяться инверсно.
Как правильно прошить AVR фьюзы

(Visited 25 036 times, 4 visits today)

084-Двуканальный термометр-термостат на ATmega8.: 86 комментариев

  1. alex52

    Спасибо за помощь. Мне очень понравился вариант прошивки 7_seg_term_OK_MOD4_ATtmega8. Это красиво.

  2. alex52

    Здравствуйте. Года 5 назад я собрал на макете термостат и использовал прошывку 7_seg_term_OK_mod1_1_ATtmega8.zip и 7_seg_term_OK_mod2_1_ATtmega8.zip. Потом макет разобрал. Сегодня опять собрал на макете термостат, но эти прошивки не могу найти. Сейчас на форуме выложена только прошывка 7_seg_term_OK_v2b_ATtmega8. Пожалуйста помогите с прошывкамы 7_seg_term_OK_mod1_1_ATtmega8.zip и 7_seg_term_OK_mod2_1_ATtmega8.zip.

  3. Юрий-Кокоулин

    2GetChiper
    Спасибо большое. Не знал, что тут форум ещё есть. Не пришлось бы покупать индикатор с ОК. Да ещё и по какой му то недоразумения запаял себе с ОА, думая, что он с ОК))

  4. Юрий-Кокоулин

    Собрал данный девайс. Пока только контроллер. При включении выдает Err 1, через пару секунд Err 3. Фьюзы при прошивке ставил Low — E3, High — D9. В деталях тут ошибиться просто невозможно. Плату перепроверил, правильно всё. Датчики проверил на другом устройстве, работают.
    Что вообще эта ошибка означает?

  5. dmitrye25

    Подскажите пожалуйста не могу вьехать в работу сего девайса
    Мне нужен термостат для выращивания бифидобактерии
    теном поддерживать 37 градусов а если привышение 39 градусов срабатывает охлаждение

  6. SVN Автор записи

    Skifco :
    Еще раз здравствуйте. В силу своей неопытности в этих делах хотел бы уточнить, что необходимо изменить в данном приборе, чтобы появилась возможность работать от аккумуляторов? И если можно конечно, хотел бы пообщаться с Вами по прибору напрямую если есть такая возможность не используя данный форум. Заранее спасибо!

    Если Вы будите делать устройство используя мой рисунок платы – это одно, если свой – это другое. Чтобы мы вели конструктивный диалог, я должен знать подробности… что за аккумулятор (технические характеристики или хотя бы модель), Вы планируете использовать. Питать от аккумулятора Вы планируете устройство постоянно или в качестве резервного питания? Форум просматривали по данной теме? http://www.forum.getchip.net/viewtopic.php?f=24&t=241 Со мной можно связаться в личке на форуме – пишите…

  7. Skifco

    Еще раз здравствуйте. В силу своей неопытности в этих делах хотел бы уточнить, что необходимо изменить в данном приборе, чтобы появилась возможность работать от аккумуляторов? И если можно конечно, хотел бы пообщаться с Вами по прибору напрямую если есть такая возможность не используя данный форум. Заранее спасибо!

  8. SVN Автор записи

    Skifco :
    День добрый! Хотел узнать есть ли возможность собрать данный прибор Вами за вознаграждение конечно, но с другим нагревательным элементом и другим блоком питания?

    Всё свободное время трачу на другие, для меня интересные проекты. А свободного времени к сожалению не много. Данный вариант термостата не привязан к конкретному нагревателю, можно подключать любой мощностью до 2 кВт. Если мощность нагревателя необходимо больше 2 кВт, то нужно установить пускатель между реле прибора и нагревателем. Что касается корпуса и блока питания… то и в этом случае, можно применить любой подходящий по размерам и характеристикам. Если умеете держать паяльник – то проблем не должно быть. Если не умеете или не хотите делать, но готовы заплатить за работу, то готовых термометров и термостатов в интернет-магазинах много. Вот пример: http://www.ekits.ru/index.php?categoryID=891

  9. Skifco

    День добрый! Хотел узнать есть ли возможность собрать данный прибор Вами за вознаграждение конечно, но с другим нагревательным элементом и другим блоком питания?

  10. SVN Автор записи

    В данном корпусе кнопки использовал KAN0611-0901B; реле – G5LA-14 5VDC; диоды – HER108; транзисторы – КТ3102 (подойдёт с любой буквой).

  11. Skifco

    Добрый день! Хотел узнать не могли бы Вы описать спецификацию данного прибора. Хотел бы узнать какие именно модели и марки диодов,транзисторов,кнопок, реле использовались.
    Заранее большое спасибо.

  12. SVN Автор записи

    Лучше чем в мануале, мне не рассказать, так как там очень подробно описан обмен данными с датчиком, мне добавить нечего. Не поверите… первая программа которую я написал, была как раз обмен данными с этим датчиком. В исходнике данного устройства можно посмотреть как организована передача и приём данных. Если есть конкретные вопросы, то попробую ответить, но пересказывать мануал, я как бы не готов, притом что он очень хорошо переведён.

  13. Skifco

    Спасибо. Я читал уже мануал. Но я немного далек от принципа передачи данных( Нет ли возможности на пальцах рассказать какой пакет, из чего состоит, какие и где там нолики и единички?

  14. SVN Автор записи

    Частота опроса влияет на саморазогрев датчика, увеличивая погрешность. Мануал на датчик можно скачать здесь… http://yadi.sk/d/WO1GDuK5JiSeg

  15. Skifco

    Огромное спасибо разработчикам! Хотел уточнить такой вопрос. Я делаю приблизительно такой же прибор, но более медицинского направления. Хотел бы узнать есть ли возможность помочь с составлением временных диаграмм на Ваш прибор и узнать бы, какие пакеты и как передают датчики, что нужно им послать, чтоб их опросить и какова частота опроса?
    Заранее спасибо!

  16. Vladimir1619

    Здравствуйте. Спасибо автору и всем кто участвовал в разработке данного устройства.
    Я собрал его, но возникла проблема которую я уже не могу решить (не хватает знаний и опыта).
    Устройство работает, но на индикаторы показывают все наоборот;
    светятся все запятые кроме второй, а числа непонятные,
    отключая все датчики DS18B20, пишет E.9.9.2..
    Индикатор собирал сам, но он точно правильно распаян, в других устройствах работает.
    Если возможно помогите советом. Спасибо.

  17. SVN Автор записи

    pino24 :
    а не красивей будет если использовать двух строчный дисплей??

    Это уже кому как нравится. Для двух строчного дисплея, программу придётся полностью переписывать.

  18. pino24

    а не красивей будет если использовать двух строчный дисплей??

  19. SVN Автор записи

    alex52 :
    Кстати, может это DS18S20? У них разный вид представления температуры. Для DS18S20 температура представляется в виде 9-битного значения в дополнительном коде, а для DS18B20 в виде двоичного числа с разрядностью от 9 до 12 бит. У DS18S20 и DS18B20 кроме серийного номера в ПЗУ содержится код семейства (10h – для DS18S20, и 28h – для DS18B20). У Вас нет программы для чтения кода семейства или программы для работы с DS18S20?

    Нет у меня такой программы. Но если бы это были DS18S20, то и значение +85*С при старте программы, Вы бы не увидели. Это, однозначно брак. А брак лучше вернуть в магазин.

  20. alex52

    Кстати, может это DS18S20? У них разный вид представления температуры. Для DS18S20 температура представляется в виде 9-битного значения в дополнительном коде, а для DS18B20 в виде двоичного числа с разрядностью от 9 до 12 бит. У DS18S20 и DS18B20 кроме серийного номера в ПЗУ содержится код семейства (10h — для DS18S20, и 28h — для DS18B20). У Вас нет программы для чтения кода семейства или программы для работы с DS18S20?

  21. alex52

    Да, Вы были правы, датчики оказались некондиционными. Новый датчик показывает нормальные величины. Просто, мне казалось маловероятным, чтобы два датчика были бы одинаково некондиционными. Наверно можно проанализировать работу этих датчиков и программно исправить показания. На досуге попробую. Спасибо.

  22. SVN Автор записи

    alex52 :
    При подаче питания на устройство, на дисплее высветилось значение 85,0*С, а затем примерно через 2 секунды: -36,3*С. Потом поменял датчики местами: опять высветилось значение 85,0*С, а затем примерно через 2 секунды: -36,5*С. К сожалению я болел и не смог приобрести новые датчики. На днях я это сделаю и о результатах напишу. Спасибо Вам за помощь.

    При подаче питания на датчик, датчик записывает в регистры значения равное 85,0, что и считывает устройство. Это подтверждает, о правильном перерасчёте считываемых значений. Таким образом, складывается впечатление, что Вам попались неликвиды, что большая редкость. Попробуйте приобрести датчики в другом магазине. Но такой эффект может возникнуть если на датчик не приходит +5 В. Проверьте соответствие питания датчика.

  23. alex52

    При подаче питания на устройство, на дисплее высветилось значение 85,0*С, а затем примерно через 2 секунды: -36,3*С. Потом поменял датчики местами: опять высветилось значение 85,0*С, а затем примерно через 2 секунды: -36,5*С. К сожалению я болел и не смог приобрести новые датчики. На днях я это сделаю и о результатах напишу. Спасибо Вам за помощь.

  24. SVN Автор записи

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

  25. alex52

    Я дома проверил какие у меня термодатчики стоят: на них написано DALLAS 18B20. Это DC18B20 или DS18B20?

  26. alex52

    Спасибо. Старость не радость.

  27. SVN Автор записи

    alex52 :
    Я собрал термостат.Заработал сразу. Только вот температуру показывает странную: минус 38,6 (оба датчика)в теплой комнате, где примерно 20 градусов. Датчики (DC18B20) реагируют на изменеие температуры. при подогреве паяльником температура повышается до минус 21 градусов. В чем проблема?

    Замените Ваши датчики DC18B20 на DS18B20 и температура будет отображаться адекватно.

  28. alex52

    Я собрал термостат.Заработал сразу. Только вот температуру показывает странную: минус 38,6 (оба датчика)в теплой комнате, где примерно 20 градусов. Датчики (DC18B20) реагируют на изменеие температуры. при подогреве паяльником температура повышается до минус 21 градусов. В чем проблема?

  29. fizik_89

    Спасибо за ответ)теперь все понятно)

  30. SVN Автор записи

    fizik_89 :
    Интересно узнать какой нагреватель вы использовали для термоящика? Судя по блоку питания он выдает 12В 0,5А. То есть нагреватель всего на 6 Вт? Мощность в 6 Вт мне кажется не обеспечит требуемый тепловой режим. Или я что-то не так понял?)

    Вы ошибаетесь. БП не питает нагреватель, а питает только схему управления и обмотку реле. А вот с помощью контактов реле организовано управление нагревателем. В моём случае нагревателем служит старый фен для волос, напряжение питания 220VAC.

  31. fizik_89

    Здравствуйте, SVN.
    Планирую собрать девайс по вашему проекту. Интересно узнать какой нагреватель вы использовали для термоящика? Судя по блоку питания он выдает 12В 0,5А. То есть нагреватель всего на 6 Вт? Мощность в 6 Вт мне кажется не обеспечит требуемый тепловой режим. Или я что-то не так понял?)

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