Безкоштовна технічна бібліотека ЕНЦИКЛОПЕДІЯ РАДІОЕЛЕКТРОНІКИ ТА ЕЛЕКТРОТЕХНІКИ Багатопрограмний таймер-годинник-термометр. Енциклопедія радіоелектроніки та електротехніки Енциклопедія радіоелектроніки та електротехніки / Регулятори потужності, термометри, термостабілізатори У статті описується універсальний цифровий прилад на базі PIC-контролера, який може виконувати функції багатопрограмного таймера, здатного керувати чотирма навантаженнями, годинником, будильником, широкодіапазонним термометром і терморегулятором, що забезпечує як нагрівання, так і охолодження контрольованого об'єкта. Універсальний цифровий пристрій, схема якого зображена на рис. 1, має такі технічні характеристики:
Керують приладом за допомогою 16-кнопкової клавіатури. Передбачено включення та вимикання підзвучування натискання кнопок, налаштування подачі звукових, світлових та керуючих сигналів, можливість індивідуального налаштування приладу під конкретне застосування шляхом зміни програми МК. Є резервне живлення від інтегрованої акумуляторної батареї. Усі встановлені при роботі з приладом параметри зберігаються навіть при відключенні резервного живлення протягом 40 років. Як видно зі схеми, основа пристрою – PIC-контролер DD1. Регістр зсуву DD2 і дешифратор DD3 призначені організації динамічної індикації, принцип якої у наступному. Спочатку на дешифратор DD3 подається код 1111, у результаті всіх його виходах встановлюються рівні лог. 1 і жоден із розрядів індикатора HG1 не світиться. Далі в регістр DD2 заноситься код необхідного символу, після чого DD3 подається код, відповідний потрібного розряду індикатора. Одночасно з оновленням даних для індикатора здійснюється сканування клавіатури, 16 кнопок якої поділено на дві групи - по вісім у кожній. Загальні висновки кнопок цих груп підключені до двох входів МК (RB0 та RB1). При натисканні будь-якої кнопки на один із цих входів подається сигнал балка. 0 з відповідного виходу дешифратора DD3, визначаючи тим самим її код. За допомогою клавіатури можна запускати/зупиняти будь-який з програмних таймерів або все одночасно, встановлювати режим роботи терморегулятора, поточний час, час будильника і т.д. . Розглянемо призначення кнопок клавіатури докладніше. "0", "Clock" - цифра 0 при введенні числової інформації або перемикання в режим годинника, в якому можна змінити поточний час, встановити час увімкнення будильника, увімкнути режим сигналізації настання нової години, відредагувати коефіцієнт корекції часу (див. далі). "1" - "9" - цифри 1 - 9 під час введення числової інформації або вибір відповідного програмного таймера. "Term" - перехід у режим терморегулятора, де можна задати поточне значення температури, відредагувати значення регульованої температури, тип регулювання (нагрівання або охолодження) та параметри терморезистора. "Del" - знак "мінус" при введенні значення регульованої температури, увімкнення/вимкнення терморегулятора, термометра, будильника або годинника (при вимкненні замість відповідних показань відображаються знаки ---), обнулення при введенні числових даних. "Set" - перехід/вихід у режим зміни значення будь-якого параметра (програмного таймера, поточного часу, будильника, термометра, терморегулятора, налаштувань). "Options" - перехід до режиму зміни налаштувань. Тут можна ввімкнути/вимкнути підзвучування кнопок, режим вітання, вибрати джерела видачі сигналів керування тощо. "Select" - запуск/зупинка поточного програмного таймера, якщо значення витримки часу відрізняється від 0. "АН" - запуск/зупинка всіх програмних таймерів, значення витримки часу яких від 0. Пристрій здатний видавати чотири управляючі сигнали, кожен з яких може використовуватися на розсуд користувача. Є можливість задавати джерело видачі цих сигналів:
У пристрої використовується двокольоровий світлодіод HL1, який блимає червоним кольором, якщо при запуску одного або більше таймерів хоча б один сигнал керування став активним, і зеленим кольором, якщо активних сигналів немає. Після закінчення витримки часу будь-якого із запущених таймерів індикатор HG1 починає блимати, а п'єзовипромінювач НА1 із вбудованим переривником подає звукові сигнали. Це продовжується доти, доки користувач не натисне будь-яку кнопку на клавіатурі або не пройде певний час, значення якого зберігається в пам'яті МК і може змінюватись при його програмуванні. Звуковий сигнал, що видається під час спрацьовування таймера, визначається двома параметрами: тривалістю звучання та числом звукових пачок. При спрацюванні будильника також подаються звукові сигнали, але блимати починають лише два крайні ліві символи індикатора - А і L (від англ. ALARM - будильник). Звуковий сигнал будильника також описується двома параметрами, що зберігаються у пам'яті МК. Залежно від застосованого кварцового резонатора точність ходу годинника виходить різною, тому в цьому пристрої реалізована програмна корекція часу. Коефіцієнт корекції задається користувачем з клавіатури і зберігається у пам'яті МК. Фактично він є числом мікросекунд, яке додається до періодів коливань, що генеруються внутрішнім таймером МК - у нашому випадку 1,92 мс. За допомогою коефіцієнта корекції домагаються, щоб цей час дорівнював 2 мс (період часу 1 с реєструється після кожних 500 таких періодів). Температура вимірюється шляхом виміру падіння напруги на терморезисторі RK1. Його опір залежно від температури визначається такою формулою: де R0 - константа, що має розмірність опору; В – константа, що має розмірність температури; Т – абсолютна температура. Таким чином, цю залежність слід призвести до лінійної. Відомий спосіб лінеаризації за допомогою терморезисторного моста, але такий підхід незручний тим, що при заміні терморезистора доводиться змінювати параметри самого моста, що не так просто. Більш зручно було б отримати значення температури без будь-яких лінеаризації, але для цього потрібно обчислити значення наступного виразу: де Rд - опір додаткового резистора; N - 10-розрядний двійковий код, отриманий після аналого-цифрового перетворення; Un – напруга живлення. У описуваному приладі цей вираз обчислюється програмою МК, що управляє, і результат виводиться на індикатор. Слід зазначити, що вказаний вище інтервал вимірюваних і регульованих температур (-43 ... +470 ° С) можна розтягнути, стиснути або зрушити. Вказаний інтервал було обрано тому, що в ньому похибка вимірювання температури не перевищує ±2 °С. При цьому опір додаткового резистора R17 дорівнює 300 Ом. Для зменшення похибки його можна збільшити, однак у результаті зміняться межі інтервалу температур. Для зручності розрахунків можна використовувати документ term (10 bit).mcd для системи MathCAD 2001, який за заданими параметрами терморезистора RK1, резистора R17 та необхідної похибки обчислює інтервал вимірюваних температур. Щоб при виключенні основного живлення хід годинника реального часу не збивався, у приладі передбачено вузол резервного живлення МК. Він складається з акумуляторної батареї GB1 напругою 3,6, резистора R16 і діодів VD2, VD3. При включенні основного живлення діод VD3 закривається, а акумулятор GB1 заряджається через резистор R16. При відключенні основного живлення напруга акумулятора надходить через VD3 діод тільки на МК (подачі напруги на інші елементи пристрою перешкоджає діод VD2). МК визначає факт відключення живлення, тому що він постійно стежить за рівнем напруги на виводі RB2. І коли він стає рівним балка. 0, МК перестає здійснювати регенерацію індикатора та опитування клавіатури, зупиняє всі запущені програмні таймери, припиняє вимірювати та регулювати температуру та переходить у режим годинника. Крім того, якщо під час роботи з приладом було змінено налаштування, то після відключення живлення короткочасно блимає червоний світлодіод, якщо ж налаштування не змінилися – зелений. Якщо пристроєм не користуватися тривалий час (тиждень і більше), то для виключення повної розрядки акумулятора можна вимкнути резервне живлення за допомогою перемички S1. МК постійно стежить за станом контактів кнопок на клавіатурі, і якщо протягом заданого часу не було жодного натискання, а також не було запущено жодного програмного таймера, він автоматично переходить у режим годинника. Керуюча програма МК написана мовою Сі, тому вона легко може використовувати будь-які типи даних, зокрема і речові. Програма розроблялася в системі програмування HT-PIC (її можна "завантажити" з сайту ). Для налагодження використовувався найпростіший внутрішньосхемний емулятор, який є набором контактів, що з'єднують лінії паралельного порту комп'ютера з розеткою під МК на основній платі. p align="justify"> Відповідність висновків паралельного порту комп'ютера гніздам розетки МК на платі таймера наведено в табл. 1. Для управління емулятором керуюча програма МК компілювалася з невеликими змінами серед програмування Borland З++ 3.1. На жаль, робота подібного емулятора відбувається в масштабі часу, відмінному від реального, але без подібного пристрою було б практично неможливо налагодити таку складну програму. Без застосування емулятора було реалізовано тільки аналого-цифрове перетворення, опис якого стосовно даного МК можна знайти на сайті (документ DS30292C - "Модуль 10-розрядного АЦП у мікроконтролерах PIC16F87x"). Коротко розглянемо основні моменти роботи програми МК, що управляє. Вона написана з використанням методології структурного програмування, внаслідок чого має велику кількість підпрограм. Після включення живлення МК налаштовує порти вводу/виводу, АЦП та внутрішній таймер. Потім починає виконуватися основний цикл, який є нескінченним. У ньому, як говорилося, постійно перевіряється наявність основного напруги харчування, й у разі його відключення МК перестає виконувати всі функції, крім відліку часу. При включенні основного живлення він виводить заставку і переходить у робочий режим. Інформація, яка має відображатися на індикаторі в даний момент, зберігається в масиві d. У процесі регенерації індикатора МК переписує його вміст у проміжний масив, а вже з нього послідовно читає коди символів, що виводяться, і відображає їх на індикаторі. Додатковий масив введений для того, щоб виключити мерехтіння індикатора, що виникає в результаті запису масив d нової інформації до того, як стара ще не повністю відображена. Для прикладу припустимо, що спочатку масив d містив рядок "ABCDEFHLP", а при відображенні четвертого символу ("D") масив занесений рядок "FDA 2002". Тоді користувач приладу через інерційність людського зору в деякий час побачить рядок "ABC 2002". Крім того, якщо подібні процеси повторюватимуться постійно (а це так і буде при реальній роботі), у людини складеться враження, що інформація на індикаторі мерехтить. Як зазначалося, одночасно з оновленням індикатора виконується сканування клавіатури. При натисканні будь-якої кнопки викликається підпрограма придушення "брязкання" контактів, яка здійснює затримку в кілька мілісекунд (значення цього часу зберігається в пам'яті МК), протягом якої прилад на подальші натискання кнопок не реагує. Слід також зазначити, що час витримки програмних таймерів, годинника та будильника задається в секундах (лічильник годинника обнулюється при досягненні значення 24 х 60 х 60 = 86400), а перед виведенням на індикатор перетворюється на формат Ч : ММ : СС для таймерів або у формат ЧЧ: ММ для годинника та будильника. Виконується це за допомогою таких формул: = час mod 60. Тут операція ][ означає відкидання дробової частини, т. е. розподіл є цілим. Отримані значення годин, хвилин і секунд поки що не придатні для безпосереднього виведення на індикатор, оскільки представлені в бінарному коді. Щоб виділити старший та молодший десяткові розряди, необхідно над кожним значенням провести ще дві операції: молодший розряд = значення mod 10 Розглянемо приклад. Нехай необхідно вивести на індикатор значення 8673 с у форматі Ч: ММ: СС. Отримуємо З = 8673 mod 60 = 33. Таким чином, на індикатор буде виведено 2:24:33 З наведених прикладів видно, як багато операцій необхідно виконати лише організації виведення на індикатор. Реалізувати подібну математику мовою асемблера було практично неможливо. На мові ж Сі це реалізується всього кількома рядками, при цьому завдяки високому рівню оптимізації програмний код виходить досить компактним і швидким. Але найголовніше - програміст у своїй може зосередити основну увагу на алгоритмі програми, абстрагуючись від специфічних особливостей архітектури застосовуваного МК. Усе це сприяє легкому перенесення програми з однієї МК в інший. Вихідний текст програми МК та коди "прошивки" у форматі Intel HEX знаходяться за вказаною вище адресою в Інтернеті. Для програмування МК автор використав програматор, зібраний за схемою, зображеною на рис. 2, та програмне забезпечення PonyProg2000, останню версію якого можна "завантажити" з сайту . Основна відмінність програматора від описаного в [1] полягає в додаванні ще одного транзистора (VT3) ланцюг формування сигналу синхронізації, що підвищує надійність програмування за рахунок повного усунення негативної напруги на висновках МК. Цей пристрій допускає програмування МК на платі, тобто підтримує технологію ICSP (In-Circuit Serial Programming - внутрішньосхемне послідовне програмування). Для цього його з'єднують п'ятьома проводами з програматором через роз'єм Х1 наступним чином: 7 - загальний; 5,6 - 5; 2 – SDA; 3 - SCL; 1 – Uprog. Можливе використання інших програматорів, у тому числі підтримують низьковольтне програмування. В останньому випадку потрібно додатково з'єднати відповідний контакт програматора з контактом 4 роз'єм Х1. Креслення друкованої плати приладу зображено на рис. 3, клавіатури – на рис. 4. На платі таймера є сім отворів, які до монтажу деталей вставляють відрізки лудженого дроту і припаюють їх до друкованих провідників обох сторін плати. Функцію перемичок виконують висновки деяких деталей. Отвори, якими здійснюються подібні з'єднання друкованих провідників, виділено на рис. 3 чотирма хрестоподібно розташованими точками. Вихідні файли проекту та бібліотека використовуваних компонентів для САПР Accel EDA 15.0 знаходяться на вказаному вище сайті. У пристрої застосовані постійні резистори та конденсатори для поверхневого монтажу. Виняток – оксидні конденсатори С6, С7 (К50-35). МК PIC16F876 може мати будь-які максимальну робочу частоту та температурний діапазон, головне, щоб він був у корпусі DIP (мав суфікс SP). П'єзовипромінювач НРМ14АХ можна замінити вузлом, виконаним на трьох елементах мікросхеми КР1533ЛАЗ та п'єзовипромінювачі ЗП-18 [2]. Терморезистор RK1 - ММТ-4 з номінальним опором 15 кОм (R0 = 0,294 Ом, В = 3176 К). Як рознімання Х1 - ХЗ застосовані розрізні колодки з прямими штирями, які застосовуються в комп'ютерній техніці: для Х1 використовується колодка з дворядним розташуванням штирів, а для Х2 і ХЗ - з однорядним. Восьмий контакт вилки ХР1 і третій вилки ХР2 видалені, а відповідні гнізда відповідних частин роз'ємів вставлені заглушки - відрізки товстої рибальської волосіні. Цей захід не дозволить неправильно стикувати роз'єми. Розетка роз'єму Х2 виготовлена з 20-гнездной панелі під мікросхему в корпусі DIP (використовується одна її частина, що має 10 контактів). Кнопки SB1-SB16 – TS-A3PS-130. Вміст ЕСППЗУ МК, який можна змінювати для завдання інших параметрів роботи, представлено в табл. 2. У стовпці "Параметр" вказано назву параметра, що висвічується на індикаторі. Якщо в цьому стовпці стоїть прочерк, цей параметр можна змінити тільки при програмуванні МК. література
Автор: Д.Фролов, м.Рязань Дивіться інші статті розділу Регулятори потужності, термометри, термостабілізатори. Читайте та пишіть корисні коментарі до цієї статті. Останні новини науки та техніки, новинки електроніки: Штучна шкіра для емуляції дотиків
15.04.2024 Котячий унітаз Petgugu Global
15.04.2024 Привабливість дбайливих чоловіків
14.04.2024
Інші цікаві новини: ▪ Оптичний зум смартфонів без збільшення їх розмірів ▪ Визначення стиглості за допомогою нейронних мереж ▪ 64-розрядні процесорні ядра MIPS Warrior I6400 ▪ 24-розрядний АЛП Analog Devices Стрічка новин науки та техніки, новинок електроніки
Цікаві матеріали Безкоштовної технічної бібліотеки: ▪ Електричні лічильники. Добірка статей ▪ стаття Цариця доказів. Крилатий вислів ▪ стаття Хто винайшов мову жестів? Детальна відповідь ▪ стаття Троянда собача. Легенди, вирощування, способи застосування ▪ стаття ВЧ міст – панорамний КСВ-метр. Енциклопедія радіоелектроніки та електротехніки ▪ стаття Яйце в пляшку. Фізичний експеримент
Залишіть свій коментар до цієї статті: All languages of this page Головна сторінка | Бібліотека | Статті | Карта сайту | Відгуки про сайт www.diagram.com.ua |