3.5 Проектування процедури перетворення інформації.
3.6 Проектування процедури main().
4. Лістинг програми.
5. Рекомендаціі по розробці програмних та апаратних діагностичних засобів для перевірки працездатності пристрою.
6. Проектування плати друкованої пристрою.
Заключення
Література
Додаток А - Схема електрична принципова
Додаток Б - Плата друкована
Вступ
Однокристальні мікроконтролери знаходять широке використання у самих різноманітних сферах: від вимірювальних пристроїв, фотоапаратів та відеокамер, принтерів, сканерів та копіювальних апаратів до виробів електронних розваг та різноманітної побутової техніки.
Від часу появи перших мікропроцесорів у 1970-х роках їх складність постійно зростала за рахунок появи нових апаратних рішень та додавання нових команд, призначених для рішення нових задач. Так поступово склалась архітектура, яка потім отримала назву CISC (Complex Instruction Set Computers - комп'ютери із складним набором команд). У подальшому розвитку позначився та знайшов активний розвиток ще один напрямок: архітектура RISC (Reduced Instruction Set Computers - комп'ютери із скороченим набором команд). Саме до цієї архітектури відносяться мікроконтролери AVR компанії Atmel та PIC Microchip.
Основні переваги RISC-архітектури полягає у тому, що вони прості, виконують обмежений набір команд, і як наслідок, дуже швидкодійні. Це дозволяє знизити вартість та складність їх програмування.
Зворотною стороною RISC-процесорів стала необхідність створення додаткових команд на асемблері, які у СISC-пристроїв реалізовані у апаратній частині. Однак подібний недолік з лихвою компенсується ціною та швидкістю роботи RISC-пристроїв. До того ж, якщо будувати програми на мові С, то подібні проблеми взагалі перестають мати будь-який сенс для інженера, так як вони рішаються компілятором, який автоматично генерує весь недостатній асемблерний код.
У початку виникнення мікропроцесорів розробка програмного забезпечення проходила виключно на тій чи іншій мові асемблера, орієнтованого на певний пристрій. По суті, такі мови являли собою символьні мнемоніки відповідних машинних кодів, а перевід мнемоніки у машинний код виконувався транслятором. Однак головний недолік асемблер них мов полягає у тому, що кожний із них прив'язан до конкретного типу пристроїв та логіки їх роботи. До того ж, асемблер складний у освоєнні, що потребує достатніх зусиль для його вивчення, який, до того ж, становиться витраченим впусту, якщо надалі потребується перейти на мікроконтролери інших виробників.
Мова С, являючи собою мову високого рівня, не має подібних недоліків і може використовуватись для програмування любого мікро контролера, для якого є компілятор з мови С. У мові С усі низько рівневі операції, виконуємі комп'ютерами, представлені у вигляді абстрактних конструкцій, які дозволяють інженерам зосередитись на програмуванні однієї лише логіки, не піклуючись о машинному коді. Вивчивши мову С, можна легко переходити від однієї родини мікро контролерів до другої, витрачаючи набагато менше часу на розробку.
1. Аналіз поставленої задачі
У курсовому проекті буде розроблятись пристрій на основі мікроконтролера ATmega16 з напругою живлення 3,3В. Потрібно виміряти струм у діапазоні від 0 до 2 А за допомогою мікросхеми MAX4173T,обробити сигнал з неї та відобразити його на РКІ ВС1602А фірми Bolymin.
Пристрій складається із наступних блоків:
- блок датчику та формування сигналу;
- пристрій керування;
- блок відображення інформації;
Структурна схема пристрою приведена на рисунку 1.1
Рис. 1.1 - Блок-схема пристрою.
1.1 Обґрунтування достатності апаратних засобів та програмних ресурсів
Заданий мікроконтролер має наступні основні параметри:
- напруга живлення, В: 3,3/5
- робоча частота, МГц: 16
- розмір пам'яті програм, кБ: 16
- розмір пам'яті даних(EEPROM), Б: 512
- розмір внутрішньої SRAM, кБ: 1
- кількість портів В/В (8 біт): 4
- кількість таймерів-лічильників: 3
- програмуємий УСАПП: 1
- АЦП: 1
Апаратних параметрів цього МК достатньо для вимірювання напруги за допомогою вбудованого АЦП, перетворення інформації з АЦП та вивід її на алфавітно-цифровий РКІ.
1.2 Добирання набору апаратних засобів для реалізації пристрою
Для максимального використання можливостей АЦП та зменшення похибки вирішено використати мікросхему опорної напруги МАХ6004, яка призначена спеціально для формування опорної напруги для систем з використанням АЦП та напругами живлення 3 та 5 В.
Для формування сигналу скидання RES ми використаємо спеціалізовану мікросхему МС33064 - супервізор, яка призначена для використання у мікроконтролерних системах.
Так як система живиться напругою 3,3 В, то необхідно для забезпечення живлення мікросхеми МАХ6004 та РКІ стабілізований напруги Н34063 (підвищуючий імпульсний стабілізатор напруги).
1.3 Розподіл функцій пристрою між вузлами мікропроцесору
Пристрій повинен виконувати дві основні функції:
- вимірювання струму;
- відображення на РКІ результату;
Для вимірювання напруги після мікросхеми МАХ4173Н доцільно використати вбудований АЦП. При цьому ми використаємо один вивід порту А. Для періодичного вмикання АЦП можна використати вбудований таймер-лічильник та використати переривання від нього. Для роботи РКІ використаємо порт РС: РС7-РС4 для даних, та виводи РС0, РС1 , РС2 порту для сигналів керування.
1.4 Обрання та обґрунтування режимів функціонування мікропроцесору та периферійних засобів
Задіяні вузли МК повинні працювати у наступних режимах:
а) АЦП:
- зовнішня опорна напруг;
- перетворення за перериванням таймера-лічильника 0;
- частота дискретизації 125 кГц;
- задіян вхідний канал 0 (РА0);
б) Таймер-лічильник 0:
- дозволити переривання від Т/Л0;
- тактовий сигнал fclk/1024;
в) Порти вводу/виводу:
- порт А вхід АЦП;
- порт С вихід;
2. Проектування принципової схеми пристрою
2.1 Схема включення мікропроцесора
Мікроконтролер потребує підключення джерел живлення до виводів VCC та AVCC, земля підключається до всіх виводів GND. Напруга живлення +5 В до виводу AVCC підключається крізь LC-фільтр, який пригнічує завади та перешкоди у ланцюгах живлення МК. До виводу AREF підключається мікросхема опорного живлення. Вивід 0 порта А під'єднується до виходу мікросхеми МАХ4173Н безпосередньо. Виводи керування та даних РКІ під'єднуються до виводів порта В та С відповідно. До виводів XTAL1, XTAL2 під'єднується тактовий генератор. Інщі виводи керування МК не задіяні. Схема електрична принципова включення МК приведена на рисунку 2.1
Рис. 2.1 - Схема включення МК.
2.2 Формування тактових імпульсів
Тактові імпульси формуються за допомогою вбудованого генератора, стабілізованого зовнішнім кварцовим резонатором на частоту 4 МГц. Цей спосіб досить простий та забезпечує високу стабільність тактової частоти МК.
Схема включення стандартна, рекомендована виробником. Ємність додаткових конденсаторів дорівнює 22 пФ.
Схема скидання повинна формувати імпульс скидання МК при вмиканні пристрою. Також треба передбачити можливість скидання пристрою за допомогою кнопки. Для цих потреб варто використати спеціалізовану мікросхему-супервізор МС33064, призначену для використання у мікропроцесорних системах.
Рис. 2.3 - Схема включення мікросхеми скидання.
2.4 Схема вхідних та вихідних пристроїв
У нашому випадку вхідними та вихідними пристроями є МАХ4173Н та РКІ ВС1602А. Приведемо їх основні електричні параметри та типові схеми включення.
Основні електричні характеристики мікросхеми МАХ4173Н наведені у таблиці 2.1
Таблиця 2.1 - Основні електричні характеристики ІМС МАХ4173Н
Таблиця 2.2 - Основні електричні характеристики РКІ
Рис. 2.4 - Типова схема включення ІМС МАХ4173Н
Рис. 2.5 - Схема включення РКІ ВС1602А
2.5 Схема стабілізатору напруги живлення
Мікросхема Н34063 являє собою монолітну ІМС з набором усіх необхідних блоків для побудування DC-DC перетворювача-стабілізатора напруги.
Її основні електричні параметри приведені у таблиці 2.3
Таблиця 2.3 - Основні електричні характеристики Н34063
Рис. 2.6 - Схема стабілізатору напруги живлення
Розрахунок резистора R4:
R4 = UVcc/Id - R3 = 5/0.0006 - 1800 = 6333 Ом
Приймемо значення опору R4 рівним 6,2 кОм.
3. Проектування програмного забезпечення мікропроцесора
Розробку програми для мікроконтролеру варто почати з алгорітму його функціонування. Програма повинна послідовно виконувати наступні задачі:
У процедурі ініціалізації ми повинні налаштувати усі задіяні вузли мікроконтролеру та зовнішніх пристроїв за допомогою функцій, які встановлять усі необхідні режими роботи та початкові значення регістрів, потрібних для роботи програми. Ми повинні проініціалізувати наступні блоки:
- порти вводу/виводу;
- таймер-лічильник 0;
- АЦП;
- РКІ;
Функція налаштування портів, АЦП та таймеру:
void init_mega (void)
DDRC = 0xFF; // порт С на вивід
DDRB = 0xFF; // порт В на вивід
DDRD = 0xFF; // порт D на вивід
ACSR = 0x80; // вимкнення компаратору
ADMUX = ADC_VREF_TYPE; // зовнішнє джерело опорної напруги, вхід АЦП - порт А, вхід 0
ADCSRA = 0xEE; // АЦП - вкл, почати перетворення, режим переривання від Т/Л0, дозвіл переривання від АЦП
SFIOR = 0x80; // переривання по переповненню Т/Л0
#asm("cli") // заборона усіх переривань
TIMSK
Функція налаштування роботи РКІ
void lcd_init (void)
Ця функція використана із стандартного include - файлу LCD.h компілятору. Її повне описання можна переглянути у компіляторі. Вона налаштовує РКІ на режим роботи з 4 лініями даних, без включення курсору, відображення символів ввімкнено, режим роботи з двома строками. Керуюча послідовність:
TMR0Flag = 1; // встановлення флагу переривання Т/Л0
SETBIT(ADCSRA,6); // запуск АЦП
}
- переривання від АЦП
interrupt [ADC_INT] void adc_isr(void)
{
ADCFlag = 1; // встановлення флагу переривання АЦП
}
3.3 Проектування процедур вводу інформації
Процедура вводу інформації полягає у об'яві змінної та присвоєнні їй значення 16 бітного регістру доступу до АЦП ADCW.
int A;
A = ADCW;
3.4 Проектування процедур виводу інформації
Вивід інформації полягає у виводі даних після обробки на РКІ. Ця процедура виконується за допомогою функцій, які входять до бібліотеки LCD.lib та файлу LCD.h
lcd_gotoxy(2,0); //Встановлення адреси знакомісця на 2 позицію у першій строці
lcd_putsf("Current, A:"); //Вивід строки
lcd_gotoxy(5,1); // Встановлення адреси знакомісця на 5 позицію у другій строці
lcd_putchar(a1 + 0x30); // Вивід першої значущої цифри результату із зміщенням
lcd_gotoxy(6,1); // Встановлення адреси знакомісця на 6 позицію у другій строці
lcd_putchar(0x2C); // Вивід символу коми
lcd_gotoxy(7,1); // Встановлення адреси знакомісця на 7 позицію у другій строці
lcd_putchar(a2 + 0x30); // Вивід другої значущої цифри результату із зміщенням
lcd_gotoxy(8,1); // Встановлення адреси знакомісця на 8 позицію у другій строці
3.5 Проектування процедури перетворення інформації
Для виводу інформації на дисплей її необхідно обробити. АЦП має 10 розрядів, тобто він може перетворювати вимірювану величину з кроком 1/1023*Uref. Для простоти перетворень задамось, що максимальне значення нашої змінної яка буде зберігати значення після перетворення буде дорівнювати 2048. Таким чином ми отримуємо формулу для перетворення:
Current = 2 * ADC
Current = ((long)2 * (long)A;
Максимальне значення АЦП - 1023 буде відповідати значенню 2048 нашої змінної.
Тепер нам необхідно перекодувати значення змінної Current до BCD формату. Це можна реалізувати за допомогою функцій:
a1 = a/1000;
a2 = (a - (a1 * 1000))/100;
a3 = (a - (a1 * 1000) - (a2 * 100))/10;
a4 = (a -(a1 * 1000) - (a2 * 100) - (a3 * 10));
де а - вхідна змінна типу int;
а1 - тисячі;
а2 - сотні;
а3 - десятки;
а4 - залишок;
3.6 Проектування процедури main()
Процедура main() повинна складатися з процедур ініціалізації, основного тіла програми та незкінченного циклу. Після ініціалізації всіх вузлів дозволяються усі переривання і ми очікуємо переривання від АЦП, при приході переривання ми аналізуємо флаг ADCFlag , і якщо він дорівнює 1, то ми переходимо до тіла основної програми. Зчитуємо значення АЦП, перетворюємо його, виводимо текстове повідомлення на РКІ. Далі ми аналізуємо чи змінилось значення АЦП, і якщо так, то забороняємо переривання, викликаємо процедури перетворення та відображення результату, відновлюємо дозвіл на переривання.
5. Рекомендаціі по розробці програмних та апаратних діагностичних засобів для перевірки працездатності пристрою
Для розробки програми варто використати достатньо легкий у освоєнні пакет CodeVisionAVR C Compiler . До його функцій входить така важлива риса, як наявність власного програматора. Для відпрацювання програми треба використовувати фірмовий пакет ATMEL AVR Studio.
Зібраний пристрій треба запрограмувати та відкалібрувати за допомогою точного зовнішнього амперметру, джерела живлення, навантаження. Калібрування треба проводити встановленням або зняттям перемичок на шунті (резистор R1 на схемі пристрою) виконаним друкованим способом. Встановити таким чином рівні показання приладу та амперметру при різних значеннях струму.
6. Проектування плати друкованої пристрою
На сьогоднішній день існує багато програмних пакетів спеціально розроблених для розведення та проектування друкованих плат, таких як PCad, OrCad, Eagle, але з метою закріплення знань з таких дисциплін як САПР, ТЕМЦ , метрології та т.п. вирішено розробити плату друковану ручним способом у пакеті Sprint-Layout4 з урахуванням усіх вимог та стандартів. Розмір ПД вирішено обрати таким самим як і розміри плати РКІ. Їх крепіжні отвори співпадають. У корпусі вони кріпляться друг за другом за допомогою гвинтів.
Висновок
У даному курсовому проекту ми детально розібрали устрій, алгорітм роботи та способи програмування мікроконтролерами фірми ATMEL. На прикладі МК ATmega16 розробили пристрій вимірювання струму до 2А. Відладили програму, розробили принципову схему та плату друковану. Зібрали пристрій на макетній платі та опробували його працездатність.
Література
1. Программирование на языке С для AVR и PIC микроконтроллеров. / Сост. Ю.А.Шпак - К.: «МК-Пресс» , 2006. - 400 с., ил
2. Микроконтроллеры AVR семейств Tiny и Mega фирмы ATMEL, 2-е изд., стер. - М.: Издательский дом «Додека-ХХІ», 2005. - 560с.