Термостат на attiny2313 і ds18b20

У цій статті розповім про збірку цифрового термостата, який би вимірював температуру і підтримував її на певному, заздалегідь встановленому рівні. Як то мені на роботі підкинули завдання зібрати термостат для контролю і утримання в заданих межах температури гарячої води, яка подається в побутові приміщення. Тоді будемо вирішувати!
Відразу було вирішено збирати цифровий прилад. Тепер постало питання який тип термодатчика застосувати? Так як температура буде контролюватися в баку, в якому знаходиться ТЕН і особливої ​​точності тут не потрібно, та й температури не великі, то відразу відмовився від термопар і термосопротивлений, по-перше досить дороги вони і вимагають складної вхідної частини приладу (для термопар - компенсація термо - е.р.с холодних кінців, для термосопротивлений - компенсація опору сполучної лінії). Тут згадав про цифрові датчики температури фірми Dallas (нині MAXIM). У свій час я довго працював з датчиком DS1821. Мікросхема DS1821 може працювати в режимі термометра або в режимі термостата. У першому з цих режимів DS1821 забезпечує вимір температури в діапазоні -55 .. + 125 ° C з дискретністю 1 ° C. Найпривабливішим є те, що такий термометр вже відкалібрований на заводі, гарантована точність становить + 1 ° C в діапазоні 0 .. + 85 ° C і + 2 ° C у всьому діапазоні робочих температур. На ній я робив прості термостати з верхнім і нижнім межею спрацьовування. Але, в даній ситуації мені потрібен легко перебудовується прилад на інше значення інтервалів температури. А цей датчик потрібно перепрограмувати на інший діапазон. Як - ні будь напишу статтю про цей датчик, він досить цікавий! Цей датчик так само можна змусити працювати як термометр, але вибір мій упав на новіший з цього сімейства DS18B20.

Термостат на attiny2313 і ds18b20

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, розподілених за великим ділянці. Діапазон роботи датчика і точність мене
дуже навіть влаштовувала і на майбутнє можна ще куди датчик поставити доведеться, тут все просто. Для обміну даними термометр DS18B20 використовує 1-Wire протокол (Однопровідна протокол). Це низкоскоростной двонаправлений напівдуплексний послідовний протокол обміну даними використовує всього один сигнальний провід. Природно потрібно ще і поворотний (земляний) провід. Є кілька типів сигналів, визначених 1-Wire протоколом - імпульс скидання, імпульс присутності, запис 0, запис 1, читання 0 і читання 1. Всі ці сигнали, за винятком імпульсу присутності, формуються на шині головним пристроєм - MASTERом. У нашому випадку це мікроконтролер. Принцип формування сигналів у всіх випадках однаковий. У початковому стані 1-Wire шина за допомогою резистора підтягнута до плюса харчування. Головне пристрій «провалює» на певний час 1-Wire шину в нуль, потім «відпускає» її і, якщо потрібно, «слухає» відповідь підлеглого (SLAVE) пристрої. У нашому випадку підлеглий пристрій - термометр DS18B20.
Блок - схема DS18B20 (DS18S20, DS1820)

Термостат на attiny2313 і ds18b20

Схема підключення з зовнішнім живленням датчиків

Можна підключати кілька датчиків паралельно.
Схема підключення датчика DS18B20 в режимі паразитного харчування
Термостат на attiny2313 і ds18b20

Висновок Vdd з'єднується з GND, а 1-Wire шина додатково підключається до джерела живлення через польовий транзистор.
Коли датчик DS18B20 може конвертувати температури або копіює дані з ОЗУ в EEPROM пам'ять, він споживає струм до 1,5 мА. Цей струм може викликати неприпустиме зниження напруги на 1-Wire шині. Щоб цього не відбувалося, 1-Wire шину на час виконання цих операцій підключають до джерела живлення. Для цього і потрібен польовий транзистор. Можна обійтися і без транзистора, але наприклад коли з'єднувальний кабель довгий, можуть відбуватися збої і робота буде не стійка.
Датчик вибрали, тепер можна подумати і про схему пристрою збору даних з датчика, індикації та управління навантаженням.
Схем термостатів в інтернеті багато, тому винаходити велосипед не став, а взяв схему ось звідси

Термостат на attiny2313 і ds18b20

ось побільше
Схема досить проста, нічого зайвого, зручна індикація і управління.
Схему трохи допрацював. Замість реле, яке комутує навантаження, поставив опторазвязку на збірці MOC3041 і симистор Т122-25, який буде включати ТЕН.
Кнопками "+" і "-" виставляється нижній поріг температури. У режимі зміни перед температурою відображається знак «t».
Термостат на attiny2313 і ds18b20

При одночасному натисканні обох кнопок термостат входить в режим установки dt (дельта температури). За замовчуванням він дорівнює 1, тобто якщо ми кнопками "+" і "-" виставили температуру 30 градусів, то температура буде підтримуватися в межах від 30 до 31 градуса. Якщо dt встановити 2, то температура буде підтримуватися в межах від 30 до 32 градусів.
Термостат на attiny2313 і ds18b20

Якщо немає натискань на протязі 5 секунд індикація повертається до відображення виміряної температури.
У режимі вимірювання температури індикатор відображає поточну виміряну температуру, і в першому сегменті символ «L» позначає включену навантаження. наприклад:
- встановлена ​​температура 30 градусів, дельта 1 градус, виміряна температура 27,0 градуси. На індикаторі буде
Термостат на attiny2313 і ds18b20

- встановлена ​​температура 30 градусів, дельта 1 градус, виміряна температура 32,0 градуси. На індикаторі буде
Термостат на attiny2313 і ds18b20

Так само даний термостат можна використовувати для холодильника, тільки вихід на виконавчий пристрій потрібно брати з виведення 6 мікроконтролера.
Так як термостат дозволяє виставляти температуру до +125 градусів, а мені цього не потрібно, та й хто може кнопочки поклацати захоче заради інтірес і наклацает температуру води в 90 градусів, то було вирішено обмежити діапазон від 0 до 60 градусів. Для цього на тому ж сайті є проект в CodeVisionAVR, відкриваємо його, в файлі kbd.c знаходимо наступний код
if (T_LoadOn> 450)
T_LoadOn -;
RefreshDisplay ();
>
Це нижня межа виставляється температури. У файлі termostat_led.c є пояснення за формою подання температури
// температура для зручності представлена ​​так:
// - до 1000 = негативна
// - 1000 = 0
// - більше 1000 = позитивна
// - 0,1 ° С = 1
// ---------------------------------
// - 55 ° C = 450
// - 25 ° C = 750
//-10.1°C = 899
// 0 ° C = 1000
//10.1°C = тисяча сто один
// 25 ° C = 1250
// 85 ° C = 1850
// 125 ° C = 2250
Тобто 450 це -55 градусів (1000-550 = 450), а мені потрібен 0 градусів. Тоді 0 градусів буде тисячі.
зраджую код
if (T_LoadOn> 1000)
T_LoadOn -;
RefreshDisplay ();
>
Тепер розберемося з верхньою межею
if (T_LoadOn <(2250 — DeltaT))
T_LoadOn ++;
RefreshDisplay ();
>
Тут число 2250 означає верхню межу температури в 125 градусів (1000 + 1250 = 2250), а мені потрібно 60 градусів, тоді 1000 + 600 = 1600.
Міняємо код і отримуємо
if (T_LoadOn <(1600 — DeltaT))
T_LoadOn ++;
RefreshDisplay ();
>
Далі натискаємо в CodeVisionAVR кнопочку make the projekt і забираємо готовий файл для прошивки. Ось так все просто. Термостат зібраний на друкованій платі. Індикаторів для динамічної індикації на той момент не знайшлося, були в наявності тільки здвоєні для статики. Довелося під них розводити під них окрему плату, на тій же платі розташовані токоограничивающие резистори (SMD)
Термостат на attiny2313 і ds18b20

Термостат на attiny2313 і ds18b20

Ось власне весь термостат в зборі. Все було розміщено на підставі з ізоляційного матеріалу. Блок живлення використовувався готовий імпульсний від вай фай точки доступу. Все це буде монтуватися в електричному щиті. Симистор варто окремо на невеликому радіаторі.
Термостат на attiny2313 і ds18b20

Термостат на attiny2313 і ds18b20

Термостат на attiny2313 і ds18b20

Ось і вся конструкція. В роботі показала себе надійно, збоїв помічено не було.
файли
Прошивка для індикаторів з загальним анодом
Прошивка для індикаторів з загальним катодом
Вихідні тексти
Даташит на DS18B20

Так працює не погано.
зи. як заповнити форму й додати?

Термостат на attiny2313 і ds18b20

вставляйте пряме посилання на фото

Термостат на attiny2313 і ds18b20

Я для бойлера свого, подібний девайс спроектував.

скажіть будь-ласка яким програматором прошивали і який прогой?
які Фузі ставити?

Термостат на attiny2313 і ds18b20

Ось фьюз:

Термостат на attiny2313 і ds18b20

Порушували программатором STK200 / 300 в програмі CodeVision AVR

Оуу.тупанул фьюз НЕ виставіл.поспешіл.теперь висвічується комунікаційних помилка.
немогу ні стіреть ні запісать.МК кранти або можна якось відновити (стерти і прошити заново) .І ще є якісь нюанси в налаштуванні програми для прошівкі.ілі залишити все по умолчанію.У мене так ATtiny2313 частота 4 мгц, тип програм.Kanda. STK200 + \ 300, LPT1 378h, затримка 1, галка варто ATmega169.

Термостат на attiny2313 і ds18b20

Схожі статті