ЗМІСТ
1. Введення.
2. Аналіз вихідних даних, вибір параметра контролю.
2.1. Налагодження комплекс.
2.2. Вибір параметра контролю.
3. Опис схеми електричної принципової.
3.1. Плата мікроконтролера.
3.2. Плата макета.
4. Опис алгоритму програми.
5. Опис програми.
6. Методика виконання лабораторної роботи.
6.1. Мета роботи.
6.2. Опис лабораторної установки.
6.3. Вихідні дані.
6.4. Домашні завдання.
6.5. Рекомендації по виконанню.
6.6. Послідовність виконання роботи.
7. Висновок.
Література.
Додаток. Текст програми
Графічна частина
Лист № 1 Схема електрична принципова
Лист № 2 Блок схема алгоритму
1. ВСТУП.
В даний час практично неможливо вказати якусь галузь науки та виробництва, в якій би не використовувалися мікропроцесори (МП) і мікроЕОМ.
Універсальність і гнучкість МП як пристроїв з програмним керуванням поряд з високою надійністю і дешевизною дозволяють широко застосовувати їх в самих різних системах управління для заміни апаратної реалізації функцій управління, контролю, вимірювання та обробки даних. Застосування МП і мікроЕОМ в системах управління промисловим обладнанням припускає, зокрема, використання їх для керування верстатами, транспортувальні механізмами, зварювальними автоматами, прокатними станами, атомними реакторами, виробничими лініями, електростанціями, а також створення на їх основі робототехнічних комплексів, гнучких автоматизованих виробництв, систем контролю та діагностики. Мікропроцесорні засоби дозволяють створювати різноманітні за складністю виконуваних функцій пристрої управління - від найпростіших мікроконтролерів нескладних приладів і механізмів до найскладніших спеціалізованих і універсальних систем розподіленого управління в реальному часі.
Серед різних форм організації сучасних мікропроцесорних засобів можна умовно виділити наступні групи:
- Вбудовані МП і найпростіші мікроконтролери;
- Універсальні мікроконтролери та спеціалізовані мікроЕОМ;
- МікроЕОМ загального призначення;
- Мультімікропроцессорние системи;
- Апаратні засоби підтримки мікропроцесорних систем (розширювачі).
Вбудовувані у прилади і апаратуру МП і найпростіші мікроконтролери жорстко запрограмовані на реалізацію вузькоспеціалізованих завдань, їх програмне забезпечення проходить налагодження на спеціальних стендах або універсальних ЕОМ, потім записується в ПЗП і рідко змінюється в процесі експлуатації. Вбудовувані засоби використовують і найпростіші зовнішні пристрої (тумблери/клавішні перемикачі, індикатори).
Спеціалізовані мікроЕОМ реалізуються найчастіше на основі секційних мікро програмованих МП, що дозволяють адаптувати структуру, розрядність, систему команд мікроЕОМ під певний клас задач. Проте такий підхід організації систем вимагає трудомісткою і дорогою розробки «Власного» програмного забезпечення.
Останнім часом широкого поширення набувають також програмувальні мікроконтролери, що представляють собою спеціалізовані мікроЕОМ, орієнтовані на вирішення численних завдань в системах управління, регулювання та контролю. Особливу групу становлять програмовані контролери для систем автоматичного регулювання. Найважливішим пристроєм будь-якої системи автоматичного регулювання є регулятор, що задає основний закон управління виконавчим механізмом. Заміна класичних аналогових регуляторів універсальними програмованими мікроконтролерами, здатними програмно перебудовуватися на реалізацію будь-яких законів регулювання, записаних в пам'ять мікроконтролерів, що забезпечує підвищення точності, надійності, гнучкості, продуктивності і зниження вартості систем управління. Великим достоїнством універсальних мікроконтролерів є їхня здатність виконувати ряд додаткових системних функцій: автоматичне виявлення помилок, контроль граничних значень параметрів, оперативне відображення стану систем і т. п.
У системах автоматичного регулювання особливе місце виділяється для систем керування двигунами, в таких системах основний регульованою величиною є частота обертання якоря двигуна, яка змінюється при зміні навантаження. Використання замість аналогового регулятора мікроконтролера дозволить істотно поліпшити процес регулювання. Застосування цифрового індикатора та клавіатури спростить роботу з встановлення параметрів автоматичного регулювання та контролю регульованого значення.
В дипломному проекті розглядається як автоматизована система управління двигуном. Як регулятор використовується мікроконтроллер, який повинен підтримувати, визначену користувачем, частоту обертання і видавати поточні обороти якоря двигуна.
2. АНАЛІЗ ВИХІДНИХ ДАНИХ, ВИБІР параметрів контролю.
Вихідними даними визначена розробка плати та програмного забезпечення з режимами установки частоти обертання якоря двигуна, стабілізації частоти обертання і її індикації.
Область застосування макета - лабораторні та практичні роботи в ККЕП.
2.1. Налагодження комплекс.
Базою вихідних даних є налагоджувальний комплекс МК51. Комплекс складається з плати мікроконтролера і програмного забезпечення і призначений для налагодження і тестування апаратури і програмного забезпечення керуючих систем, виконано на базі мікроконтролера (МК) сімейства Intel imcs51.
Плата МК51 складається з наступних блоків:
- МК SAB80C535 призначений для виконання програми МОНІТОР і для виконання призначеної для користувача програми (управління);
- Постійний запам'ятовуючий пристрій, призначений для зберігання програми МОНІТОР; ємність ПЗУ 32К байт;
- Оперативний запам'ятовуючий пристрій, призначений для збереження програми користувача (програма роботи управляючої системи);
- Дисплей, призначений для контролю значень що вводяться параметрів, виведення значень параметрів системи управління, виведення символів;
- Клавіатура, призначена для введення значень параметра програми керуючої системи, запуску програми управління, виклику процедур і скидання МК;
- Буфер інтерфейсу зв'язку плати ПМК з комп'ютером;
- Блок комутації адрес ОЗУ і ПЗУ.
Програмне забезпечення складається з програми FDSAB повноекранний відладчик програм на асемблері мікроконтролерів сімейства МК51, орієнтований на використання спільно з платою для налагодження програм на базі мікроконтролера Siemens SAB80C535 призначена для відображення та повноекранного редагування ресурсів мікроконтролера, завантаження програмного коду для мікроконтролера, виконання його в ПМК повністю, блоками або по кроках.
У програмі передбачений режим терміналу з можливістю вибору номера комунікаційного каналу (1 або 2) і швидкості передачі і прийому даних.
Меню програми містить наступні пункти:
1. Завантажити файл з програмою ...
2. Виконати програму ПМК
3. Перечитати ОЗУ і регістри З ПМК
4. Завантажити ОЗУ і регістри У ПМК
5. Прочитати ПЗУ або ОЗУ команд ПМК ...
6. Завантажити ПЗУ або ОЗУ команд ПМК ...
7. Перезавантажити програму У ПМК
8. Дизасемблювати команди в діапазоні ...
9. Зберегти текст програми у файл ...
10. Включити/виключити символьні мітки
11. Параметри зв'язку ...
12. Режим терміналу>
13. Коротка інформація про систему
14. Вихід
Призначення пунктів меню:
1. Вибір на дисках комп'ютера виконуваного файлу (. BIN) з програмою, завантаження в відладчик і пам'ять команд макета і дізассемблірованіе завантаженого коду на екран в область відображення дизасемблювати інструкцій.
2. Передача управління від монітора ПМК програмі користувача в пам'яті команд макета.
3. Зчитування вмісту внутрішньої ОЗУ макета і спеціальних функціональних регістрів з ПМК.
4. Завантаження в ПМК вмісту внутрішньої ОЗУ з відладчика і спеціальних регістрів.
5. Зчитування вмісту пам'яті команд ПМК в відладчик (діапазон запитується).
6. Завантаження вмісту пам'яті команд ПМК з відладчика в ПМК (діапазон запитується).
7. Перезавантаження коду програми в пам'ять команд ПМК з пам'яті відладчика.
8. Дізассемблірованіе програмного коду з пам'яті команд відладчика в запитуваній діапазоні адрес. За вибором користувача інструкції дописуються за вже наявними або замінюють їх.
9. Зберігає у файл, ім'я якого запитується, дизасемблювати фрагмент програми користувача з мнемонічний позначеннями регістрів процесора Siemens SAB80C535 і символьними мітками (якщо включений режим відображення символьних міток).
10. Перемикає режим подання дизасемблювати коду на екрані: з виділеними символьними мітками або тільки з адресами переходів.
11. Зміна номера послідовного порту комп'ютера, до якого підключена ПМК і швидкості передачі через порт за допомогою зміни дільника частоти.
12. Переклад програми в режим терміналу. У цьому режимі користувач може приймати і передавати дані по послідовному порту в ПМК.
13. Відображення короткої інформації про систему (обсяг вільної ОП, місце на поточному диску, параметри з'єднання, завантажений файл).
14. Вихід з програми.
2.2. Вибір параметра контролю.
Очевидним параметром контролю є частота обертання ротора електродвигуна. Датчиком для встановлення числа обертів може служити оптопара. Однак у цьому випадку з-за малої частоти імпульсів, що надходять від датчика, буде невисокою стабільність частоти обертання, з-за великої тривалості виміру і швидкого характеру зміни навантаження.
Для збільшення стабільності передбачається диск на якому розташовано Максимальна кількість прорізів. У цьому разі одному обороту валу двигуна буде відповідати велика кількість імпульсів від датчика. Але й у цьому випадку для точного вимірювання частоти обертання потрібно чимало часу. Проведені досліди дійсно показали значне відхилення частоти обертання від встановленої.
Вищу стабільність утримання частоти обертання забезпечує спосіб вимірювання періоду імпульсів від датчика. МК має у своїй архітектурі відповідну апаратну і програмну підтримку.
3. ОПИС СХЕМИ електричної принципової.
Схема електрична принципова представлена в графічній частині Лист1.
3.1. Плата мікроконтролера.
Порти Р0 і Р2 МК використовуються в режимі зовнішньої пам'яті. Молодші розряди адреси комірки пам'яті запам'ятовуються в регістрі адреси (DD9) імпульсом ALE.
Блок переадресування виконаний на елементах DD6 і DD7 і виконує функцію перемикання адрес відповідно до таблиці 3.1.
Таблиця 3.1
Вихідний адреса Робоча адреса
ПЗУ ОЗУ ПЗУ ОЗУ
0000Н 8000Н 8000Н 0000Н
По сигналу RESET = 0 RS - тригер на елементах DD7.3 - DD7.4 встановлений в одиничне стан (на виведення 13 DD7.4 рівень логічного нуля) і виробляється вибір ПЗУ (DD12). Після відпускання кнопки скидання (SA1) тригер зберігає свій стан і імпульсом PSEN зчитується 1-й байт команди переходу з ПЗУ. Тригер утримується в одиничному стані сигналом з виходу DD6.1 (А15 = 0 => А15 = 1), незважаючи на наявність імпульсу PSEN на вході 1 елемента DD7.2.
У наступних двох зверненнях зчитується з ПЗУ адреса переходу 8000Н і виконується команда SJMP 8000H.
При читанні з комірки 8000Н першого байта команди МК видає адресу, в якому А15 = 0, отже на виході DD6.1 формується низький рівень. Імпульсом PSEN формується позитивний імпульс на виході DD7.2 і тригер перемикається. Так як А15 = 1, то на виході DD6.1 присутній низький рівень, отже на виході DD6.2 - високий і незважаючи на те, що тригер переключився вибір ОЗУ не проводиться. Вибір ОЗП буде проводиться якщо А15 = 0 і зчитування команд проводиться імпульсом PSEN.
Порти Р4 і Р5 використовуються для підключення клавіатури і дисплея. У платі використовується клавіатура формату 4х4 і чотирьох розрядний дисплей динамічного типу. Розряди Р4.3 - Р4.0 є розрядами сканування клавіатури і одночасно розрядами вибору індикатора. Сигнали вибору індикатора ( «біжить нуль») подаються на входи підсилювачів (DD10). Низький рівень з виходу DD10 виробляє виключення транзистора, через який подається на загальний анод обраного індикатора напруга +5 В.
Сигнали сегментів з виходів порту Р5 через струмові підсилювачі DD4 надходять на шину сегментів С0 - С7 індикаторів. Резистори R17 - R24 визначають значення амплітуди імпульсу струму, що протікає через сегменти.
Розряди Р4.7 - Р4.4 є входами сигналів опитування клавіатури.
За допомогою елементів DD11.1 - DD11.2 формується сигнал запиту переривання від клавіатури, що надходить на вхід INT0 МК.
ІМС DD5 є перетворювачем рівнів для послідовного каналу.
Елементи джерела живлення:
VD3 - діод випрямляча;
С5 - С8 - згладжує фільтр;
DD3 - стабілізатор напруги.
Трансформатор блоку харчування винесено в окремий блок, сполучений виделкою харчування.
З'єднання з «зовнішнім світом» проводиться за допомогою роз'ємів.
Роз'єм Х7 призначений для з'єднання з СОМ - портами комп'ютера.
На контакти роз'ємів Х1 виведені входи порту Р6 і входи еталонних харчування та землі.
На контакти роз'єму Х5 виведені лінії від порту Р3.
На контакти роз'єму Х4 виведені лінії від порту Р1.
Роз'єм Х8 використовується для підключення блоку трансформатора.
3.2. Плата макета.
Оптопара VD1 VD2 є датчиком частоти обертання якоря двигуна. Фотодіод VD1 формує струмові імпульси при проходженні шторки освітленням від світлодіода VD2. Імпульс з VD1 відкриває транзистор VT1 тим самим формуючи імпульс на його колекторі.
Управління двигуном відбувається за допомогою DD1 (ІМС управління реверсивними колекторних двигунів). Режими роботи представлені в таблиці 3.2.
Таблиця 3.2
Режим роботи IN1 IN2 OUT1 OUT2
Гальмо 1 1 L L
Движ/Рев 0 1 L H
Рев/Движ 1 0 H L
Стоп 0 0? ?
На входи DD1 надходять логічні рівні «0» «1», що вибирає режим роботи двигуна, підключеного до виходів DD1. С1 - С4 - згладжують фільтри.
Змінним резистором R8, з'єднаний послідовно з генератором, подається навантаження на двигун. Резистори R5 R9 (R5 = R9) з'єднані загальним проводом, а з інших кінців знімається аналогове значення напруги для визначення навантаження. Залежно від напрямку обертання генератора струм в ланцюзі буде протікати у двох напрямках, отже, значення потенціалів напруги на R5 R9 будуть протилежні, але рівні за значенням. Це забезпечує вимірювання напруги в реверсному режимі роботи двигуна.
4. ОПИС алгоритмом програми.
Блок схема алгоритму представлена в графічній частині лист 2.
Головна програма зациклена і являє собою блок процедури індикації. Програми вимірювання частоти обертання двигуна і обробки натиснення клавіш виконуються перериваючи основну програму індикації переривань від вимірника частоти та клавіатури відповідно. Після виконання програм обробки переривань програма індикації продовжує роботу з місця її переривання.
Підпрограма (ПП) обробки переривання від вимірника (INT1) спочатку перевіряє виконання повторне входження в ПП. При першому входження здійснюється запуск вимірника і вихід. При повторному входження виміряне значення тривалості періоду імпульсу від датчика запам'ятовується, порівнюється із заданим значенням. Якщо виміряний значення менше заданого тоді значить частота обертання знизилася і відбувається включення двигуна, інакше двигун вимикається. Після чого аналізується режим індикації: обороти двигуна або індикація навантаження доданої до двигуна за допомогою генератора. Залежно від зробленого вибору виміряне значення частоти обертання або навантаження перетворюється в позиційно-десяткове значення і видається в індикатор. Потім відбувається вихід з ПП.
В ПП обробки переривання від клавіатури (KLAV) визначається натиснення функціональної клавіші. Якщо клавіша не функціональна то виконується зсув индикационного осередків вліво і запис коду натиснутою клавіші в останньою индикационного клітинку, далі вихід. Якщо ж клавіша функціональна проводиться визначення яка саме натиснута для цього служать чотири блоки рішення, якщо функціональність клавіші не визначиться то значить натиснута клавіша «реверсу» при натисканні якої здійснюється реверс напрямку обертання якоря двигуна і вихід. Далі перераховані дії після натискання функціональних клавіш, після виконан?? ения яких ПП завершується:
- Клавіша «видалити» - зрушення индикационного осередків в право і запис в старшу клітинку нуля;
- Клавіша «старт» - перетворення введеного числа обертів на секунду в тривалість періоду імпульсів з датчика;
- Клавіша «стоп» - зупинка двигуна;
- Клавіша «режим» - перемикання режиму індикації частоти обертання/подається навантаження.
5. ОПИС ПРОГРАМИ.
У програмі використовуються символічні імена присвоєні осередків ОЗУ:
st1 data 52h
номер зсуву индикационного осередку n_sd data 53h
введена частота обертання якоря двигуна obor data 54h
ділене 1-й байт chi_3 data 55h
ділене 2-й байт chi_2 data 56h
ділене 3-й байт chi_1 data 57h
дільник 1-й байт zn_h data 59h
дільник 2-й байт zn_l data 5ah
приватне 1-й байт rez_h data 5bh
приватне 2-й байт rez_l data 5ch
результат ділення 16/8 rezul data 5dh
виміряна тривалість імпульсу мл. байт dli_i_l data 5eh
виміряна тривалість імпульсу ст. байт dli_i_h data 5fh
задана тривалість імпульсу мл. байт dli_l data 60h
задана тривалість імпульсу ст. байт dli_h data 61h
тимчасова осередок temp data 62h
лічильник паузи видачі обчисленого значення indik data 63h
Використовувані біти прапорів перераховані нижче:
повторний вхід в п.п. вимірювання періоду імпульсу flag bit 00h
індикація натиснення функціональної клавіші f_ind bit 01h
функціональна клавіша «реверс» f_rev bit 02h
напрям обертання f_nap bit 03h
вкл./викл. двигун f_rab bit 04h
індикація обертів/навантаження f_rez bit 05h
функціональна клавіша «режим» f_rezind bit 06h
Розподіл 24-х бітового числа на 16-й бітне результат 16 біт, реалізовано в підпрограмі div24. Розподіл багатобайтові числа на багатобайтові реалізується за принципом віднімання дільника з ділене із зсувом останнього вліво, з можливістю відновлення ділене. Перед процедурою поділу в осередку дільника записується число в діапазоні 0-0fffh. На початку поділу відбувається: зсув дільника на чотири розряду вліво це необхідно для розподілу 24/16, запис у приватне 10h для визначення закінчення поділу, запис в комірки ділене число 1000000. На початку циклу поділу здійснюється зсув ділене вліво на один розряд, а також зсув вліво приватного та запис у стек значень прапорів переносів. Далі зі старшої частини ділене віднімаємо дільник, в залежності від знаку переносу в приватне записується «0» або «1» і збереження ділене. Перевірка переносу при зсуві ділені й запис у приватне «1» якщо перенесення був. Перевірка закінчення поділу шляхом перевірки відновленого значення прапора переносу при зсуві приватного. Після закінчення поділу результат ділення знаходиться в комірках результату.
Після натискання клавіші «Старт» відбувається перетворення значення индикационного осередків у двійковий код (1 байт), після чого це значення множиться на 24, що відповідає 24 прорізами диска оптопари (результат 2 байти) і ділимо 1000000 на це число в результаті виходить тривалість періоду імпульсів від оптопари для введеного числа обертів на секунду. Після перетворення виконується функція запуску двигуна яка дає поштовх і дозволяється переривання INT1 з оптопари.
У підпрограмі обробки переривання INT1 перевіряється повторне входження для цього використовується прапор flag. При першому входження запускається таймер і відбувається вихід з підпрограми обробки переривання. У другому входження таймер зупиняється, забороняється переривання INT1 і значення таймера (що відповідає періоду імпульсу) записується в осередку dli_i_l і dli_i_h. Після чого проводиться регулювання частоти обертання двигуна, для цього з осередків dli_l dli_h (введене значення) віднімається зміряне dli_i_l dli_i_h, коли виник перенесення значить частота обертання менша за необхідну і двигун включається (відключається, якщо переносу немає) установкою коду на портах Р3.4 Р3. 5. Комбінація вибирається в залежності від напрямку обертання яка визначається бітом f_nap. Індикація вимірюваної частоти обертання відбувається через 47 (2f) раз вимірювання імпульсів, це потрібно для того, щоб прибрати мерехтіння цифр на індикаторі. Перетворення обчисленого значення в частоту обертання двигуна в обр/сек відбувається наступним чином: розподіл 1000000 на виміряне значення, поділ на 24, перетворення bin-> dec-> індикатор. Перед завершенням підпрограми обробки переривання INT1 здійснюється ініціалізація регістрів і осередків перед наступним запуском процедури і дозволяється переривання INT1.
Для установки таймера і переривання INT1 використовуються наступні керуючі слова:
- TMOD = 01H - режим роботи таймера;
- TCON = 04H
- Tr - розряд запуску таймера;
- IEN0 - дозволу переривань
- 8 розряд - заборона всіх переривань;
- 3 розряд - INT1;
- 1 розряд - INT0 (клавіатура);
6. МЕТОДИКА виконання лабораторних робіт.
6.1. Мета роботи.
Придбання практичних навичок у технології розробки та налагодження елементів керуючих систем.
6.2. Опис лабораторної установки.
Лабораторна установка складається з наступних частин: плати керування ПМК, плати двигуна і блоку живлення.
Плата двигуна ріс.6.1 складається з трьох блоків: блок датчика швидкості обертання, блок управління, блок датчика навантаження. Плата двигуна підключається до роз'ємів портів ПМК за допомогою роз'ємів. X2 підключається до порту Р3 і служить для з'єднання: оптопари ( «Датчик») зі входом переривання INT1, портів Р3.4 Р3.5 з входами блоку управління (Упр1 і Упр2). X6 підключається до порту Р6 використовуючи дві лінії AI6 і AI7 для вимірювання навантаження пропонуються до двигуна за допомогою генератора (вимірювання навантаження пропонує продукти з поза за допомогою цієї схеми неможливо). Використання двох каналів передбачається для вимірювання напруги двигуна з можливим реверсом коли при обертанні в одну сторону вимір відбувається з першого каналу, а при обертанні в іншу з другим. Такий розподіл виходить шляхом використання дільника напруги загальний кінець якого з'єднаний з нульовим проводом і при протіканні струму в різних напрямках змінює знак напруги на кінцях дільника щодо спільного проведення на протилежний. Опорне напруга Uref подається з'єднанням +5 В, а нижня межа (Ugnd) задається з'єднанням із загальним.
Рис. 6.1.Схема плати двигуна.
Роз'єм X3 з'єднує схему з блоком живлення.
Датчик числа оборотів являє собою диск, з 24-ю прорізами, жорстко закріплений навалу обертання двигуна. Під час проходження прорізи між оптопари світлодіод VD2 висвітлює інфрачервоним випромінюванням фотоприймач що представляє собою фотодіод VD1. Напівпровідниковий фотоприймач зменшивши за рахунок цього свій опір починає пропускати струм відкриваючи тим самим транзистор VT1 з колектора якого знімаються прямокутні імпульси.
Обороти двигуна прямо пропорційні додається до нього напруги. У зв'язку з цим пропонується утримувати частоту обертання у визначених межах за допомогою зміни напруги що подається на двигун. Використання цифрових систем керування які дозволяють швидко обробляти дані робить можливим застосування як мінливого напруги шим-генератор. Тривалість імпульсів і пауз формується динамічно в залежності від характеру прикладеною навантаження. Утримання оборотів при збільшенні навантаження буде триває до тих пір, поки тривалість паузи не буде рівною нулю і подальше збільшення навантаження буде знижувати оберти двигуна. Для поліпшення підтримки частоти обертання пропонується максимально можливо збільшити напругу джерела живлення.
6.3. Вихідні дані.
1. Комплекс налагоджувальний: плата, ПО FDSAB;
2. Встановлення управління двигуном;
3. Можливість установки частоти обертання з клавіатури;
4. Стабілізація частоти;
5. Імпульси з датчика надходять на вхід переривання INT1;
6. Управління двигуном здійснюється видачею коду на порти Р3.4 і Р3.5 відповідно до таблиці 6.1;
7. Максимальна швидкість обертання двигуна 110 обр1/сек.;
8. Число прорізів диска обертання датчика складає 24 шт.
9. Потужність двигуна 10 Вт;
10. Входи для вимірювання навантаження поступають на АЦП канали AI6 і AI7. VAREF = 5B.
Таблиця 6.1
Режим роботи IN1 IN2 OUT1 OUT2
Гальмо 1 1 L L
Движ/Рев 0 1 L H
Рев/Движ 1 0 H L
Стоп 0 0? ?
6.4. Домашні завдання.
Скласти алгоритм і програму стабілізації частоти обертання електродвигуна постійного струму з паралельним збудженням у відповідності з вихідними даними.
6.5. Рекомендації по виконанню.
Як параметр регулювання взяти тривалість періодів імпульсів від оптопари. Вибір цього параметра замість вимірювання частоти обертання диска, перекрепленного на двигун, дозволяє проводити швидкий контроль стабільності системи управління за рахунок значного зменшення тривалості виміру. Для такого регулювання необхідно перетворювати введену частоту обертання у тривалість періоду імпульсів, що формуються прорізами на диску датчика, і назад - тривалість періоду в частоту обертання. Рекомендується здійснювати перетворення в такий спосіб:
1) Введену частоту обертання (обр/сек) помножити на кількість прорізів в диску (24);
2) 1000000 розділити на отримане число, в результаті чого вийде тривалість одного періоду в мкс.
Для зворотного перетворення:
1) 1000000 розділити на тривалість періоду;
2) розділити на 24.
При розподілі 1000000 (3 байти) на 2 байтів можливе використання стандартної процедури розподілу 4-х байтного числа на 2-й байтного. Але для більш швидкого поділу (а значить і збільшення швидкості вимірювання) рекомендується зменшити тривалість поділу, виробляючи поділ 6-ти зошити (1000000) на 3-и тетради (максимально можливе число 4095), для цього необхідно:
1) перед процедурою розподілу зрушити дільник на чотири розряду вліво;
2) продовжувати поділ з урахуванням зрушено дільника, тобто поділ має триває на чотири цикли менше;
3) після процедури розподілу зрушити приватне на чотири розряду ліворуч.
Для вимірювання тривалості періоду імпульсів необхідно в якості лічильника використовувати один з таймерів в режимі таймера. Подача на вхід переривання INT1 імпульсів викликає ПП обробки переривання в якій необхідно стежити за першим і другим входом в ПП. При першому входження включити таймер, а при другому входження вважати стан таймера, що і буде тривалістю періоду імпульсу.
6.6. Послідовність виконання роботи.
1. Набрати текст програми;
2. Відкомпілювати програму;
3. Запустити відладчик FDSAB;
4. Завантажити у пам'ять bin файл, запустити програму на виконання;
5. Зняти залежність зміни частоти обертання від подається навантаження;
6. Зробити висновок про виконану роботу;
7. Скласти звіт.
Увага! При додатку великих зусиль гальмування двигуна він може зупиниться що призведе до різкого збільшення струму в вихідний ланцюга ІМС управління і можливо вихід її з ладу.
7. ВИСНОВОК.
У результаті проведеної дипломної роботи була розроблена плата макета та програмне забезпечення блоку управління реверсивним двигуном. З режимами роботи: встановлення частоти обертання якоря двигуна, стабілізації й індикації частоти. В якості навантаження використовується генератор, з'єднаний з двигуном, на виходи якого приєднаний змінний резистор, яким задається навантаження. У ланцюг генератора включений дільник напруги для вимірювання напруги і його індикації.
При розробці дипломного проекту було випробувано два способи автоматичного регулювання частоти обертання двигуна: вимірювання частоти (за певний час підраховується кількість імпульсів від датчика), вимірювання періоду (вимірювалася тривалість періоду імпульсів надходять від датчика). Перший спосіб вимірювання частоти показав погану стабільність частоти обертання регулюючої системи, тому що з-за великої тривалості виміру (при зменшенні тривалості виміру збільшувалася похибка) та швидкої зміни характеру навантаження система не встигала відстежувати це зміна, а отже і регулювати вхідну величину. Другий спосіб регулювання з вимірюванням тривалості періоду показав хорошу стабільність автоматичної системи управління. Це досягається збільшення кількості прорізів на обертовому диску оптопари, вимірювання триває короткий час, за який система автоматичного регулювання не встигає відхилитися від встановленого значення. Невелике відхилення частоти обертання за короткий проміжок часу (часу вимірювання одного періоду) відразу контролюється і відбувається модифікація вихідного параметра.
ЛІТЕРАТУРА.
1. Григорьев В. Л. Програмне забезпечення мікропроцесорних систем. - М.: Энергоатомиздат, 1983.
2. Щелкунов М. М., Діанов А. П. Мікропроцесорні засоби та системи. - М.: Радіо і зв'язок, 1989.
3. Сташін В. В. Проектування цифрових пристроїв на однокристальних мікроконтролерах. - М.: Энергоатомиздат, 1990.
4. Іванов В. І. Напівпровідникові оптоелектронні прилади: Довідник - 2-е изд., Перераб. І доп. - М.: Энергоатомиздат, 1989
5. Хвощ С. Т. Мікропроцесори і мікроЕОМ в системах автоматичного управління. Довідник. Л.: Машиностроение. Ленингр. отд-ние, 1987.
ДОДАТОК.
Текст програми.
; Присвоєння імен
p4 data 0e8h
p5 data 0f8h
ip0 data 0a9h
ip1 data 0b9h
ien0 data 0a8h
ien1 data 0b8h
adcon data 0d8h
addat data 0d9h
darp data 0dah
st1 data 52h
n_sd data 53h
obor data 54h
chi_3 data 55h
chi_2 data 56h
chi_1 data 57h
chi_t data 58h
zn_h data 59h
zn_l data 5ah
rez_h data 5bh
rez_l data 5ch
rezul data 5dh
dli_i_l data 5eh
dli_i_h data 5fh
dli_l data 60h
dli_h data 61h
temp data 62h
indik data 63h
flag bit 00h
f_ind bit 01h
f_rev bit 02h
f_nap bit 03h
f_sta bit 04h
f_rab bit 05h
f_rez bit 06h
f_rezind bit 07h
; Визначення векторів переривань
org 0000h
sjmp start
org 0003h
ljmp klav
org 013h
ljmp int_1
; Початкова ініціалізація
start: mov darp, # 00h
mov adcon, # 0fh
clr f_rezind
clr f_rab
clr f_rev
clr f_sta
setb f_nap
setb f_rez
mov n_sd, # 0bh
mov st1, # 3fh
mov ip0, # 04h
mov ip1, # 04h
mov sp, # 65h
mov ien0, # 81h
inizial: mov r0, # 47h
mov r1, # 03h
; Початкове обнуління індикатора
numb: mov @ r0, # 00h
inc r0
djnz r1, numb
; Визначення режиму роботи та його індикація
jnb f_sta, re1
jb f_rez, re1
mov 4ah, # 19h
sjmp re2
re1: mov 4ah, # 10h
re2: clr f_ind
beg: jb f_ind, beg2
; Визначення режиму роботи
jnb f_rezind, na2
clr f_rezind
jb f_nap, na1
mov 4ah, # 0fh
sjmp na2
na1: mov 4ah, # 0ah
; Запуск двигуна з перевіркою напрямку обертання
na2: jnb f_rev, beg2
jb f_nap, napr1
clr p3.5
mov 4ah, # 0fh
jb f_rez, napr
mov 4ah, # 19h
sjmp napr
napr1: clr p3.4
mov 4ah, # 0ah
jb f_rez, napr
mov 4ah, # 19h
napr: clr f_rev
clr flag
setb f_rab
mov ien0, # 85h
; Зупинка двигуна
beg2: jnb f_ind, beg1
djnz st1, beg1
mov st1, # 05fh
; Зсув индикационного осередків вправо
mov r0, # 0ahov r1, # 49h
mov 40h, # 10h
sdvig: mov a, @ r1
inc r1
mov @ r1, a
mov a, r1
subb a, # 02h
mov r1, a
djnz r0, sdvig
djnz n_sd, beg1
mov n_sd, # 0bh
ljmp inizial
; Процедура індикації
beg1: mov r4, # 0feh
mov dptr, # tabcod
mov r0, # 47h
cycl: mov p4, # 0ffh
mov a, @ r0
movc a, @ a + dptr
mov p5, a
mov a, r4
mov p4, a
rl a
mov r4, a
inc r0
lcall del
cjne r0, # 4bh, cycl
ljmp beg
del: mov r1, # 10
st_2: mov r2, # 10
st_1: nop
nop
nop
djnz r2, st_1
djnz r1, st_2
ret
tabcod: db 0c0h, 0f9h, 0a4h, 0b0h, 99h, 92h, 82h, 0f8h, 80h, 90h
db 0feh, 0fdh, 0fbh, 0f7h, 0efh, 0dfh, 0ffh
db 0c6h, 0f8h, 0c0h, 0c8h, 88h, 8ch, 86h, 80h, 89h, 0ceh, 91h, 0b0h, 82h
; Клавіатура
klav: push acc
push p4
push psw
setb psw.3
mov r4, # 00h
mov r7, # 04h
mov r6, # 0feh
loop: mov a, r6
mov p4, a
rl a
mov r6, a
mov a, p4
mov r5, # 04h
swap a
rotate: rrc a
jnc dbnc
inc r4
djnz r5, rotate
djnz r7, loop
ljmp quit
dbnc: mov r2, # 0ah
m1: mov r3, # 55h
m2: djnz r3, m2
djnz r2, m1
mov a, # 0f0h
wait: mov p4, # 0f0h
cjne a, p4, wait
mov r2, # 0ah
m3: mov r3, # 55h
m4: djnz r3, m4
djnz r2, m3
mov a, # 09h
subb a, r4
jc func
rel: mov r0, # 03h
mov r1, # 48h
new: mov a, @ r1
inc r1
mov @ r1, a
mov a, r1
subb a, # 02h
mov r1, a
djnz r0, new
mov r1, # 47h
mov 47h, r4
ljmp quit
; Визначення режиму з функціональної клавіші
func: jb f_ind, quit
cjne r4, # 0ah, g2
ljmp bakesp
g2: cjne r4, # 0bh, g3
ljmp sta
g3: cjne r4, # 0ch, g4
ljmp stop
g4: cjne r4, # 0dh, g5
ljmp rezim
g5: cjne r4, # 0eh, g6
ljmp rezim
g6: ljmp revers
quit: clr psw.3
pop psw
pop p4
pop acc
reti
; Видалення символу
bakesp: jb f_rab, quit
mov 47h, 48h
mov 48h, 49h
mov 49h, # 00h
ljmp quit
; Старт. DEC-> BIN
sta: jb f_rab, quit
mov 4ah, # 0ah
mov b, # 0ah
mov a, 49h
mul ab
add a, 48h
mov b, # 0ah
mul ab
add a, 47h
mov obor, a
; BIN * 24
mov b, # 18h
mov a, obor
mul ab
mov zn_l, a
mov zn_h, b
; Деленіе1000000 на отримане значення
lcall div24
mov dli_l, rez_l
mov dli_h, rez_h
; Старт вимір
mov tl0, # 00h
mov th0, # 00h
clr flag
mov indik, # 00h
mov tmod, # 10h
mov tcon, # 04h
mov 4ah, # 10h
mov 49h, # 10h
mov 48h, # 10h
mov 47h, # 10h
mov 46h, # 11h
mov 45h, # 12h
mov 44h, # 15h
mov 43h, # 16h
mov 42h, # 12h
mov 41h, # 10h
setb f_ind
setb f_rev
setb f_sta
ljmp quit
; Стоп
stop: jnb f_rab, quit
mov ien0, # 81h
setb p3.4
setb p3.5
clr f_rab
mov 4ah, # 10h
mov 49h, # 10h
mov 48h, # 10h
mov 47h, # 10h
mov 46h, # 10h
mov 45h, # 11h
mov 44h, # 12h
mov 43h, # 13h
mov 42h, # 14h
mov 41h, # 10h
setb f_ind
clr f_sta
ljmp quit
; Реверс
revers: jnb f_rab, out2
mov ien0, # 81h
setb p3.4
setb p3.5
mov 4ah, # 10h
mov 49h, # 10h
mov 48h, # 10h
mov 47h, # 10h
mov 46h, # 16h
mov 45h, # 17h
mov 44h, # 18h
mov 43h, # 17h
mov 42h, # 16h
mov 41h, # 11h
jb f_nap, n1
mov adcon, # 0eh
sjmp n2
n1: mov adcon, # 0fh
n2: setb f_rev
cpl f_nap
setb f_ind
out2: ljmp quit
; Режим оберти двигуна/навантаження
rezim: jnb f_rab, out
cpl f_rez
jb f_rez, rez1
mov 4ah, # 10h
mov 49h, # 10h
mov 48h, # 10h
mov 47h, # 10h
mov 46h, # 19h
mov 45h, # 15h
mov 44h, # 1ah
mov 43h, # 16h
mov 42h, # 1bh
mov 41h, # 1ch
setb f_ind
out: ljmp quit
rez1: mov 4ah, # 10h
mov 49h, # 10h
mov 48h, # 10h
mov 47h, # 10h
mov 46h, # 13h
mov 45h, # 1dh
mov 44h, # 13h
mov 43h, # 16h
mov 42h, # 13h
mov 41h, # 12h
setb f_rezind
setb f_ind
ljmp quit
; Процедура поділу 3-х байт на 2-ва
div24: push psw
push acc
mov chi_3, # 0fh
mov chi_2, # 42h
mov chi_1, # 40h
mov rez_h, # 00
mov rez_l, # 10h
mov a, zn_h
mov b, # 10h
mul ab
mov zn_h, a
mov a, zn_l
mov b, # 10h
mul ab
mov zn_l, a
mov a, b
add a, zn_h
mov zn_h, a
lp24: mov a, rez_l
rlc a
mov rez_l, a
mov a, rez_h
rlc a
mov rez_h, a
push psw
clr c
mov a, chi_1
rlc a
mov chi_1, a
mov a, chi_2
rlc a
mov chi_2, a
mov a, chi_3
rlc a
mov chi_3, a
push psw
clr c
mov a, chi_2
subb a, zn_l
mov chi_t, a
mov a, chi_3
subb a, zn_h
jc nosav
pop psw
sav: mov chi_3, a
mov chi_2, chi_t
inc rez_l
sjmp qsav
nosav: pop psw
jc sav
qsav: pop psw
jnc lp24
pop acc
pop psw
ret
; Переривання від датчика
int_1: jb flag, iz2
setb flag
setb tr1; перше входження. запустити таймер
reti
iz2: push psw; друге входження
push acc
clr tr1
mov ien0, # 80h
mov dli_i_l, tl1; зберегти виміряний значення
mov dli_i_h, th1;
; Регулювання
clr c
mov a, dli_i_l
subb a, dli_l
mov a, dli_i_h
subb a, dli_h
jc mot_1
jb f_nap, nap11
setb p3.4
sjmp mot_0
nap11: setb p3.5
sjmp mot_0
mot_1: jb f_nap, nap01
clr p3.4
sjmp mot_0
nap01: clr p3.5
mot_0:
; Індикація
jb f_ind, inizdp
djnz indik, inizdp
mov indik, # 2fh
jb f_rez, chas
; Індикація навантаження
azp0: jnb adcon.4, azp0
mov a, addat
mov b, # 0ah
div ab
mov 47h, b
mov b, # 0ah
div ab
mov 48h, b
mov 49h, a
inizdp: ljmp iniz
; Індикація частоти обертання
chas: jb f_nap, i_nap1
mov a, 4ah
cjne a, # 0ah, in_ob2
mov 4ah, # 10h
in_ob2: dec 4ah
sjmp i_nap2
i_nap1: mov a, 4ah
cjne a, # 0fh, in_ob1
mov 4ah, # 09h
in_ob1: inc 4ah
i_nap2: mov zn_l, dli_i_l
mov zn_h, dli_i_h
lcall div24; поділ 3 байт на 2 байтів
mov rezul, # 01h; поділ 2 байт на 24
lp16: clr c
mov a, rezul
rlc a
mov rezul, a
push psw
clr c
mov a, rez_l
rlc a
mov rez_l, a
mov a, rez_h
rlc a
mov rez_h, a
push psw
clr c
mov a, rez_h
subb a, # 18h
jc nosav16
pop psw
sav16: mov rez_h, a
inc rezul
sjmp qsav16
nosav16: pop psw
jc sav16
qsav16: pop psw
jnc lp16
; BIN-> DEC
mov a, rezul
mov b, # 0ah
div ab
mov 47h, b
mov b, # 0ah
div ab
mov 48h, b
mov 49h, a
; Ініціалізація нового запуску програми вимірювання
iniz: mov tl1, # 00h
mov th1, # 00h
clr flag
port_0: jb p3.3, port_0
port_1: jnb p3.3, port_1
mov ien0, # 85h; 84
pop acc
pop psw
reti
end