Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Практична частина






 

3.1 Вибір мікроконтролера

До початку 1990-х широко розповсюджене сімейство мікроконтролерів MCS51, що випускається цілим рядом фірм-виробників (Intel, PMHps, Тетіс, OKI, Sіemens і ін.), уже було де-факто промисловим стандартом для 8-розрядних систем і прекрасно підходило для використання в широкому класі задач, особливо якщо вибиралися кристали з додатковими убудованими периферійними пристроями і підвищеною тактовою частотою. Звичайно, був і зворотний бік медалі - значне питоме енергоспоживання цих мікроконтролерів. Тоді, якщо необхідно було одержати високу продуктивність кристала при фіксованому енергоспоживанні або, навпаки, знизити останнє не втрачаючи продуктивності, увага розроблювача, як правило, зупинялося на мікросхемах Dallas Semіconductor, Mіcrochіp або ffitacM. Широко розвиті лінії PіC-контроллеров фірми Mіcrochіp і мікроконтролерів H8/300 фірми ffitacM забезпечують досить високу продуктивність при невеликому енергоспоживанні. Ефективність роботи мікроконтролерів Dallas Senuconductor, що мають базову архітектуру MCS51, у середньому перевищує стандартну в 2, 5 - 3 рази. Нові процесорні платформи MSP430 фірми Texas Іnstruments і XE8000 фірми Xenucs також заслуговують самої пильної уваги, особливо якщо основним критерієм для кінцевої мети є мінімальне енергоспоживання.

Остаточний вибір розробників тієї або іншої мікропроцесорної платформи для реалізації своєї задачі залежить від великого числа різноманітних факторів, включаючи економічні. Але звичайно першорядною умовою залишається одержання максимальне вигідного співвідношення " ціна - продуктивність - енергоспоживання", обумовленого складністю розв'язуваної задачі. Видимо, ця обставина і послужило поштовхом до розробки в середині 1990-х нового 8- розрядного мікроконтролера.

AVR, мабуть, один із самих цікавих напрямків, що розвиваються корпорацією Atmel. Вони являють собою потужний інструмент для створення сучасних високопродуктивних і економічних багатоцільових контролерів. На даний момент співвідношення " ціна - продуктивність - енергоспоживання" для AVR є одним із кращих на світовому ринку 8- розрядних мікроконтролерів. Обсяги продажів AVR у світі подвоюються щорічно. У геометричній прогресії росте число сторонніх фірм, що розробляють і випускають різноманітні програмні й апаратні засоби підтримки розробок для них. Можна вважати, що AVR поступово стає ще одним індустріальним стандартом серед 8-розрядних мікроконтролерів загального призначення.

Для керування термостатом вибираємо мікроконтролер сімейства AVR ATtiny2313. Розглянемо його архітектуру:

 

Рисунок 3.1 – Архітектура мікроконтролера АТtiny2313

Мікроконтролер АТtiny2313 є пристроєм синхронного типу. Дії, які виконуються в мікроконтролері, прив'язані до імпульсів тактового сигналу. Як генератор тактового сигналу (GCK) використовуються: внутрішній генератор із зовнішнім кварцовим чи керамічним резонатором (XTAL); внутрішній RC-генератор (IRC); внутрішній генератор із зовнішнім RC-колом (ERC); зовнішній генератор (ЕХТ).

У мікроконтролерів, що мають внутрішній генератор із зовнішнім резонатором (XTAL), резонатор підключається до виводів XTAL1 та XTAL2, що через конденсатори малої ємності (20-30 пФ) з'єднуються із шиною GND. Тактова частота визначається робочою частотою резонатора. XTAL1 і XTAL2 є входом і виходом, відповідно, який інвертує підсилювач, що з використанням кварцового резонатора працює як вбудований генератор. Процесор (CPU) формує адреса чергової команди, вибирає команду з пам'яті й організовує її виконання. Код команди має формат " слово" (16 біт) чи " два слова".

До складу процесора крім лічильника команд (PC), арифметико- логічного пристрою (ALU) і блоку регістрів загального призначення (GPR) ALU виконує операцію між регістрами цього реєстрового файлу. Операції ALU підрозділяються на три основні категорії: арифметичної, логічні й операції над бітами. Оперативний запам'ятовуючий пристрій статичного типу SRAM призначений для зберігання даних, одержуваних у процесі роботи мікроконтролера. При вимиканні напруги живлення мікроконтролера дані в SRAM губляться. Комірка пам'яті містить 8 розрядів. SRAM даних АТtiny2313 має обсяг 128х8 байт і займає адресний простір від S60 до SDF.

Постійний запам’ятовуючий пристрій FlashROM призначений для збереження кодів команд програми і констант. Комірка пам'яті містить 16 розрядів. У ній можуть зберігатися код команди формату " слово", половина коду команди формату " два слова" або коди двох констант.

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

‒ паралельні порти вводу/виводу;

‒ послідовний порт SPI;

‒ послідовний порт UART;

‒ таймери-лічильники загального призначення;

‒ сторожовий таймер;

‒ аналоговий компаратор;

‒ програмуємий апаратний модулятор;

‒ блок переривань.

Паралельний порт вводу/виводу (Port P, D) призначений для вводу і виводу даних. Мікроконтролери сімейства AVR мають від одного до шести портів. Порт може мати від трьох до восьми виводів. Вивід порту може працювати в режимі входу чи в режимі виходу. Напрямок передачі біта встановлюється для кожного виводу окремо.

Деякі виводи портів крім вводу і виводу бітів данних можуть використовуватися для виконання альтернативних функцій при роботі інших пристроїв.

Послідовний порт вводу/виводу SPI (Senal Peripheral Interface) призначений для вводу і виводу байтів при обміні даними з іншими пристроями, що мають порт SPI. Обмін виконується під керуванням тактового сигналу порту. Пристрій, ініціалізуючи обмін і виробляючи тактовий сигнал, є ведучим (master). Пристрій, що виконує обмін при надходженні тактового сигналу, є відомим (slave). У процесі обміну обидва пристрої послідовно біт за бітом одночасно видають і приймають байт. Обмін виконується з використанням трьох шин.

Послідовний порт вводу/виводу UART (Universal Asynchronous Receiver- Transmitter) призначений для передачі і прийому байтів даних по двухпровідних лініях зв'язку (наприклад, по інтерфейсі RS-232C чи " струмова петля"). Прийом і передача можуть виконуватись одночасно.

Послідовний порт вводу/виводу TWSI (Two-Wire Serial Inter-face) призначений для обміну байтами даних з іншими пристроями по двухпровідній шині І С (Integrated Qrcrnt). До шини можуть під'єднуватись до 127 пристрїв.

Таймер-лічильник загального призначення (General Purpose Timer/Counter) призначений для формування запиту переривання при витіканні заданого інтервалу часу (режим таймера) чи здійсненні заданого числа подій (режим лічильника). Мікроконтролер сімейства АТtiny2313 має два таймера-лічильника загального призначення Т/СХ (X - номер таймера- лічильника).

Основним елементом таймера-лічильни-ка є базовий лічильник, що веде лічбу на додавання. При його переповненні форму-ється запит переривання Т/СХ OVF.

Таймер-лічильник загального призначення може виконувати додаткові функції: функцію захоплення; функцію порівняння; функцію широтно- імпульсного модулятора; функцію рахунка реального часу.

Функція захвату (capture) полягає в запам'ятовуванні коду, сформованого в базовому лічильнику, у спеціальному регістрі захоплення при зміні значення визначеного зовнішнім чи внутрішнім сигналом. При цьому формується запит переривання Т/СХ САРТ.

Функція порівняння (compare) полягає в зміні значення сигналу на визначеному виході мікроконтролера при збігу коду, сформованого в базовому лічильнику, з кодом у спеціальному регістрі порівняння. При цьому формується запит переривання Т/СХ СОМР.

Функція широтно-імпульсного модулятора (PWM) полягає у формуванні на визначеному виході мікроконтролера імпульсної послідовності з заданими періодом повторення і тривалістю імпульсів.

Функції порівняння і PWM реалізуються з використанням того самого устаткування. Вибір потрібної функції виконується програмними засобами.

Сторожовий таймер Watchdog Timer, WDT) призначений для ліквідування наслідків збою в ході програми шляхом перезапуску мікроконтролера при виявленні збою. Сторожовий таймер мається в мікроконтролерів усіх типів.

Аналого-цифровий компаратор (Analog Comparator, AC) порівнює по величині аналогові сигнали, що надходять на два входи мікроконтролера і (формує запит переривання ANA СОМР, коли різниця їхніх значень змінює знак. При цьому також може бути виданий сигнал для виконання функції захоплення в таймері-лічильнику загального призначення.

3.2 Розробка функціональної схеми

 

Термостат для відображення виміряного значення температури повинний мати індикатор. Згідно технічного завдання індикатор повинний мати три розряди для відображення температури.

Як правило відображення інформації виконують у режимі динамічний індикації – це найбільш економний по числу використаних ліній спосіб.

Загальний принцип динамічний індикації – це матриця, що складається з ліній рядків і ліній стовпчиків. На перетині стовпців і рядків матриці розташований індикаторний елемент – світлодіод. Для того, щоб запалити той або інший елемент, необхідно подати на матрицю не один, як в звичайних індикаторах, а два сигнали: логічна 1 на відповідному рядку і логічний 0 на відповідному стовпці матриці. Через односторонню провідність світло діода кожна комбінація сигналів на входах рядків і стовпців однозначно включає рівно один індикаторний елемент.

Головна перевага динамічної індикації – невелике число ліній, що управляють: для матриці світло діодів розміром N x N елементів потрібно всього 2N сигналів, що управляють. За таку економію, втім, доводиться платити – справа в тому, що при почерговому виведенні інформації на кожен світло діод матриці його яскравість світіння, буде в N2 разів нижче, ніж при безпосередньому виведенні інформації на один світлодіод, що " окремо стоїть". Тому в пристроях, що використовують динамічну індикацію, виведення інформації здійснюється не на кожен світлодіод окремо, а на один рядок або на один стовпець цілком – в цьому випадку яскравість світіння світлодіодів падает тільки в N разів.

Схема реалізації динамічної індикація без додаткових елементів приведена на рисунку 3.2. До порту В мікроконтролера підключені катоди всіх світло діодів матриці, а до порту А – аноди кожного індикатора, що створюють матрицю. На лініях порту А організовується одиниця, що " біжить". На лінії В порту при кожному положенні одиниці, що біжить, виводиться семисегментний код того символу, який повинен горіти в даному знакомісці. Для індикаторів із загальним катодом замість одиниці, що біжить, використовується нуль, що біжить. Перевага такого способу індикації – у відсутності яких-небудь додаткових компонент (окрім самих світлодіодних індикаторів), головний недолік – значна перевитрата ліній портів. Таке рішення для мікроконтролера може забезпечити роботу не більше 5 семисегментних індикаторів одночасно.

 

Рисунок 3.2 – Схема реалізації динамічної індикація без додаткових елементів

 

Схема реалізації динамічної індикації з додатковим елементом приведена на рисунку 3.3.

Рисунок 3.3 – Схема реалізації динамічної індикації з двома додатковими елементами

У схемі використовуються послідовні регістри зсуву: один – для розгортки зображення по стовпчиках (замінює порт А), інший – для розгортки зображення по рядках (замінює порт В). Перевага такого рішення – всього три лінії порту мікроконтролера. Крім того, при такому варіанті реалізації блок динамічної індикації легко оформити і у вигляді окремої плати. Недолік такого рішення – два додаткових компонента.

Так як термостат повинний мати трьохсегментний індикатор, то схему, що зображена на рисунку 2.3, можна спростити. Для керування катодами індикатора можна задіяти порт D – PD0, PD1, PD2, а для керування сегментами A, B, C, D, E, F, G, H вибираємо мікросхему 74НС595 (КМОН, иж=2, 0-6, 0В), яка є восьмирозрядним регістром зсуву з послідовним введенням, послідовним або паралельним виведенням інформації. Умовне позначення та призначення виводів приведені на рисунку 3.4.

 

Рисунок 3.4 – Умовне зображення та функціональна діаграма ІМС 74НС595

 

Алгоритм роботи схеми наступний:

На вході RESET (10) встановлюємо рівень 1, на входах SHCP (CLK) (11), ST_CP (LOAD) (12) та OE (13) рівень 0.

1. Встановлюємо потрібний рівень на вході DS (DATA) (14).

2. Подаємо на SH_CP (CLK) рівень 1. Регістр зсуву робить один зсув.

3. Подаємо на SH_CP (CLK) рівень 0. Повторяємо пункти 1 -3 ще 8 раз.

4. Подаємо на ST_CP (LOAD) рівень 1. Зміст регістра зсуву переписується в паралельний регістр.

5. Подаємо на ST_CP (LOAD) рівень 0.

Для роботи з ГМС 74НС595 будуть використані біти порта B: PB7 —> DS (DATA), PB6 ST_CP (LOAD), PB5 SH_CP (CLK)

В останній час для передачі інформації на великі відстані (до 300м) застосовують шину 1-Wire фірми Dallas Semiconductor. Dallas Semiconductor випускає датчики температури, які формують значення температури в цифровому коді. Саме цифрові датчики температури та шина 1-Wire буде використана при розробці цифрового термометра.

Схема з’єднання провідного і відомого пристроїв за допомогою одно дротяної шини (1-Wire) приведена на рисунку 2.5. На тому ж рисунку показані особливості схемної реалізації вихідних каскадів Master, Slave пристроїв. Як видно з рисунку 2.5, в схемі 1-Wire інтерфейсу використовуються вихідні каскади з відкритим колектором (стоком) і загальним навантаженням RH для всіх елементів мережі. У специфікації для 1-Wire інтерфейсу спеціально обумовлюється, що резистор Rн повинен знаходитися в безпосередній близькості від Slave пристрою. Біполярний транзистор у вихідному каскаді Slave пристрою показаний умовно. Відомі пристрої звичайно цілком побудовані на КМОП транзисторах. У режимі очікування всі вихідні транзистори закриті. На шині присутня напруга логічної одиниці. Інформація по шині передається за допомогою негативних імпульсів. Будь-який пристрій, підключений до шини може створювати негативні імпульси і тим самим передавати інформацію. Проте відомий пристрій починає передачу тільки під управлінням ведучого.

Розглянемо додаткові елементи у складі відомого пристрою (рисунок 3.5). По-перше, це вбудоване джерело струму. Це джерело створює внутрішній витік на вході 1-Wire інтерфейсу. Задача цього витоку – створити нульовий рівень сигналу на внутрішніх елементах відомого пристрою при його відключенні від шини 1-Wire. Коли з'єднання буде відновлено, внутрішня логіка відомої мікросхеми виявляє перепад напруги з нуля на одиницю. Відразу після отримання такого сигналу відома мікросхема повинна видати на шину 1-Wire сигналу присутності. Виявивши сигнал присутності на лінії зв'язку, Slave пристрій може провести процедуру виявлення нових пристроїв. Таким чином, шина 1-Wire дозволяє легко підключати і відключати різні пристрої, не порушуючи при цьому її роботу.

 

Рисунок 3.5 – Електрична схема мережі MicroLAN

 

Ще один додатковий елемент, який присутній тільки в схемі інтерфейсу відомого пристрою – це коло паразитного живлення. Це коло складається з накопичувального конденсатора (СНАК), струмообмежуючого резистора (Rorp) і випрямного діода (Dвип). Всі ці елементи використовуються в режимі паразитного живлення. Кожна мікросхема, розрахована на роботу з 1 – Wire інтерфейсом, має два режими живлення. Перший режим – звичайний. У цьому режимі живлення подається на спеціальні виводи мікросхеми.

Незалежно від наявності виведення живлення будь-яка мікросхема може живитися безпосередньо від інформаційної шини. Цей спосіб отримання електроенергії називається «паразитним живленням». В процесі роботи на шині завжди присутній імпульсний сигнал. У ті моменти, коли напруга на шині рівна одиниці, випрямний діод відкривається і накопичувальний конденсатор заряджає через струмообмежуючий резистор. Ємність конденсатора невелика (приблизно 800 пФ). Проте і струм споживання КМОН мікросхеми теж дуже малий. Тому заряду конденсатора вистачає для забезпечення живлення мікросхеми в проміжках між імпульсами.

Проте режим паразитного живлення застосовний далеко не у всіх випадках. Деякі операції неможливо виконати при малому споживанні енергії. Наприклад, процес перетворення температури в код вимагає повноцінного, а не паразитного живлення. На цей випадок 1-Wire протоколу передбачає третій, спеціальний режим живлення. Такий режим живлення використовується тільки спільно з режимом паразитного живлення. Основна ідея – подавати повноцінне живлення на ту ж саму шину, по якій передається інформація в ті моменти часу; коли відома мікросхема виконує особливо енергоємні операції. При цьому, поки на шині присутнє повноцінне живлення, передача інформації неможлива.

Датчик температури DS18B20 має три виводи: DО – вхід/вихід даних 1- Wire інтерфейсу; VDD – вивід зовнішнього живлення; GND – загальний дріт. Внутрішня структура мікросхеми DS18B20 приведена на рисунку 3.6.

 

Рисунок 3.6 – Внутрішня структура мікросхеми DS18B20

 

Сигнал з шини DО і напруга із зовнішнього живлення (VDD) перш за все поступають на схему паразитного живлення. У схемі паразитного живлення є ще один додатковий елемент. Це датчик наявності живлення. Датчиком порогів є елемент, на який поступає напруга живлення від зовнішнього джерела. Датчик виробляє логічний сигнал, що поступає в схему керування. В результаті мікросхема дістає можливість автоматично визначати режим свого живлення. Мікроконтролер, що працює як Master пристрій на тій же шині, має можливість запитати у всіх підключених до неї датчиків інформацію про режим живлення і відповідним чином скоректувати алгоритм своєї роботи.

Сигнал DO, забезпечивши напругою схему паразитного живлення, поступає на 1-Wire порт, який служить апаратною частиною одно дротяного інтерфейсу. Дані, одержані за допомогою цього інтерфейсу, поступають в блокнотну пам'ять. Блокнотна пам'ять призначена для тимчасового зберігання інформації від датчика температури і трьох спеціальних регістрів: регістра верхньої межі (ТH), регістра нижньої межі (TL) і регістра конфігурації. Всі три спеціальні регістри є три осередки флеш-пам'яті (EEPROM).

З блокнотною пам'яттю також зв'язаний генератор контрольної суми. Цей генератор автоматично обчислює контрольну суму всіх регістрів блокнотної пам'яті. При зчитуванні інформації з блокнотної пам'яті контрольна сума також читається і служить для перевірки правильності прочитаної інформації. Застосування блокнотної пам'яті дозволяє підвищити надійність передачі інформації. Інформація ніколи не записується безпосередньо в осередки флеш- пам'яті (регістри Тн і TL і регістр конфігурації). Заздалегідь вона поміщається в блокнотну пам'ять. Потім мікроконтролер читає її звідти і перевіряє контрольну суму. Якщо результат перевірки позитивний, мікроконтролер подає по шині спеціальну команду «Копіювання блокнотної пам'яті в EEPROM».

Структуру пам'яті мікросхеми DS18B20 приведено на рисунку 3.7.

 

 

Рисунок 3.7 – Структура пам'яті мікросхеми DS18B20

 

Пам'ять складається з восьми регістрів блокнотної пам'яті і трьох регістрів EEPROM. Операції запису і читання блокнотної пам'яті виконуються для всіх її регістрів одночасно. При записі всі вісім регістрів блокнотної пам'яті записуються одним блоком з восьми байт. Точно також одним блоком відбувається і зчитування інформації. У регістр Тн записується верхня межа температури. У регістр TL – нижня. Ці регістри використовують для перевірки факту виходу величини виміряної температури за межі встановленого діапазону. Якщо не потрібний механізм обмеження температури, то регістри Тн і TL можна використовувати як додаткові елементи незалежної пам'яті і зберігати в них будь-які дані. Наприклад, туди можна записати код місця положення конкретного датчика. Регістр конфігурації служить для перемикання кількості розрядів вимірника температури.

Регістри температури після закінчення процесу перетворення містять пряме значення величини виміряної температури в двійковому вигляді. Регістр температури – це два регістри блокнотної пам'яті. Біти з 11-го по 15-го (позначені буквою S) містять одне і те ж значення. Воно дорівнює знаку записаного числа (0 – плюс, 1 – мінус). Позитивні значення температури записуються в прямому коді, а негативні – в додатковому. У таблиці 3.1 приведено приклади перетворення температури в код.

 

Таблиця –3.1 Перетворення температури в код

 

Повний список команд 1-Wire інтерфейсу мікросхеми DS18B20 приведений у таблиці 3.2.

На рисунку 3.8 показана схема включення мікросхем DS18B20 у режимі зовнішнього живлення. Зовнішнє живлення подається на кожну мікросхему через вивід VDD. Якщо термодатчик знаходиться на значному видаленні від мікроконтролера, то застосування такої схеми включення не дуже бажано, оскільки для живлення датчика доведеться прокладати ще один (третій) дріт.

 

Таблиця 3.2 – Система команд мікросхеми DS18B20

Команда Опис
Команди мережного рівня
0F0H Пошук ПЗП
033Н Читання ПЗП
055Н Співпадання ПЗП
0ССН Пропуск ПЗП
0ЕСН Пошук переривання
Команди транспортного рівня
4ЕН Запис блокнотної пам'яті
0ВЕН Читання блокнотної пам'яті
0В4Н Читання режиму живлення
0В8Н Читання з EEPROM в блокнотну пам'ять
48Н Копіювання блокнотної пам'яті в EEPROM
44Н Запуск процесу перетворення

 

Рисунок 3.8 – Схема включення термодатчика в режимі зовнішнього

 

Другий варіант включення мікросхем DS18B20 зображений на рисунку 3.9.

Рисунок 3.9 – Схема включення термодатчика в режимі паразитного живлення

 

У такій схемі реалізовані два режими живлення. Для перемикання режимів використовується керований електронний ключ К1. Ключ керується від мікроконтролера, для чого використовується окрема лініяв воду/виводу. Така схема дозволяє перемикати режими живлення програмним шляхом. Основний режим роботи для схеми, зображеної на рисунку 3.9 – це режим паразитного живлення. У цьому режимі ключ К1 закритий і напруга на шині визначається резистором навантаження R1, що дозволяє передавати інформацію по шині, використовуючи 1-Wire протоколу.

У потрібний момент ключ К1 відкривається і на шину поступає повноцінне живлення від джерела VPU. Живлення поступає тільки на час виконання однієї з енергоємних команд. Поки ключ К1 відкритий, інформаційний обмін по шині неможливий. Мікроконтролер витримує шину в такому стані необхідний час, а потім закриває ключ К1. Шина повертається в звичайний режим роботи і знову знаходить можливість передачі даних. Для того, щоб мікросхема DS18B20 правильно працювала в режимі паразитного живлення, потрібно з'єднати між собою виведення VDD і GND і підключити обидва ці виводи до загального дроту, як показано на рисунку 3.9.

Термостат повинний мати дві кнопки (+, -) для задання значення поточної температури порівняння. Їх доцільно підключити до вільних портів, наприклад, PD3, PD4. Функціональна схема термостата приведена на рисунку 2.10. Для завдання температури терморегулятора натискаємо і утримуємо кнопки SA1 і SA2, одночасно на індикаторі з'явиться значення температури терморегулятора і прилад перейде в режим установки температури. За допомогою кнопок SA1 (+) і SA2 (-) встановлюється бажана температура. Одне натиснення на кнопку приводить до зміни температури на один градус. По завершенню установки натискають і утримуй кнопки SA1 і SA2 одночасно. Значення температури терморегулятора перестане мигати. Відпустивши кнопки і нове значення температури терморегулятора буде занесене в незалежну пам'ять приладу.

Коли прилад знаходиться в режимі термометра – натисніть кнопку SA1. У правому крайньому розряді індикатора температури почне мигати десяткова крапка, що означає що включений режим терморегулятора. Для відключення режиму ще раз натисніть кнопку SA1. Прилад повернеться в режим термометра і крапка погасне.

 

 

 

Рисунок 3.10 – Функціональна схема цифрового термостата

 

При включеному режимі терморегулятора прилад виводить на індикатор значення температури датчика так само як і в режимі термометра. При цьому постійно контролюється температура і здійснюється включення / виключення навантаження залежно від вибраного режиму «Нагрівач» / «Охолоджувач». Вибір режиму «Нагрівач» / «Охолоджувач» здійснюється перемикачем SA2.

Режими відрізняються тим, що в режимі «Нагрівач» навантаження включиться поки температура нижче заданої температури терморегулятора (застосовується для включення обігрівача). Навпаки, в режимі «Охолодження» навантаження включається коки температура вище заданої температури терморегулятора (застосовується для включення вентилятора, що охолоджує).

Блоки функціональної схеми реалізуються на радіоелектронних компонентах, які необхідні для повноцінного функціонування схеми. Якщо виконавчий механізм, яким повинна керувати мікропроцесорна система, живиться від мережі змінного струму 220 В, потрібно застосовувати схему управління з гальванічною розв'язкою. Один з можливих варіантів — схема керування з реле. Типовий варіант такої схеми керування приведений на рисунку 3.11.

Рисунок 3.11 – Релейний виконавчий пристрій

 

На схемі представлений електронний ключ, в навантаження якого включено електромагнітне реле К1. Мікропроцесор за допомогою ключа може вмикати і вимикати електромагнітне реле. Контакти реле, в свою чергу, керують навантаженням. Така схема забезпечує комутацію достатньо великої напруги і струму. Для керування навантаженням буде використано реле TR5V-L-12VDC-S з параметрами [6]: номінальний опір обмотки Rном = 36 Ом, струм спрацьовування Іср=60 мА, струм відпускання Іотп. = 13 мА, робоча напруга ироб = 3, 5.., 4, 5В, час спрацьовування tср = 4 мс, час відпускання tora = 2 мс. Так як максимальний вихідний струм кожного вивода порта МК складає 20 мА, то для керування реле РЕС-60 необхідно задіяти ключовий каскад, схема якого наведена на рисунку 3.11. Якщо на виході мікроконтролера РD6, що з'єднаний через резистор з базою транзистора, сформувати високий рівень, транзистор відкриється. Тоді, реле, що підключене у колекторне коло, з'єднається з загальним проводом через малий опір транзисторного переходу колектор-емітер, майже вся напруга живлення буде прикладена до реле й струм, що протікає через нього буде достатнім для його відкриття.

Для відображення температури вибирається індикатор GNT 5631 AS (рисунок 3.12) тому, що він задовольняє вимоги технічного завдання також він простий у використанні та проста схема підключення і необхідна розрядність. Він має наступні параметри:

‒ матеріал – нікель;

‒ довжина хвилі – 660 нм;

‒ мінімальна сила світла Iv хв. – 0, 1 мКд;

‒ при струмі Іпр – 20 мА;

‒ кількість сегментів – 7;

‒ кількість розрядів – 3;

‒ висота знака – 14, 2 мм;

‒ максимальна пряма напруга – 5 В;

 

Рисунок 3.12 – Внутрішня структура індикатора GNT 5631 AS

Кнопки – малогабаритні без фіксації, потрібні для регуляції потужності на різні кроки.

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

Принципову схему цифрового термостата для опалення наведено в додатку А.

3.3 Розробка алгоритму функціонування пристрою

 

Після подачі напруги живлення відбувається ініціалізація мікроконтролера та індикатора. Після цього ініціалізується датчик температури. Прийнятий від датчика DS1820 дев’ятирозрядний двійковий код перекодується в двійково-десятковий. Виокремлюється дев'ятий розряд й визначається знак температури. Алгоритм вимірювання датчиком температури наступний. Після обнуління лінії передаються керуючі команди 0хСCh та 0x44h для початку вимірювання температури. Передача команди починається з запису в лічильник числа приймаємих біт -8. Після команд 0хСCh та 0x44h посилаються команди 0хСCh та 0xBEh на зчитування температури. Видається в лінію короткий імпульс запиту й витримується пауза 8мкс. Переписується стан порта в тимчасовий регістр й перевіряється 9 біт. По ньому установлюється прапорець знаку.

Позитивні температури передаються в прямому коді, а від'ємні – в додатковому й вимагають перетворення в прямий код. Алгоритм роботи пристрою наведено в додатку Б.

На рисунку 3.13 зображена програмна модель AVR-мікроконтролерів, що являє собою діаграму програмно доступних ресурсів AVR. Центральним блоком на цій діаграмі є регістровий файл на 32 оперативних регістра (R0- R31), що безпосередньо доступні ALU. Старші регістри об'єднані парами й утворять три 16-розрядних регістри, призначених для непрямої адресації комірок пам'яті. Пам'ять програм має обсяг 1К Х 16 і займає адресний простір S000-S3FF. Пам'ять даних складається з 32 регістрів загального призначення (S00-S1F), 64 регістрів введення/виведення (S20-S5F) і оперативної пам'яті 128 х 8 (S60- SDF). При адресації пам'яті даних використовуються п'ять режимів адресації: безпосередня адресація, непряма зі зсувом, непряма, непряма з предекрементом і непряма з постдекрементом. Регістри з R26 по R31 реєстрового файлу працюють як X, Y і Z регістри показники непрямої адресації. SRAM даних ATtiny2313 має обсяг 128х8 байт і займає адресний простір від S60 до SDF. Шість регістрів з R26 по R31, крім звичайної для інших регістрів функцій, виконують функцію 16- розрядних регістрів покажчиків адреси при непрямій адресації SRAM.


Рисунок 3.13 – Програмна модель AVR-мікроконтролерів.

 

Постійний запам'ятовуючий пристрій FlashROM призначений для збереження кодів команд програми і констант. Комірка пам'яті містить 16 розрядів. У ній можуть зберігатися код команди формату " слово", половина коду команди формату " два слова" або коди двох констант. EEPROM має відособлений адресний простір. При звертанні до EEPROM адреса записується в регістр адреси EEAR (S1Е). Байт,

призначений для запису, заноситься в регістр даних EEDR (S1D). Байт, одержуваний при читанні, надходить у цей самий регістр. Для керування процедурами запису і читання використовується регістр керування EECR.

 

3.4 Розробка та відлагодження програмного забезпечення

 

Після розробки алгоритму пристрою необхідно розробити програму, яка буде керувати роботою мікроконтролера. Програму написано мовою С. Встановіть пакет WinAvr в встановлену за замовчанням директорію. Пакет буде встановлений в папку c: \WinAvr, а на робочому столі з'являться ярлики:

- avr-libc Manual [WinAVR]– документація по C/C++ бібліотекам, що

входять в пакет;

- MFile [WinAVR] – програма для створення Мейкфайлів;

- Programmers Notepad [WinAVR] – багатофункціональний редактор

коду програм.

Відкрийте програму Programmers Notepad (далі PN) та виберіть новий C/C++ файл. Створююємо папку проекту, наприклад D: \prj. В PN наберіть код і збережіть файл в папку проекту під ім'ям thermo.c.

Для компіляції програми в середовищі WinAvr використовується один з найпотужніших і найгнучкіших компіляторів - GCC. І саме через свою універсальність він має дуже багато настройок, котрі, для компіляції програми можна кожний раз вводити через командний рядок, а можна один раз записати в спеціальний makefile.

Після компіляції буде створено об'єктний файл в форматі ОС Linux (ELF). Цей об'єктний файл необхідно перетворити в зрозумілий мікроконтролеру файл в форматі Intel HEX. Ця дія забезпечується за допомогою лінковщика, який, в свою чергу, може бути визнаний з командної стрічки, або керуватися настройками makefile. Тож, найкращий вихід побудови виконуваного файлу програми - це побудова з використанням makefile. Створити мейкфайл можна або вручну, або за допомогою спеціального генератора.

Мейкфайли для мікро контролерів AVR є специфічними, і тому для успішного на лаштування необхідна змінити лише декілька параметрів. В ролі генератора мейкфайлів буде використовуватись Mfile, про яку було сказано вище.

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

Для створення makefile проекту виконайте наступні кроки:

1. Завантажте програму Mfile. І виберіть тип мікро контролеру. В меню Output format виберіть ihex (Intel HEX).

2. В меню C standard level - gnu99.

3. Збережіть файл в директорію проекту. Файл обов'язково повинен

мати ім'я makefile

4. Додайте до мейкфайлу запис про вихідний текст програми, що знаходиться в файлі thermo.c. Зробити це можна за допомогою діалогу, що викликається при виборі пункту меню C/C++ source file(s). Але ця частина програми працює не завжди коректно, і тому, якщо змін файлу не сталося (зміни в мейкфайлі підсвічуються жовтим кольором), цей параметр потрібно встановити вручну. Для цього поставте галочку на пункті меню Makefile-> Enable Editing of Makefile. Знайдіть параметр TARGET, та встановіть його значення: TARGET = thermo. Знайдіть параметр SRC і встановіть його значення: SRC = thermo.c Приберіть значення параметру CPPSRC.

5. Збережіть вміст мейкфайлу.

Після виконаних дій в директорії проекту з'являться 2 потрібних файли: thermo.c і makefile.

Тепер потрібно створити виконуваний файл програми (ihex), зрозумілий мікро контролеру:

1. Відкрийте вихідний текст програми в редакторі PN.

2. Виберіть пункт меню Tools-> [WinAVR] Make Clean.

Ця дія запускає спеціальну утиліту make, що згідно з параметрами повинна очистити всі зайві файли, що могли залишитися від попередньої компіляції. Під час виконання команди, в нижній частині PN, з'явиться вікно " Output", що буде інформувати про хід виконання команди. Операція вважається успішною, якщо побачимо внизу стрічку: " > Process Exit Code: 0". Якщо значення Process Exit відмінне від нуля - це означає, що сталася помилка. Зазвичай для операції " make.exe" clean, помилку потрібно шукати в

неправильній конфігурації мейкфайлу. Якщо операція пройшла успішно, виконуйте побудову виконуваного фала. Для цього виберіть пункт Tools-> [WinAVR] Make all. Якщо результат компіляції успішний, тобто " Process Exit Code: 0" - це означає, що необхідний hex файл був побудований без помилок. Інакше - помилки найвірогідніше знаходяться в тексті програми. Всю необхідну інформацію про місце виникнення помилки ви можете дізнатися з вікна ''Output".

Якщо результат операції був успішним, то в директорії проекту з'являться такі нові файли:

- thermo.eep - містить інформацію, що буде скопійована в EEPROM;

- thermo.elf - об'єктний файл. Саме на основі інформації цього файлу буде створений виконуваний файл;

- thermo.hex - власне виконуваний файл. Програма в кодах мікроконтролера;

- thermo.lss - містить інтерпретацію відкомпільованої програми на мові Асемблер;

- thermo.map;

Лістинг озробленого програмного забезпечення, що керує роботою пристрою, наведено в додатку В.

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.