Arv research - ну зовсім маленький термостат

Проект "Термостат - менше не буває" розвинувся до чергової стадії мініатюрності. Майже не змінившись за фізичними габаритами, він тим не менше став ще простіше по схемотехніці, а число функцій стало навіть більше!

Особливість пристрою в тому, що управління всіма режимами здійснюється однією-єдиною кнопкою. причому, як показали наші з Toledo експерименти, це дуже зручно. З огляду на незламне бажання вимірювати температуру з точністю до десятих часток градуса, я реалізував і цю можливість, поєднавши діапазон термометра від -55.0 ° С до + 125.0 ° С з Трехразрядное семісегментним індикатором. Це друга особливість пристрою: десяті частки индицируются тільки в діапазоні -9.9. + 99.9 ° С, а інші температури відображаються вже без десятих часток. Думаю, це оптимальне рішення. Третя особливість - вже не нова: це режим двухпорогового термостата (тобто з гістерезисом) з протифазні виходами, що дозволяє використовувати пристрій для підтримки температури від -50 ° С до + 99 ° С як шляхом управління нагрівачем, так і охолоджувачем (вентилятором ).

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

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

Мікроконтролер DD1 типу Atiny26. датчик DA2 - DS18S20 (якщо є DS1820 - підійде і він), його можна і потрібно винести на проводках в потрібне місце подалі від нагріваються компонентів, здатних спотворити показання. Харчування 5В можна отримати від будь-якого джерела - на схемі показаний стабілізатор DA1 типу 7805 (або КРЕН05А). Індикатор - трьохрозрядний 7-сегментний «динамічний» (з загальними анодами або катодами - все одно). У моєму випадку це був «безіменний» індикатор «китайського» типу, його цоколевка визначена експериментально, тому номери висновків не вказані, а лише позначені сегменти. Кнопка SB1 - само собою будь-яка. У прошивці реалізована Посегментна динамічна індикація, тому число струмообмежувальні резисторів зведене до трьох, тобто до мінімуму, їх опір має обмежувати струм через сегмент індикатора на рівні не більше 30 мА.

Виходи out1 і out2 здатні видати (або прийняти) струм до 40 мА, тому крайовий каскад може бути будь-яким - від малопотужного пятівольтового реле до потужного транзисторного ключа. Ці виходи працюють завжди в протифазі.

Програма написана на мові Сі, її текст доступний, компілюється за допомогою WinAVR. При компіляції обов'язково потрібно включати максимальну оптимізацію за розміром коду. інакше в пам'ять мікроконтролера не поміститься. До речі, в поточній версії залишається вільним близько 12% пам'яті програм - є шанс доповнити програму ще якимось корисним властивістю. До речі, дуже скоро це буде зроблено: в прошивку буде введений додатковий режим контролю "граничних" рівнів температури (на прохання одного з відвідувачів сайту).

Для тих, хто не готовий розбиратися з вихідними текстами, є 2 варіанти готових прошивок - для індикаторів з загальними анодами і катодом. Перед прошивкою (або після) необхідно встановити фьюз мікроконтролера CKSEL = 0100. тобто активувати вбудований RC-генератор 8 МГц, інші фьюз можна залишити в передбаченому на заводі-виробнику стані. Крім прошивок, мати джерельні коди програми.

Крім прошивок доступний для скачування варіант друкованої плати в форматі Sprint Layout 5 (для SMD компонентів і згаданого «безіменного» індикатора, установки кнопки поза плати і харчування відразу від 5В-джерела). Фото зібраного користувачем Toledo пристрої (без стабілізатора DA1 - мікросхема просто для масштабу) наведено на малюнках:

Arv research - ну зовсім маленький термостат

Arv research - ну зовсім маленький термостат

Вид з лицьового боку

Ось як працює пристрій. Є 5 функціональних режимів:

  1. Індикація температури.
  2. Індикація верхнього порогу термостата.
  3. Індикація нижнього порога термостата.
  4. Корекція верхнього порогу.
  5. Корекція нижнього порога.

Власне термостатирование. тобто порівняння поточної температури з граничними значеннями і формування відповідних вихідних сигналів, ведеться постійно в будь-якому з розглянутих режимів. Перемикання рівня при підвищенні температури на виходах відбувається, коли температура перевищує верхній поріг, а при зниженні температури - коли опускається нижче нижнього, тобто проміжок між значеннями порогів є гістерезис термостата.

У першому режимі на індикаторі просто відображається поточна температура.

У другому і третьому режимах відображаються відповідні пороги термостата. Для порогів значення задаються тільки в цілих градусах. Щоб можна було відрізнити одне значення від іншого, в першому розряді індикатора додатково підсвічуються сегменти А чи D відповідно для верхнього і нижнього порогів.

Перемикання першої трійки режимів здійснюється короткочасним натисканням на кнопку, причому тільки режим №1 стабільний - інші автоматично переходять до нього, якщо кнопка не було натиснуто більше 2,5 секунд.

З режимів індикації порогів можна перейти до режимам зміни відповідного порога, якщо натиснути і утримувати кнопку більше 2,5 секунд. З цього моменту починається цікаве (тобто та сама родзинка управління однією кнопкою). Як тільки включається режим зміни значення порога, відразу починає мерехтіти відповідний сегмент А чи D на першому індикаторі (ознака корекції порога), і одночасно, поки натиснута кнопка, відбувається швидка зміна значення. Дочекавшись, коли поріг «проскочить» бажане значення, потрібно відпустити кнопку. Після цього можна короткочасними натисканнями скорегувати значення в протилежному швидкій зміні напрямку. Якщо при утриманні кнопки відбувається зміна не в тому напрямку - треба відпустити її і знову натиснути надовго.

Поясню на прикладі. Припустимо, встановлені пороги -5 і +15 градусів, потрібно зробити їх -2 і +2. Включаємо режим корекції верхнього порогу, натиснувши і утримуючи кнопку в другому режимі. Через 2,5 секунди значення починає швидко змінюватися в бік збільшення. Дочекавшись, коли з'явиться на індикаторі 15. відпускаємо кнопку. Якщо не пощастило і на індикаторі 16 - не біда: натискаємо кнопку коротко і значення зменшується на 1, тобто стає 15. що й було потрібно. Чи не чіпаємо кнопку 2,5 секунди - мерехтіння сегмента А припиняється - знову включений режим 2. Натискаємо кнопку коротко, включаючи тим самим режим 3. Тепер натискаємо кнопку надовго і чекаємо, поки включиться режим корекції нижнього порога. Як тільки замерехтів сегмент D. значення починає швидко зменшуватися - чекаємо, поки воно не досягне значення -2 і відпускаємо кнопку. Проскочили? - не біда! Короткочасним натисканням кнопки повертаємо по одному проскоченному градусу. Далі - як і раніше: не чіпаємо кнопку 2,5 секунди, по і після виходу з режиму корекції не чіпаємо кнопку - в момент автоматичного включення режиму 1 відбудеться запам'ятовування нових значень порогів.

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