Радиолоцман Электроника en
расширенный поиск +
  
Срезы:Измерительные приборы
Микроконтроллеры

25-03-2014

Цифровой термометр на Atmega8 с пределами измерений 0-250 °С

Захаров Денис, Украина

В Интернете можно найти немало схем, позволяющих измерять температуру и отображать ее в цифровой или аналоговой форме.

Часто для этого используется популярный датчик температуры DS18B20 или его аналоги. Приборы имеют хорошую точность, помехоустойчивость, и, по сравнению с аналоговыми решениями, значительно упрощают схему. Пределы измеряемых подобными датчиками температур, как правило, ограничены диапазоном от –55 до 125 ºС. Что же делать, если нужно измерить температуру выше 125 °С? Очевидно, нужно использовать аналоговые датчики, температурный диапазон которых может достигать +300 °С. Надо отметить, что в этом случае точность измерений снизится. Но часто при измерении больших температур знать точное значение необязательно, и погрешность в несколько градусов будет приемлемой, а при отображении на аналоговой шкале, например, на линейке светодиодов, и вовсе незаметной.

Для нормальной работы устройства в температуре 0 … 250 °С, был выбран аналоговый датчик KTY84_130, рабочий диапазон которого составляет –40 + 300 °С. Его параметры идеально подходят под выбранный температурный диапазон. За обработку данных отвечает микроконтроллер (МК) Atmega8. Конечно, годится и любой другой, но автору этот МК представляется одним их самых доступных и популярных. Фьюз биты оставлены заводские. При решении задачи критерии точного измерения были отложены на второй план. Погрешность в пределах нескольких градусов вполне устраивала.

Цифровая индикация результатов измерений

Для цифрового отображения данных используются LCD дисплей. При желании устройство можно модернизировать, доработав код программы. Свободных портов ввода-вывода для этого достаточно. LCD дисплей подключен по 4-битной шине (Рисунок 1). Старшие разряды индикатора D4 - D7 подключены к младшим разрядам D0 - D4 микроконтроллера. Поскольку точных временных привязок в этом устройстве нет, то нет и необходимости во внешнем задающем кварцевом резонаторе. К портам PB6 и PB7 подключены управляющие выводы дисплея. Как можно видеть, все линии управления дисплея выходят с одной стороны корпуса МК, что упрощает трассировку печатной платы.

 
Рисунок 1. Принципиальная схема устройства.

 Вычисление значения температуры

Из Рисунка 1 видно, что аналоговый датчик температуры подключен прямо к входу АЦП микроконтроллера. При использовании операционного усилителя погрешность измерения была бы меньше. Напряжение на АЦП подается через делитель, образованный терморезистором и переменным резистором. Для лучшей точности настройки переменный резистор выбран многооборотным.

Таблица 1. Зависимость сопротивления от температуры.
Температура ºС
Сопротивление Ω
-40
359
-30
391
-20
424
-10
460
0
498
10
538
20
581
30
626
40
672
50
722
60
773
70
826
80
882
90
940
100
1000
110
1062
120
1127
130
1194
140
1262
150
1334
160
1407
170
1482
180
1560
190
1640
200
1722 

Построив на основании Таблицы 1 график в Mathcad (Рисунок 2), можно увидеть зависимость сопротивления аналогового датчика от приложенной температуры. Исходные данные таблицы взяты из технического описания KTY84_130. Функция имеет практически линейный характер, лишь с небольшим отклонением на высоких температурах.

 
Рисунок 2. График зависимости сопротивления датчика от температуры.


При измеряемой температуре 0 ºС сопротивление терморезистора составляет 498 Ом. Напряжение на выходе делителя равно

где

  • UД – напряжение на датчике температуры относительно земли,
  • UПИТ – напряжение питания,
  • RД – сопротивление датчика температуры,
  • R1 – установленное сопротивление переменного резистора.

При температуре 0 ºС напряжение на входе АЦП должно составлять 0.6 В. Для вычисления значения температуры автор использовал следующую формулу:


 

где

  • АЦП – 10 разрядный цифровой код АЦП, снятый с датчика,
  • UОТС – отсекающее значение (60), равное 0.6 В при 0 ºС.

Диапазону измеряемых температур от 0 ºС до 250 ºС соответствуют поступающие с делителя входные напряжения АЦП от 0.6 до 1.8 В. Опорное напряжение АЦП составляет 5 В, поэтому при указанных значениях цифровой код будет находится в пределах от 123 до 368. Это число помещается в регистр и конвертируется в три разряда ASCII кода. Поскольку датчик KTY84_130 рассчитан на максимальную температуру 300 ºС, лучше оставить небольшой запас и ограничится 250 ºС.

На Рисунке 5 показано устройство, собранное на макетной плате. Код программы открытый, и каждый может с легкостью доработать его под собственные задачи.

 
Рисунок 3. Собранное устройство на макетной плате.

Программное обеспечение МК и виртуальная модель Proteus для LCD 16×2  - скачать

Программное обеспечение МК и виртуальная модель Proteus для LCD  8×2   - скачать

Для комментирования материалов с сайта и получения полного доступа к нашему форуму Вам необходимо зарегистрироваться.
Имя
Фрагменты обсуждения:Полный вариант обсуждения »
  • Я благодарю автора за хорошую статью, но у меня есть один вопрос. вместо дисплеев 16x1 монтировать 8x2. и что я должен сделать. заранее спасибо
  • Добавили версию с прошивкой LCD 8*2 Скачать можно тут или по ссылке в конце статьи
  • Нормальная статья. Как раз нужно было замерить температуру движка ДВС
  • RV2 - это получается сам температурный датчик?
  • Это обыкновенная термопара KTY84. В нете легко можно ее найти. http://www.rlocman.ru/datasheet/search.html?q=KTY84_130 http://www.kosmodrom.com.ua/prodlist...=KTY84/130.153
  • Ребят, подскажите или дайте ссыль, как залить прогу на МК? Какие именно файлы из архива? Имеется ардуин уно
  • Если у Вас Arduino Uno на мк Atmega8 (сейчас в основном версии на mega328), то вам потребуется .hex файл прошивки (автор статьи его предоставляет) и внутрисхемный программатор. Но учите, что после прошивки ваша Arduino останется без загрузчика (bootloader), который при наличии того же внутрисхемного программатора можно будет восстановить. Помимо этого возможно потребуется изменить конфигурацию Fuse-битов мк. Есть еще один вариант, при котором возможно получится проще и удобнее: использовать внешнюю программу Arduino загрузчика, например XLoader (Arduino HEX uploader).
  • Вообщем, прога залилась, схема собрана, питание подаю, загорается верхняя строчка лсиди и ничего не происходит, смотрел в программе "ардуино", мк выдает значение напряжения, тока, емкости... Вопрос :реально ли зашита именно этот hex, или там до этого мог быть защит какой либо проект (ардуино был юзаный уже, но когда я зашивал данный hex через arp uploader, командная строка показывала процесс загрузки и закрылась, ошибок не выдала)
  • По-моему просто не выставлена контрастность... покрути потенциометром в меньшую сторону
  • Когда кручу резистор, контрасность меняется, загораются квадратики целые, клетка вообщем загорается полностью
  • Я сейчас попробовал в макетке просто включить питание на дисплей без МК, так тоже загорелись сегменты на 1 строке. Вывод - не залита прошивка
Полный вариант обсуждения »
Рекомендуемые публикации по теме:
Форум  »
Цифровой вольт-амперметр с пределами измерения 100 В и 20А
Схемы  »
Цифровой термометр для измерения температуры в диапазоне от 0 до 99,9°С
Форум  »
Обсуждение: Цифровой термометр для измерения температуры в диапазоне от 0 до 99,9°С
Форум  »
Как увеличить предел измерений емкости в мультиметре DT5808?
Новости  »
Актаком представляет высоковольтный тестер сопротивления изоляции с пределом измерения до 10 ГОм

При перепечатке материалов с сайта прямая ссылка на РадиоЛоцман обязательна.

Приглашаем авторов статей и переводов к публикации материалов на страницах сайта.

Срезы ↓
радиолоцман вконтакте радиолоцман одноклассники радиолоцман facebook радиолоцман twitter радиолоцман google плюс