Термометр на ATMega8 и 2-4 датчика DS18B20

Радиосхемы / Цифровые устройства | 19-05-2015, 17:50 | Просмотров: 54637 | Комментарии: 73
Термометр на ATMega8 и 2-4 датчика DS18B20
Термометр на ATMega8 и 2-4 датчика DS18B20Термометр на ATMega8 и 2-4 датчика DS18B20

Термометр для измерения температуры в квартире (дома) и улицы, а также термометр на четыре датчика измеряемой температуры.

Технические характеристики:

  • Микроконтроллер: ATMega8
  • Датчик температуры: от 2 до 4 Шт (DS18B20)
  • Напряжение питания постоянное: 6,5В -12 В
  • Измеряемая температура: -55°C +125°C
  • Размеры печатной платы: 80x36 мм


Схема термометра на ATMega8



Термометр на ATMega8 и 2-4 датчика DS18B20

Схема собрана на контролере ATMega8 который работает от внутреннего генератора на 8 МГц, LCD 1602 (16 символов на 2 строки) и стабилизатор напряжения LM7805 5V. В данной схеме можно использовать от двух до четырех датчиков DS18B20 в зависимости от прошивки.


Набор деталей для термометра на ATMega8



Микросхемы:

  • ATMega8 ― 1 Шт (Микроконтроллер)
  • DS18B20 ― 2─4 Шт (Датчик температуры цифровой -55°C +125°C)
  • LM7805 ― 1 Шт (Стабилизатор напряжения 5V)

Дисплеи:

  • LCD 1602 ― 1 Шт (16 символов на 2 строки)

Конденсаторы электролитические:

  • 10µF/10V ― 1 Шт

Конденсаторы керамические:

  • 0.1µF (104) ― 2 Шт

Резисторы:

  • 220 ― 1 Шт
  • 4.7k ― 2 Шт

Прошивка термометра на ATMega8



Для прошивки я использую программатор USBASP и программу AVRDUDE_PROG
В архиве ниже можно скачать две прошивки, одна на два датчика другая на четыре, а также скетч для Arduino.

Установки fuses, биты без инверсии.

FusesFuses


Вид на два датчика.
Термометр на ATMega8 и 2-4 датчика DS18B20

Вид на четыре датчика.
Термометр на ATMega8 и 2-4 датчика DS18B20


Печатная плата термометра на ATMega8


Термометр на ATMega8 и 2-4 датчика DS18B20


Скачать [1,1 Mb] (cкачиваний: 4394) схему, прошивку Термометр на ATMega8 и печатку в формате Sprint Layout 5
Скачать [8,28 Kb] (cкачиваний: 2615) прошивку Термометр "Гараж, улица"


  1. Professor | 31 июля 2015 19:52
    № 1
    добрый день исходник можно
  2. Nic | 16 августа 2015 10:52
    № 2
    здравствуйте. а возможно изменить прошивку с 2мя датчиками под не русифицированный ндикатор ?
  3. Dragon | 16 августа 2015 11:33
    № 3
    Цитата: Professor
    добрый день исходник можно

    Исходник для arduino в папке с прошивкой в архиве.

    Цитата: Nic
    здравствуйте. а возможно изменить прошивку с 2мя датчиками под не русифицированный ндикатор ?

    Прошивка походит как на русифицированный индикатор и не русифицированный индикатор, русские символы находятся в прошивке.
    1. Сергей | 5 сентября 2021 09:06
      № 4
      Отсутствует OneWire.h
  4. Роман | 19 августа 2015 19:59
    № 5
    Доброго времени суток!

    Уважаемые, подскажите пожалуйста! Собрал эту схему, только не работает блин(( То есть работает, но не так как надо. Включаю - заставка, потом улица -127, дом -127((((( Датчики рабочие, проверял на другой схеме. Если провод данных (или как там его, PC0) отключаю, то показывает ноль градусов.
    В чем проблема? подскажите чайнику! буду очень благодарен))
  5. Іван | 15 октября 2015 23:56
    № 6
    Доброго времени суток!
    Таже проблема, с рабочим датчиком -127
  6. Павел | 3 ноября 2015 20:06
    № 7
    У меня тоже -127
    1. Dragon | 4 ноября 2015 03:42
      № 8
      Установки fuses правильно запрограммировали?
      1. Павел | 29 ноября 2015 20:01
        № 9
        фьюзы как на картинке
  7. Игорь | 7 ноября 2015 23:58
    № 10
    тоже -127, фьюзы такиеже(uniprof), программа для прошивки такаяже...

    помог кондер на 1000пф между 24ногой и землей
  8. inf | 2 декабря 2015 20:34
    № 11
    Очень понравилась схема, но за неимением меги сделал на пике.
    Выкладываю вдруг кому пригодится

    Схема термометра на pic12f683
  9. Егор | 4 декабря 2015 16:42
    № 12
    я так понял представленная плата уже отзеркалена?
  10. Алексей | 6 декабря 2015 17:24
    № 13
    Здравствуйте, собрал схему на микре в корпусе TQFP. Заработало, но вместо температур показывает 0,00. Проверьте кто нибудь схему...
    1. Dragon | 7 декабря 2015 17:46
      № 14
      Датчики DS18B20 не на 24 ножке, а на 23, еще нахватает минуса на 16 ноге дисплея для подсветки.
  11. Алексей | 9 декабря 2015 21:39
    № 15
    Спасибо!Все заработало!
  12. джон | 10 декабря 2015 16:24
    № 16
    что за глюк -127 как исправить?????? фьюзы uniprof датчики рабочие eep файл нужно зашивать?,а прошивать нужно на собраной схеме с датчиками или нет?
    1. Dragon | 14 декабря 2015 01:23
      № 17
      Попробуй поставить конденсатор 1nF между 23 ногой и землей.
  13. джон | 26 декабря 2015 16:06
    № 18
    Всё заработало,конденсатор ненужно,дело в том ,что нужно прошивать и файл epp и прошивать нужно вместе на 3 вкладке avrdude
  14. Николай | 3 января 2016 22:23
    № 19
    Собрал,все впорядке,но датчик который на улице врет на пять градусов.вчем проблема?
  15. Максим | 1 февраля 2016 23:58
    № 20
    Добрый день. Подскажите пожалуйста, если я прошиваю ATmega8 через пони прог, то фьюзы будут выставляться те же что и в AVRDUDE_PROG, или другие? На сколько я знаю если я выставлю фьюз RSTDISBL в пони прог, то контроллер может заблочить.
  16. Сергей | 10 февраля 2016 16:40
    № 21
    Собираю в начале в протеусе, получаю -127 по 4м датчикам как решить проблем? можно получить исходные файлы?
  17. Сергей | 10 февраля 2016 16:51
    № 22
    Цитата: Сергей
    Собираю в начале в протеусе, получаю -127 по 4м датчикам как решить проблем? можно получить исходные файлы?

    Исходники не для Ардунио есть?
    1. Dragon | 10 февраля 2016 16:54
      № 23
      Нету, только для Arduino.
  18. Роман | 5 марта 2016 13:11
    № 24
    Собрал, с 4 датчиками работает - по очереди переключаются показания. А вот с двумя датчиками никак не хочет - показывает -127 градусов. Поставил кондер на 1нФ как советовали, показывает ноль градусов, причем контроллер периодически перезапускается. Пробовал кондеры другого номинала, либо -127, либо вообще висит на заставке. В чем проблема? Подскажите пожалуйста! Заранее спасибо!
  19. Ярослав | 9 марта 2016 20:34
    № 25
    Можно ли изменить прошивку так, что бы температура отображалась без сотых, ну и пронумеровать датчики на табло: 1+22'c, 2+30'c, 3+10'c, 4+5'c. Буду премного благодарен.
  20. Ярослав | 9 марта 2016 20:35
    № 26
    Можно ли изменить прошивку так, что бы температура отображалась без сотых, ну и пронумеровать датчики на табло: 1+22, 2+30, 3+10, 4+5
  21. intarez1 | 10 марта 2016 16:44
    № 27
    Всем привет.Собрал термометр на два датчика и,блин,второй час уже мудохаюсь.-127 или с кондёром 00градусов.Кто виноват и что делать???Фьюзы как на картинке,при прошивке EEPROM AVRDUDE выдаёт ошибку.Пробовал прошить на 4 датчика,та-же картина.Лечение есть какое?
    1. YNS | 15 февраля 2017 16:07
      № 28
      Привет. Не разобрался с проблемой ? Тоже вылетает AVRDUDE при прошивке EEPROM (
  22. intarez1 | 10 марта 2016 22:06
    № 29
    Прибор кажись кривой,ежели нет обсуждения проблемы.
  23. intarez1 | 11 марта 2016 23:44
    № 30
    А прошивать внутрисхемно или на макетной плате,есть разница или нет???Я прошивал на макетке,может поэтому на этапе прошивки EEPROM даёт ошибку?
    1. Роман | 15 марта 2016 19:04
      № 31
      Теоретически разницы никакой нет, главное подключить правильно, но на макетке есть шанс, что контакт где-то будет плохой и шиться не захочет
  24. Роман | 15 марта 2016 19:13
    № 32
    ВАЖНО!!! Наконец-то я заставил работать термометр и доволен как слон)) Схема и обе прошивки (на 2 и 4 датчика) РАБОЧИЕ!!!
    Помог конденсатор, как и говорилось ранее, между 23 ножкой контроллера и землей, только не на 1000 пикофарад, а на 2000 пикофарад! С 1000 пФ термометр так же показывал -127, а если ставил конденсатор большей емкости то 0 градусов, или вообще изображение зависало на заставке. Есть еще один момент. Когда собрал схему на плате (плату я рисовал свою под два датчика, другое расположение контроллера и дисплея, и без стабилизатора, но с разъемом мини-usb), у меня опять те же -127(( Расстроился( Оказалось, что это из-за того что не подключил второй датчик (у меня один впаян на схеме, а второй на проводе для улицы). Когда подключил второй, все заработало)) Спасибо автору за схему!!
  25. intarez1 | 16 марта 2016 19:11
    № 33
    Роман спасибо большое.Сегодня прошил с помощью SinaProg 2.1.1-та же картина -127гр.Lock byte-3F.
    High byte-D9,Low byte-24,по фьюзам вроде нормально,прога подтвердила что hex-OK,EEP-OK,Fuse-OK,чего ещё надо не пойму,кондёр на 23 ногу тоже не спасает,кажет 0гр.Что делать-то???
    1. Роман | 18 марта 2016 14:29
      № 34
      У меня не с первого раза заработало. Далеко не с первого. Я схему кучу раз сначала на макетке собирал-разбирал, кучу раз прошивал атмегу, пробовал разные резисторы/кондеры, потом заработало еще на готовой плате раза три все перепаивал, кое-как заработала схема, к сожалению я пока всего лишь повторитель схем, поэтому в чем причина так и не разобрался(( Не понял как добавить картинку в коммент, так бы сфотал

      Когда ставишь конденсатор, показания меняются - вместо -127 показывает 0 градусов. Значит похоже дело в нем. Пробуй конденсаторы разной емкости. Но я не спец, так что..))
      Кстати, у меня поначалу вообще на дисплее ничего не отображалось, кроме верхнего (или нижнего, не помню точно) ряда квадратов.
  26. intarez1 | 23 марта 2016 19:24
    № 35
    Спасибо Роман-ЗАРАБОТАЛО.В моём случае кондёр 1800пф.Надо бы автору поправку в схему включить.Ещё по поводу датчиков,они же сидят на одной шине,так какой из них дом,а какой улица,тот который дальше стоит по шине и будет УЛИЦА???У меня на плате один датчик близко стоит к дисплею,врёт безбожно.Другой термометр кажет 18гр,а этот 21гр.
  27. intarez1 | 25 марта 2016 12:31
    № 36
    Всё работает,но наоборот.Уличный датчик где дом,а внутренний датчик-где улица.Есть решение проблемы???Да,уличный датчик включён в пассивном режиме,т.е по двум проводам.
    1. Роман | 28 марта 2016 01:32
      № 37
      intarez1, рад что смог помочь))
      Датчики цифровые, у них у каждого свой номер, в прошивке указано, что датчик с меньшим порядковым номером будет датчиком в доме, а тот у которого порядковый номер больше, будет датчиком на улице (я не уверен, что на деле все именно так, но смысл такой). Просто поменяй их местами и будет счастье!). Я когда собирал нагрел их по очереди, и тот который получился "Улица" сразу припаял к длинному кабелю чтобы вывести за окно. А там уж хоть десять раз собирай схему датчики будут определяться именно так.
      Кстати, у меня датчик тот что дома впаян примерно в 5мм от дисплея, все точно показывает (сравнивал со спиртовым градусником)
  28. intarez1 | 29 марта 2016 15:37
    № 38
    Спасибо Рома,будем пробовать.Кстати,заставку я сменил.
    1. Роман | 5 апреля 2016 19:37
      № 39
      intarez1, каким программатором прошиваешь? мой usbasp перестал прошивать( avrdude_prog говорит что прошил, но ничего не работает( уже заказал чуть другой программматор, но история та же( отчаиваюсь уже и настроения что то делать совсем нету(((
  29. александр | 8 апреля 2016 13:31
    № 40
    Собрал. Заработало сразу. Собирал на 2 датчика.Расхождение с ртутным термометром примерно на 2 градуса.Как можно скоректировать показания? Да,один датчик отключаю- и дом и улица показывают одно и то-же синхронно.
  30. Александр | 10 мая 2016 22:53
    № 41
    Цитата: Роман
    intarez1, каким программатором прошиваешь? мой usbasp перестал прошивать( avrdude_prog говорит что прошил, но ничего не работает( уже заказал чуть другой программматор, но история та же( отчаиваюсь уже и настроения что то делать совсем нету(((

    такая же проблема, подскажите где "копать" качал разные "дудки", пробовал на разных компьютерах
    с АВРками раньше не работал(новичек)делак как здесь описано.
  31. sergg | 2 июня 2016 08:34
    № 42
    Хочу использовать термометр для гаража,хотелось бы вместо слова "дом" слово "гараж". Не принципиально конечно,но возможно?
  32. Dragon | 16 июня 2016 11:35
    № 43
    Цитата: sergg
    Хочу использовать термометр для гаража,хотелось бы вместо слова "дом" слово "гараж". Не принципиально конечно,но возможно?

    Вот сделал Термометр "гараж"
    1. sawa | 17 октября 2018 00:19
      № 44
      Не работает, дисп не инится, на том же железе софт из статьи летает)
      за девайс спасибо
  33. Mikhail Yakovlev | 26 июля 2016 11:35
    № 45
    Уважаемый Dragon. Сделал термометр, заработал только при 2200 пф. Хотел вывести уличный термометр по двухпроводной линии (паразитное питание), начинает показывать 85 гр. Что делать?

    А гаражная прошивка вообще не работает!
    1. Влад | 1 января 2022 19:39
      № 46
      85 градусов - это значение, которое считывается при первом включении (в даташите на датчик написано).
  34. Petrovich | 3 августа 2016 23:35
    № 47
    Здравствуйте!
    Пробую код из "Termometr-x4_16x2_ATMega8.ino" для Arduino Pro Mini - при проверке в Arduino IDE 1.6.6 и более поздних версиях выпадают ошибки с библиотеками.
    Самостоятельно решить проблему не получается.
    Уважаемый автор, можете добавить .ino с 4-мя датчиками температуры для Arduino Pro Mini (ATMega328P / 5V / 16MHz) ?
    Спасибо.
  35. Олег | 15 августа 2016 12:13
    № 48
    Здравствуйте! Сделал данный термометр, и как у многих получил значение -127, причём когда пальцами берёшься за контакты датчика начинает показывать нормальная температура, как только отпускаешь - сразу -127. Почитав комментарии решил тоже добавить конденсатор, только у меня он стоит между землёй и номиналом 220пФ.
  36. Олег | 16 августа 2016 17:26
    № 49
    Только настроил данный термометр чтоб всё показывало (пост №44), но датчики были рядом друг с другом на плате, а когда один датчик посадил через провод, то всё опять не работает, и не могу подобрать конденсатор, в чём может быть причина?
  37. Mikhail Yakovlev | 9 сентября 2016 12:14
    № 50
    Автор наверное умер!
  38. AlexF | 1 октября 2016 10:18
    № 51
    при подаче питания светятся все верхние сегменты, пробовал на Atmega8 и на atmega8A, печатку и подключение дисплея проверял многократно, ошибок нет, грешу на прошивку... прошивал через программатор MiniPro, .hex файл залил в code memory, .eep в data memory, для обоих выбрал тип Intel hex

    подскажите в чем может быть дело?
    лок-биты обязательно выставлять? у меня они FF
  39. borisych | 10 ноября 2016 09:22
    № 52
    Можете прописать fuses под прогу CodeVisionAVR.
  40. Андрей | 22 ноября 2016 20:12
    № 53
    Мне тоже fuses под прогу CodeVisionAVR. Заранее благодарен.
  41. Андрей | 6 декабря 2016 12:10
    № 54
    Цитата: borisych
    Можете прописать fuses под прогу CodeVisionAVR.

    Разобрался
    Цитата: Андрей
    Мне тоже. Заранее благодарен.


    Fuses под CodeVisionAVR
  42. borisych | 7 декабря 2016 08:32
    № 55
    Здравствуйте! Может кому пригодится. Всего 3 детали.Можно собрать на любых smd транзисторах, как у меня.Ток светодиода не большой!
  43. Евгений | 10 декабря 2016 07:07
    № 56
    Хочется поставить в гараж, на дисплее 4*20, чтобы было "гараж", "улица", "подвал".
    Где в программе прописать все это
  44. Максим | 27 декабря 2016 20:42
    № 57
    На Arduino - даже с одним датчиком заработало! Второго датчика нет, поэтому показывает - 127 градусов. Так что если ошибка -127.00, то это проблема в датчике!
  45. Вовчик | 29 января 2017 20:24
    № 58
    Здравствуйте, уберите пожалуйста кому не сложно сотые доли из показаний на обоих прошивках.
    Очень буду признателен.
  46. АНДРЕЙ | 24 апреля 2017 01:41
    № 59
    Автору РЕСПЕКТ!!! Давно хотелось собрать, что-то самому, а не покупать готовое, и мне понравился ваш термометр(именно визуализация,- конкретно дом и улица , всё на русском), но в программировании не силен, да и собственно микрухи такой не было, но была ардуинка nano, посмотрев несколько схем (распиновки) из интернета, всё таки собрал этот градусник, получилось чётко! выкинул из схемы стабилизатор(т.е запитал с компа) и резистор R3, т.к (мне показалось) он там ненужен ведь есть кнопка reset, и методом подбора заменил переменник 10кОм на резистор в 2кОм (VEE через резистор на минус), добился этим лучшей чёткости экрана! сделал 2 датчика один короче другой длиннее и столкнулся с проблемой, на том датчике , где провод короче(предназначался для измерения в доме) были показания уличные и наоборот, решил заменой строк друг на друга в скетче. и теперь "улица" сверху, а "дом" снизу и всё работает, как надо! осталось подобрать зарядник и собрать в коробочку. Кстати в моём случае оба датчика показывали -127, при подключении слабенького зарядника от телефона на 550 мА. Это моя первая доделанная самоделка на микроконтроллере, и я доволен результатом, вообщем ещё раз спасибо.... и всем удачных начинаний и экспериментов!
  47. drumlov | 3 сентября 2017 18:09
    № 60
    Добрый день. Понравилась схема, повторил, схема рабочая. Но вопрос к автору: возможно ли добавить контроль сетевой адресации датчиков? для варианта с 4-мя датчиками, тоесть я заранее прописиваю адресс в каждом датчике (0, 1, 2, 3), чтобы точно понимать какой датчик показывает.
  48. Дмитрий | 29 сентября 2017 20:15
    № 61
    куплю готовый полностью работоспособный термометр на 4 датчика построенный по данной схеме и с этой программой для визуального контроля послойного нагрева воды в теплоаккумуляторе.
    если данное сообщение не укладывается в правила сообщества. пожалуйста не удаляйте. а подскажите с кем из участников связаться по интересующему меня вопросу.
  49. Андрей | 28 января 2018 13:38
    № 62
    Здравствуйте. Собрал данный термометр,не работает. Перепроверил все, перепрошивал несколько раз. Греются микросхемы на индикаторе. Да и что делать с фьюзами SPIEN,NOT USED. Спасибо.
  50. Вячеслав | 9 февраля 2018 18:51
    № 63
    Спасибо за схему уважаемый автор! У меня как и у всех -127, заработал з 3300 пФ. Пока что работает и не врёт(сравнивал с ртутным).Спасибо огромное!
  51. Вячеслав | 11 февраля 2018 10:42
    № 64
    Кстати, с 2000пФ тоже работает!
  52. Вячес | 28 апреля 2018 13:50
    № 65
    У меня квадраты при включении в верхней строке и все.Как исправить не работает устройство?
    1. Сергей | 13 сентября 2018 02:11
      № 66
      Тоже самое. Дисплей и атмега новые, фьюзы несколько раз проверял шил оба прошивки и нечего. Может дело в дисплее?
  53. Олег | 28 апреля 2018 15:29
    № 67
    Собрал вариант на два 18b20 ....не работает и не пишет... может надо на 18и20 адреса и, где то прописывать ?
  54. Казаков Евгений | 14 марта 2019 12:01
    № 68
    Привет а можете изменить прошивку на погреб, улицу и погреб гараж заранее спасибо
  55. dankr | 16 января 2020 20:07
    № 69
    Здравствуйте. Кто занимается программированием на МК? Меня интересует схема 2-х канального термометра на МК. Я ищу любителя-программиста, с которым я бы смог воплотить в жизнь свою задумку. Немного расширить функционал термометра, использовать более крупный ЖК дисплей, добавить некоторые модуля. Если кто в принципе согласен, то можно пообщаться далее. А заодно скажите пожалуйста регион вашего проживания и почту для общения.
    1. Влад | 1 января 2022 19:41
      № 70
      Ты уже на всех сайтах засветился))
  56. aidyn | 23 марта 2021 17:38
    № 71
    тоже -127 ???
  57. Radioserge | 3 апреля 2021 22:56
    № 72
    Спасибо автору за эту конструкцию, собрал на 2 датчика - заработал сразу. Небольшое не совпадение порядка 0,6 градусов.
    Меня полностью устраивает. Спасибо!
  58. Сергей | 21 сентября 2021 06:37
    № 73
    Не пашет, мало того, чуть не спалил подсветку 1602. Нагрелся до ужаса. Не советую это изделие. Походу оно работает у всех через Ж....

Добавление комментария

Ваше Имя:
Ваш E-Mail:
Введите два слова, показанных на изображении: