Схема двоканальний термометр на мікроконтролері. Електронний термометр з бездротовим датчиком

На малюнку показана схема термометра виконаного на основі мікроконтролера PIC16F628A, як датчик використовується цифровий датчик температури DS18B20. Індикатор термометра складається з 4-розрядного семисегментного індикатора. Діапазон вимірюваної температури від-55 до + 125 градусів за Цельсієм. Температура зчитується кожні 15 секунд, час зчитування можна змінити в коді.

Напруга живлення термометра 5В струм споживання 90 мА. У схемі використовуються транзистори BC337 чи аналогічні. Струм споживання кожного сегмента індикатора 15 мА (динамічна індикація), обмежений резисторами 220 Ом (індикатор із загальним катодом).

Файл прошивки

DS18B20 цифровий термометр з програмованою роздільною здатністю, від 9 до 12-bit, яка може зберігатися в EEPROM пам'яті приладу. DS18B20 обмінюється даними по 1-Wire шині і при цьому може бути єдиним пристроєм на лінії так і працювати в групі. Усі процеси на шині керуються центральним процесором.

Діапазон вимірювань від –55°C до +125°C та точністю 0.5°C у діапазоні від –10°C до +85°C. На додаток, DS18B20 може живитися напругою лінії даних (parasite power), за відсутності зовнішнього джерела напруги.
Кожен DS18B20 має унікальний 64-бітовий послідовний код, який дозволяє спілкуватися з безліччю датчиків DS18B20 встановлених на одній шині. Такий принцип дозволяє використовувати один мікропроцесор, щоб контролювати безліч датчиків DS18B20, розподілених на великій ділянці. Додатки, які можуть отримати вигоду з цієї особливості, включають системи контролю температури в будівлях, обладнанні або машинах, а також контроль та управління температурними процесами.

  • Схожі статті

Увійти за допомогою:

Випадкові статті

  • 10.10.2014

    На малюнку показано схему попереднього підсилювачаз тембро-блоком, тембро-блок включений у ланцюг зворотнього зв'язкупопереднього підсилювача. Напруга живлення уст-ва може змінюватись від 12 до 24В, споживаний струм не більше 10 мА. Вхідний сигнал надходить через розділовий конденсатор С1, резистори R1 і R2 визначають напругу зміщення транзистора VT1 після попереднього посилення …

Вирішив зробити двоканальний термометр, тільки не звичайний, а з бездротовим датчиком для вулиці. Ідея, звісно, ​​не нова, на ринку вже є подібні термометри промислового виробництва. Так як у мене були напрацювання з підключення радіомодулів до мікроконтролера, я почав розробляти свій варіант бездротового термометра.

Для вимірювання температури я використовував поширені датчики DS18B20, для відображення показань застосував не менш популярний. Радіомодулі та алгоритм передачі даних я розглядав раніше у статті про

Нижче представлена ​​схема бездротового датчика мікроконтролера PIC12F675.

Після подачі живлення мікроконтролер зчитує значення температури з датчика BK1 і відправляє ці дані на радіопередавач A1, після чого відбувається перехід у режим сну. Пробудження мікроконтролера відбувається з переривання, яке генерується зміною рівня лінії GP0. До цієї лінії підключено RC ланцюжок на елементах R2 та C4, які виконують функцію таймера. При виході з режиму сну на лінії GP0 встановлюється низький логічний рівень, тим самим конденсатор C4 розряджається. Перед відходом у "сон" лінія налаштовується на вхід, конденсатор починає заряджатися через резистор R4, при досягненні порогової напруги (близько 1,2В) відбувається переривання та пробудження мікроконтролера. При вказаних на схемі номіналах R2, C4 період пробудження становить приблизно 5 хвилин. Встановивши перемичку JP1 можна скоротити період до 5,5 секунд. Шляхом підбору конденсатора і резистора можна налаштовувати бажаний час періоду, але при цьому треба враховувати струм заряду конденсатора в плані енергоспоживання.

Значення температури по радіоканалу передається у вигляді пакета з 3-х байт, останній байт є контрольною сумою перших 2-х байт. Алгоритм передачі даних, що я використовую, в принципі дозволяє обходитися без контрольної суми, ймовірність прийому неправильних даних низька. Швидкість передачі становить 3,3 Кбіт/сек. Щоразу після вимірювання температури надсилається 3 пакети байтів, пауза між пакетами становить 10 мс, такий варіант передачі я застосував для збільшення надійності отримання даних приймачем. Це з тим, що приймальна сторона перериває прийом сигналу на 4-5 мс, під час вимірювання температури з внутрішнього (домашнього) датчика.

Як живлення використовується батарея 6F22 на 9В ("Крона"), модуль радіопередавача A1 живиться безпосередньо від батареї. Для живлення мікроконтролера використовується мікропотужний стабілізатор напруги DA1 (MCP1702) на 5В, власний струм споживання стабілізатора становить 1-2 мкА, максимальний струм навантаження до 250 мА. Стабілізатор MCP1702 можна замінити на LP2950, ​​струм споживання якого вищий і становить 75 мкА. Звичайні стабілізатори напруги типу L78хх мають великий струм споживання в кілька міліампер, тому не підходять для апаратури з батарейним живленням. Струм споживання пристрою в сплячому режимі змінюється з часом у міру заряду конденсатора С4, перші 2,5 хвилини споживання становить 10 мкА, наступні 2,5 хвилин струм плавно збільшується, до моменту виходу з сплячого режиму. Це явище виникає через наявність струмів перемикання вхідного буфера мікроконтролера.

Хочу зазначити, що за низьких температур ємність батарейок зменшується швидше, не всі типи батарейок можна використовувати в таких умовах. Найкращими показниками при негативних температурах мають літієві батареї, далі йдуть Ni-Mh акумулятори, лужні батареї займають третю позицію, сольові елементи не придатні для таких умов.

Нижче представлено схему термометра на мікроконтролері PIC16F628A.


Дисплей HG1, датчик BK1 та мікроконтролер живляться напругою 3,3В від стабілізатора DA2. Таке значення було обрано у зв'язку з характеристиками дисплея, максимальна напруга живлення якого становить 3,3В, крім цього відпадає необхідність у відповідності до рівнів напруги між лініями введення/виводу дисплея і мікроконтролера. Модуль приймача A1 живиться від стабілізатора DA1 з вихідною напругою 5В. Резистори R6, R7 встановлені для узгодження рівнів напруги.

Мікроконтролер DD1 зчитує значення температури з датчика BK1 кожні 2 секунди, паралельно приймає сигнал із приймача, при отриманні пакета байтів від передавача спалахує світлодіод HL1. У верхній частині дисплея відображається напис “Дім”, під яким виводиться значення температури з внутрішнього (домашнього) датчика, нижче відображається напис “Вулиця” та температура, отримана від бездротового датчика. Після прийому даних по радіоканалу мікроконтролер запускає таймер, який веде відлік часу для контролю отримання даних. Якщо дані не були отримані за період відліку таймера, замість показань температури, на дисплеї висвічується символи тире “- – – – -”. Час відліку можна встановити в межах 1-15 хвилин з кроком в одну хвилину. Для цього перед програмуванням мікроконтролера необхідно записати число від 1 до 15 в комірку EEPROM з адресою 0x00. За замовчуванням встановлюється період 7 хвилин. При несправності датчиків BK1 для обох пристроїв замість значення відповідної температури виводиться напис “ERROR”. Кнопка SB1 керує підсвічуванням дисплея, за замовчуванням підсвічування увімкнено. Кнопка SB2 призначена для регулювання контрастності дисплея, оскільки у різних екземплярів вона може відрізнятись.

Для живлення пристрою підійде нестабілізоване джерело живлення з вихідною напругою 8-12В. Обидва пристрої розміщені у пластикових корпусах. Антена для радіомодулів виконана у вигляді відрізка одножильного дроту довжиною 17 см (чверть довжини хвилі частоти, що несе).





Термометр на мікроконтролері PIC16F628A і DS18B20 (DS18S20) - стаття з докладним описом схеми запам'ятовуючого термометра і, до того ж, - логічне продовження раніше опублікованої мною статті на сайті сайту pichobbi.narod.ru. Цей термометр досить непогано зарекомендував себе, і було прийнято рішення трохи його модернізувати. У цій статті розповім, які зміни внесено до схеми та робочу програмуопишу нові функції. Стаття буде корисна новачкам. Пізніше переробив поточну версію термометра.

Термометр на мікроконтролері PIC16F628A та DS18B20(DS18S20) вміє:

  • вимірювати та відображати температуру в діапазоні:
    -55...-10 та +100...+125 з точністю 1 градус(ds18b20 та ds18s20)
    -в діапазоні -9,9 ... +99,9 з точністю 0,1 градус (ds18b20)
    -в діапазоні -9,5 ... +99,5 з точністю 0,5 градус (ds18s20);
  • Автоматично визначати датчик DS18B20 чи DS18S20;
  • Автоматично перевіряти датчик на аварію;
  • Запам'ятовувати максимальну та мінімальну виміряні температури.

Також у термометрі передбачено легку заміну 7 сегментного індикатора з ОК на індикатор з ОА. Організована щадна процедура запису в EEPROM пам'ять мікроконтролера. Вольтметр, який непогано себе зарекомендував, описаний у цій статті.

Принципова схема цифрового термометра на мікроконтролері розроблялася для надійного та тривалого використання. Усі деталі, що застосовуються у схемі, не дефіцитні. Схема проста у повторенні, відмінно підійде для початківців.

Принципова схема термометра показана малюнку 1

Малюнок 1 - Принципова схема термометра на PIC16F628A + ds18b20/ds18s20

Описувати всю важливу схему термометра не стану, тому що вона досить проста, зупинюся тільки на особливостях.

Як мікроконтролер застосовується PIC16F628Aфірми Microchip. Це недорогий контролер і, до того ж, не дефіцитний.

Для вимірювання температури використовуються цифрові датчики. DS18B20або DS18S20фірми Maxim. Ці датчики не дорогі, малі за розміром та інформація про виміряну температуру передається у цифровому вигляді. Таке рішення дозволяє, не турбуватися про переріз проводів, про їх довжину та інше. Датчики DS18B20,DS18S20здатні працювати в діапазоні температур від -55 ... +125 °С.

Температура виводиться на 7-ми сегментний 3-розрядний LED індикатор із загальним катодом (ОК) або з (ОА).

Для виведення на індикатор максимальної та мінімальної виміряної температури потрібна кнопка SB1. Для скидання пам'яті також потрібна кнопка SB1

Кнопкою SA1 можна оперативно перемикати датчики (вулиця, будинок).

Jamper необхідний для перемикання загального дроту LED індикатора. ВАЖЛИВО!Якщо індикатор з ОК - то ставимо jamper на нижнє за схемою положення, а транзистори VT1-VT3 впаюємо p-n-p провідності. Якщо LED індикатор з ОА, то jamper переводимо у верхнє за схемою положення, а транзистори VT1-VT3 впаюємо n-p-n провідності.

У таблиці 1 можна ознайомитися з усім переліком деталей та можливою їх заміною на аналог.

Таблиця 1 – Перелік деталей для збирання термометра
Позиційне позначення Найменування Аналог/заміна
С1, С2 Конденсатор керамічний - 0,1мкФх50В -
С3 Конденсатор електролітичний - 220мкФх10В
DD1 Мікроконтролер PIC16F628A PIC16F648A
DD2,DD3 Датчик температури DS18B20 або DS18S20
GB1 Три пальчикові батареї 1,5В
HG1 7-ми сегментний LED індикатор KEM-5631-ASR (OK) Будь-який інший малопотужний для динамічної індикації та відповідний для підключення.
R1, R3, R14, R15 Резистор 0,125Вт 5,1 Ом SMD типорозмір 0805
R2, R16 Резистор 0,125Вт 5,1 ком SMD типорозмір 0805
R4, R13 Резистор 0,125Вт 4,7 ком SMD типорозмір 0805
R17-R19 Резистор 0,125Вт 4,3 ком SMD типорозмір 0805
R5-R12 Резистор 0,125Вт 330 Ом SMD типорозмір 0805
SA1 Будь-який відповідний перемикач
SB1 Кнопка тактова
VT1-VT3 Транзистор BC556B для індикатора із ОК/ транзистор BC546B для індикатора з ОА KT3107/КТ3102
XT1 Клемник на 3 контакти.

Для початкового налагодження цифрового термометра застосовувалася віртуальна модель, побудована в протеусі. На малюнку 2 можна побачити спрощену модель у протеусі

Малюнок 2 – Модель термометра на мікроконтролері PIC16F628A в Proteus'e

На малюнку 3-4 показано друковану плату цифрового термометра

Рисунок 3 – Друкована плата термометра на мікроконтролері PIC16F628A(низ) не в масштабі.

Рисунок 4 – Друкована плата термометра на мікроконтролері PIC16F628A(верх) не в масштабі.

Термометр, зібраний робочих деталей починає працювати відразу і налагодження не потребує.

Результат роботи малюнки 5-7.

Малюнок 5 - Зовнішній виглядтермометра

Малюнок 6 - Зовнішній вигляд термометра

Малюнок 7 - Зовнішній вигляд термометра

ВАЖЛИВО!У прошивку термометра не вшитареклама можна користуватися на втіху.

Поправки, внесені до робочої програми:

1 автоматичне визначеннядатчика DS18B20 або DS18S20;

2. знижений час перезапису в EEPROM (якщо виконалося умова для перезапису) з 5 хвилин до 1 хвилини.

3. збільшено частоту мерехтіння точки;

Більше докладний описроботи термометра можна переглянути в документі, який можна завантажити наприкінці цієї статті. Якщо завантажувати немає бажання, то на сайті www.pichobbi.narod.ruтакож добре розписана робота пристрою.

Готова плата добре помістилася в китайський будильник (малюнки 8, 9).

Малюнок 8 – Вся начинка у китайському будильнику

Малюнок 9 - Вся начинка в китайському будильнику

Відео - Робота термометра на PIC16F628A

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

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

Для прошивки PIC16F628A я використав програму ProgCode, встановивши її на комп'ютер і зібравши програматор ProgCode за відомою схемою:

Позначення висновків мікроконтролера і цоколівка деяких інших аналогічних МК:

Програма ProgCode та інструкції з фотографіями покрокової прошивки знаходяться в архіві форуму. Там і всі необхідні для цієї схеми файли. У програмі відкриваємо та натискаємо на кнопку "записати все”. У моєму виготовленому пристрої, як видно з фотографій, зібрано 2 термометри відразу в одному корпусі, верхній індикатор показує температуру будинку, нижній - на вулиці. Розміщується він у будь-якому місці приміщення та з'єднується з датчиком гнучким проводом в екрані Матеріал надав ansel 73. Прошивку редагував:

Опис роботи термометра

Призначення цього термометра лише показувати температуру. Невеликі відмінності від інших подібних схем лише у форматі виведення температури на LED індикатор, який є 4-розрядним надяскравим CA04-41SRWA. Як датчик температури застосований DS18B20 у звичайному включенні з окремим проводом живлення.

Схема розрахована на живлення від батарейок, тому при включенні живлення індикатор нічого не показує. Програма термометра при цьому проходить ініціалізацію і відразу йде в режим сну. Сплячий режим мікроконтролера дозволяє заощаджувати енергію джерела живлення. При натисканні на кнопку, підключену до PORTB0, вмикається індикація.
На індикатор виводиться підказка:



Потім індикатор виводяться самі показання температури.



Вигляд виведення показань наступний:






Відмінність форми виведення є лише низьких позитивних температур. Під час індикації такої температури до символу "градус" додано знак "C". Тобто градуси цельсія. Символ "градус" присутній на індикаторі при будь-якій температурі.

Датчик температури DS18B20 вимірює температуру з роздільною здатністю 0,0625 градусів цельсію. Термометр зчитує показання з датчика і округляє їх до десятих часток градуса. Десяті частки градуса виводяться на індикацію у всіх режимах індикації, крім режиму температур менших ніж -10 градусів цельсію. Це зроблено для того, щоб на показаннях негативних температур завжди був знак "мінус".

Показання присутні на індикаторі протягом 30 секунд. Потім прилад знову йде в режим сну і індикатор вимикається.


Моделювання термометра в протеусі


Модель у протеусі дозволила відпрацювати програмну частину термометра, не збираючи сам прилад у залізі. Усі режими тестовані. Збоїв при моделюванні у програмі немає.



Саму модель можна завантажити за посиланням: termo_i_v2.DSN

Принципова схема термометра


Схема намальована, відштовхуючись від малюнка друкованої плати. Спочатку було зроблено розведення провідників друкованої плати, таким чином, щоб довжина провідників і розташування деталей було оптимальним і тільки після того, як на друкованій платі було отримано відповідність портів мікроконтролера PIC16F628A висновкам індикатора CA04-41SRWA була складена точна принципова схема.


Друкована плата термометра


mob_info