→ Термометр: меньше не бывает. Термометр меньше не бывает на Attiny2313 Простой цифровой термометр на attiny2313

Термометр: меньше не бывает. Термометр меньше не бывает на Attiny2313 Простой цифровой термометр на attiny2313

Понадобился мне тут термометр в инкубатор, а так как термостат у меня уже стоит, то буду делать только сам термометр. В своем случае буду использовать 3-х разрядный, а не 4-х разрядный индикатор. Поговорим пока немного про сами цифровые индикаторы. Семисегментный индикатор состоит из семи элементов индикации (сегментов), по отдельности включающихся и выключающихся подачей питания. Включая их в разных комбинациях, из них можно составить изображения цифр. В современных индикаторах светодиоды изготавливают в форме сегментов, поэтому светодиодные индикаторы имеют предельно простую форму - чем меньше разных светодиодов, тем дешевле устройство. Сегменты обозначаются буквами от A до G . Восьмой сегмент - это точка. Вот параметры индикатора, что используется в термометре:
  • Максимальное прямое напряжение (при токе 20 мА):.....2.5 В
  • Максимальный прямой ток: .....25-30 мА
  • Максимальное обратное напряжение: .....5 В
  • Обратный ток (при напряжении 5 в): .....10 мкА
  • Мощность рассеивания: .....150 мВт
  • Максимальный импульсный прямой ток: .....140-160 мА
  • Диапазон рабочих температур: .....-40…+85°C

Теперь приступим к изготовлению самого термометра. Изучим принципиальную схему.

Для его изготовления нам понадобится:

>>> 4-х разрядный семисегментный индикатор 1шт
>>> Керамический конденсатор на 0.1 микрофарад 1шт
>>> Электролитический конденсатор на 100 мкф 16в (можно и 10)
>>> Резисторы 100-200 ом 0.125 вт 8шт.
>>> Микроконтроллер AtTiny2313 1шт.
>>> Панелька 20 ног 1шт.
>>> Датчик DS18B20 1шт.
>>> Провода, паяльник, золотые руки))

Собрав все необходимые радиокомпоненты, приступим к изготовлению микроконтроллерного термометра. Паяем резисторы к индикатору.

Подводим питание - и готово! Осталось прошить микроконтроллер. Прошивку можно . В архиве находится две прошивки, под общий катод и под общий анод.

Чтобы прошить этот МК нам нужен AVR програматор . Как его сделать смотрим по ссылке. Открываем PonyProg (Если у вас программатор из статьи выше) и закидываем прошивку. При закидывании прошивки не забываем нажимать кнопку "ПРОЧЕСТЬ ". Фьюзы выставляем как на фото ниже:

Тоже один из важных факторов: при выставлении фьюзов не забываем нажать кнопку "ЧИТАТЬ " (Read). И сохраняем прошивку, вынимаем микроконтроллер из программатора и вставляем в устройство.

Подаем питание на схему - и вуаля! Все работает. Печатной платы к схеме нету, так как в следствии простоты смысла ее нету чертить, схема состоит, грубо говоря, из пяти радиодеталей. Не считая резисторов, т.к там вообще проще простого их подпаять. Видео работы данного термодатчика можно посмотреть ниже:

Как работает термометр на ATTINY

Устройство действительно настолько простое, что прекрасно подойдёт начинающим контроллеристам, как первый действующий практический проект на AtTiny. С вами был Boil .

Предлагается схема на микроконтроллере ATMega8 для измерения температуры в диапазоне от -55C до +127C с точностью не хуже +-0,5C. В качестве индикатора применен "динамический" трехразрядный светодиодный индикатор.

Рис.1 Принципиальная схема

Принципиальная схема девайса показана на рисунке 1 . Мне кажется она настолько проста, что в пояснениях не нуждается. Некоторая странность в расположении выводов индикатора объясняется стремлением сделать красивую схему без пересечений линий и шин. Резисторы и конденсаторы SMD - это жертва стремлению сделать устройство буквально на 5 мм больше индикатора. Кстати, индикатор применен без опознавательных знаков, продавался как "динамический" индикатор. Скорее всего, это какая-то левая китайская поделка, однако работает хорошо. При повторении конструкции следует удостовериться, что номера выводов соответствуют нужным разрядам и сегментам. Питается схема от источника 3...5В.

Рис. 2 Нижняя сторона платы

Рис. 3 Верхня сторона платы

На рисунках 2 и 3 показаны рисунки дорожек сторон платы, а на рисунках 4 и 5 - размещение элементов на этих сторонах. Как видите, элементы размещаются мало того, что с обеих сторон, так еще часть SMD -компонентов размещается под не-SMD -компонентами. Благодаря таким ухищрениям размеры платы всего 50х22 мм. В общем, монтаж проблем вызвать не должен.

Рис.4 Монтаж снизу

Рис.5 Монтаж сверху

Так как плата очень проста, рисунка с высоким качеством я не делал - думаю, что такую плату повторить удастся даже при помощи традиционной "лаковой" технологии, а для ЛУТ можно слегка подправить рисунки 2 и 3 .

Прошивки доступны в . Их 4 варианта : для индикаторов с общим анодом и с общим катодом, а так же для датчиков DS18S20 или DS18B20 . Название файлов прошивок таково, что определить соответствие элементарно, например: mt_18S20_oa.hex - прошивка для датчика DS18S20 и индикатора с общим анодом . При программировании микроконтроллера следует задать fuse -битами режим тактирования от встроенного RC-генератора 8 МГц.

Примечание: если датчик действительно установить на плату в предусмотренные отверстия, он будет привирать, так как будет "ловить" тепло от индикатора и микроконтроллера.


(12) | Просмотров: 119051

Сразу снимаю с себя всю ответственность за потраченное вами время, деньги, детали, итд... Если у вас что-то не заработало, то вините во всём свои кривые руки.....

Недавно занимался сборкой компьютера с полностью пассивным охлаждением. Чтобы было удобно контролировать температуру процессора, нужно было по быстрому собрать термометр. Всяческие программы типа "Everest", "Aida", и прочие мне не подходили по одной простой причине: хотелось контролировать температуру даже при выключенном мониторе. Или даже при полностью отключенном мониторе. Было решено собрать термометр на основе цифрового датчика DS18B20, дешёвого микроконтроллера AVR, и семисегментного индикатора. Сначала я хотел повторить схему термометра по одному из вариантов, предложенных в интернете. Но после анализа схем, размещённых в интернете, я пришёл к выводу, что придётся изобретать свой "велосипед".

Конструкции, представленные в интернете, имели ряд недостатков, а именно:
* низкая скорость динамической индикации (50...100 герц), изза которой становится некомфортно смотреть на индикатор, если быстро бросить на него взгляд, кажется что цифры "шевелятся";
* не все конструкции адекватно измеряли весь диапазон температур (от -55 до +125), попадались например конструкции, не измеряющие температуру ниже нуля градусов, или некорректно измеряющие температуру выше 100 градусов;
* отсутствовала проверка контрольной суммы (CRC);
* общие выводы сегментов подключались к одной ножке микроконтроллера без ключевых транзисторов, ПЕРЕГРУЖАЯ ПОРТЫ МИКРОКОНТРОЛЛЕРА.

При перегрузке портов МК, яркость свечения индикатора может снизиться, а также можно пожечь ножки микроконтроллера. Несколько лет назад я собирал термометр на ATtiny2313+DS18B20 по схеме с интернета. Схема была без ключевых транзисторов. При температуре 18 градусов, цифра "1" светилась ярко, а цифра "8" светилась заметно тусклее, надеюсь всем понятно почему всё происходит именно так. Поэтому я пообещал себе в будущем не перегружать ножки МК. Вот кстати фотка того термометра, собранного по схеме из инета, думаю что в комментариях не нуждается:

Также хотелось сделать несколько доработок:
* вывести на индикатор символ градуса (десятые доли градуса мне были не так критичны);
* затактировать микроконтроллер от внешнего кварца, так как протокол "1-Wire", который использует датчик, критичен к формированию временнЫх интервалов (тайм-слотов), поэтому молиться о стабильности встроенного тактового генератора мне не хотелось;
* ввести в программу проверку контрольной суммы, при несовпадении контрольной суммы выводить на индикатор: "Crc";
* добавить в схему диод (для защиты схемы от переполюсовки питания);
* при подаче питания в течении 1 секунды засветить все сегменты (так называемый тест сегментов);
* реализовать проверку контрольной суммы DS18B20.

Проект я написал в среде AVR Studio 5, функции работы с датчиком нашёл где-то в инете, а остальное переписал на свой лад, обильно снабдив комментраиями исходный код. В конце статьи есть ссылка на скачивание прошивки и исходника.

Семисегментный индикатор я использовал на 3 знакоместа, сегменты с общим анодом. Также в архиве (в конце статьи) есть прошивки под индикатор с общим катодом. Общие выводы сегментов я подключил сразу к двум выводам МК, соединённым параллельно. Таким образом, каждый общий вывод сегментного индикатора использует 2 ножки МК для повышения нагрузочной способности выводов.

Микроконтроллер я использовал ATtiny2313A (также можно использовать ATtiny2313 или ATtiny2313L), задействовал практически все свободные ножки (за исключением ножки сброса). Если собирать термометр на ATmega8, то можно соединять параллельно по 3 или по 4 ножки для повышения нагрузочной способности портов.

Схема девайса:

Прилагаю фотографии собранного термометра. Корпуса покачто нет, так как термометр будет встраиваться в корпус ПК.

Индикация.
Не подключен датчик температуры, либо короткое замыкание на линии данных:

Ошибка контрольной суммы (CRC):

Подключен датчик температуры, температура от -55 до -10 градусов:

Подключен датчик температуры, температура от -9 до -1 градуса:

Подключен датчик температуры, температура от 0 до 9 градусов:

Подключен датчик температуры, температура от 10 до 99 градусов:

Подключен датчик температуры, температура от 100 до 125 градусов:

Частота динамической индикации - несколько килогерц, благодаря чему мерцание на глаз не заметно даже при броском взгляде на индикатор.
Для желающих повторить конструкцию я скомпилировал несколько прошивок под разные кварцы: 4 МГц, 8 МГц, 10 МГц, 12 МГц, 16 МГц.
Также сделал прошивки под индикаторы с общим анодом (ОА), и с общим катодом (ОК). Все прошивки в архиве (см. ниже).

UPD
Обновил прошивку. Мелкие исправления, мелкие плюшечки. Из основного - stdint типы данных, гибкая настройка ног под сегменты. Все изменения описаны в шапке исходника.

“Термометр: меньше не бывает” так называется статья на сайте arv.radioliga.com. Схему, расположенную на указанной страничке, я видел давно, но вот интерес к ней у меня появился, когда у одного из сограждан форума с этим “маленьким” термометром возникли вопросы. Если быть более точным интерес у меня появился не столько к схеме, сколько к размерам термометра. У автора термометр собран на плате размерами 50*22 мм.
Действительно ли меньше не бывает?

На радиорынке я присмотрел трехразрядный семисегментник. Приобрел микроконтроллер Attiny2313 в SOIC корпусе, DS18B20, smd-резистор и smd-конденсатор. Нарисовал печатную плату, по печатной плате нарисовал схему, написал программу, залил в МК и вот, что получилось:

Несколько слов схеме и о программе. Компактность не обошлась без жертв. В схеме отсутствуют токоограничивающие сопротивления, что есть не совсем хорошо. Для увеличения нагрузоспособности катоды индикатора подключены сразу к двум выводам МК.
В программе ничего оригинального нет. Шаблон подготовлен с помощью мастера из CVAVR, остальные части взяты из моих часов с термометром. Я применил подправленную библиотеку DS18B20, а точнее это сумма двух библиотек из CVAVR для DS1820/DS18S20 и DS18B20, т.е. в термометре можно применять любой из вышеперечисленных датчиков. Если точнее, то не более 4-х датчиков в любой комбинации.
Фузы: МК настроен на работу от внутреннего RC-генератора на 4 МГц. CKSEL = 0010, SUT = 10, все остальные = 1.

Понадобился мне тут термометр в инкубатор, а так как термостат у меня уже стоит, то буду делать только сам термометр. В своем случае буду использовать 3-х разрядный, а не 4-х разрядный индикатор. Поговорим пока немного про сами цифровые индикаторы. Семисегментный индикатор состоит из семи элементов индикации (сегментов), по отдельности включающихся и выключающихся подачей питания. Включая их в разных комбинациях, из них можно составить изображения цифр. В современных индикаторах светодиоды изготавливают в форме сегментов, поэтому светодиодные индикаторы имеют предельно простую форму - чем меньше разных светодиодов, тем дешевле устройство. Сегменты обозначаются буквами от A до G . Восьмой сегмент — это точка. Вот параметры индикатора, что используется в термометре:

  • Максимальное прямое напряжение (при токе 20 мА):.....2.5 В
  • Максимальный прямой ток: .....25-30 мА
  • Максимальное обратное напряжение: .....5 В
  • Обратный ток (при напряжении 5 в): .....10 мкА
  • Мощность рассеивания: .....150 мВт
  • Максимальный импульсный прямой ток: .....140-160 мА
  • Диапазон рабочих температур: .....-40…+85°C

Теперь приступим к изготовлению самого термометра. Изучим принципиальную схему.

Для его изготовления нам понадобится:

>>> 4-х разрядный семисегментный индикатор 1шт
>>> Керамический конденсатор на 0.1 микрофарад 1шт
>>> Электролитический конденсатор на 100 мкф 16в (можно и 10)
>>> Резисторы 100-200 ом 0.125 вт 8шт.
>>> Микроконтроллер AtTiny2313 1шт.
>>> Панелька 20 ног 1шт.
>>> Датчик DS18B20 1шт.
>>> Провода, паяльник, золотые руки))

Собрав все необходимые радиокомпоненты, приступим к изготовлению микроконтроллерного термометра. Паяем резисторы к индикатору.

Подводим питание - и готово! Осталось прошить микроконтроллер. Прошивку можно . В архиве находится две прошивки, под общий катод и под общий анод.

Чтобы прошить этот МК нам нужен . Как его сделать смотрим по ссылке. Открываем PonyProg (Если у вас программатор из статьи выше) и закидываем прошивку. При закидывании прошивки не забываем нажимать кнопку "ПРОЧЕСТЬ ". Фьюзы выставляем как на фото ниже:

Тоже один из важных факторов: при выставлении фьюзов не забываем нажать кнопку "ЧИТАТЬ " (Read). И сохраняем прошивку, вынимаем микроконтроллер из программатора и вставляем в устройство.

Подаем питание на схему - и вуаля! Все работает. Печатной платы к схеме нету, так как в следствии простоты смысла ее нету чертить, схема состоит, грубо говоря, из пяти радиодеталей. Не считая резисторов, т.к там вообще проще простого их подпаять. Видео работы данного термодатчика можно посмотреть ниже:

Как работает термометр на ATTINY

Устройство действительно настолько простое, что прекрасно подойдёт начинающим контроллеристам, как первый действующий практический проект на AtTiny. С вами был Boil .

Обсудить статью ТЕРМОМЕТР НА ATTINY

 

 

Это интересно: