Сделай сам: электронный термометр своими руками. Контроллер больших температур на термопаре K-типа. PIC16F676 - Термометры - Конструкции для дома и дачи Мерим температуру электроникой схемы

На МК. Сердцем его является микроконтроллер PIC16F628A. В схеме термометра используется 4-х значный или 2+2 светодиодный индикатор с общим анодом. Датчик температуры используется типа DS18B20, и в моем случае показания датчика отображаются с точностью 0,5*С. Термометр имеет пределы измерения теемпературы от -55 до +125*С, что достаточно на все случаи жизни. Для питания термометра была использована обычная зарядка от мобилы на ИП с транзистором 13001.

Принципиальная схема термометра на микроконтроллере PIC16F628A:

Для прошивки PIC16F628A я использовал программу ProgCode, установив её на компьютер и собрав программатор ProgCode по известной схеме:

Обозначение выводов используемого микроконтроллера и цоколёвка некоторых других аналогичных МК:

Программа ProgCode и инструкции с фотографиями пошаговой прошивки находятся в архиве на форуме. Там же и все необходимые для этой схемы файлы. В программе открываем и нажимаем на кнопку "записать всё”. В моем изготовленном устройстве, как видно из фотографий, собрано 2 термометра сразу в одном корпусе, верхний индикатор показывает температуру дома, нижний - на улице. Размещается он в любом месте помещения и соединяется с датчиком гибким проводом в экране. Материал предоставил ansel73. Прошивку редактировал: [)еНиС

Термопары широко применяются там где необходимо точно померить высокие температуры, т емпературы вплоть до 2500°C. То есть там, где цифровые датчики бы сразу сдохли от перегрева, применяются термопары. Разновидностей термопар существует достаточно много, но самое большое распространение получили хромель-алюмелевые (тип К) термопары, из-за своей дешевизны и практически линейному изменению термоэдс. Этот вид термопар ставятся в водонагреватели и другие бытовые приборы с контролем температуры, их повсеместно используют для контроля температуры при плавке металла, с помощью этих термопар контролируется нагрев жала в паяльной станции. Поэтому будет весьма полезно познакомиться с ними поближе.

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


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

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

Берём стандартную схему неинвертирующего включения операционного усилителя:


Отношение входного и выходного напряжений описывается простой формулой:

Vout /Vin = 1 + (R2/R1)

От значений резисторов обратной связи R1 и R2 зависит коэффициент усиления сигнала. Величину усиления сигнала нужно подбирать с учетом того, что будет использоваться в качестве опорного напряжения.

Допустим опорным будет напряжение питания микроконтроллера 5V. Теперь необходимо определится с диапазоном температур, которые собираемся измерять. Я взял пределом измерения 1000 °C. При этом значении температуры на выходе термопары будет потенциал примерно 41,3мВ. Это значение должно соответствовать напряжению в 5 вольт на входе АЦП. Поэтому операционник должен иметь коэффициент усиления не менее 120. В итоге родилась такая схема:


В загашнике у меня нашлась давно собранная плата с этим операционником, собирал как предусилитель для микрофона, ее я и применил:


Собрал на бредборде такую схему подключения двухстрочного дисплея к микроконтроллеру:


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


Код Bascom-AVR для работы с термопарой:

$regfile = "m8def.dat"
$crystal = 8000000

Dim W As Integer

"подключение двухстрочного дисплея

Config Lcdpin = Pin , Rs = Portb . 0 , E = Portd . 7 , Db4 = Portd . 6 , Db5 = Portd . 5 , Db6 = Portb . 7 , Db7 = Portb . 6
Config Lcd = 16 * 2
Cursor Off
Cls

"считывание значения с АЦП по прерыванию от таймера

Config Timer1 = Timer , Prescale = 64
On Timer1 Acp

"конфигурация АЦП

Config Adc = Single , Prescaler = Auto , Reference = Avcc

Enable Interrupts
Enable Timer1

Do

Cls
Rem Температура:
Lcd "Teјѕepaїypa:"
Lowerline
Lcd W


Waitms 200

Loop


"работа с АЦП

Acp :

Start Adc "запуск АЦП
W = Getadc (1 )
W = W / 1 . 28 "подгоняем замеры под действ. температуру
Return

End

PIC16F676 Применение, это и паяльная станция, и управление высокотемпературными процессами и т.д. с функцией ПИД регулировки нагревательного элемента

Решил в свой ламинатор вставить термометр, термометр на термопаре K-типа. Чтобы он у меня стал более информативен, считаю, что хоббийный радиолюбитель не может довольствоваться, когда на таком приборе горит только два светодиода "POWER” и "READY” . Развожу платку под свои детальки. На всякий случай с возможностью её резать пополам(это некоторая универсальность). Сразу с местом под силовую часть на тиристоре, но пока эту часть не использую, это будет у меня схемка под паяльник (когда придумаю, как в жало термопару пристроить)


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


Настраиваю, сначала делаю, как сказано в форуме , не впаиваю термопару, задаю 400 (хотя если этот параметр будет в памяти, этот пункт отпадет) настраиваю переменниками примерно комнатную и точно по кипению,

Такой контроллер теоретически работает до 999°C но в домашних условиях такую температуру вряд ли найти, самое большее это открытый огонь, но у этого источника тепла сильная нелинейность и чувствительность к внешним условиям.

вот примерная таблица.
и еще для наглядности

Так что выбор невелик в выборе источника для настройки показаний контроллера.

больше тут никакой игры кнопочками, Все можно собирать,
Термопару использовал от китайского тестера. И пост в форуме надоумил меня, что эту термопару можно размножать, её длина почти полметра, отрезаю 2 см.

делаю трансформатором по скрутке угольком, шарик получается, а к двум концам точно так, по медной проволочке, для хорошей пайки к моим проводам.

Но можно собрать самому в два раза дешевле.
Кому интересно - добро пожаловать под кат.

Начнем по порядку.
Термопара… как термопара. Метр ровно, К типа, 0-800C

Можно врезать в корпус, имеется резьбовая часть, которая вращается свободно. Диаметр 5,8мм, шаг - 0,9~1.0мм, похоже М6 x 1,0 мм. Под ключ на 10


Это все хорошо, дальше что делать? Нужно преобразовать сигнал (термоэдс) в цифровой или аналоговый сигнал, чтоб читать ардуиной. В этом нам поможет . Это преобразователь сигнала термопары K-типа в цифру, имеет интерфейс, что нас устраивает.
А вот и наш герой - ($4.20)


Стоил $4.10, но того лота больше нет (продавец тот же).

Подключать будем к ардуине, можно взять простенькую ($5.25, можно найти дешевле, здесь Вы видите именно эту)


Данные будем писать на карту памяти (и заодно слать в порт) с помощью $1.25.


Интерфейс, тоже, кстати, SPI. Только не все карточки его поддерживают. Не завелось - попробуйте сначала другую.
В теории все линии SPI устройств (MOSI или SI, MISO или SO, SCLK или SCK), кроме CS (CS или SS - выбор микросхемы), можно подключить к одним контактам ардуины, но тогда MAX6675 работает неадекватно. Поэтому я все разнес по разным пинам.
В основу скетча лег пример по работе с картами памяти с .
Библиотека и скетч для MAX6675 . Схема подключения MAX6675:

#include
#include

Int units = 1; // Units to readout temp (0 = F, 1 = C)
float error = 0.0; // Temperature compensation error
float temp_out = 0.0; // Temperature output varible

MAX6675 temp0(9,8,7,units,error);

Void setup()
{
Serial.begin(9600);
Serial.print(«Initializing SD card...»);

PinMode(10, OUTPUT);
if (!SD.begin(10)) {
Serial.println(«initialization failed!»);
return;
}
Serial.println(«initialization done.»);

// Проверяем, существует ли на карте файл data.csv, если существует, то удаляем его.
if(SD.exists(«temp.csv»)) {
SD.remove(«temp.csv»);
}
// открываем файл. заметьте, что только один файл может быть открыт за раз,
// поэтому вы должны закрыть этот, чтобы открыть другой.
myFile = SD.open(«temp.csv», FILE_WRITE); // открыть на запись


if (myFile) {
Serial.print(«Writing to temp.csv...»);
// закрываем файл:
myFile.close();
Serial.println(«done.»);
}
else {


}

}
void loop()
{

Temp_out = temp0.read_temp(5); // Read the temp 5 times and return the average value to the var

Time = time + 1; // Увеличиваем время на 1

MyFile = SD.open(«temp.csv», FILE_WRITE);

// если файл нормально открылся, запишем в него:
if (myFile) {
// записываем время
myFile.print(time);
Serial.print(time);
// добавляем точку с запятой
myFile.print(";");
Serial.print(";");
// пишем температуру и перевод строки
myFile.println(temp_out);
Serial.println(temp_out);
// закрываем файл:
myFile.close();
}
else {
// а если он не открылся, то печатаем сообщение об ошибке:
Serial.println(«error opening temp.csv»);
}
delay(1000); // Ждем секунду
}


Скачать:

Сегодня мы расскажем, как своими руками сделать электронный термометр из трех деталей.

Очень простой и достаточно точный термометр можно сделать, если у вас случайно завалялся старый стрелочный амперметр со шкалой 100 мкА.
Для этого потребуется и всего две детали.
Температура измеряется датчиком LM 35. Этот интегральный кремниевый включает в себя термочувствительный элемент — первичный преобразователь и схему обработки сигнала, выполненные на одном кристалле и заключенные в корпус, такой, как, например, у КТ 502 (ТО- 92). У датчика LM 35 есть конструктивная разновидность с теми же параметрами, но иной цокалевкой и теплоотводом, что очень удобно для контактных измерений температуры.
Выходное напряжение датчика LM 35 пропорционально шкале Цельсия (10мВ/ С). При температуре 25 градусов этот датчик имеет на выходе напряжение 250 мВ, а при 100 градусов на выходе 1,0 В.
Обозначение датчика несколько необычно. Цоколевка приведена на рисунке.

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

В авторском варианте для тарировки был использован градусник от 0 до 50 градусов Цельсия с ценой деления 0,1 градус, поэтому термометр получился достаточно точным.
К сожалению, найти такой градусник проблематично. Для грубой тарировки можно просто положить датчик рядом с термометром, измеряющем скажем температуру в помещении, подождать часа два и выставить нужную температуру на шкале микроамперметра.
Если точный градусник все же найдется, то в качестве индикатора вместо стрелочного прибора можно использовать цифровой мультиметр, например китайский ВТ-308В, тогда показания температуры можно будет считывать до десятых долей градуса.
Для тех, кто хочет ознакомиться с интегральными датчиками подробно- простите сайт kit-e.ru или rcl-radio.ru (искать LM 35).