Апаратно-програмне забезпечення для автоматизації спектрофотометра сф-26
Автор: Пользователь скрыл имя, 07 Мая 2013 в 19:09, дипломная работа
Описание работы
В магістерській роботі створено апаратне та програмне забезпечення для автоматизації спектрофотометра СФ-26. Даний прилад призначений для комп’ютеризованих вимірювань спектральних характеристик матеріалів.
Актуальність створення даного продукту пояснюється необхідністю удосконалення комп’ютерного забезпечення для інформаційно-вимірювальних систем.
Содержание
ПЕРЕЛІК УМОВНИХ СКОРОЧЕНЬ………………………………….……….10
ВСТУП……………………………………………………………………………11
1. ОГЛЯД ЛІТЕРАТУРИ……………………………………………………13
1.1. Оптичні характеристики матеріалів та засоби для їх
дослідження………………………………………………………...13
1.2. Спектрофотометри…………………………………………………14
1.3. Спектрофотометр СФ-26………………………………….……….15
1.4. Об’єкти спектрофотометричних вимірювань…………….……..16
1.5. Огляд аналогів…………………………………………….……….19
2. МЕТОДИКИ ПРОВЕДЕННЯ ВИМІРЮВАНЬ…………………………..…23
2.1. Методика проведення вимірювань СФ-26…………………………23
2.2. Методика проведення автоматизованих вимірювань аналогом…26
3. РОЗРОБКА АПАРАТНОГО І ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ ДЛЯ
АВТОМАТИЗАЦІЇ СФ-26……………………………………………………...28
3.1. Опис використаних у розробці структурних елементів……………
3.1.1. Основні елементи схеми модуля спряження……………..28
3.1.1.1. Цифрово-аналоговий перетворювач AD7822 та
MAX1241……………………………………………..……………28
3.1.1.2. Стабілізатор напруги L78L05…………………….31
3.1.1.3. Мікросхема К155ЛА3.……………………………. 32
3.1.1.4. Мікросхема К155ИЕ7. .…………………………….32
3.1.1.5. Мікросхема К155ИД4………………………………33
3.1.1.6. Транзистор 2SC5060………………………………..34
3.1.2. Порядок обміну по інтерфейсу Centronics………………..35
3.1.3. Крокові двигуни……………………………………………..38
3.2. Розробка функціональної схеми модуля спряження…………..…42
3.3. Розробка принципової схеми модуля спряження………………...44
3.4. Конструкторсько-технологічна розробка модуля спряження…..47
8
3.4.1. Розробка друкованої плати………………………………….47
3.4.2. Розробка збірного креслення……………………………….47
3.5. Розробка алгоритмів роботи програмного забезпечення для
проведення вимірювань комп’ютеризованим СФ-26………………….……49
3.5.1. Обґрунтування вибору програмних засобів………………49
3.5.2. Алгоритми роботи програмного забезпечення…………..50
3.5.2.1. Алгоритм створення калібровочного файлу для
двигуна шкали довжини хвилі……………………………………50
3.5.2.2. Алгоритм створення калібровочного файлу для
двигуна шкали ширини щілини…………………………………..52
3.5.2.3. Алгоритм проведення вимірювань………………..54
3.6. Загальний алгоритм роботи автоматизованого СФ 26…….………55
3.7. Розробка коду програмного забезпечення автоматизованого
СФ-26……………………………………………………………………………57
4. ТЕСТУВАННЯ КОМП’ЮТЕРИЗОВАНОГО СФ-26………………………58
4.1. Тестування апаратної частини………………………………………58
4.2. Тестування режимів роботи програмної частини………………….59
4.3. Проведення тестових вимірювань комп’ютеризованим СФ-26…..62
5. ЗАСОБИ ЗАХИСТУ ТА ОХОРОНА ПРАЦІ………………………………..65
ВИСНОВКИ…………………………………………………………………...…69
СПИСОК ЛІТЕРАТУРИ………………………………………………………...70
ДОДАТКИ………………………………………………………………………..71
Додаток 1.Функціональна схема
Додаток 2. Принципова схема.
Додаток 3. Перелік елементів
Додаток 4. Друкована плата
Додаток 5. Збірне креслення
Додаток 6. 3d зображення
Додаток 7. Загальний алгоритм роботи
9
Работа содержит 1 файл
МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ
ЧЕРНІВЕЦЬКИЙ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ
ІМЕНІ ЮРІЯ ФЕДЬКОВИЧА
Факультет комп’ютерних наук
Кафедра комп’ютерних систем та мереж
СВІТЛАНА САМОЙЛОВА
АПАРАТНО-ПРОГРАМНЕ ЗАБЕЗПЕЧЕННЯ ДЛЯ
АВТОМАТИЗАЦІЇ СПЕКТРОФОТОМЕТРА СФ-26
(Магістерська робота)
Чернівці, 2012
МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ
ЧЕРНІВЕЦЬКИЙ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ
ІМЕНІ ЮРІЯ ФЕДЬКОВИЧА
Факультет комп’ютерних наук
Кафедра комп’ютерних систем та мереж
ЗАТВЕРДЖУЮ
Завідувач кафедри
доктор фіз.-мат. наук, проф.
__________С.В.Мельничук
” ___” ____________ 2011 р.
АПАРАТНО-ПРОГРАМНЕ ЗАБЕЗПЕЧЕННЯ
СПЕКТРОФОТОМЕТРА ДЛЯ АВТОМАТИЗАЦІЇ СФ-26
ЛИСТ ЗАТВЕРДЖЕННЯ
362. 805010201 3 013 ЛЗ
УЗГОДЖЕНО
Керівник роботи
канд. фіз.-мат. наук, доцент
_____________ О.І.Воробець
“___” ______________ 2012 р.
Виконавець
студентка 5-го курсу
___________ С.В.Самойлова
“___” _____________ 2012 р.
Нормоконтролер
канд. фіз.-мат. наук, доцент
____________ С.В. Баловсяк
“___” _____________ 2012 р.
2012
ЛЗ
Чернівецький національний університет
імені Юрія Федьковича
Факультет
комп’ютерних наук
.
Кафедра
комп’ютерних систем і мереж
.
Спеціальність
8.05010201 – комп’ютерні системи і мережі
.
ЗАТВЕРДЖУЮ
Зав. кафедрою
Мельничук С.В.
„
”
2011 р.
ЗАВДАННЯ
на магістерську роботу студенту
Самойловій Світлані Вікторівні
.
(прізвище, ім’я, по батькові)
1. Тема проекту (роботи
)
Апаратно-програмне забезпечення для
.
автоматизації спектрофотометра СФ-26
_
.
затверджена наказом по університету від
„ 26 ” 09 2011 р., протокол № 2
.
2. Термін подачі студентом закінченого проекту (роботи)
8 травня 2012 р.
_
.
3. Вихідні дані до проекту (роботи)
Розрядність АЦП пристрою спряження
спектрофотометра з ІВМ РС – 16 біт. Тип логіки функціональних вузлів –
ТТЛ. Комутація з ІВМ РС – паралельний LPT-порт. Напруга живлення – 12В.
Середовищe розробки програмного забезпечення – Delphi.
Література:
1) Новиков Ю.В., Калашников О.А., Гуляев С.Э. Разработка устройств
сопряжения для персонального компьютера типа IBM PC. – М.: ЭКОМ,
1997. – 224с.; 2) Архангельский А.Я. Delphi 2006. Справочное пособие: Язык
Delphi, классы, функции Win32 и .NET. – М.: ООО „Бином-Пресс”, 2006. –
1152 с.: ил.
.
4. Зміст розрахунково-пояснювальної записки (перелік питань, які потрібно розробити)
1) Аналітичний огляд літератури з тематики магістерської роботи
.
2) Алгоритм проведення комп’ютеризованих вимірювань СФ-26____________
3) Функціональна схема та алгоритм роботи пристрою спряження ІВМ РС з
спектрофотометром СФ-26
.
4) Принципова схема пристрою спряження
.
5) Алгоритм роботи і текст коду програмного забезпечення
.
6) Друкована плата і збірне креслення пристрою спряження
..
5. Перелік графічного матеріалу (з точним зазначенням обов’язкових креслень)
.
1) Алгоритм проведення комп’ютеризованих вимірювань СФ-26 (Ф.А1 )____
2) Функціональна та принципова схеми пристрою спряження (Ф.А1)
.
3) Друкована плата і збірне креслення пристрою спряження (Ф.А1)
.
4) Блок-схема алгоритму роботи програмного забезпечення (Ф.А1)
.
5)Ілюстрації головного та допоміжних вікон програмного забезпечення (Ф.А1)
.
6. Консультанти з проекту (роботи), із зазначенням розділів проекту, що стосуються їх
Розділ
Консультант
Підпис, дата
Завдання
видав
Завдання
прийняв
7. Дата видачі завдання
Керівник
(підпис)
Завдання прийняв до виконання
(підпис)
КАЛЕНДАРНИЙ ПЛАН
№
п/п
Етапи роботи
Терміни виконання
етапів роботи
Примітки
1
Огляд літератури з тематики магістерської роботи
і проведення порівняльного аналізу розробленого
проекту з існуючими аналогами
27.09-15.10.2011
2
Розробка алгоритму проведення комп’ютеризованих
вимірювань спектрофотометром СФ-26
16.10-31.10.2011
3
Розробка алгоритму роботи та функціональної схем
пристрою спряження
1.11-15.11.2011
4
Проектування принципової схеми пристрою
спряження
16.11-30.11.2011
5
Моделювання спроектованої схеми пристрою
спряження у віртуальному симуляторі електронних
схем – Proteus
1.12-31.12.2011
6
Розробка алгоритму роботи програмного
забезпечення і створення програмного коду
15.01-6.02.2012
7
Розробка друкованої та монтажної плат пристрою
спряження ІВМ РС з спектрофотометром СФ-26
7.02-21.02.2012
8
Лабораторне макетування пристрою спряження і
тестування апаратно-програмного забезпечення
СФ-26 в цілому
22.02-15.03.2012
10
Оформлення пояснювальної записки та технічної
документації на апаратно-програмне забезпечення
СФ-26 відповідно до стандартів ЄСКД та ЄСПД
15.03-24.04.2012
11 Представлення магістерської роботи на кафедрі
25.04.2012
12 Захист магістерської роботи в ДЕК
за графіком
Студент
(підпис)
Керівник проекту (роботи)
(підпис)
АНОТАЦІЯ
В магістерській роботі створено апаратне та програмне забезпечення
для автоматизації спектрофотометра СФ-26. Даний прилад призначений для
комп’ютеризованих вимірювань спектральних характеристик матеріалів.
Актуальність створення даного продукту пояснюється необхідністю
удосконалення
комп’ютерного
забезпечення
для
інформаційно-
вимірювальних систем.
Магістерська робота складається з п’яти розділів, висновків, списку
літератури і додатків з кресленнями структурної, принципової схеми,
алгоритмів роботи пристрою та коду програмного забезпечення.
В першому розділі проводиться огляд літератури та аналогів на тему
спектрофотометрії та СФ-26.
В другому розділі розглядаються методики проведення вимірювань.
Описані методики проведення вимірювання СФ-26 та автоматизованих
вимірювань аналога.
В третьому розділі описується розробка апаратного і програмного
забезпечення для автоматизації СФ-26. Проводиться опис використаних
структурних елементів, розробки функціональної схеми пристрою
спряження, принципової схеми та програмного забезпечення для проведення
вимірювань комп’ютеризованим СФ-26.
В четвертому розділі розглянуті режими роботи, тестування апаратної
частини та перевірка точності вимірювання.
В п’ятому розділі описуються засоби захисту та охорона праці.
Магістерська робота містить 5 розділів, 71 сторінка, 54 рисунків, 2
таблиць та 22 посилань на літературні джерела, 12 додатків.
АННОТАЦИЯ
В магистерской работе создано аппаратное и программное обеспечение
для автоматизации
СФ-26. Данный
прибор
предназначен
для
компьютеризированных измерений спектральных характеристик материалов.
Актуальность создания данного продукта объясняется необходимостью
усовершенствования компьютерного обеспечения для информационно-
измерительных систем.
Магистерская работа состоит из пяти разделов, выводов, списка
литературы и приложений с чертежами структурной, принципиальной
схемы, алгоритмов работа прибора и кода программного обеспечения.
В первом разделе проводится осмотр литературы и аналогов на тему
спектрофотометрии и СФ-26.
Во втором разделе рассматриваются методики проведения измерений.
Описаны методики проведения измерений СФ-26, автоматизированных
измерений аналога.
В третьем разделе описывается разработка аппаратного и
программного обеспечения для автоматизации СФ-26. Проводится описание
использованных структурных элементов, разработки функциональной схемы
модуля сопряжения, принципиальной схемы и программного обеспечения
для проведения измерений компьютеризированным СФ-26.
В четвертом разделе рассмотрены режимы работы, тестирование
аппаратной части и проверка точности измерений.
В пятом разделе описываются средства защиты и охрана труда.
Магистерская работа содержит 5 разделов, 71 страница, 54 рисунков, 2
таблиц, 22 ссылок на литературные источники, 12 приложений.
ABSTRACT
In the master's work created the hardware and software to automate the SF-
26. This device is designed for computerized measurements of the spectral
characteristics of materials. The actuality of the product is the need to improve
computer software for the information-measuring systems.
Master's thesis consists of five chapters, conclusions, references and
applications of structural drawings, schematic diagrams, algorithms and code of
the device software.
The first section provides an examination of the literature and analogues on
spectrophotometry and SF-26.
The second section considered techniques of measurement, describes the
methodology for measuring the SF-26, an analogue of automated measurements.
The third section describes the stages of development hardware and software
to automate the SF-26. Describes the use of structural elements, stages of develop
of the functional diagram of the module interface, schematic diagram and software
for measurement by computerized SF-26.
The fourth section described modes of operation, testing, hardware and test
accuracy.
The fifth section describes the means of protection and occupational safety
and health.
This master project contains: 54 pictures, 2 tables, 22 references to literary
sources.
7
ЗМІСТ
ПЕРЕЛІК УМОВНИХ СКОРОЧЕНЬ………………………………….……….10
ВСТУП……………………………………………………………………………11
1. ОГЛЯД ЛІТЕРАТУРИ……………………………………………………13
1.1. Оптичні характеристики матеріалів та засоби для їх
дослідження………………………………………………………...13
1.2. Спектрофотометри…………………………………………………14
1.3. Спектрофотометр СФ-26………………………………….……….15
1.4. Об’єкти спектрофотометричних вимірювань…………….……..16
1.5. Огляд аналогів…………………………………………….……….19
2. МЕТОДИКИ ПРОВЕДЕННЯ ВИМІРЮВАНЬ…………………………..…23
2.1. Методика проведення вимірювань СФ-26…………………………23
2.2. Методика проведення автоматизованих вимірювань аналогом…26
3. РОЗРОБКА АПАРАТНОГО І ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ ДЛЯ
АВТОМАТИЗАЦІЇ СФ-26……………………………………………………...28
3.1. Опис використаних у розробці структурних елементів……………
3.1.1. Основні елементи схеми модуля спряження……………..28
3.1.1.1. Цифрово-аналоговий перетворювач AD7822 та
MAX1241……………………………………………..……………28
3.1.1.2. Стабілізатор напруги L78L05…………………….31
3.1.1.3. Мікросхема К155ЛА3.……………………………. 32
3.1.1.4. Мікросхема К155ИЕ7. .…………………………….32
3.1.1.5. Мікросхема К155ИД4………………………………33
3.1.1.6. Транзистор 2SC5060………………………………..34
3.1.2. Порядок обміну по інтерфейсу Centronics………………..35
3.1.3. Крокові двигуни……………………………………………..38
3.2. Розробка функціональної схеми модуля спряження…………..…42
3.3. Розробка принципової схеми модуля спряження………………...44
3.4. Конструкторсько-технологічна розробка модуля спряження…..47
8
3.4.1. Розробка друкованої плати………………………………….47
3.4.2. Розробка збірного креслення……………………………….47
3.5. Розробка алгоритмів роботи програмного забезпечення для
проведення вимірювань комп’ютеризованим СФ-26………………….……49
3.5.1. Обґрунтування вибору програмних засобів………………49
3.5.2. Алгоритми роботи програмного забезпечення…………..50
3.5.2.1. Алгоритм створення калібровочного файлу для
двигуна шкали довжини хвилі……………………………………50
3.5.2.2. Алгоритм створення калібровочного файлу для
двигуна шкали ширини щілини…………………………………..52
3.5.2.3. Алгоритм проведення вимірювань………………..54
3.6. Загальний алгоритм роботи автоматизованого СФ 26…….………55
3.7. Розробка коду програмного забезпечення автоматизованого
СФ-26……………………………………………………………………………57
4. ТЕСТУВАННЯ КОМП’ЮТЕРИЗОВАНОГО СФ-26………………………58
4.1. Тестування апаратної частини………………………………………58
4.2. Тестування режимів роботи програмної частини………………….59
4.3. Проведення тестових вимірювань комп’ютеризованим СФ-26…..62
5. ЗАСОБИ ЗАХИСТУ ТА ОХОРОНА ПРАЦІ………………………………..65
ВИСНОВКИ…………………………………………………………………...…69
СПИСОК ЛІТЕРАТУРИ………………………………………………………...70
ДОДАТКИ………………………………………………………………………..71
Додаток 1.Функціональна схема
Додаток 2. Принципова схема.
Додаток 3. Перелік елементів
Додаток 4. Друкована плата
Додаток 5. Збірне креслення
Додаток 6. 3d зображення
Додаток 7. Загальний алгоритм роботи
9
Додаток 8. Алгоритм створення калібровочного файлу для двигуна шкали
довжини хвилі
Додаток 9. Алгоритм створення калібровочного файлу для двигуна шкали
ширини щілини
Додаток 10. Алгоритм вимірювання
Додаток 11. Код програми
Додаток 12. Інструкція з використання програмного забезпечення
10
ПЕРЕЛІК УМОВНИХ СКОРОЧЕНЬ
АЦП – аналогово-цифровий перетворювач.
ОС – операційна система.
ПЗ – програмне забезпечення.
ПК – персональний комп’ютер.
КД – кроковий двигун
МК – мікроконтролер
ВП – вимірювальний прилад
МС – мікросхема
IC – інтегральна схема
ПС – пристрій спряження
11
ВСТУП
Мета роботи: автоматизація процесу вимірювання спектрофотометром
СФ-26.
Актуальність теми. Автоматизація процесами управління приладів і
цифрова обробка інформації є невід'ємною частиною сучасного фізичного
експерименту. У багатьох випадках оптичні схеми наявних приладів,
призначених для проведення спектроскопічних вимірювань, є цілком
задовільними для здійснення експериментів. Однак проведення ними
вимірювань є досить громіздким, трудомістким і потребує багато часу. Тому
є необхідність в комп’ютерній автоматизації такого типу приладів, адже
сучасний рівень розвитку комп’ютерної техніки і технологій дозволяє
рішення даних задач.
Об’єктом розробки є апаратно-програмне забезпечення для
автоматизації спектрофотометра СФ-26.
Предметом розробки є спеціалізований цифровий модуль спряження
IBM PC з спектрофотометром СФ-26 та його програмне забезпечення для
автоматизації вимірювань спектральних характеристик матеріалів.
Наукова новизна роботи полягає в наступному:
1) Створено
алгоритми
вимірювання
та
функціонування
автоматизованого СФ-26, а також алгоритми калібрування двигунів
шкал довжини хвилі та ширини щілини.
2) Розроблено нові структурну, функціональну і принципову схеми
пристрою спряження СФ-26 з IBM PC.
3) Розроблена конструкторсько-технологічна документація пристрою
спряження (друкована плата, збірне креслення) та зібрано його
діючий макет.
4) Створено програмне забезпечення відповідно до алгоритмів
функціонування.
12
Практичне значення даної роботи визначається потребою науково-
дослідних лабораторій Чернівецького національного університету в зручних
у використанні, сучасних, універсальних, високоефективних вимірювальних
приладах для дослідження напівпровідникових матеріалів, зокрема їх
спектральних характеристик.
13
1. ОГЛЯД ЛІТЕРАТУРИ
1.1. Оптичні характеристики матеріалів та засоби для їх
дослідження
Метою даної роботи було покращити умови вимірювань спектральних
характеристик поглинаючої здатності зразків матеріалів. Для цього необхідно
визначати такі параметри як коефіцієнт оптичного поглинання (D), та
коефіцієнт пропускання (T).
Коефіцієнт оптичного пропускання τ(λ) показує яка частина світлового
потоку, що падає на досліджуваний зразок і проходить через нього не
поглинаючись, іншими словами, він характеризує долю світла J
τ
(λ), яке
пройшло через зразок:
τ(λ) = J
τ
(λ)/ J
0
(λ)
(1.1)
Коефіцієнт оптичного пропускання – безрозмірна величина і, зазвичай,
виражається у відсотках.
У відповідності з законом поглинання світла Бугера – Ламберта,
інтенсивність світлового потоку J
τ
(х) на відстані х від освітленої поверхні
напівбезмежного зразка виражається через коефіцієнт оптичного поглинання
D(х):
J(х) = J
0
(х)(1 – R) • e
-Dx
(1.2)
Розмірність величини D(х) – (см
-1
).
Для дослідження цих та інших оптичних характеристик різного роду
речовин використовуються такі спектральні пристрої, як спектрографи,
спектрометри та спектрофотометри.
Спектрографом називається оптичний пристрій, призначений для
фотографування спектрів.
В спектрометрах реєструються довжина хвилі та інтенсивність
випромінювання спектральної лінії.
Спектрофотометри – пристрої з фотометричною реєстрацією
випромінювання, призначені для вимірювання коефіцієнта пропускання та
14
інших параметрів досліджуваних матеріалів [1].
Оскільки розробка апаратно-програмного забезпечення проводилася
саме для спектрофотометра СФ-26, зупинимось на останніх.
1.2. Спектрофотометри
Сучасні спектрофотометри дозволяють працювати з високомоно-
хроматизованим потоком випромінювання. Вони використовуються для
концентраційного аналізу і при випромінюванні спектрів поглинання
речовин.
Структурну схему спектрофотометра можна представити у вигляді
наступних основних блоків: джерело світла, монохроматор, кюветне
відділення з досліджуваним матеріалом, фотоелемент, реєструючий пристрій
(рис. 1.1).
Рис. 1.1. Структурна схема спектрофотометра
Світловий пучок від джерела світла потрапляє в монохроматор через
вхідну щілину і розкладається дифракційною решіткою або призмою в
спектр. В монохроматичний потік випромінювання, що поступає з вихідної
щілини в кюветне відділення, почергово вводяться контрольний та
досліджуваний зразки. Випромінювання, яке пройшло через кювету,
15
потрапляє на фотоелемент, який перетворює світлову енергію в електричну.
Далі електричний сигнал підсилюється та реєструється [2].
1.3. Спектрофотометр СФ-26
Спектрофотометр СФ-26 (рис. 1.2) призначається для вимірювання
коефіцієнта пропускання рідких і твердих речовин в області спектру від 186
до 1100 нм [2].
Рис. 1.2. Спектрофотометр СФ-26
Технічні дані:
Спектральний діапазон, нм………………………….….... від 186 до 1100
Відносний отвір монохроматора……………………………..….…… 1: 11
Діапазон показань шкали коефіцієнтів пропускання, %........ від 0 до 110
Можлива розтяжка на всю шкалу: 10% від будь-якого цілого числа
десятків відсотків і 1% в області від 0 до 10%.
Діапазон вимірювань коефіцієнта пропускання,% ………….від 3 до 100
Основна похибка вимірювань коефіцієнта пропускання в області
спектра від 190 до1100 нм, %абс., не більше………………………….……….1
Середнє квадратичне відхилення вимірювань коефіцієнта
пропускання,% абс., не більше:
за шкалою стрілочного приладу 0-110%..................................... 0,25
за шкалами-розтяжками на стрілочному приладі………….........0,1
16
за таблом цифрового вольтметра……….……………………..… 0,1
Основна похибка градуювання шкали довжин хвиль, нм, не більш:
в області 186-300……...……………………………………….…..0,1
в області 300-350…………………………………………..…...….0,2
в області 350-400…………………………………..……………....0,3
в області 400-550……………………………………………….….0,5
в області 550-1000…………………………………………………1,0
в області 1000-1100………………………………………………..5,0
Величина розсіяного випромінювання,% абс, не більше:
при довжині хвилі 200 нм…………………………………………...1
у видимій та ближній інфрачервоній областях спектру………...0,2
Джерело живлення - мережа 220 ± 22 B, 50 Гц.
Споживана потужність, B*A…………………………………………………..170
Габаритні розміри спектрофотометра, мм…………………………930x590x280
Маса спектрофотометра, кг………………………………………………..……75
1.4. Об’єкти спектрофотометричних вимірювань
За оптичною густиною об’єкти поділяються на однорідні, в яких
комплексний показник заломлення сталий у всьому об’ємі середовища,
неоднорідні
чи
світлорозсіювальні
об’єкти, де названий показник
несталий, та квазіоднорідні, тобто майже однорідні, які є прозорими, але не є
однорідними (рис. 1.3).
Однорідні об’єкти контролю є досить умовною групою, більше
ідеалізованою і уявною, ніж реально існуючою, тому що будь-який об’єкт
вимірювань може мати оптичні збурення, флуктуації і таке інше. Тому
велике різноманіття речовин і матеріалів, що можуть бути об’єктом
спектрофотометричних вимірювань, можна розділити на три групи:
однорідні середовища; світлорозсіювальні (неоднорідні) і квазіоднорідні.
17
Рис. 1.3. Класифікація об’єктів спектрофотометричних вимірювань
До однорідних відносяться системи атомно-молекулярного рівня
дисперсності, у яких немає поверхні розділу, а саме: розчини солей,
кислот, водно-спиртові розчини тощо. Поширення світла в них описується
класичними відношеннями Релея, Бугера-Ламберта-Бера, Смолуховського
та інших [3].
До квазіоднорідних відносяться частково неоднорідні системи
(деякі молекулярні рідини, прозорі гази та кристали), які за певних
припущень можуть прийматись за однорідні і підлягають вище зазначеним
законам. Як для однорідних, так і для квазіоднорідних поширене
використання методів
без
врахування
розсіювальних ефектів
(рефрактометрії, фотометрії, кулонометрії і т.п.), а це в свою чергу,
18
призводить до методичних похибок при визначенні абсолютних значень
показників.
Тому
такі
вимірювальні
значення не допустимо
використовувати для подальших розрахунків оптичних характеристик і
показників, а лише для якісного, порівняльного аналізу.
Особливим та найпоширенішим в природі класом об’єктів
вимірювань
є
неоднорідні (світлорозсіювальні)
середовища.
Неоднорідними називаються двофазні або n-фазні системи, у яких частинки
однієї фази розподілені всередині об’єму іншої фази і можуть мати
видиму або невидиму межу поділу між ними. До них відносяться всі
дисперсні системи: колоїди, біооб’єкти, шорсткі та дзеркальні поверхні і
т.д. Молекулярні світлорозсіювальні середовища та
колоїди
також
відносяться до дисперсних систем.
Окрім біооб’єктів є ще інший великий клас неоднорідних об’єктів –
це тверді тіла з дзеркальною чи шорсткою поверхнею. До них
відносяться, в основному, речовини неорганічного походження – різні метали
та сплави, напівпровідники, синтетичні матеріали та тонкі плівки,
текстиль і тому подібні. Потрібно зауважити, що розвиток методів та
інформаційно-вимірювальної системи, в основному, проводився по
дослідженню названих об’єктів. Тому вони розвинені досить добре. Але
традиційно оптичні характеристики таких об’єктів розглядались без
врахування їх специфіки як сильно світлорозсіювальних середовищ за
класичним законом Бугера-Ламберта-Бера. Проте такі методичні підходи
є невиправданими в практиці вимірювань, де необхідно враховувати
кооперативні, дифракційні, інтерференційні, поляризаційні та інші ефекти.
Це стосується, в першу чергу, наукових досліджень, медичної діагностики,
екологічного моніторингу тощо.
До об’єктів біологічного походження відносяться, в основному,
органічні речовини тваринного та рослинного походження, які, в свою чергу,
можна теж умовно розділити на три групи:
гуморальні, тобто
життєзабезпечуючі рідини, біотканини та
препарати
рослинного
19
походження. Існуючі методи їх досліджень – спектроскопія видимого та
ближнього ультрафіолетових та інфрачервоних областей спектру, дозволяє
одержувати характеристичні спектри життєво важливих компонентів –
білків, амінокислот, гемоглобіну та інших.
Оскільки ці середовища є дуже неоднорідними, то для них характерні:
мала ймовірність виживання кванту, значний показник питомого
поглинання, нерізко виражені спектральні піки, неоднорідність оптичних
характеристик по об’єму, складність структури та інші [3].
1.5. Огляд аналогів
Найближчим і єдиним аналогом нашої системи автоматизації подібних
пристроїв є “Установка для проведення спектроскопічних досліджень в
діапазоні хвиль 0,2-2 мкм”.
Метою цієї роботи було створення пристрою для автоматизації
процесів реєстрації спектрів поглинання і люмінесценції на базі
монохроматора МДР-23, виробництва АТ "Ленінградський оптико-
механічний завод".
Установка для реєстрації спектрів поглинання і люмінесценції включає
в себе: джерело випромінювання, фокусуючу оптику; досліджуваний зразок,
фотоприймач, силовий блок, блок управління, ПК. Блок-схема цієї установки
показана на рис. 1.4.
Для управління кроковим двигуном монохроматора і перетворення
аналогового сигналу з виходу фотоприймача створено пристрій, що включає
в себе:
- підсилювач сигналу;
- аналого-цифровий перетворювач;
- логіку управління КД монохроматора;
- силовий блок керування КД монохроматора.
Цей пристрій виконано на 8-ми розрядному високопродуктивному
RISC мікроконтролері ATmega8-16PI фірми Atmel і дозволяє встановлювати
20
необхідне значення довжини хвилі, що виділяється монохроматором, а також
проводити АЦП реєстрованого сигналу з подальшою відправкою на IBM PC
сумісний комп'ютер.
Рис. 1.4. Блок-схема установки для реєстрації спектрів поглинання та
люмінесценції:
1 – джерело випромінювання; 2 – досліджуваний зразок; 3 –
фотоприймач; 4 – силовий блок; 5 – блок управління; 6 – ПК.
Пристроєм також передбачена індикація на LCD-дисплеї наступних
параметрів роботи:
- поточного значення довжини хвилі;
- поточного значення виміряного напруги;
- параметри стану пристрою;
- значення швидкості реєстрації спектра.
На рис. 1.5. представлена принципова електрична схема блоку
управління.
21
Рис. 1.5. Принципова електрична схема блоку управління.
Основою схеми є мікроконтролер IC2, до складу якого входить
універсальний асинхронний прийомо-передавач (USART), а також 10-ти
розрядний АЦП. Джерелом опорного напруги для АЦП служить мікросхема
D1, включена за типовою схемою. Для узгодження рівнів сигналів USART і
порту RS-232 застосована мікросхема драйвера порту IC1. Пристрій
підключається до комп'ютера за допомогою роз'єму X1. В якості
відображуючого пристрою обраний рідкокристалічний знакосинтезуючий
індикатор WH1602-D формату 2х16. Резисторами R6, R10 задається
контрастність зображення. Фотоприймач підключається до гнізда X4. Далі
сигнал надходить на підсилювач OP1. Коефіцієнт посилення задається
перемикачем S1. Підсилений сигнал надходить безпосередньо на вхід АЦП.
Принципова електрична схема силового блоку управління КД
монохроматора показана на рис. 1.6.
Силовий блок складається з блоку живлення і підсилювачів комутації
A1-A4. На вхід підсилювачів подаються логічні сигнали мікроконтролера, на
22
виході формуються напруги, необхідні для управління кроковими двигунами
[4].
Рис. 1.6. Принципова електрична схема силового блоку.
При порівнянні аналога з розробленим в магістерській роботі
пристроєм, можна зробити висновок, що вагомою перевагою останнього є
значно простіша схема апаратної частини, більш повніше використання IBM
PC для керування кроковими двигунами, апаратною частиною та процесом
вимірювання в цілому. Відповідно вартість розробленого пристрою буде
набагато дешевшою.
23
2. МЕТОДИКИ ПРОВЕДЕННЯ ВИМІРЮВАНЬ
2.1. Методика проведення вимірювань СФ-26
Спектрофотометр СФ-26 розрахований для вимірювання коефіцієнта
пропускання досліджуваного зразка T, який дорівнює відношенню
інтенсивності потоку випромінювання I, що пройшов через вимірюваний
зразок, до інтенсивності потоку випромінювання I
0
, падаючого на
вимірюваний зразок (або пройденого через контрольний зразок, коефіцієнт
пропускання якого приймається за одиницю), і виражається формулою:
(2.1)
Вимірювання проводиться за методом електричної автокомпенсації.
B монохроматичний потік випромінювання по черзі вводяться
контрольний і вимірюваний зразки. При введенні контрольного зразка,
стрілка вимірювального приладу, регулюванням ширини щілини,
встановлюється на поділку 100%, і величину встановленого при цьому
світлового потоку беруть за 100% пропускання. При введенні в потік
випромінювання вимірюваного зразка, стрілка вимірювального приладу
відхиляється пропорційно зміні потоку, величина коефіцієнта пропускання
відраховується за шкалою, відрегульованої у відсотках пропускання або
одиницях оптичної щільності [2].
Оптична схема монохроматора – автоколімаційна (рис. 2.1).
Випромінювання від джерела 1 або 1' падає на дзеркальний конденсор
2, який направляє його на плоске поворотне дзеркало 3 і дає зображення
джерела випромінювання в площині лінзи 4, розташованої поблизу вхідної
щілини 5. Пройшовши через вхідну щілину випромінювання падає на
дзеркальний об'єктив 6 і, відбившись, паралельним пучком направляється на
призму 7. Пройшовши призму під кутом, близьким до кута найменшого
відхилення, і відбившись від її алюмінієвої грані, диспергований пучок
прямує назад на об'єктив і фокусується ним на вихідній щілині 8, яка
розташована над вхідною щілиною. При обертанні призми монохроматичне
24
випромінювання різних довжин хвиль проходить через вихідну щілину 8,
лінзу 9, контрольний або вимірюваний зразок, лінзу 10 і, за допомогою
поворотного дзеркала 11, збирається на світлочутливому шарі одного з
фотоелементів 12 або 13.
Рис. 2.1. Оптична схема монохроматора.
Об’єктив – сферичне дзеркало з фокусною відстанню 500 мм.
Диспергуюча призма має кут заломлення 30°, основу 30 мм і
ефективний діаметр 44 мм.
Призма, лінзи і захисні пластинки виготовлені з кварцового скла з
високим коефіцієнтом пропускання в ультра-фіолетовій області спектра.
Для забезпечення роботи спектрофотометра в широкому діапазоні
спектра використовуються два фотоелемента і два джерела випромінювання
суцільного спектра. Сурм'яно-цезієвий фотоелемент з вікном із кварцового
скла застосовується для вимірювань в області спектра від 186 до 650 нм,
киснево-цезієвий фотоелемент — для вимірювань в області спектра від 600
до 1100 нм. Довжина хвилі, при якій слід переходити від вимірювань з одним
фотоелементом до вимірювань з іншим фотоелементом, вказується в
паспорті спектрофотометра.
25
Дейтерієва лампа призначається для роботи в області спектра від 186
до 350 нм, лампа розжарювання - для роботи в області спектра від 340 до
1100 нм. Для перевірки градуювання використовується ртутно-гелієва лампа.
Спрощена структурна схема СФ-26 показана на рис. 2.2.
Сигнал з фотоприймача надходить на вхід підсилювача. Навантаженням
фотоприймача є дільник, що складається з резисторів R12...R15, включених в
ланцюг зворотного зв'язку підсилювача. Реєструючим пристроєм є
вимірювальний прилад. Додаткові резистори R16...R18 служать для розтяжки
шкал приладу ВП. Шкали перемикаються за допомогою перемикача В1 і
підібрані так, що при перемиканні з положення «х1» в положення «х0,1»
показання приладу змінюються в 10 разів, при перемиканні з положення
КАЛІБР в положення «х0,01» - в 100 раз.
Рис. 2.2. Спрощена структурна схема
Для підвищення точності відліку при вимірюванні зразків, які мало
відрізняються один від одного за пропускання, в спектрофотометрі
передбачена можливість включення компенсуючої напруги, яка вводиться в
вимірювальну систему за допомогою дільника, що складається з резисторів
R1...R10. Зміна напруги компенсації відбувається дискретно за допомогою
перемикача B2.
B положенні «х1» перемикача B1 компенсується будь-які покази
вимірювального приладу, більше 10 поділок шкали.
26
B положенні КАЛІБР перемикача B1 компенсуються показання
приладу в межах 1-10 поділів шкали [2].
2.2. Методика проведення автоматизованих вимірювань аналогом
Єдиним аналогом розробленого пристрою є “Установка для проведення
спектроскопічних досліджень в діапазоні хвиль 0,2-2 мкм”. Алгоритм його
роботи наступний. При включенні МК зчитує з пам'яті значення довжини
хвилі, збережене після останньої зупинки монохроматора, і передає його на
комп'ютер. Після цього він переходить в режим очікування команди від
керуючої програми. При отриманні відповідної команди може виконуватися
калібрування або процес реєстрації спектра.
В процесі реєстрації спектра в результаті повороту дифракційної
решітки за допомогою КД монохроматора забезпечується розгортка спектру,
потім відбувається оцифровка сигналу, зареєстрованого фотоприймачем,
установленим за вихідний щілиною монохроматора, і здійснюється передача
значень зареєстрованого сигналу і відповідне значення довжини хвилі на
комп'ютер. В процесі реєстрації спектра МК постійно перебуває в очікуванні
команди "Stop", яка перериває цей процес і переводить МК в початковий
стан.
Блок-схема алгоритму роботи пристрою представлена на рис. 2.3.
Рис. 2.3. Блок-схема алгоритму роботи пристрою.
27
Блок управління реалізований в комплекті з програмним
забезпеченням, що дозволяє в середовищі операційної системи Windows
керувати монохроматором [4].
Програмне забезпечення дозволяє:
- проводити калібрування монохроматора по лініях випромінювання
ртутної лампи або за показаннями лічильника;
- виробляти сигнали «перемотування» в ручному режимі із заданою
швидкістю;
- виробляти сигнали «перемотування» на задане значення довжини
хвилі;
- здійснювати реєстрацію спектра в заданому діапазоні довжин хвиль із
заданою швидкістю;
- зберігати отриманий спектр в текстовий файл для подальшої обробки.
28
3. РОЗРОБКА АПАРАТНОГО І ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ
ДЛЯ АВТОМАТИЗАЦІЇ СФ-26
3.1. Опис використаних у розробці структурних елементів
Модуль спряження складається з двох основних частин: цифрової
частини та схеми аналого-цифрового перетворювача. Обмін даними з IBM
PC відбувається через LPT-порт. Керування шкалами ширини щілини та
довжини хвилі відбувається за допомогою крокових двигунів.
3.1.1. Основні елементи схеми модуля спряження
3.1.1.1. Цифрово-аналоговий перетворювач AD7822 та MAX1241
AD7822 є високошвидкісний, 1-, 4- і 8- канальний, мікропроцесорно-
сумісний, 8-бітний аналого-цифровий перетворювач з максимальною
продуктивністю до 2 мільйонів вибірок в секунду. Мікросхема містить
внутрішні джерела опорної напруги 2,5В (2%-точності), підсилювач вибірок
та зберігання, 420 наносекундний 8-бітний АЦП і високошвидкісний
паралельний інтерфейс. Напруга живлення перетворювача – 3В ± 10% і 5В ±
10%. Функціональна схема АЦП 7822 приведена на рис. 3.1.
Рис. 3.1. Функціональна схема АЦП AD7822
29
Перетворювач має функцію запуску перетворення і режиму "Викл" від
одного вивода CONVST. Це забезпечує автоматичний перехід в режим
"Викл" після закінчення циклу перетворення. Логічний рівень на виводі
CONVST змінюється після завершення циклу перетворення, коли сигнал
EOK (кінець перетворення) підтримувався високим, на низький рівень – коли
в даний момент АЦП вимикається. AD7822 крім того має окремі виводи для
його вимикання.
Застосований паралельний інтерфейс забезпечує прості процедури
передачі даних в мікропроцесор або цифровий сигнальний процесор.
Використовуючи тільки логіку декодування адреси, перетворювачі просто
звертаються в адресний простір мікропроцесора. Імпульс EOK дозволяє АЦП
працювати в режимі очікування.
Вигляд та розпіновка АЦП показаний на рис. 3.2. AD7822
виготовляється в 20 вивідних (0.3 ") DIP, SOIC і TSSOP корпусах [7].
Рис. 3.2. Вигляд та розпіновка АЦП AD7822
Дана мікросхема може бути обрана тому, що швидкий час
перетворення 420 ns прискорює процеси в системах реального часу та в ній є
можливість вибору каналу перетворення без звернень до пам'яті мікросхем.
Для розробки була обрана мікросхема MAX1241– економічний, 12-ти
розрядний, аналого-цифровий перетворювач, що випускається в корпусі з 8-
ми виводами (рис.3.3), і має однополярну напругу живлення від +2,7 В до
30
+ 5,25 В. АЦП має швидкодіючу систему вибірки/фіксації (1.5 мкс),
вбудований тактовий генератор, і високошвидкісний, послідовний 3-х
провідний інтерфейс.
Рис. 3.3. Вигляд та розпіновка АЦП МАХ1241
Енергоспоживання ІС становить всього 3.7 мВт (VDD = 3 В) при
максимальній швидкості дискретизації 73 К вибірок / с. Режим відключення
(2 мкА) дозволяє скоротити енергоспоживання при низьких швидкостях
дискретизації. Функціональна схема мікросхеми наведена на рис. 3.4.
Рис. 3.4. Функціональна схема МАХ1241
Відмінні динамічні характеристики і ультра-низьке енергоспоживання,
в поєднанні з простотою застосування і малими габаритами корпусів, роблять
даний перетворювач ідеальним для застосування в додатках дистанційних
датчиків, систем збору даних, а також, в інших додатках, що вимагають
низького енергоспоживання і малих габаритів [8].
31
3.1.1.2. Стабілізатор напруги L78L05
Стабілізатор напруги L78L05 – регулятор, який використовують для
внутрішнього обмеження напруги та теплового захисту від перевантаження.
Таблиця 3.1.
Основні параметри L78L05
V
IN
,В
от 7 до 20
EN
Немає
Вихід: V
OUT
1,В 5
Вихід: I
OUT
1,мА 40
V
drop
,В
1.7
T
A
,°C
от 0 до 125
Якщо забезпечити хороший тепловідвід він може забезпечувати
вихідний струм до 100 мА. L78L05 має широкий спектр застосування.
Рис. 3.5. Блок схема L78L05
Такий стабілізатор напруги дозволяє перетворювати напруги
номіналом до 35 В на вході у напругу в 5 В на виході, тому і був обраний для
схеми модуля спряження. Також перевагою L78L05 є те, що він має досить
просту схему підключення – необхідна тільки наявність двох конденсаторів:
0,33 мкФ на вході стабілізатора і 0,1 мкФ - на виході [12].
32
3.1.1.3. Мікросхема К155ЛА3
Мікросхема К155ЛА3 являє собою чотири логічних елемента 2І-НІ
(рис. 3.7) в пластмасовому корпусі 201.14-1 (рис. 3.6). Зарубіжний аналог
мікросхеми К155ЛА3 - SN7400 [9]. До складу цієї мікросхеми входить 56
інтегральних елементів.
Рис. 3.6. Конструктивні параметри
мікросхеми К155ЛА3
Рис. 3.7. Умовне графічне
позначення мікросхеми
3.1.1.4. Мікросхема К155ИЕ
Мікросхема К155ИЕ7 – реверсивний чотирьохрозрядний двійковий
лічильник з попереднім записом. Містить 276 інтегральних елементів.
Корпус К155ИЕ7 типу 238.16-2 (рис. 3.8). Установка його в 0 відбувається
при високому рівні на вході R. В лічильник можна записати число від 0 до
15, подавши його на виходи D1-D4 [10].
Рис. 3.8. Конструктивні параметри
мікросхеми К155ИЕ7
Рис. 3.9.Умовне графічне
позначення мікросхеми
33
Як видно на умовному графічному зображенні (рис 3.9) К155ИЕ7 має
16 контактних ножок:
1 - вхід інформаційний D2;
2 - вихід другого розряду Q2;
3 - вихід першого розряду Q1;
4 - вхід "зворотний рахунок";
5 - вхід "прямий рахунок";
6 - вихід третього розряду Q3;
7 - вихід четвертого розряду Q4;
8 - загальний;
9 - вхід інформаційний D8;
10 - вхід інформаційний D4;
11 - вхід попереднього запису;
12 - вихід "прямий перенос";
13 - вихід "зворотний перенос";
14 - вхід установки "0" R;
15 - вхід інформаційний D1;
16 - напруга живлення
3.1.1.5. Мікросхема К155ИД4
Мікросхема К155ИД4 представляє собою здвоєний дешифратор-
демультиплексор 2 на 4 з об'єднаними адресними входами (виводи 3 і 13) і
роздільними входами стробування (рис. 3.11).
Стробуванням називається
виділення сигналу в певний момент часу.
В даному випадку – це поява вихідного сигналу в момент, коли на входах
стробування є сигнал дозволу. Якщо на обох входах А1 і А2 будуть низькі
рівні, то
на виході верхнього
за схемою дешифратора, номер якого
відповідає еквіваленту вхідного коду, буде низький рівень. Містить 131
інтегральний елемент [11]. Корпус К155ИД4 типу 238.16-1 (рис. 3.10).
Рис. 3.10. Конструктивні параметри
мікросхеми К155ИД4
Рис. 3.11.Умовне графічне
позначення мікросхеми
34
Як видно на умовному графічному зображенні (рис. 3.11) К155ИЕ7
має 16 контактних ножок:
1 - інформаційний вхід D;
2 - стробуючий вхід S1;
3 - адресний вхід B;
4 - вихід D8;
5 - вихід D4;
6 - вихід D2;
7 - вихід D1;
8 - загальний;
9 - вихід E1;
10 - вихід E2;
11 - вихід Е4;
12 - вихід E8;
13 - адресний вхід;
14 - стробуючий вхід S2;
15 - інформаційний вхід E;
16 - напруга живлення.
3.1.1.6. Транзистор 2SC5060.
Транзистор 2SC5060 – це біполярний транзистор (рис. 3.12).
Головними його особливостями є: вбудований стабілітрон між колектором і
базою, який володіє низькою напругою дисперсії. 2SC5060 має сильний
захист від стрибків напруги, а також має вбудований резистор між базою і
емітером.
Рис. 3.12. Еквівалентна схема транзистора 2SC5060
35
3.1.2. Порядок обміну по інтерфейсу Centronics
Основним призначенням інтерфейсу Centronics є підключення до
комп'ютера принтерів різних типів. Тому розподіл контактів роз'єму,
призначення сигналів, програмні засоби управління інтерфейсом орієнтовані
саме на це використання. У той же час за допомогою даного інтерфейсу
можна підключати до комп'ютера і інші зовнішні пристрої, що мають роз'єм
Centronics, а також спеціально розроблені ПС. Основною перевагою
використання Centronics для підключення ПС в порівнянні з ISA є значно
менший ризик вивести комп'ютер з ладу. Головний недолік цього підходу -
значно менша швидкість обміну. Призначення 36 контактів роз'єму
Centronics наведено в таблиці 3.1. Сигнали Centronics мають наступне
призначення (тип вихідних каскадів для всіх сигналів - ТТЛ):
D0 ... D7 - 8-розрядна шина даних для передачі з комп'ютера в принтер.
Логіка сигналів позитивна.
-STROBE - сигнал стробування даних. Дані дійсні як по передньому,
так і по задньому фронту цього сигналу. Сигнал говорить приймачу
(принтеру), що можна приймати дані.
-АСК - сигнал підтвердження прийняття даних і готовності приймача
(принтера) прийняти наступні дані. Тобто тут реалізується асинхронний
обмін.
BUSY - сигнал зайнятості принтера обробкою отриманих даних і
неготовність прийняти наступні дані. Активний також при переході принтера
в стан off-line або при помилку, а також при відсутності паперу. Комп'ютер
починає новий цикл передачі тільки після зняття-АСК і після зняття BUSY.
-AUTO FD - сигнал автоматичного перекладу рядка. Отримавши його,
принтер переводить каретку на наступний рядок.
Решта сигналів, взагалі кажучи, не є обов'язковими.
РЕ - сигнал кінця паперу. Отримавши його, комп'ютер переходить в
режим очікування. Якщо в принтер вставити лист паперу, то сигнал
знімається.
36
Таблиця 3.1
Призначення 36 контактів роз'єму Centronics
Контакт роз’єму комп’ютера Ланцюг I/O Контакт роз’єму принтера
1
-STROBE О
1
2
D0
О
2
3
D1
О
3
4
D2
О
4
5
D3
О
5
6
D4
О
6
7
D5
О
7
8
D6
О
8
9
D7
О
9
10
-АСК
I
10
11
BUSY
I
11
12
РЕ
I
12
13
SLCT
I
13
14
-AUTO FD О
14
15
-ERROR I
32
16
-INIT
О
31
17
-SLCT IN О
36
18...25
GND
-
16, 17, 19...30, 33
-SLCT - сигнал готовності приймача. З його допомогою принтер
говорить про те, що він обраний і готовий до роботи. У багатьох принтерів
має постійно високий рівень.
-SLCT IN - сигнал принтеру про те, що він вибраний і піде передача
даних.
-ERROR - сигнал помилки принтера. Активний при внутрішній
помилці, переході принтера в стан off-line або за відсутності паперу. Як
37
бачимо, тут багато сигналів дублюють один одного.
-INIT - сигнал ініціалізації (скидання) принтера. Його тривалість не
менше 2,5 мкс. Відбувається очищення буфера друку. Часова діаграма циклу
передачі даних представлена на рисунку 3.13.
Перед початком циклу передачі даних комп'ютер повинен
переконатися, що зняті сигнали BUSY і -АСК. Після цього виставляються
дані, формується строб, знімається строб, і знімаються дані. Принтер
повинен встигнути прийняти дані з обраним темпом. При отриманні строба
принтер формує сигнал BUSY, а після закінчення обробки даних виставляє
сигнал -АСК, знімає BUSY і знімає -АСК. Потім може починатися новий
цикл.
Рис. 3.13. Часова діаграма циклу передачі даних
Всі сигнали інтерфейсу Centronics передаються в рівнях ТТЛ і
розраховані на підключення одного стандартного входу ТТЛ. Максимальна
довжина кабелю по стандарту - 1,8 м.
Як видно з таблиці 3.1, в інтерфейсі Centronics для підключення до
комп'ютера довільних ПС ми можемо використовувати 17 ліній, призначення
яких можна вибирати на свій розсуд.
Формування і прийом сигналів інтерфейсу Centronics проводиться
шляхом запису і читання виділених для нього портів введення/виводу. У
комп'ютері може використовуватися три порти Centronics, що позначаються
LPT1 (базова адреса 378h), LPT2 (базовий адресу 278h) і LPT3 (базова адреса
38
3BCh). При цьому LPT3 використовується в тому випадку, коли контролер
принтера знаходиться на платі графічного адаптера Hercules або EGA.
Переривання портів принтерів (IRQ5 для LPT2 і IRQ7 для LPT1)
використовуються дуже рідко.
Базова адреса порту використовується для передачі принтерові байта
даних. Встановлені на лініях дані можна зчитати з цього ж порту.
Наступна адреса (базова + 1) служить для читання бітів стану принтера
(біт 3 відповідає сигналу-ERROR, біт 4 - сигналу SLCT, біт 5 - сигналу РЕ,
біт 6 - сигналу-АСК, біт 7 - сигналу BUSY). Остання використовувана адреса
(базова + 2) призначається для запису бітів управління принтером (біт 0
відповідає сигналу-STROBE, біт 1 - сигналу-AUTO FD, біт 2 - сигналу-INIT,
біт 3 - сигналу-SLCT IN і, нарешті, біт 4, рівний одиниці, дозволяє
переривання від принтера) [14].
3.1.3. Крокові двигуни
Крокові двигуни вже давно й успішно застосовуються в
найрізноманітніших пристроях. Їх можна зустріти в дисководах, принтерах,
плоттерах, сканерах, факсах, а також у різноманітному промисловому і
спеціальному обладнанні. В даний час випускається безліч різних типів
крокових двигунів на всі випадки життя. Однак, крім правильного вибору
типу двигуна, не менш важливо правильно вибрати схему драйвера і
алгоритм його роботи, який найчастіше визначається програмою
мікроконтролера [15].
Кроковий двигун - це електромеханічний пристрій, який перетворює
електричні імпульси в дискретні механічні переміщення. Зовні кроковий
двигун практично нічим не відрізняється від двигунів інших типів (рис. 3.14).
Однак крокові двигуни мають деякі унікальні властивості, що робить
часом їх виключно зручними для застосування або навіть незамінними. Кут
повороту ротора визначається числом імпульсів, які подані на двигун.
Двигун забезпечує повний момент обертання до режиму зупинки (якщо на
39
Рис. 3.14. Зовнішній вигляд двигунів ДШИ-200
обмотки подається живлення)
прецизійне
позиціонування
і
повторюваність. Сучасні крокові двигуни мають точність 3-5% від величини
кроку, і ця помилка не накопичується від кроку до кроку. Можливість
швидкого старту/зупинки/реверсування, висока надійність, пов'язана з
відсутністю щіток — це також плюси крокових двигунів. Термін служби
крокового двигуна фактично визначається строком служби підшипників.
Однозначна залежність стану від вхідних імпульсів забезпечує позиціювання
без зворотного зв'язку. Також є можливість отримання дуже низьких
швидкостей обертання для навантаження, приєднаного безпосередньо до
валу двигуна. Без проміжного редуктора може бути перекритий досить
великий діапазон швидкостей, величина яких пропорційна частоті вхідних
імпульсів. Але є і недоліки крокових двигунів:
-кроковим двигуном притаманне явище резонансу;
-можлива втрата контролю положення;
-споживання енергії не зменшується навіть без навантаження;
-утруднена робота на високих швидкостях;
-невисока питома потужність;
-дещо складна схема управління.
Існують три основні типи крокових двигунів: двигуни з змінним
магнітним опором, двигуни з постійними магнітами, гібридні двигуни.
40
Визначити тип двигуна можна навіть на дотик: при обертанні вала
знеструмленого двигуна з постійними магнітами (або гібридного)
відчувається змінний опір обертанню, двигун обертається як би клацаннями.
У той же час вал знеструмленого двигуна зі змінним магнітним опором
обертається вільно. Гібридні двигуни є подальшим удосконаленням двигунів
з постійними магнітами і за способом управління нічим від них не
відрізняються. Визначити тип двигуна можна також по конфігурації обмоток.
Двигуни з перемінним магнітним опором зазвичай мають три (рідше чотири)
обмотки з одним загальним виводом. Двигуни з постійними магнітами
найчастіше мають дві незалежні обмотки. Ці обмотки можуть мати відводи
від середини. Іноді двигуни з постійними магнітами мають 4 роздільних
обмотки [15].
В кроковому двигуні обертаючий момент створюється магнітними
потоками статора і ротора, які відповідним чином орієнтовані один щодо
одного. Статор виготовлений з матеріалу з високою магнітною проникністю і
має декілька полюсів. Полюс можна визначити як деяку область
намагніченого тіла, де магнітне поле сконцентровано. Полюси мають як
статор, так і ротор. Для зменшення втрат на вихрові струми магнітопроводи
зібрані з окремих пластин, подібно сердечникові трансформатора.
Обертаючий момент пропорційний величині магнітного поля, яка
пропорційна струму в обмотці і кількості витків. Таким чином, момент
залежить від параметрів обмоток. Якщо хоча б на одну обмотку крокового
двигуна подається живлення, ротор приймає певне положення. Він буде
знаходиться в цьому положенні до тих пір, поки зовнішній прикладений
момент не перевищить деякого значення, званого моментом утримання.
Після цього ротор повернеться і буде намагатися прийняти одне з таких
положень рівноваги.
На рис. 3.15. зображена досить проста схема контролера крокового
двигуна, яка дозволяє точно керувати однополярним кроковим двигуном
через паралельний порт комп'ютера. Кроковий двигун можна застосувати в
41
конструюванні роботів, у виготовленні друкованих плат, використовувати як
мікродрелі, автоматичної годівниці для акваріумних рибок і т.д.
Щоб управляти кроковим двигуном необхідний контролер — схема,
яка подає напругу до будь-якої з чотирьох котушок статора. Пристрій може
бути побудоване з використанням інтегральної мікросхеми типу ULN2003
(вітчизняний аналог К1109КТ22), яка складається з набору потужних
складових ключів із захисними діодами на виході. Наявність захисних діодів
дозволяє підключати індуктивні навантаження без додаткового захисту від
викидів зворотної напруги.
Рис. 3.15. Контролер крокового двигуна.
Однополярний двигун повинен мати п'ять або шість контактів в
залежності від моделі. Якщо двигун має шість контактів то необхідно
з'єднати виводи 1 і 2 (червоний) разом і підключити їх до плюса 12-24 В
напруги живлення. Решта виводи a1 (жовтий), b1 (чорний), a2
(помаранчевий), b2 (коричневий) підключити до контролера відповідно до
схеми (рис. 3.16).
42
Рис. 3.16. Підключення крокового двигуна
Для управління роботою крокового двигуна використовується
комп'ютер і програмне забезпечення. При використанні комп'ютера можна
значно розширити можливості крокового двигуна і, найбільш важливо, —
візуалізувати, як струм тече через котушки.
3.2. Розробка функціональної схеми модуля спряження
Комп’ютеризований СФ-26 складається з наступних функціональних
блоків:
- IBM PC;
- модуль спряження;
- спектрофотометр СФ-26.
Структурна схема містить в собі всі основні функціональні блоки
системи, а також зв`язки між ними. Як видно із приведеної структурної
схеми (рис.3.17), керує роботою апаратної частини розроблена прикладна
програма, за допомогою якої здійснюється введення та виведення даних
через LPT-порт. СФ-26 підключається до модуля спряження. Модуль
спряження містить цифрову частину, призначену для керування роботою
крокових двигунів, а також схему аналого-цифрового перетворювача,
призначеного для перетворення виміряного аналогового сигналу в значення,
що відповідає коефіцієнту пропускання [13].
43
Рис. 3.17. Схема електрична структурна пристрою
Відповідно до розробленого алгоритму роботи та структурної схеми
комплексу була розроблена функціональна схема модуля спряження
(рис.3.18).
Кроковий
двигун
шкали
довжини
хвилі
АЦП
L
P
T
-
п
о
р
т
I
B
M
P
C
Ш
и
н
а
с
т
а
н
і
в
Ш
и
н
а
д
а
н
и
х
4
8
Кроковий
двигун
шкали
ширини
щілини
Схема
керування
кроковими
двигунами
4
8
6
2
4
З входу
реєструючого
пристрою СФ-26
Рис. 3.18. Схема функціональна пристрою
На даній схемі приведено основні функціональні блоки, з яких
складається комп`ютеризована система вимірювання спектральних
характеристик матеріалів.
EOM
Приклад-на
програма
IBM PC
LPT
порт
Цифрова
частина
СФ-26
(крокові
двигуни)
АЦП
44
3.3. Розробка принципової схеми модуля спряження
Розроблена принципова схема автоматизованого СФ-26 для
вимірювання спектральних характеристик матеріалів, яка складається з
компонентів наведених на рисунках 3.19-3.25 зображена на рис. 3.26.
1
2
&
&
&
&
4
5
9
10
12
13
3
6
8
11
14
7
DD1
+5В
Рис. 3.19. DD1 -
логічний елемент 2І-
НІ
DD2
CT2 Q0
Q1
Q2
Q3
≥15
≤0
+1
-1
E
D1
D0
R
10
7
5
1
6
2
8
3
12
4
13
16
9
11
14
15
D2
D3
+5В
Рис. 3.20. DD2 -
реверсивний
чотирирозрядний
двійковий лічильник
DD3
DC Q0
Q1
Q2
Q3
Q0
Q1
Q2
Q3
A0
A1
S2
B
S1
E
1
4
3
2
5
6
10
9
8
7
11
15
12
16
13
14
+5В
Рис. 3.21. DD3 -
дешифратор-
демультиплексор
ШС
ШД
LPT-порт
IBM PC
2
3
4
D1
D0
D2
D3
D4
D5
D6
D7
D7
5
6
7
8
9
11
23
DD6
Λ/#
REF+
IN
CS
CLK
2
4
1
3
8
6
5
7
DATA
REF-
VCC
Рис. 3.23. DD6 -
аналого-цифровий
петеворювач
1
3
DD7
V
IN
2
V
OUT
GND
Рис. 3.24. DD7 -
стабілізатор напруги
R1
VT1
Рис. 3.25 VT1 -
біполярний
транзистор
Рис 3.22. Розпіновка
роз’єму LPT - порт
45
Принципова схема автоматизованих вимірювань СФ-26 складається з
двох частин: цифрової частини (мікросхеми DD1-DD5), призначена для
керування роботою двигунів шкали довжини хвилі та шкали ширини щілини,
а також схеми аналого-цифрового перетворювача (DD6), призначеного для
перетворення аналогового сигналу вихідної напруги підсилювача
фотоприймача СФ-26 у послідовний код, котрий відповідає коефіцієнтові
пропускання.
Обмін даними модуля спряження з IBM PC здійснюється через LPT-
порт. Шина даних, оскільки вона є працює на вихід, використовується для
передачі коду керування до схеми управління роботою двигунів, а також для
передачі сигналів ініціалізації та тактування АЦП.
Послідовний цифровий код, що відповідає коефіцієнту пропускання
зчитується з виходу АЦП через шину станів, оскільки вона працює на
зчитування (11-й пін LPT порта).
Схема керування двигунами включає в себе:
- мікросхему DD1 – К155ЛА3 (рис. 3.19), призначену для вибору
двигуна, задання режиму роботи і напрямку обертання;
- лічильник DD2 – К155ИЕ7 (рис. 3.20), який виконує роль генератора
запускаючих імпульсів двигунів;
- дешифратора DD3 – К155ИД4 (рис. 3.21), призначеного для передачі
запускаючи імпульсів на вибраний двигун та організації режиму
роботи;
- мікросхеми DD4-DD5 (К155ЛА3), які модифікують унітарний код
дешифратора в код, що відповідає напівкроковому режиму роботи
двигунів;
- транзистори VT1-VT8 (рис. 3.25) – транзисторні ключі призначені
для підняття рівня логічної одиниці до необхідного рівня напруги
запуску крокового двигуна.
Схема аналого-цифрового перетворення зібрана на мікросхемі DD6 –
MAX1241 (рис. 3.23) – 12-розрядному АЦП, і працює наступним чином.
46
Після досягнення шкалою довжини хвилі чергового значення, програмне
забезпечення ініціалізує (піни 6, 7) та запускає DD6. За 12 тактів відбувається
зчитування перетвореного значення рівня напруги, що відповідає коефіцієнту
пропускання, у 12-розрядний послідовний код, який IBM PC зчитує з 11-го
піна і, після математичної обробки (перетворення значення напруги у
коефіцієнт пропускання), записується у файл даних та виводиться на екран
графічного інтерфейсу програмного забезпечення.
1
2
&
&
&
&
4
5
9
10
12
13
3
6
8
11
14
7
DD5
+5В
1
2
&
&
&
&
4
5
9
10
12
13
3
6
8
11
14
7
DD1
+5В
DD3
DC Q0
Q1
Q2
Q3
Q0
Q1
Q2
Q3
A0
A1
S2
B
S1
E
1
4
3
2
5
6
10
9
8
7
11
15
12
16
13
14
+5В
Імпульси: 010101
Вперед: „1”
Назад: „0”
Вибір двигуна:
ДХ „1”, ШЩ „0”
Стоп: „0”
CLOCK
АЦП(7)
CS
АЦП(5)
DATA
АЦП(6)
DD2
CT2 Q0
Q1
Q2
Q3
≥15
≤0
+1
-1
E
D1
D0
R
10
7
5
1
6
2
8
3
12
4
13
16
9
11
14
15
D2
D3
+5В
B
A
D
C
Кроковий двигун
шкали ширини
щілини
+12В
VD1
VD2
R11
15к
Вхід
вимірюваної
напруги Ux
0 ÷ 5В
С1
100µF
16 В
С2
0,1µF
С3
10µF
С4
0,1µF
+
+
DD6
Λ/#
REF+
IN
CS
CLK
2
4
1
3
8
6
5
7
DATA
REF-
VCC
R5
VT5
R7
VT7
R6
VT6
R8
VT8
+9В
B
A
D
C
Кроковий двигун
шкали довжини
хвилі
R1
VT1
R3
VT3
R2
VT2
R4
VT4
+9В
1
2
&
&
&
&
4
5
9
10
12
13
3
6
8
11
14
7
DD4
+5В
1
3
DD7
V
IN
2
V
OUT
GND
ШС
ШД
LPT-порт
IBM PC
2
3
4
D1
D0
D2
D3
D4
D5
D6
D7
D7
5
6
7
8
9
11
23
VD3
VD4
R12
100к,1%
R13
100к
1%
С5
6nF
R9
8,2к
R10
8,2к
Рис.3.26. Принципова схема пристрою спряження
Живлення АЦП та всієї системи здійснюється стандартними рівнями
напруг блока живлення IBM PC - +12В та +5В. Для стабільної роботи схеми
АЦП використовується стабілізатор напруги DD7 – L78L05 (рис. 3.22). Роль
джерела опорної напруги відіграє стабілітрон REF25Z.
47
3.4. Конструкторсько-технологічна розробка модуля спряження
3.4.1. Розробка друкованої плати
Система Proteus 7.5 має потужний сервісний інструментарій ARES,
який полегшує передачу даних з етапу проектування принципової
електричної схеми в редактор друкованих плат. На рисунках 3.27 та 3.28
зображено верх і низ двохсторонньої друкованої плати модуля спряження
автоматизованого СФ-26.
Рис. 3.27. Друкована плата модуля
Рис. 3.28. Друкована плата модуля
спряження ( низ)
спряження (верх)
Синхронізатор автоматично отримує інформацію про компонент і
параметри звязків з принципової схеми, знаходить відповідному компоненту
топологічні посадочні місця в бібліотеці елементів друкованих плат і
розміщує їх на кресленні друкованої плати, а потім додає лінії зв’язків між
з’єднаними виводами компонентів.
3.4.2. Розробка збірного креслення
Компоновка пристрою - одна із найбільш складних задач
конструювання. Ручний процес компоновки радіодеталей та допоміжних
перемикачів, гнізд займає багато часу, оскільки приходиться розглядати
декілька можливих варіантів і вибрати оптимальний для заданих умов
48
застосування приладу і процесу його виробництва. Під час компоновки
приладу потрібно враховувати склад елементної бази, зручність у
користуванні, забезпечення високої ремонтопридатності і безпеки від
зовнішніх впливів і внутрішніх дестабілізуючих факторів.
Компоновка дозволяє провести оцінку електромагнітних і теплових
звязків, розрахувати кінематичні звязки, оцінити основні конструкторсько-
технологічні рішення і розрахувати основні показники якості конструкції. За
результатами компоновки являється компоновочна схема - збірне креслення.
Збірне креслення (рис. 3.29) вимірювального блоку розроблене в
середовищі Proteus 7.5.
Рис. 3.29. Збірне креслення модуля спряження автоматизованого СФ-26
49
3.5. Розробка алгоритмів роботи програмного забезпечення для
проведення вимірювань комп’ютеризованим СФ-26
3.5.1. Обгрунтування вибору програмних засобів
В якості операційної системи вибрана система Windows XP. Це
аргументовано
тим,
що
Windows
найбільш
поширена
і доступна, а також досить легка у користуванні.
В якості середовища програмування використано Delphі. Середовище
Delphі включає в себе повний набір візуальних інструментів для швидкої
розробки додатків, що дозволяє виконати розробку інтерфейсу користувача,
який задовольняє всім вимогам замовника. VCL – бібліотека візуальних
компонентів, включає в себе стандартні об’єкти побудови інтерфейсу
користувача, об’єкти керування даними, графічні об’єкти, об’єкти
мультимедіа, діалоги і об’єкти керування файлами, керування DDE і OLE.
Інтегроване середовище програмування Delphі володіє всіма
необхідними параметрами, які притаманні іншим системам даного класу:
- візуальна побудова інтерфейсів (Vіsual User-іnterface buіlder) дає
можливість швидко створювати додатки візуально, просто обираючи
компоненти з відповідної палітри;
- Delphі повністю підтримує такі програмні концепції як інкапсуляція,
наслідування, поліморфізм та керування подіями.
Перевагами середовища Delphі в порівнянні з іншими аналогічними
засобами розробки програм є значно простіше його використання, що
дозволяє виконувати подальшу
модернізацію
програми
іншими
програмістами з мінімальними витратами часу на дослідження синтаксичних
та логічних особливостей даної програми. Окрім цього, Delphі володіє досить
великим об’ємом документації, як створеної розробниками Delphі, так і
сторонніми виробниками, що значно полегшує розробку програм. Отже, за
співвідношенням можливості-простота-ціна та враховуючи побажання
замовників до мови програмування, інтегроване середовище програмування
Delphі є оптимальним вибором для вирішення поставленої задачі [17].
50
3.5.2. Алгоритми роботи програмного забезпечення.
Відповідно до розробленої функціональної та принципової схем були
розроблені алгоритми створення калібровочних файлів для двигунів шкал
довжини хвилі та ширини щілини, а також алгоритм проведення вимірювань
автоматизованим СФ-26.
3.5.2.1. Алгоритм створення калібровочного файлу для двигуна
шкали довжини хвилі.
Для забезпечення точності вимірювань необхідно відкалібрувати
шкали довжини хвилі та ширини щілини, перед початком роботи
комп’ютеризованого СФ-26. Для цього необхідно створити калібровочні
файли для двигуна шкали довжини хвилі та шкали ширини щілини.
Алгоритм створення калібровочного файлу для двигуна шкали довжини
хвилі зображений на рис. 3.30.
Перед початком роботи необхідно вибрати режим роботи: тестування
двигунів або калібрування двигунів.
При необхідності тестування двигунів потрібно ввести параметри
вибору двигуна, такі як довжина хвилі і ширина щілини, задати напрямок та
швидкість обертання двигуна, а також кількість кроків двигуна (рис. 3.31).
Після натиснення кнопки «Пуск» відбувається передача даних до двигуна.
Якщо була задана кількість кроків, то двигун прокрутиться до максимального
значення, зупиниться і перейде в режим очікування наступної команди. Якщо
кількість кроків не була задана, то він буде крутитись, поки не буде
натиснута кнопка «Стоп».
При калібрування двигунів вибирається напрямок проходження
(вперед чи назад) та швидкість обертання. Після цього відбувається запуск
двигуна в заданому напрямку, передаються дані на двигун, а також
підраховується кількість кроків двигуна до моменту, поки не буде натиснута
кнопка «Стоп». Після завершення калібрування оцінюється точність
вимірювання і, при необхідності, уточнюються отримані дані. В інтерфейсі
51
Початок
Введення параметру
режиму роботи
Вибір режима
роботи
Введення параметра
вибору двигуна
(довжина хвилі, ширина
щілини), напрямок та
швидкість обертання,
к-сть кроків двигуна
Пуск
Передача даних до
двигуна
К-сть кроків
двигуна
Натиснутий Стоп
Натиснутий Стоп
Досягнена макс.
значення к-сть
кроків двигунів
Тестування двигунів
Так
Ні
Задана
Ні
Так
Вихід
Кінець
Так
Ні
Калібрування двигунів
Вибір напрямку
проходження
(Вперед/Назад),
шв. обертання
Запуск двигуна
Вперед/Назад
Передача даних на
двигун
Підрахунок к-сті кроків
двигуна
Натиснутий Стоп
Перевірка точності
вимірювань
Введення
довжини хвилі
Запис к-сті кроків двигуна
та довжини хвилі у файл
Wavef/WaveB
Кінець шкали
довжини хвилі
Провести точне
вимірювання
Так
Ні
Ні
Так
Так
Ні
Рис. 3.30. Алгоритм створення калібровочного файлу для двигуна шкали
довжини хвилі
програми вводиться довжина хвилі, що відповідає отриманій кількості кроків
двигуна. Після завершення калібрування отримані значення довжини хвилі та
52
кількості кроків двигуна до її досягнення записуються у відповідний файл –
wavef.txt, якщо калібрування проводилось в напрямку «Вперед» і waveb.txt –
«Назад».
Рис. 3.31. Екранна форма калібрування шкали довжини хвилі.
3.5.2.2. Алгоритм створення калібровочного файлу для двигуна
шкали ширини щілини.
Алгоритм створення калібровочного файлу для двигуна шкали ширини
щілини зображений на рис. 3.32.
Для калібрування двигуна шкали ширини щілини потрібно попередньо
роздрукувати таблицю калібрування двигуна шкали довжини хвилі (файл
"Wave.txt"). На шкалах довжини хвилі та ширини щілини приладу СФ-26
виставити мітки на їх початкові значення. Потім записати у поле "Швидкість
обертання двигуна" число в межах 1..2000000000, котре задає тривалість.
Кнопкою "Вперед", відповідно до роздрукованої таблиці, прокрутити двигун
шкали довжини хвилі на перше значення, записане в таблиці. Потім
активувати поле "Ширина щілини". Запустити двигун шкали ширини щілини
і відрегулювати потрібну ширину щілини приладу СФ-26 (кнопки
"Назад","Вперед"). При регулюванні ширини щілини кн."Назад" на N кроків,
53
а потім кн."Вперед" на М кроків, недопустимо щоб M>N. І навпаки: при
регулюванні ширини щілини кнопкою "Вперед" на М кроків, а потім
кнопкою "Назад" на N кроків, не можна, щоб N>M. Тобто, для першого
випадку: різниця N-M, а для другого М-N мають бути >0 (додатними).
Недотримання даних вимог приведе до неправильно створеного файлу даних
Slit.txt, що, в свою чергу, суттєво
вплине на точність проведення
вимірювань.
Початок
Виставлення поч.
значення на шкалах
Задання шв. обертання
Активація поля «Шкала
довжини хвилі»
Прокрутка двигуна до
чергового значення
хвилі
Активація поля
«Ширина щілини»
Запуск двигуна і калібровка
ширини щілини
Запис даних у файл
Кінець шкали довжини
хвилі
Кінець
Так
Ні
Рис. 3.32. Алгоритм створення калібровочного файлу для двигуна шкали
ширини щілини зображений
54
Після завершення калібрування потрібно активувати поле "Запис даних
у файл". Кнопкою "Запис" записати у файл даних ("Slit.txt") кількість кроків
електродвигуна шкали ширини щілини між попереднім і поточним
значенням ширини щілини.
3.5.2.3. Алгоритм проведення вимірювань.
Алгоритм проведення вимірювань зображений на рис. 3.33.
На шкалах довжини хвилі та ширини щілини приладу СФ-26 потрібно
виставити мітки на їх початкові значення. Потім записати у поле "Швидкість
вимірювання" число в межах 1..2000000000. Після цього можна запустити
процес вимірювання (кнопка "Пуск"). Про завершення вимірювання
програма видасть повідомлення. Але зупинити вимірювання можна і в будь-
який момент часу кнопкою "Стоп". Результати вимірювань, відображених у
вікні програми можна записати у файл даних з допомогою меню
Файл/Зберегти. Також є можливість переглянути файли даних, виміряних
раніше - з допомогою меню Файл/Відкрити.
Початок
Виставлення
початкових значень на
шкалах довжини хвилі
та ширини щілини
Задання швидкості
вимірювання
Запуск процесу
вимірювання
Натиснута кнопка
«Стоп»
Запис у файл
Передача даних на двигун
Кінець
Рис. 3.33. Алгоритм проведення вимірювань
55
3.6. Загальний алгоритм роботи автоматизованого СФ-26.
Алгоритм роботи автоматизованого СФ-26 зображений на рис. 3.34.
Перед початком вимірювання необхідно ввести початкові дані, такі як
швидкість і точність вимірювання, опорну напругу АЦП, а також діапазон
довжин хвиль, в якому будуть проводитись виміри. Після введення даних
починається цикл вимірювання. IBM PC зчитує з файлу даних wave.txt
чергову довжину хвилі і кількість кроків двигуна для її досягнення. Після
цього запускається двигун шкали довжини хвилі. Робота двигуна буде
зупинена тільки після досягнення чергової довжини хвилі. Далі
персональний комп’ютер зчитує з файлу даних slit.txt чергову кількість
кроків двигуна. Після цього відбувається запуск двигуна ширини щілини (до
досягнення чергової ширини щілини). Також треба задати режим роботи
АЦП, після чого можна зчитати перетворене значення напруги з АЦП, яка
відповідає коефіцієнту пропускання. За даними, знятими з аналого-
цифрового перетворювача проводяться розрахунки коефіцієнта пропускання
і виводиться точка спектрограми у вікно головної форми програми та запис
даних у файл даних TempDat.dat. На цьому завершується цикл вимірювання
спектральних характеристик матеріалів автоматизованим СФ-26. Після чого
у користувача є можливість виміряні значення спектрограм записати у файл
даних, ім’я та коментарі до якого, можна ввести вручну у формі програмного
забезпечення.
56
Початок
Введення початкових даних:
швидкості і точності
вимірювань, опорної напруги
АЦП, діапазону довжин хвиль
Зчитування ПК з файла даних wave.txt
чергової довжини хвилі і кількості
кроків двигуна для її досягнення.
Запуск двигуна шкали довжини хвилі
Початок циклу вимірювань
Кінець
Зчитування ПК з файла даних slit.txt
кількості кроків двигуна для її
досягнення. Запуск двигуна ширини
щілини.
Задання ПК режиму роботи АЦП і
зчитування перетвореного значення
напруги з АЦП, яка відповідає
коефіцієнту пропускання
За даними, знятими з АЦП,
відбувається проведення розрахунку
коефіцієнту пропускання, виведення
точки спектрограми у вікно головної
форми програми та запис даних у
файл даних TempDat.dat
Кінець циклу вимірювань при умові
досягнення верхньої межі введеного
діапазону довжин хвиль
Отримані значення спектрограми
записуються у файл даних, ім’Я та
коментарі до якого можна ввести
вручну у формі програмного
забезпечення
Рис. 3.34. Алгоритм роботи автоматизованого СФ-26
57
3.7. Розробка коду програмного забезпечення автоматизованого
спектрофотометра СФ-26.
Загальний вигляд головної форми програми представлено на рис. 3.35.
Рис. 3.35. Екранна форма головного вікна програми
Після запуску програми на екрані ПК з’явиться вікно,вигляд якого
зображений на рис. 3.35.
Перед тим, як запустити програму на виконання користувачу неохідно
зробити певні налаштування, а саме:
- перевірити наявність підключення до пристрою;
- задати початкові дані;
- натиснути на кнопку Вперед або Назад та розпочати процес
вимірювання коефіцієнта пропускання.
У даній програмі передбачено кнопка Стоп для зупинки процесу
вимірювання.
Повний текст коду розробленого ПЗ для автоматизації СФ-26 наведено
в додатку 10.
58
4. ТЕСТУВАННЯ КОМП’ЮТЕРИЗОВАНОГО СФ-26
4.1. Тестування апаратної частини
Тестування застосовується для пошуку несправностей в апаратній або
програмній частині комп’ютера. Для тестування апаратної частини була
змодульована схема керування двигунами. Система Proteus 7.5 має потужний
сервісний інструментарій ISIS, який дозволяє спроектувати принципову
електричну схему, а також провести тестування на предмет помилок у
функціонуванні та діагностику працездатності. Таким чином була
спроектована частина принципової схеми модулю спряження, що відповідає
за роботу двигунів. Замість двигунів були підключені осцилографи, за
осцилограмами яких, можна перевірити правильність роботи схеми.
На рис. 4.1. результати моделювання, котрі засвідчують, що схема
зібрана вірно і працює правильно.
Рис. 4.1. Тестування апаратної частини
Таке тестування дозволяє оптимізувати роботу принципової схеми і
перейти до заключного етапу розробки модулю спряження СФ-26 з IBM PC,
59
тестування програмного забезпечення системи, а також проведення пробних
вимірювань в реальному часі.
4.2. Тестування режимів роботи програмної частини
В програмному забезпеченні автоматизованого СФ-26 доступні три
основних режима роботи: тестування, калібрування та вимірювання.
Перед початком роботи можна протестувати роботу двигунів. Для
цього в головному вікні ПЗ необхідно вибрати режим тестування двигунів,
для задання окремих параметрів тестування необхідно зайти в меню
«Калібрування шкали довжини хвилі» (рис 4.2).
Рис. 4.2. Меню «Калібрування шкали довжини хвилі»
Відкриється меню вибору параметрів для тестування та калібрування
двигунів шкали довжини хвилі та ширини щілини (рис 4.3).
В нижній частині форми можна вибрати режим калібрування або
тестування. Якщо обрано режим тестування, то частина форми з
параметрами калібрування буде не доступною, і навпаки.
60
Рис. 4.3. Меню вибору параметрів для тестування та калібрування
двигунів шкали довжини хвилі та ширини щілини
Після обрання режиму тестування (рис. 4.4) необхідно зробити вибір
двигуна, який буде проходити тестування (двигун шкали довжини хвилі або
двигун шкали ширини щілини), а також задати швидкість та напрямок
обертання (вперед/назад). Ще є можливість задати кількість кроків двигуна,
тобто після запуску тестування двигун прокрутиться задану кількість кроків і
зупиниться. Якщо кількість кроків не задана, то обраний двигун буде
працювати доки не буде натиснута кнопка «Стоп».
Рис. 4.4. Вибір режиму тестування двигунів
61
Якщо обрано режим калібрування шкали довжини хвилі (рис. 4.5)
необхідно визначитись зі швидкістю обертання двигуна і запустити двигун
шкали довжини хвилі вперед або назад. При співпаданні потрібної довжини
хвилі з міткою необхідно відпустити кнопку "Вперед" або «Назад» і
зупинити електродвигун.
Також в програмі доступний режим точного налаштування, який
прокручує двигун на 1 крок, при короткочасному натисканні на кнопки
«Вперед» та «Назад».
Кнопкою «Запис» можна записати у файл даних Wave.txt кількість
кроків двигуна між попередньою і поточною довжинами хвилі шкали.
Рис 4.5. Режим калібрування шкали довжини хвилі
Ще одним режимом роботи є режим вимірювання коефіцієнту
пропускання. Активувати цей режим можна натиснувши відповідний напис в
головному вікні програми. Попередньо можна вибрати такі параметри як
швидкість та точність вимірювання (рис. 4.6). Далі необхідно задати діапазон
довжин хвиль, в якому будуть проводитись вимірювання, та опорну напругу
62
АЦП. Режим вимірювання активується кнопками «Вперед» та «Назад».
Зупинити режим вимірювання можна в будь-який момент, натиснувши
кнопку «Стоп».
Рис. 4.6. Режим вимірювання коефіцієнту пропускання.
4.3. Проведення тестових вимірювань комп’ютеризованим СФ-26
Точність вимірювань — параметр, що відображає близькість
результатів вимірювання до істинного значення величини, що вимірюється.
За істинне значення беремо результати вимірювання спектральних
характеристик світлофільтрів, які ми отримали вручну.
Вимірювання коефіцієнту пропускання проводиться з щільно закритою
кришкою кюветного відділення. Перед початком вимірювання необхідно
встановити важіль «Компенсація» в положення 0, встановити необхідну
довжину хвилі, потім, повертаючи відповідний важіль, встановити
«Чутливість» в положення 1. Після закріплення світлофільтрів у кюветному
відділенні потрібно відкрити фотоелемент, встановивши важіль шторки в
положення «Відкр» і далі встановити стрілку вимірюючого приладу в
положення «100», шляхом обертання ручки механізму зміни ширини щілини.
Після цього можна встановлювати в робоче положення вимірюваний зразок і
зняти дані на шкалі пропускання. Результат вимірювання коефіцієнта
63
пропускання трьох світлофільтрів, отриманий вручну за допомогою СФ-26
вручну зображений на рис. 4.7.
Рис. 4.7. Результати вимірювання коефіцієнта пропускання
світлофільтрів отримані вручну
Процес зняття даних вручну досить громіздкий і займає багато часу.
Автоматизації спектрофотометра СФ-26 дозволяє значно зменшити час
вимірювання, без внесення суттєвих похибок, адже розроблена система
проводить виміри тим самим пристроєм. Результат вимірювання, отриманий
автоматизованим СФ-26 зображений на рис 4.8–4.10.
Як бачимо, при порівнянні рис. 4.7. та 4.8.–4.10, спектральні
характеристики світлофільтрів, зняті вручну та вже автоматизованим СФ-26,
суттєво не відрізняються, з чого можна зробити висновок про мізерний вплив
на точність вимірювання СФ-26, як апаратної, так і програмної частини
системи автоматизації. Ті незначні похибки, що вносяться системою
можливо спричинені інерційністю двигунів та часовими параметрами, як
апаратної так і програмної частини нашої системи автоматизації.
0
10
20
30
40
50
60
70
80
90
360
380
400
420
440
460
480
500
520
540
560
580
600
620
640
660
Ко
еф
іціен
т
про
пу
ск
а
нн
я,
%
Довжина хвилі, нм
Вимірювання коефіціенту пропускання
контрольних світлофільтрів
Синій
Зелений
Червоний
64
Рис. 4.8. Результат вимірювання автоматизованим СФ-26 (синій
світлофільтр)
Рис. 4.9. Результат вимірювання автоматизованим СФ-26 (зелений
світофільтр)
Рис. 4.10. Результат вимірювання автоматизованим СФ-26 (червоний
світофільтр)
65
5. ЗАСОБИ ЗАХИСТУ ТА ОХОРОНА ПРАЦІ
Законодавчо-правовi аспекти по охоронi працi та охоронi
навколишнього середовища дає конституцiя та основи законодавства про
працю. Головнi положення про охорону працi закрiпленi конституцiєю та
основами законодавства про працю.
Пiд умовами працi розумiється сукупнiсть факторiв виробничого
середовища, якi здiйснюють вплив на здоров’я та працездатність людини.
Дослiдження умов працi показали що, факторами виробничого середовища в
процесi працi є: санiтарно-гiгiєнiчний стан, який визначає зовнiшнiй стан
мiкроклiмату в робочiй зонi; механiчнi коливання; випромiнювання;
температура; освiтленiсть та iншi, як результат впливу використовуваного
обладнання, матеріалів, технологічних процесiв; психологiчнi елементи;
робоча позицiя, фiзичне навантаження, нервово-психологiчне напруження,
яке обумовлене самим процесом працi; естетичнi елементи: оформлення
виробничих примiщень, обладнання робочого мiсця, робочого iнструменту та
iншi.
Найбільш небезпечними з точки зору охорони праці при виготовленні
діючого макету пристрою спряження є операції паяння пристрою, а також
виготовлення друковонаї плати.
Паяння – це з’єднання деталей при допомозi припою. Hайчастiше
використовуються
олов’яно-свинцевi
припої.
Процес
паяння
супроводжується забрудненням
виробничого
середовища, робочих
поверхонь, одягу та шкiри рук працюючих свинцем, який є досить
токсичною речовиною. Це може привести до отруєння органiзму, викликати
змiни у складi кровi, вплинути на нервову систему [19].
В примiщеннях, де здiйснюється паяння припоєм, який вмiщує
свинець, для запобiгання попадання свинцю в органiзм не рекомендується
зберiгати особистi речi, приймати їжу, палити, а також прати необхідно
робочий одяг вдома. Робоче мiсце для паяння обладнується мiсцевою
66
витяжною вентиляцiєю, що забезпечує концентрацiю свинцю в робочiй зонi
не бiльшу за гранично допустиму – 0,01 мг/м .
Для запобiгання опiкiв та заляпування рук чи одягу робiтникiв
припоєм, при паяннi повиннi використовуватись спецiальнi серветки для
видалення лишнього припою з жала паяльника, а також пiнцет. При
монтажних роботах, які пов’язані із ризиком забруднення чи пошкодження
очей, передбачена видача робітникам захисних окулярiв.
Для попередження професійних хвороб, необхідно після закінчення
роботи сполоснути руки однопроцентним оцтовим розчином, далі вимити їх
гарячою водою з милом, прополоскати рот, почистити зуби та прийняти душ.
При травленні застосовуються рiзнi шкiдливi хiмiкати – азотна,
фтористоводнева, соляна, сірчана, фосфорна кислоти, рiзнi луги та iншi
речовини. При роботі з кислотами на виробництвi можливi нещаснi випадки:
отруєння випарами та газами, що видiляються, хiмiчнi опiки при попаданнi
кислот на поверхню тiла чи в очi.
Вся робота з агресивними речовинами повинна проводитись в
спецiальних шафах з ефективною витяжною вентиляцiєю. Робiтники, які
працюють з такими речовинами повиннi бути забезпеченi вiдповiдним
спецодягом по затвердженим нормам. Для захисту очей необхiдно
використовувати окуляри в гумовiй оправi. Вiдпрацьованi кислоти
обов’язково повиннi бути нейтралiзованi у вiдповiдностi з технiчною
iнструкцiєю.
Небезпечним для людини є струм промислової частоти 50 Гц силою
бiльше 0,1 А. Напруга в електричних колах 40 В та більше вважається
небезпечною для життя. Електричний струм при напрузi 220 В може
викликати важкi травми i смерть.
Для запобiгання враження електричним струмом необхiдно
дотримуватися наступних правил технiки безпеки:
- не можна доторкатися до електричних проводiв, контактних зажимiв,
клем електрообладнання, слiд пам’ятати, що вони можуть бути пiд напругою;
67
- необхiдно слiдкувати, щоб на обслуговуваному обладнаннi було
надiйне заземлення i не було вiдкритих ділянок пiд напругою;
- не залишати без нагляду працююче обладнання, при необхiдностi
вiдлучитись обов’язково вiдключають обладнання вiд мережi;
- при наявностi враження електричним струмом здiйснити першу
медичну допомогу потерпiлому, сповiстити про те, що сталося в медпункт та
керiвнику робiт.
Освiтлення достатнє i повинно вiдповiдати СH i П II- 4 -79. Потрiбна
освiтленiсть визначається характером виконуваної роботи i дiючими
санiтарними нормами. При природньому i штучному освiтленi робочi мiсця
розмiщенi таким чином, щоб свiтло падало злiва. Такi умови вважаються
оптимальними.
Розмiщення для електроустаткування і електропроводки iзоляцiї
забезпечують повну безпеку працюючого.
Шкiдливi речовини, якi видiляються при роботi, видаляються за
допомогою мiсцевої вентиляцiї. Розмiщення пристроїв i трубопроводiв для
вiдведення повiтря виключає можливiсть травматизму.
Зовнiшнє оформлення робочих мiсць в виробничих примiщеннях
вiдповiдає вимогам виробничої естетики. Кольори для фарбування поверхонь
виробничих примiщень i устаткування, які розмiщені в колi зору
працюючого, повинні бути свiтло-голубими, що забезпечує кращу видимiсть
деталей i сприятливо дiє на нервову систему людини.
В комплекс заходів по створенню високопродуктивної працi входять i
психофiзiологiчнi
заходи,
якi
забезпечують
безперервний
ріст
продуктивностi працi при мiнiмальних витратах фiзичної i нервової енергiї
працюючого, i направленi на створення оптимального режиму працi та
вiдпочинку із врахуванням конкретного процесу виробництва.
Виробничий процес збирання, монтажу та регулювання приладу
вiдноситься по ступеню пожежної небезпечностi до категорiї Д.
68
Причинами пожежi можуть бути: коротке замикання, перевантаження
провiдникiв мережi, виникнення великих перехiдних опорiв, якi порушують
нормальну роботу технологiчного обладнання. Тому передбачаються
пристрої, що забезпечують вiд’єднання при короткому замиканнi як всiєї
мережi, так i окремих її ділянок.
Електроосвiтлення створює пожежну небезпеку при перегрiванні
провiдникiв та iзоляцiї.
Для захисту провiдникiв вiд механiчних та хiмiчних пошкоджень їх
прокладають в гумових або металевих трубках, якi мають внутрiшню
iзоляцiю.
При русi гумової стрiчки транспортеру можуть виникати
електростатичнi заряди. При незначнiй вологостi повiтря можливий iскровий
розряд мiж частинами обладнання, або розряд на землю.
Енергiя такої iскри незначна, але може бути достатньою для пiдпалення
горючої або вибухонебезпечної сумiшi. Таким чином, виникаючi в
виробничих умовах електростатичнi заряди, можуть бути джерелами пожежi.
Уникнути небезпеки виникнення електростатичних зарядiв можна
наступними методами:
1) заземлення виробничого обладнання та ємностей для зберiгання
вогненебезпечних рiдин;
2) збiльшення вологостi повiтря або використання антистатичних
домішок до основного продукту.
Джерелами пожежi можуть бути легкозаймистi рiдини: спирт, бензин,
ацетон та ін. тому їх запас на виробничій ділянці не повинен перевищувати
потреби на одну робочу змiну. Для зберiгання цих рiдин та їх вiдходiв
повинна бути передбачена спецiальна тара - алюмiнієвi бiдони з притертими
кришками, з чiткою назвою рiдини та попереджувальним надписом
"ВОГHЕHЕБЕЗПЕЧНО!"[20].
69
ВИСНОВКИ
В магістерській роботі автоматизовано процес вимірювання
спектральних характеристик спектрофотометром СФ-26.
Результатом виконання магістерської роботи є:
1. Розроблено загальний алгоритм вимірювання і функціонування
автоматизованого СФ-26.
2. Створено алгоритми калібрування двигунів шкал довжини хвилі та
ширини щілини.
3. Розроблено нові структурну, функціональну і принципову схеми
пристрою спряження СФ-26 з IBM PC.
4. Розроблена конструкторсько-технологічна документація пристрою
спряження (друкована плата, збірне креслення) і зібрано його діючий
макет.
5. Відповідно до розроблених алгоритмів створено програмне
забезпечення.
Модуль спряження спроектовано, в основному, на базі вітчизняних
інтегральних схем, що безумовно суттєво зменшує вартість розробки.
Програмне забезпечення виконує всі поставлені перед ним задачі, надає
широкі можливості для проведення високоточних вимірювань та обробки
отриманих результатів, має зручний інтерфейс.
1. Павлов Л.П. Методы измерения параметров полупроводниковых
материалов. / Л.П. Павлов – М.: Высшая Школа, 1987. – 239 с.
2. Ленинградское оптико-механическое объединение имени В. И. Ленина.
Спектрофотометр СФ-26. Техническое описание и инструкция по
эксплуатации Ю-34.11.629 ТО., ЛОМО. Спб, 1981.
3. Фотоплетизмографічні технології контролю серцево-судинної системи /
С.В. Павлов, В.П. Кожем'яко, В.Г. Петрук, П.Ф. Колісник. –Вінниця.:
УНІВЕРСУМ, 2007. –254 с.
4. Установка для проведения спектроскопических иследований в области
длин волн 0,2-2 мкм / Ф. А. Больщиков, А. В. Малов, К. Н. Нищев, П. А.
Рябочкина, С. Н. Ушаков. АО “Ленинградский оптико-механический
завод”.
5. В.И. Шкалето. Сопряжение спектрофотометра СФ-18 и ЭВМ.
[Електронний
ресурс]
/
Режим
доступу:
–
www.solar.org.ua/files/docs/1140848329.pdf .
6. Фролов А.В. Аппаратное обеспечение IBM PC / А.В. Фролов, Г.В. Фролов
- М.: "Диалог-МИФИ", 1992. - 208с.
7. Datasheet AD7822. [Електронний ресурс] / Режим доступу: –
http://www.datasheetcatalog.org/datasheet/analogdevices/11234439AD7822_2
5_29_b.pdf
8. Datasheet MAX1241. [Електронний ресурс] / Режим доступу: –
http://www.datasheetcatalog.org/datasheet/maxim/MAX1240-MAX1241.pdf
9. Интегральные микросхемы и их зарубежные аналоги: Справочник. Том
2./А. В. Нефедов. - М.:ИП РадиоСофт, 1998г. - 640с.:ил.
10. Перельман
Б.Л.
Отечественные
микросхемы
и
зарубежные
аналоги. Справочник. Перельман Б.Л., Шевелев В.И. "НТЦ Микротех",
1998г., 376 с.
11. Шило В.Л. Популярные цифровые микросхемы. Справочник. - 2-е изд.,
исправленое, 1989 г., 352 c.
12. Datasheet L78L05. [Електронний ресурс] / Режим доступу: –
http://www.datasheetcatalog.org/datasheets/150/9358_DS.pdf
13. Новиков Ю.В., Калашников О.А., Гуляев С.Э. Разработка устройств
сопряжения для персонального компьютера типа IBM PC. – М.: ЭКОМ,
1997. – 224с.;
14. Патрис О. Использование LPT-порта ПК для ввода/вывода информации /
О. Патрис. НТ Пресс, 2006, 160 с.
15. Шаговые двигатели: типы и принципы действия. [Електронний ресурс] /
Режим доступу: – http://stepmotor.ru/typesshag/#more-1472
16. Архангельский А.Я. Delphi 2006. Справочное пособие: Язык Delphi,
классы, функции Win32 и .NET. – М.: ООО „Бином-Пресс”, 2006. – 1152
с.: ил.
17. А.Я. Архангельльский Програмирование в Delphi для Windows. Версии
2006, 2007, Turbo Delphi. – М.: ООО «Бином-Прес», 2007г. – 1248 с.
18. Воробец А. И. Оптимизация апаратно- программного обеспечения для
автоматизации спектрофотометра СФ-20. / А. И. Воробец, Г. И.Воробец,
С.В. Мельничук //
Технология и конструирование в электронной
аппаратуре. – 2006. – № 2. – С. 19-24.
19. Ляшкевич В.Я. Охорона праці в галузі. /В.Я. Ляшкевич. –Чернівці: Рута,
2008. –90с.
20. Руснак І.С. Охорона праці при роботі з комп’ютером/ І.С. Руснак, А.В.
Бабюк, О.Є. Федорова. –Чернівці: Рутаб 2005. –128 с.
21. Сулема Є.С. Дипломне проектування за напрямами підготовки
«Прикладна математика», «Комп’ютерна інженерія», «Програмна
інженерія» : навч.-метод. посіб. / Є.С. Сулема ; за заг. ред. І.А. Дички. – К.
: НТУУ «КПІ», 2011. – 224 с.
Додаток 1
Кроковий
двигун
шкали
довжини
хвилі
АЦП
L
P
T
-
п
о
р
т
I
B
M
P
C
Ш
и
н
а
с
т
а
н
і
в
Ш
и
н
а
д
а
н
и
х
4
8
Функціональна схема автоматизації вимірювань СФ-26
Кроковий
двигун
шкали
ширини
щілини
Схема
керування
кроковими
двигунами
4
8
6
2
4
З входу
реєструючого
пристрою СФ-26
362.
8050
1020
130
13Е
2
Змн. Арк.
№ докум.
Підпис Дата
Арк.
362. 805010201 3 013 Е2
Розробив
Самойлова С.В.
Перевірив
Воробець О.І.
Т. Контр.
Н. Контр.
Баловсяк С.В.
Затверд.
Мельничук С.В
Апаратно-програмне забезпе-
чення для автоматизації СФ-26
Схема електр функціональна
Літ.
Аркушів
1
Кафедра комп’ютерних сис-
тем та мереж, група 521
Реценз.
Маса
Масштаб
1:1
Додаток 2
1
2
&
&
&
&
4
5
9
1
0
1
2
1
3
3
6
8
1
1
1
4
7
D
D
5
+
5
В
1
2
&
&
&
&
4
5
9
1
0
1
2
1
3
3
6
8
1
1
1
4
7
D
D
1
+
5
В
D
D
3
D
C
Q
0
Q
1
Q
2
Q
3
Q
0
Q
1
Q
2
Q
3
A
0
A
1
S
2
B
S
1
E
1
4
3
2
5
6
1
0
9
8
7
1
1
1
5
1
2
1
6
1
3
1
4
+
5
В
І
м
п
у
л
ь
с
и
:
0
1
0
1
0
1
В
п
е
р
е
д
:
„1
”
Н
а
з
а
д
:
„0
”
В
и
б
і
р
д
в
и
г
у
н
а
:
Д
Х
„1
”,
Ш
Щ
„0
”
С
т
о
п
:
„0
”
C
L
O
C
K
А
Ц
П
(
7
)
C
S
А
Ц
П
(
5
)
D
A
T
A
А
Ц
П
(
6
)
D
D
2
C
T
2
Q
0
Q
1
Q
2
Q
3
≥
1
5
≤
0
+
1
-
1
E
D
1
D
0
R
1
0
7
5
1
6
2
8
3
1
2
4
1
3
1
6
9
1
1
1
4
1
5
D
2
D
3
+
5
В
B
A
D
C
К
р
о
к
о
в
и
й
д
в
и
г
у
н
ш
к
а
л
и
ш
и
р
и
н
и
щ
і
л
и
н
и
+
1
2
В
V
D
1
V
D
2
R
1
1
1
5
к
В
х
і
д
в
и
м
і
р
ю
в
а
н
о
ї
н
а
п
р
у
г
и
U
x
0
÷
5
В
С
1
1
0
0
µ
F
1
6
В
С
2
0
,
1
µ
F
С
3
1
0
µ
F
С
4
0
,
1
µ
F
+
+
D
D
6
Λ
/
#
R
E
F
+
I
N
C
S
C
L
K
2
4
1
3
8
6
5
7
D
A
T
A
R
E
F
-
V
C
C
R
5
V
T
5
R
7
V
T
7
R
6
V
T
6
R
8
V
T
8
+
9
В
B
A
D
C
К
р
о
к
о
в
и
й
д
в
и
г
у
н
ш
к
а
л
и
д
о
в
ж
и
н
и
х
в
и
л
і
R
1
V
T
1
R
3
V
T
3
R
2
V
T
2
R
4
V
T
4
+
9
В
1
2
&
&
&
&
4
5
9
1
0
1
2
1
3
3
6
8
1
1
1
4
7
D
D
4
+
5
В
1
3
D
D
7
V
I
N
2
V
O
U
T
G
N
D
Ш
С
Ш
Д
L
P
T
-
п
о
р
т
I
B
M
P
C
2
3
4
D
1
D
0
D
2
D
3
D
4
D
5
D
6
D
7
D
7
5
6
7
8
9
1
1
2
3
V
D
3
V
D
4
R
1
2
1
0
0
к
,
1
%
R
1
3
1
0
0
к
1
%
С
5
6
n
F
R
9
8
,
2
к
R
1
0
8
,
2
к
362.
8050
1020
130
13Е
3
Змн. Арк.
№ докум.
Підпис Дата
Арк.
362. 805010201 3 013 Е3
Розробив
Самойлова С.В.
Перевірив
Воробець О.І.
Т. Контр.
Н. Контр.
Баловсяк С.В.
Затверд.
Мельничук С.В
Апаратно-програмне забезпе-
чення для автоматизації СФ-26
Схема електрична принципова
Літ.
Аркушів
1
Кафедра комп’ютерних сис-
тем та мереж, група 521
Реценз.
Маса
Масштаб
1:1
Додаток 3
Поз. познач.
Назва
К-сть
Приміт.
Мікросхеми
DD1, DD4, DD5
К155ЛА3
3
DD2
К155ИЕ7
1
DD3
К155ИД4
1
DD6
MAX1241
1
DD7
L78L05
Діоди
VD1, VD3, VD4
1N4148
3
VD2
REF25Z
1
Транзистори
VT1-VT8
2SC5060
Резистори
R1 – R8
МЛТ-750Ом
9
Роз’єми
LPT
36-контактний роз’єм
1
Змн. Арк.
№ докум.
Підпис Дата
Арк.
362. 805010201 3 013 ПЕЗ
Розроб.
Самойлова С.В.
Перевір.
Воробець О.І.
Реценз.
.
Н. Контр.
Баловсяк С.В.
Затверд.
Мельничук С.В
Апаратно-програмне
забезпечення для
автоматизації СФ-26
Перелік елементів
Літ.
Акрушів
1
Кафедра комп’ютерних
систем і мереж, група 521
Додаток 4
80 мм
7
0
м
м
80 мм
7
0
м
м
362.
8050
1020
130
13Д
П
Змн. Арк.
№ докум.
Підпис Дата
Арк.
362. 805010201 3 013 ДП
Розробив
Самойлова С.В.
Перевірив
Воробець О.І.
Т. Контр.
Н. Контр.
Баловсяк С.В.
Затверд.
Мельничук С.В
Апаратно-програмне забезпе-
чення для автоматизації СФ-26
Друкована плата
Літ.
Аркушів
1
Кафедра комп’ютерних сис-
тем та мереж, група 521
Реценз.
Маса
Масштаб
1:1
Додаток 4
80 мм
7
0
м
м
10 мм
362.
8050
1020
130
13З
К
Змн. Арк.
№ докум.
Підпис Дата
Арк.
362. 805010201 3 013 ЗК
Розробив
Самойлова С.В.
Перевірив
Воробець О.І.
Т. Контр.
Н. Контр.
Баловсяк С.В.
Затверд.
Мельничук С.В
Апаратно-програмне забезпе-
чення для автоматизації СФ-26
Збірне креслення
Літ.
Аркушів
1
Кафедра комп’ютерних сис-
тем та мереж, група 521
Реценз.
Маса
Масштаб
1:1
Додаток 4
80 мм
7
0
м
м
10 мм
362.
8050
1020
130
13З
К
Змн. Арк.
№ докум.
Підпис Дата
Арк.
362. 805010201 3 013 ЗК
Розробив
Самойлова С.В.
Перевірив
Воробець О.І.
Т. Контр.
Н. Контр.
Баловсяк С.В.
Затверд.
Мельничук С.В
Апаратно-програмне забезпе-
чення для автоматизації СФ-26
Збірне креслення
Літ.
Аркушів
1
Кафедра комп’ютерних сис-
тем та мереж, група 521
Реценз.
Маса
Масштаб
1:1
Додаток 6
Додаток 7
Початок
Початок
Введення початкових даних:
швидкості і точності
вимірювань, опорної напруги
АЦП, діапазону довжин хвиль
Введення початкових даних:
швидкості і точності
вимірювань, опорної напруги
АЦП, діапазону довжин хвиль
Зчитування ПК з файла даних wave.txt
чергової довжини хвилі і кількості
кроків двигуна для її досягнення.
Запуск двигуна шкали довжини хвилі
Зчитування ПК з файла даних wave.txt
чергової довжини хвилі і кількості
кроків двигуна для її досягнення.
Запуск двигуна шкали довжини хвилі
Початок циклу вимірювань
Початок циклу вимірювань
Кінець
Кінець
Зчитування ПК з файла даних slit.txt
кількості кроків двигуна для її
досягнення. Запуск двигуна ширини
щілини.
Зчитування ПК з файла даних slit.txt
кількості кроків двигуна для її
досягнення. Запуск двигуна ширини
щілини.
Задання ПК режиму роботи АЦП і
зчитування перетвореного значення
напруги з АЦП, яка відповідає
коефіцієнту пропускання
Задання ПК режиму роботи АЦП і
зчитування перетвореного значення
напруги з АЦП, яка відповідає
коефіцієнту пропускання
За даними, знятими з АЦП,
відбувається проведення розрахунку
коефіцієнту пропускання, виведення
точки спектрограми у вікно головної
форми програми та запис даних у
файл даних TempDat.dat
За даними, знятими з АЦП,
відбувається проведення розрахунку
коефіцієнту пропускання, виведення
точки спектрограми у вікно головної
форми програми та запис даних у
файл даних TempDat.dat
Кінець циклу вимірювань при умові
досягнення верхньої межі введеного
діапазону довжин хвиль
Отримані значення спектрограми
записуються у файл даних, ім’Я та
коментарі до якого можна ввести
вручну у формі програмного
забезпечення
Отримані значення спектрограми
записуються у файл даних, ім’Я та
коментарі до якого можна ввести
вручну у формі програмного
забезпечення
362.
8050
1020
130
13Д
1
Змн. Арк.
№ докум.
Підпис Дата
Арк.
362. 805010201 3 013 Д1
Розробив
Самойлова С.В.
Перевірив
Воробець О.І.
Т. Контр.
Н. Контр.
Баловсяк С.В.
Затверд.
Мельничук С.В
Апаратно-програмне забезпе-
чення для автоматизації СФ-26
Загальний алгоритм роботи
Літ.
Аркушів
1
Кафедра комп’ютерних сис-
тем та мереж, група 521
Реценз.
Маса
Масштаб
1:1
Додаток 8
Початок
Початок
Введення параметру
режиму роботи
Введення параметру
режиму роботи
Вибір режима
роботи
Вибір режима
роботи
Введення параметра
вибору двигуна
(довжина хвилі, ширина
щілини), напрямок та
швидкість обертання,
к-сть кроків двигуна
Введення параметра
вибору двигуна
(довжина хвилі, ширина
щілини), напрямок та
швидкість обертання,
к-сть кроків двигуна
Пуск
Пуск
Передача даних до
двигуна
Передача даних до
двигуна
К-сть кроків
двигуна
К-сть кроків
двигуна
Натиснутий Стоп
Натиснутий Стоп
Натиснутий Стоп
Натиснутий Стоп
Досягнена макс.
значення к-сть
кроків двигунів
Досягнена макс.
значення к-сть
кроків двигунів
11
Тестування двигунів
Так
Ні
Задана
Ні
Так
Вихід
Вихід
Кінець
Кінець
Так
Ні
Калібрування двигунів
22
362.
8050
1020
130
13Д
2
Змн. Арк.
№ докум.
Підпис Дата
Арк.
1
362. 805010201 3 013 Д2
Розробив
Самойлова С.В.
Перевірив
Воробець О.І.
Т. Контр.
Н. Контр.
Баловсяк С.В.
Затверд.
Мельничук С.В
Апаратно-програмне забезпе-
чення для автоматизації СФ-26
Алгоритм створення каліброво-
чного файлу двигуна довжини
хвилі
Літ.
Аркушів
2
Кафедра комп’ютерних сис-
тем та мереж, група 521
Реценз.
Маса
Масштаб
1:1
1
1
Вибір напрямку
проходження
(Вперед/Назад),
шв. обертання
Вибір напрямку
проходження
(Вперед/Назад),
шв. обертання
Запуск двигуна
Вперед/Назад
Запуск двигуна
Вперед/Назад
Передача даних на
двигун
Передача даних на
двигун
Підрахунок к-сті кроків
двигуна
Підрахунок к-сті кроків
двигуна
Натиснутий Стоп
Натиснутий Стоп
Перевірка точності
вимірювань
Перевірка точності
вимірювань
Введення
довжини хвилі
Введення
довжини хвилі
Запис к-сті кроків двигуна
та довжини хвилі у файл
Wavef/WaveB
Запис к-сті кроків двигуна
та довжини хвилі у файл
Wavef/WaveB
Кінець шкали
довжини хвилі
Кінець шкали
довжини хвилі
Провести точне
вимірювання
Провести точне
вимірювання
2
2
Так
Ні
Ні
Так
Так
Ні
Змн. Арк.
№ докум.
Підпис Дата
Арк.
2
362. 805010201 3 013 Д2
Додаток 10
Початок
Виставлення поч.
значення на шкалах
Задання шв. обертання
Активація поля «Шкала
довжини хвилі»
Прокрутка двигуна до
чергового значення
хвилі
Активація поля
«Ширина щілини»
Запуск двигуна і калібровка
ширини щілини
Запис даних у файл
Кінець шкали довжини
хвилі
Кінець
Так
Ні
362.
8050
1020
130
13Д
3
Змн. Арк.
№ докум.
Підпис Дата
Арк.
362. 805010201 3 013 Д3
Розробив
Самойлова С.В.
Перевірив
Воробець О.І.
Т. Контр.
Н. Контр.
Баловсяк С.В.
Затверд.
Мельничук С.В
Апаратно-програмне забезпе-
чення для автоматизації СФ-26
Алгоритм створення каліброво-
чного файлу двигуна ширини
щілини
Літ.
Аркушів
Кафедра комп’ютерних сис-
тем та мереж, група 521
Реценз.
Маса
Масштаб
1:1
Додаток 11
unit SPH26v1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes,
Graphics, Controls, Forms,
Dialogs, StdCtrls, Menus, ExtCtrls, TeeProcs,
TeEngine, Chart, ComCtrls,
jpeg, Series;
type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
OpenDialog1: TOpenDialog;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Chart1: TChart;
Image1: TImage;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
RadioButton3: TRadioButton;
RadioButton4: TRadioButton;
Series1: TLineSeries;
Edit5: TEdit;
Label5: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure N7Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
const
// max=2.5;
portlpt0_WaveF=46;
portlpt0_WaveB=44;//обертання двигуна шкали
portlpt1_WaveF=47;
portlpt1_WaveB=45;//довжини хвилі Вперед/Назад
portlpt0_SlitF=42; portlpt0_SlitB=40; //Обертання
двигуна шкали
portlpt1_SlitF=43; portlpt1_SlitB=41; //ширини
щілини Вперед/Назад
portlpt0_VimirF=6;
portlpt1_VimirF=22;//Вимірювання
portlptStop_VimirF=38;
// Вперед
portlpt0_VimirB=4;
portlpt1_VimirB=20;//Вимірювання
portlptStop_VimirB=36;
//Назад
var
Form1: TForm1;
islit1,kwave1,kslit1,portlpt0_s,portlpt1_s,kslitsum:
integer;
i,portlpt0,portlpt1,portlpt0_v,portlpt1_v,portlptStop_
v: integer;
v: longint; start_wave,finish_wave: integer;
islit,zapis,wave,kwave,kslit: String;
nm,n1,n,f,e,KnStop,k: byte;
max,wave1,d,dp: real;
reztest,rezsave,rezslit: TModalResult;
F1,F2: TextFile;
implementation
uses SPH26v2, Unit3, Unit4, Unit5;
{$R *.dfm}
{Визначення Delay, PortIn, PortOut}
function IsDriverInstalled : Boolean; stdcall; external
'io.dll';
procedure PortOut(Port : Word; Data : Byte);stdcall;
external 'io.dll';
function PortIn(Port : Word) : Byte;stdcall; external
'io.dll';
procedure Delay(dwMilliseconds:
DWORD{Longint});
var iStart, iStop: DWORD;
begin
iStart := GetTickCount;
repeat
iStop := GetTickCount;
Application.ProcessMessages;
until (iStop - iStart) >= dwMilliseconds;
end;
{******************************************
*****************}
{Активність}
procedure Activ;
begin
Form1.Edit1.Enabled:=True;
Form1.Edit2.Enabled:=True;
Form1.Edit3.Enabled:=True;
Form1.Edit4.Enabled:=True;
Form1.RadioButton1.Enabled:=True;
Form1.RadioButton2.Enabled:=True;
Form1.RadioButton3.Enabled:=True;
Form1.RadioButton4.Enabled:=True;
Form1.Button1.Enabled:=True;
Form1.Button3.Enabled:=True;
Form1.Button4.Enabled:=True;
end;
{Неактивність}
procedure NoActiv;
begin
Form1.Edit1.Enabled:=False;
Form1.Edit2.Enabled:=False;
Form1.Edit3.Enabled:=False;
Form1.Edit4.Enabled:=False;
Form1.RadioButton1.Enabled:=False;
Form1.RadioButton2.Enabled:=False;
Form1.RadioButton3.Enabled:=False;
Form1.RadioButton4.Enabled:=False;
Form1.Button1.Enabled:=False;
Form1.Button3.Enabled:=False;
Form1.Button4.Enabled:=False;
end;
{Налаштування шкали довжини хвилі}
procedure MotorWave;
begin
Form1.Edit2.Text:=''; Form1.Edit3.Text:='';
v:=StrToInt(Form1.Edit1.Text);
repeat
PortOut($378,portlpt0);Delay(v);
PortOut($378,portlpt1);Delay(v);
until KnStop=0;
end;
{Калібрування щілини}
procedure KalibrovkaReading;
begin
Readln(F1,zapis);
n1:=Pos('
',zapis);
wave:=Copy(zapis,1,n1-1); Delete(zapis,1,n1+9);
kwave:=Copy(zapis,1,length(zapis));
kwave1:=StrToInt(kwave);
end;
procedure KalibrovkaWaveMotor;
begin
for k:=1 to kwave1 do
begin
PortOut($378,portlpt0);Delay(v);
PortOut($378,portlpt1);Delay(v);
end;
end;
{Тестування двигунів}
procedure TestMotor;
begin
for k:=1 to kwave1 do
begin
PortOut($378,portlpt0);Delay(v);
PortOut($378,portlpt1);Delay(v);
end;
if kslit1>0 then
begin
portlpt0_s:=portlpt0_SlitF;
portlpt1_s:=portlpt1_SlitF;
end;
if kslit1<0 then
begin
kslit1:=-kslit1;
portlpt0_s:=portlpt0_SlitB;
portlpt1_s:=portlpt1_SlitB;
end;
for k:=1 to kslit1 do
begin
PortOut($378,portlpt0_s);Delay(v);
PortOut($378,portlpt1_s);Delay(v);
end;
end;
{Зчитування з файлу Slitf/Slitb}
procedure Reading;
begin
Readln(F1,zapis);
n1:=Pos('
',zapis);
wave:=Copy(zapis,1,n1-1); Delete(zapis,1,n1+9);
n1:=Pos('
',zapis);
kwave:=Copy(zapis,1,n1-1); Delete(zapis,1,n1+9);
kslit:=Copy(zapis,1,length(zapis));
kwave1:=StrToInt(kwave);
kslit1:=StrToInt(kslit);
end;
{Вимірювання}
procedure init;
begin n:=12;
PortOut($378,portlpt0_v); Delay(1);
PortOut($378,portlpt1_v); Delay(1);
end;
procedure acquisition;
begin
PortOut($378,portlpt0_v); d:=0;
PortOut($378,portlpt0_v);
PortOut($378,portlpt1_v);
PortOut($378,portlpt0_v);
PortOut($378,portlpt1_v);
for f:=0 to n-1 do begin
PortOut($378,portlpt0_v);
e:=PortIn($379) and 128;
PortOut($378,portlpt1_v);
if e=0 then d:=d+exp((n-1-f)*ln(2));
end;
d:=(max*d)/(exp((n)*ln(2))-1);
PortOut($378,portlptStop_v);
end;
{******************************************
*****************}
{ВПЕРЕД}
procedure TForm1.Button3Click(Sender: TObject);
begin
max:=StrToFloat(Edit5.Text);
NoActiv; KnStop:=8; kslitsum:=0; dp:=0; i:=2;
portlpt0:=portlpt0_WaveF;
portlpt1:=portlpt1_WaveF;
portlpt0_v:=portlpt0_VimirF;
portlpt1_v:=portlpt1_VimirF;
portlptStop_v:=portlptStop_VimirF;
if
(RadioButton1.Checked)or(RadioButton2.Checked)o
r(RadioButton3.Checked)then
begin
rezslit:=MessageDlg('Для
"Тестування/Калібрування щілини" перевірте'+
' чи довжина хвилі '#10#13'відповідає
початку шкали (186 нм) і відкрийте' +
' щілину на 100% пропускання!'#10#13'Для
"Вимірювання" введіть початкову' та кінцеву
довжину хвилі.
Продовжити?',mtCustom,[mbOk,mbNo],0);
if rezslit=mrNo then begin Activ; exit; end;
end;
if RadioButton4.Checked then {Налаштування
шкали довжини хвилі};
begin MotorWave; Activ; end;
if RadioButton3.Checked then {Тестування
двигунів}
begin
Edit2.Text:='186'; Edit3.Text:='1200';
AssignFile(F1,'Slitf.txt'); Reset(F1);
Readln(F1,zapis);
repeat
Reading; Edit3.Text:=wave; TestMotor;
until (KnStop=0)or(EOF(F1));
CloseFile(F1); ShowMessage('Тестування
двигунів завершено!');
PortOut($378,portlptStop_v); Activ;
end;
if RadioButton2.Checked then {Калібрування
щілини}
begin
Edit2.Text:='186'; Edit3.Text:='1200';
AssignFile(F1,'Wavef.txt'); Reset(F1);
AssignFile(F2,'Slitf.txt'); Rewrite(F2);
Writeln(F2,'Довж_хв, нм| ','крокWave |
','крокSlit');
Readln(F1,zapis); Series1.Clear;
repeat
KalibrovkaReading;
init; acquisition; dp:=0; islit1:=0;
//******************************************
****************
{repeat
if (d-dp)>0 then
begin
islit1:=islit1+1;
PortOut($378,portlpt0_SlitF);Delay(v);
PortOut($378,portlpt1_SlitF);Delay(v);
end;
if (d-dp)<0 then
begin
islit1:=islit1-1;
PortOut($378,portlpt0_SlitB);Delay(v);
PortOut($378,portlpt1_SlitB);Delay(v);
end;
dp:=d; init; acquisition;
until (0.9*max<=d)and(d<=max); }
//******************************************
*****************
wave1:=StrToFloat(wave); islit:=IntToStr(islit1);
Series1.AddXY(wave1,d,'',clRed); //виведення на
екран
Append(F2);Writeln(F2,wave,'
',kwave,'
',islit);
Edit3.Text:=wave;
KalibrovkaWaveMotor;
until (KnStop=0)or(EOF(F1));
if KnStop=0 then
begin
ShowMessage('Калібрування завершено! Дані
збережені не будуть!');
CloseFile(F1); CloseFile(F2); Activ; Exit;
end;
if (EOF(F1)) then
begin
ShowMessage('Калібрування завершено! Дані
збереженіу файл даних Slitf.txt!');
CloseFile(F1);CloseFile(F2); Activ; Exit;
end;
end;
if RadioButton1.Checked then {Вимірювання}
begin
start_wave:=StrToInt(Edit2.Text);
finish_wave:=StrToInt(Edit3.Text);
if start_wave>finish_wave then
begin
ShowMessage(Введіть правильно діапазон
вимірювань!');
Activ; Exit;
end;
AssignFile(F1,'Slitf.txt'); Reset(F1);
AssignFile(F2,GetCurrentDir+'/DataSph_26/Tempdat
.txt'); Rewrite(F2);
Writeln(F2,Довж_хв, нм |
','ПРОПУСКАННЯ,%');
Readln(F1,zapis);
repeat
Reading; kslitsum:=kslitsum+kslit1;
until
(start_wave=StrToInt(wave))or(KnStop=0)or(EOF(F
1));
if EOF(F1)and(start_wave<>StrToInt(wave)) then
begin
ShowMessage(Задане значення початковоъ
множини не знайдено!');
CloseFile(F1); CloseFile(F2); Activ; Exit;
end;
if start_wave=StrToInt(wave) then
begin
for k:=0 to abs(kslitsum) do
begin
if kslitsum>0 then begin
PortOut($378,portlpt0_SlitF);Delay(v);
PortOut($378,portlpt1_SlitF);Delay(v);
end;
if kslitsum<0 then begin
PortOut($378,portlpt0_SlitB);Delay(v);
PortOut($378,portlpt1_SlitB);Delay(v);
end;
end;
Series1.Clear;
init; acquisition;
Series1.AddXY(StrToFloat(wave),d,'',clRed);//вивед
ення на экран
if start_wave=finish_wave then
begin CloseFile(F1); CloseFile(F2); Activ;
Exit; end;
Append(F2);Writeln(F2,wave,'
',FloatToStr(d));
repeat
Reading; TestMotor;
if (i mod StrToInt(Edit4.Text)=0) then
begin
init; acquisition;
Series1.AddXY(StrToFloat(wave),d,'',clRed);//âèâåäå
ííÿ íà åêðàí
Append(F2);Writeln(F2,wave,'
',FloatToStr(d));
Edit3.Text:=wave;
end;
i:=i+1;
until
(StrToInt(wave)>=finish_wave)or(KnStop=0)or(EOF
(F1));
if (StrToInt(wave)>=finish_wave)or(EOF(F1))
then
begin
CloseFile(F1); CloseFile(F2);
rezsave:=MessageDlg('Âèì³ðþâàííÿ
çàâåðøåí³!'+
' Çáåðåãòè ðåçóëüòàòè
âèì³ðþâàíü?',mtCustom,[mbOk,mbNo],0);
if rezsave=mrOk then Form5.ShowModal;
Activ; Exit;
end;
end;
if KnStop=0 then
begin
ShowMessage('Âèì³ðþâàííÿ íå çàâåðøåí³! Äàí³
çáåðåæåí³ íå áóäóòü!');
CloseFile(F1); CloseFile(F2); Activ; Exit;
end;
end;
end;
{Назад}
procedure TForm1.Button1Click(Sender: TObject);
begin
max:=StrToFloat(Edit5.Text);
NoActiv; KnStop:=8; kslitsum:=0; dp:=0; i:=2;
portlpt0:=portlpt0_WaveB;
portlpt1:=portlpt1_WaveB;
portlpt0_v:=portlpt0_VimirB;
portlpt1_v:=portlpt1_VimirB;
portlptStop_v:=portlptStop_VimirB;
if
(RadioButton1.Checked)or(RadioButton2.Checked)o
r(RadioButton3.Checked)then
begin
rezslit:=MessageDlg('Äëÿ "Òåñòóâàííÿ
äâèãóí³â/Êàë³áðóâàííÿ ù³ëèíè" ïåðåâ³ðòå'+
' ÷è äîâæèíà õâèë³'#10#13'â³äïîâ³äຠê³íöþ øêàëè
(1200íì) ³ â³äêðèéòå'+
' ù³ëèíó íà 100% ïðîïóñêàííÿ!'#10#13'Äëÿ
"Âèì³ðþâàííÿ" ââåä³òü ïî÷àòêîâó'+
' òà ê³íöåâó äîâæèíó õâèë³.
Ïðîäîâæèòè?',mtCustom,[mbOk,mbNo],0);
if rezslit=mrNo then begin Activ; exit; end;
end;
if RadioButton4.Checked then {Íàëàøòóâàííÿ øêàëè
äîâæèíè õâèë³}
begin MotorWave; Activ; end;
if RadioButton3.Checked then {Òåñòóâàííÿ äâèãóí³â}
begin
Edit2.Text:='1200'; Edit3.Text:='186';
AssignFile(F1,'Slitb.txt'); Reset(F1);
Readln(F1,zapis);
repeat
Reading; Edit3.Text:=wave; TestMotor;
until (KnStop=0)or(EOF(F1));
CloseFile(F1); ShowMessage('Òåñòóâàííÿ äâèãóí³â
çàâåðøåíî!');
PortOut($378,portlptStop_v); Activ;
end;
if RadioButton2.Checked then {Êàë³áðóâàííÿ ù³ëèíè}
begin
Edit2.Text:='1200'; Edit3.Text:='186';
AssignFile(F1,'Waveb.txt'); Reset(F1);
AssignFile(F2,'Slitb.txt'); Rewrite(F2);
Writeln(F2,'Äîâæ_õâ,íì | ','êðîêWave | ','êðîêSlit');
Readln(F1,zapis); Series1.Clear;
repeat
KalibrovkaReading;
init; acquisition; dp:=0; islit1:=0;
//******************************************
***************
{repeat
if (d-dp)>0 then
begin
islit1:=islit1+1;
PortOut($378,portlpt0_SlitF);Delay(v);
PortOut($378,portlpt1_SlitF);Delay(v);
end;
if (d-dp)<0 then
begin
islit1:=islit1-1;
PortOut($378,portlpt0_SlitB);Delay(v);
PortOut($378,portlpt1_SlitB);Delay(v);
end;
dp:=d; init; acquisition;
until (0.9*max<=d)and(d<=max); }
//******************************************
****************
wave1:=StrToFloat(wave); islit:=IntToStr(islit1);
Series1.AddXY(wave1,d,'',clRed); //âèâåäåííÿ íà
åêðàí
Append(F2);Writeln(F2,wave,'
',kwave,'
',islit);
Edit3.Text:=wave;
KalibrovkaWaveMotor;
until (KnStop=0)or(EOF(F1));
if KnStop=0 then
begin
ShowMessage('Êàë³áðóâàííÿ íå çàâåðøåíî! Äàí³
çáåðåæåí³ íå áóäóòü!');
CloseFile(F1); CloseFile(F2); Activ; Exit;
end;
if (EOF(F1)) then
begin
ShowMessage('Êàë³áðóâàííÿ çàâåðøåíî! Äàí³
çáåðåæåí³ ó ôàéë Slitb.txt!');
CloseFile(F1);CloseFile(F2); Activ; Exit;
end;
end;
if RadioButton1.Checked then {Âèì³ðþâàííÿ}
begin
start_wave:=StrToInt(Edit2.Text);
finish_wave:=StrToInt(Edit3.Text);
if start_wave<finish_wave then
begin
ShowMessage('Ââåä³òü ïðàâèëüíî ä³àïàçîí
âèì³ðþâàíü!');
Activ; Exit;
end;
AssignFile(F1,'Slitb.txt'); Reset(F1);
AssignFile(F2,GetCurrentDir+'/DataSph_26/Tempdat
.txt'); Rewrite(F2);
Writeln(F2,'Äîâæ_õâ,íì | ','Ïðîïóñêàííÿ,%');
Readln(F1,zapis);
repeat
Reading; kslitsum:=kslitsum+kslit1;
until
(start_wave=StrToInt(wave))or(KnStop=0)or(EOF(F
1));
if EOF(F1)and(start_wave<>StrToInt(wave)) then
begin
ShowMessage('Çàäàíå çíà÷åííÿ ïî÷àòêîâî¿
äîâæèíè õâèë³ íå çíàéäåíå!');
CloseFile(F1); CloseFile(F2); Activ; Exit;
end;
if start_wave=StrToInt(wave) then
begin
for k:=0 to abs(kslitsum) do
begin
if kslitsum>0 then begin
PortOut($378,portlpt0_SlitF);Delay(v);
PortOut($378,portlpt1_SlitF);Delay(v);
end;
if kslitsum<0 then begin
PortOut($378,portlpt0_SlitB);Delay(v);
PortOut($378,portlpt1_SlitB);Delay(v);
end;
end;
Series1.Clear;
init; acquisition;
Series1.AddXY(StrToFloat(wave),d,'',clRed);//âèâåäå
ííÿ íà åêðàí
if start_wave=finish_wave then
begin CloseFile(F1); CloseFile(F2); Activ;
Exit; end;
Append(F2);Writeln(F2,wave,'
',FloatToStr(d));
repeat
Reading; TestMotor;
if (i mod StrToInt(Edit4.Text)=0) then
begin
init; acquisition;
Series1.AddXY(StrToFloat(wave),d,'',clRed);//âèâåäå
ííÿ íà åêðàí
Append(F2);Writeln(F2,wave,'
',FloatToStr(d));
Edit3.Text:=wave;
end;
i:=i+1;
until
(StrToInt(wave)<=finish_wave)or(KnStop=0)or(EOF
(F1));
if (StrToInt(wave)<=finish_wave)or(EOF(F1))
then
begin
CloseFile(F1); CloseFile(F2);
rezsave:=MessageDlg('Âèì³ðþâàííÿ
çàâåðøåí³!'+
' Çáåðåãòè ðåçóëüòàòè
âèì³ðþâàíü?',mtCustom,[mbOk,mbNo],0);
if rezsave=mrOk then Form5.ShowModal;
Activ; Exit;
end;
end;
if KnStop=0 then
begin
ShowMessage('Âèì³ðþâàííÿ íå çàâåðøåí³! Äàí³
çáåðåæåí³ íå áóäóòü!');
CloseFile(F1); CloseFile(F2); Activ; Exit;
end;
end;
end;
{******************************************
*****************}
{Ñòîï}
procedure TForm1.Button2Click(Sender: TObject);
begin
KnStop:=0; PortOut($378,portlptStop_v);
end;
{Âèõ³ä ç ïðîãðàìè ç ãîëîâíîãî â³êíà}
procedure TForm1.Button4Click(Sender: TObject);
begin
Close;
end;
{³äêðèòòÿ ôàéëó äàíèõ}
procedure TForm1.N2Click(Sender: TObject);
begin
OpenDialog1.Execute;
AssignFile(F1,OpenDialog1.FileName); Reset(F1);
Series1.Clear;
Readln(F1,zapis);
Readln(F1,zapis);
repeat
nm:=Pos('
',zapis);
wave:=Copy(zapis,1,nm-1); Delete(zapis,1,nm+9);
kwave:=Copy(zapis,1,length(zapis));
Series1.AddXY(StrToFloat(wave),StrToFloat(kwave
),'',clRed);//âèâåäåííÿ íà åêðàí
Readln(F1,zapis);
until EOF(F1);
Form1.Chart1.Title.Text.Text:=zapis;
SetCurrentDir(a);
end;
{Çáåðåæåííÿ äàíèõ ó ôàéë}
procedure TForm1.N3Click(Sender: TObject);
begin
Form5.ShowModal;
end;
{Âèõ³ä ç ïðîãðàìè ç ãîëîâíîãî ìåíþ}
procedure TForm1.N4Click(Sender: TObject);
begin
Close;
end;
{Ïðî ïðîãðàìó}
procedure TForm1.N5Click(Sender: TObject);
begin
Form2.ShowModal;
end;
{³äêðèòòÿ â³êíà ç ³íñòðóêö³ºþ}
procedure TForm1.N6Click(Sender: TObject);
begin
Form3.ShowModal;
end;
{³äêðèòòÿ â³êíà ç³ ñõåìîþ}
procedure TForm1.N7Click(Sender: TObject);
begin
Form4.ShowModal;
end;
end.
unit SPH26v1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes,
Graphics, Controls, Forms,
Dialogs, StdCtrls, Menus, ExtCtrls, TeeProcs,
TeEngine, Chart, ComCtrls,
jpeg, Series;
type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
OpenDialog1: TOpenDialog;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Chart1: TChart;
Image1: TImage;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
RadioButton3: TRadioButton;
RadioButton4: TRadioButton;
Series1: TLineSeries;
Edit5: TEdit;
Label5: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure N7Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
const
// max=2.5;
portlpt0_WaveF=46;
portlpt0_WaveB=44;//Îáåðòàííÿ äâèãóíà øêàëè
portlpt1_WaveF=47; portlpt1_WaveB=45;//äîâæèíè
õâèë³ Âïåðåä/Íàçàä
portlpt0_SlitF=42; portlpt0_SlitB=40; //Îáåðòàííÿ
äâèãóíà øêàëè
portlpt1_SlitF=43; portlpt1_SlitB=41; //øèðèíè
ù³ëèíè Âïåðåä/Íàçàä
portlpt0_VimirF=6;
portlpt1_VimirF=22;//Âèì³ðþâàííÿ
portlptStop_VimirF=38;
// Âïåðåä
portlpt0_VimirB=4;
portlpt1_VimirB=20;//Âèì³ðþâàííÿ
portlptStop_VimirB=36;
//Íàçàä
var
Form1: TForm1;
islit1,kwave1,kslit1,portlpt0_s,portlpt1_s,kslitsum:
integer;
i,portlpt0,portlpt1,portlpt0_v,portlpt1_v,portlptStop_
v: integer;
v: longint; start_wave,finish_wave: integer;
islit,zapis,wave,kwave,kslit: String;
nm,n1,n,f,e,KnStop,k: byte;
max,wave1,d,dp: real;
reztest,rezsave,rezslit: TModalResult;
F1,F2: TextFile;
implementation
uses SPH26v2, Unit3, Unit4, Unit5;
{$R *.dfm}
{Âèçíà÷åííÿ Delay, PortIn, PortOut}
function IsDriverInstalled : Boolean; stdcall; external
'io.dll';
procedure PortOut(Port : Word; Data : Byte);stdcall;
external 'io.dll';
function PortIn(Port : Word) : Byte;stdcall; external
'io.dll';
procedure Delay(dwMilliseconds:
DWORD{Longint});
var iStart, iStop: DWORD;
begin
iStart := GetTickCount;
repeat
iStop := GetTickCount;
Application.ProcessMessages;
until (iStop - iStart) >= dwMilliseconds;
end;
{******************************************
*****************}
{Àêòèâí³ñòü}
procedure Activ;
begin
Form1.Edit1.Enabled:=True;
Form1.Edit2.Enabled:=True;
Form1.Edit3.Enabled:=True;
Form1.Edit4.Enabled:=True;
Form1.RadioButton1.Enabled:=True;
Form1.RadioButton2.Enabled:=True;
Form1.RadioButton3.Enabled:=True;
Form1.RadioButton4.Enabled:=True;
Form1.Button1.Enabled:=True;
Form1.Button3.Enabled:=True;
Form1.Button4.Enabled:=True;
end;
{Íåàêòèâí³ñòü}
procedure NoActiv;
begin
Form1.Edit1.Enabled:=False;
Form1.Edit2.Enabled:=False;
Form1.Edit3.Enabled:=False;
Form1.Edit4.Enabled:=False;
Form1.RadioButton1.Enabled:=False;
Form1.RadioButton2.Enabled:=False;
Form1.RadioButton3.Enabled:=False;
Form1.RadioButton4.Enabled:=False;
Form1.Button1.Enabled:=False;
Form1.Button3.Enabled:=False;
Form1.Button4.Enabled:=False;
end;
{Íàëàøòóâàííÿ øêàëè äîâæèíè õâèë³}
procedure MotorWave;
begin
Form1.Edit2.Text:=''; Form1.Edit3.Text:='';
v:=StrToInt(Form1.Edit1.Text);
repeat
PortOut($378,portlpt0);Delay(v);
PortOut($378,portlpt1);Delay(v);
until KnStop=0;
end;
{Êàë³áðóâàííÿ ù³ëèíè}
procedure KalibrovkaReading;
begin
Readln(F1,zapis);
n1:=Pos('
',zapis);
wave:=Copy(zapis,1,n1-1); Delete(zapis,1,n1+9);
kwave:=Copy(zapis,1,length(zapis));
kwave1:=StrToInt(kwave);
end;
procedure KalibrovkaWaveMotor;
begin
for k:=1 to kwave1 do
begin
PortOut($378,portlpt0);Delay(v);
PortOut($378,portlpt1);Delay(v);
end;
end;
{Òåñòóâàííÿ äâèãóí³â}
procedure TestMotor;
begin
for k:=1 to kwave1 do
begin
PortOut($378,portlpt0);Delay(v);
PortOut($378,portlpt1);Delay(v);
end;
if kslit1>0 then
begin
portlpt0_s:=portlpt0_SlitF;
portlpt1_s:=portlpt1_SlitF;
end;
if kslit1<0 then
begin
kslit1:=-kslit1;
portlpt0_s:=portlpt0_SlitB;
portlpt1_s:=portlpt1_SlitB;
end;
for k:=1 to kslit1 do
begin
PortOut($378,portlpt0_s);Delay(v);
PortOut($378,portlpt1_s);Delay(v);
end;
end;
{Ç÷èòóâàííÿ ç ôàéëó Slitf/Slitb}
procedure Reading;
begin
Readln(F1,zapis);
n1:=Pos('
',zapis);
wave:=Copy(zapis,1,n1-1); Delete(zapis,1,n1+9);
n1:=Pos('
',zapis);
kwave:=Copy(zapis,1,n1-1); Delete(zapis,1,n1+9);
kslit:=Copy(zapis,1,length(zapis));
kwave1:=StrToInt(kwave);
kslit1:=StrToInt(kslit);
end;
{Âèì³ðþâàííÿ}
procedure init;
begin n:=12;
PortOut($378,portlpt0_v); Delay(1);
PortOut($378,portlpt1_v); Delay(1);
end;
procedure acquisition;
begin
PortOut($378,portlpt0_v); d:=0;
PortOut($378,portlpt0_v);
PortOut($378,portlpt1_v);
PortOut($378,portlpt0_v);
PortOut($378,portlpt1_v);
for f:=0 to n-1 do begin
PortOut($378,portlpt0_v);
e:=PortIn($379) and 128;
PortOut($378,portlpt1_v);
if e=0 then d:=d+exp((n-1-f)*ln(2));
end;
d:=(max*d)/(exp((n)*ln(2))-1);
PortOut($378,portlptStop_v);
end;
{******************************************
*****************}
{ÂÏÅÐÅÄ}
procedure TForm1.Button3Click(Sender: TObject);
begin
max:=StrToFloat(Edit5.Text);
NoActiv; KnStop:=8; kslitsum:=0; dp:=0; i:=2;
portlpt0:=portlpt0_WaveF;
portlpt1:=portlpt1_WaveF;
portlpt0_v:=portlpt0_VimirF;
portlpt1_v:=portlpt1_VimirF;
portlptStop_v:=portlptStop_VimirF;
if
(RadioButton1.Checked)or(RadioButton2.Checked)o
r(RadioButton3.Checked)then
begin
rezslit:=MessageDlg('Äëÿ "Òåñòóâàííÿ
äâèãóí³â/Êàë³áðóâàííÿ ù³ëèíè" ïåðåâ³ðòå'+
' ÷è äîâæèíà õâèë³'#10#13'â³äïîâ³äຠïî÷àòêó
øêàëè (186íì) ³ â³äêðèéòå'+
' ù³ëèíó íà 100% ïðîïóñêàííÿ!'#10#13'Äëÿ
"Âèì³ðþâàííÿ" ââåä³òü ïî÷àòêîâó'+
' òà ê³íöåâó äîâæèíó õâèë³.
Ïðîäîâæèòè?',mtCustom,[mbOk,mbNo],0);
if rezslit=mrNo then begin Activ; exit; end;
end;
if RadioButton4.Checked then {Íàëàøòóâàííÿ øêàëè
äîâæèíè õâèë³}
begin MotorWave; Activ; end;
if RadioButton3.Checked then {Òåñòóâàííÿ
äâèãóí³â}
begin
Edit2.Text:='186'; Edit3.Text:='1200';
AssignFile(F1,'Slitf.txt'); Reset(F1);
Readln(F1,zapis);
repeat
Reading; Edit3.Text:=wave; TestMotor;
until (KnStop=0)or(EOF(F1));
CloseFile(F1); ShowMessage('Òåñòóâàííÿ äâèãóí³â
çàâåðøåíî!');
PortOut($378,portlptStop_v); Activ;
end;
if RadioButton2.Checked then {Êàë³áðóâàííÿ ù³ëèíè}
begin
Edit2.Text:='186'; Edit3.Text:='1200';
AssignFile(F1,'Wavef.txt'); Reset(F1);
AssignFile(F2,'Slitf.txt'); Rewrite(F2);
Writeln(F2,'Äîâæ_õâ,íì | ','êðîêWave | ','êðîêSlit');
Readln(F1,zapis); Series1.Clear;
repeat
KalibrovkaReading;
init; acquisition; dp:=0; islit1:=0;
//******************************************
****************
{repeat
if (d-dp)>0 then
begin
islit1:=islit1+1;
PortOut($378,portlpt0_SlitF);Delay(v);
PortOut($378,portlpt1_SlitF);Delay(v);
end;
if (d-dp)<0 then
begin
islit1:=islit1-1;
PortOut($378,portlpt0_SlitB);Delay(v);
PortOut($378,portlpt1_SlitB);Delay(v);
end;
dp:=d; init; acquisition;
until (0.9*max<=d)and(d<=max); }
//******************************************
*****************
wave1:=StrToFloat(wave); islit:=IntToStr(islit1);
Series1.AddXY(wave1,d,'',clRed); //âèâåäåííÿ íà
åêðàí
Append(F2);Writeln(F2,wave,'
',kwave,'
',islit);
Edit3.Text:=wave;
KalibrovkaWaveMotor;
until (KnStop=0)or(EOF(F1));
if KnStop=0 then
begin
ShowMessage('Êàë³áðóâàííÿ íå çàâåðøåíî! Äàí³
çáåðåæåí³ íå áóäóòü!');
CloseFile(F1); CloseFile(F2); Activ; Exit;
end;
if (EOF(F1)) then
begin
ShowMessage('Êàë³áðóâàííÿ çàâåðøåíî! Äàí³
çáåðåæåí³ ó ôàéë Slitf.txt!');
CloseFile(F1);CloseFile(F2); Activ; Exit;
end;
end;
if RadioButton1.Checked then {Âèì³ðþâàííÿ}
begin
start_wave:=StrToInt(Edit2.Text);
finish_wave:=StrToInt(Edit3.Text);
if start_wave>finish_wave then
begin
ShowMessage('Ââåä³òü ïðàâèëüíî ä³àïàçîí
âèì³ðþâàíü!');
Activ; Exit;
end;
AssignFile(F1,'Slitf.txt'); Reset(F1);
AssignFile(F2,GetCurrentDir+'/DataSph_26/Tempdat
.txt'); Rewrite(F2);
Writeln(F2,'Äîâæ_õâ,íì | ','Ïðîïóñêàííÿ,%');
Readln(F1,zapis);
repeat
Reading; kslitsum:=kslitsum+kslit1;
until
(start_wave=StrToInt(wave))or(KnStop=0)or(EOF(F
1));
if EOF(F1)and(start_wave<>StrToInt(wave)) then
begin
ShowMessage('Çàäàíå çíà÷åííÿ ïî÷àòêîâî¿
äîâæèíè õâèë³ íå çíàéäåíå!');
CloseFile(F1); CloseFile(F2); Activ; Exit;
end;
if start_wave=StrToInt(wave) then
begin
for k:=0 to abs(kslitsum) do
begin
if kslitsum>0 then begin
PortOut($378,portlpt0_SlitF);Delay(v);
PortOut($378,portlpt1_SlitF);Delay(v);
end;
if kslitsum<0 then begin
PortOut($378,portlpt0_SlitB);Delay(v);
PortOut($378,portlpt1_SlitB);Delay(v);
end;
end;
Series1.Clear;
init; acquisition;
Series1.AddXY(StrToFloat(wave),d,'',clRed);//âèâåäå
ííÿ íà åêðàí
if start_wave=finish_wave then
begin CloseFile(F1); CloseFile(F2); Activ;
Exit; end;
Append(F2);Writeln(F2,wave,'
',FloatToStr(d));
repeat
Reading; TestMotor;
if (i mod StrToInt(Edit4.Text)=0) then
begin
init; acquisition;
Series1.AddXY(StrToFloat(wave),d,'',clRed);//âèâåäå
ííÿ íà åêðàí
Append(F2);Writeln(F2,wave,'
',FloatToStr(d));
Edit3.Text:=wave;
end;
i:=i+1;
until
(StrToInt(wave)>=finish_wave)or(KnStop=0)or(EOF
(F1));
if (StrToInt(wave)>=finish_wave)or(EOF(F1))
then
begin
CloseFile(F1); CloseFile(F2);
rezsave:=MessageDlg('Âèì³ðþâàííÿ
çàâåðøåí³!'+
' Çáåðåãòè ðåçóëüòàòè
âèì³ðþâàíü?',mtCustom,[mbOk,mbNo],0);
if rezsave=mrOk then Form5.ShowModal;
Activ; Exit;
end;
end;
if KnStop=0 then
begin
ShowMessage('Âèì³ðþâàííÿ íå çàâåðøåí³! Äàí³
çáåðåæåí³ íå áóäóòü!');
CloseFile(F1); CloseFile(F2); Activ; Exit;
end;
end;
end;
{ÍÀÇÀÄ}
procedure TForm1.Button1Click(Sender: TObject);
begin
max:=StrToFloat(Edit5.Text);
NoActiv; KnStop:=8; kslitsum:=0; dp:=0; i:=2;
portlpt0:=portlpt0_WaveB;
portlpt1:=portlpt1_WaveB;
portlpt0_v:=portlpt0_VimirB;
portlpt1_v:=portlpt1_VimirB;
portlptStop_v:=portlptStop_VimirB;
if
(RadioButton1.Checked)or(RadioButton2.Checked)o
r(RadioButton3.Checked)then
begin
rezslit:=MessageDlg('Äëÿ "Òåñòóâàííÿ
äâèãóí³â/Êàë³áðóâàííÿ ù³ëèíè" ïåðåâ³ðòå'+
' ÷è äîâæèíà õâèë³'#10#13'â³äïîâ³äຠê³íöþ øêàëè
(1200íì) ³ â³äêðèéòå'+
' ù³ëèíó íà 100% ïðîïóñêàííÿ!'#10#13'Äëÿ
"Âèì³ðþâàííÿ" ââåä³òü ïî÷àòêîâó'+
' òà ê³íöåâó äîâæèíó õâèë³.
Ïðîäîâæèòè?',mtCustom,[mbOk,mbNo],0);
if rezslit=mrNo then begin Activ; exit; end;
end;
if RadioButton4.Checked then {Íàëàøòóâàííÿ øêàëè
äîâæèíè õâèë³}
begin MotorWave; Activ; end;
if RadioButton3.Checked then {Òåñòóâàííÿ äâèãóí³â}
begin
Edit2.Text:='1200'; Edit3.Text:='186';
AssignFile(F1,'Slitb.txt'); Reset(F1);
Readln(F1,zapis);
repeat
Reading; Edit3.Text:=wave; TestMotor;
until (KnStop=0)or(EOF(F1));
CloseFile(F1); ShowMessage('Òåñòóâàííÿ äâèãóí³â
çàâåðøåíî!');
PortOut($378,portlptStop_v); Activ;
end;
if RadioButton2.Checked then {Êàë³áðóâàííÿ ù³ëèíè}
begin
Edit2.Text:='1200'; Edit3.Text:='186';
AssignFile(F1,'Waveb.txt'); Reset(F1);
AssignFile(F2,'Slitb.txt'); Rewrite(F2);
Writeln(F2,'Äîâæ_õâ,íì | ','êðîêWave | ','êðîêSlit');
Readln(F1,zapis); Series1.Clear;
repeat
KalibrovkaReading;
init; acquisition; dp:=0; islit1:=0;
//******************************************
***************
{repeat
if (d-dp)>0 then
begin
islit1:=islit1+1;
PortOut($378,portlpt0_SlitF);Delay(v);
PortOut($378,portlpt1_SlitF);Delay(v);
end;
if (d-dp)<0 then
begin
islit1:=islit1-1;
PortOut($378,portlpt0_SlitB);Delay(v);
PortOut($378,portlpt1_SlitB);Delay(v);
end;
dp:=d; init; acquisition;
until (0.9*max<=d)and(d<=max); }
//******************************************
****************
wave1:=StrToFloat(wave); islit:=IntToStr(islit1);
Series1.AddXY(wave1,d,'',clRed); //âèâåäåííÿ íà
åêðàí
Append(F2);Writeln(F2,wave,'
',kwave,'
',islit);
Edit3.Text:=wave;
KalibrovkaWaveMotor;
until (KnStop=0)or(EOF(F1));
if KnStop=0 then
begin
ShowMessage('Êàë³áðóâàííÿ íå çàâåðøåíî! Äàí³
çáåðåæåí³ íå áóäóòü!');
CloseFile(F1); CloseFile(F2); Activ; Exit;
end;
if (EOF(F1)) then
begin
ShowMessage('Êàë³áðóâàííÿ çàâåðøåíî! Äàí³
çáåðåæåí³ ó ôàéë Slitb.txt!');
CloseFile(F1);CloseFile(F2); Activ; Exit;
end;
end;
if RadioButton1.Checked then {Âèì³ðþâàííÿ}
begin
start_wave:=StrToInt(Edit2.Text);
finish_wave:=StrToInt(Edit3.Text);
if start_wave<finish_wave then
begin
ShowMessage('Ââåä³òü ïðàâèëüíî ä³àïàçîí
âèì³ðþâàíü!');
Activ; Exit;
end;
AssignFile(F1,'Slitb.txt'); Reset(F1);
AssignFile(F2,GetCurrentDir+'/DataSph_26/Tempdat
.txt'); Rewrite(F2);
Writeln(F2,'Äîâæ_õâ,íì | ','Ïðîïóñêàííÿ,%');
Readln(F1,zapis);
repeat
Reading; kslitsum:=kslitsum+kslit1;
until
(start_wave=StrToInt(wave))or(KnStop=0)or(EOF(F
1));
if EOF(F1)and(start_wave<>StrToInt(wave)) then
begin
ShowMessage('Çàäàíå çíà÷åííÿ ïî÷àòêîâî¿
äîâæèíè õâèë³ íå çíàéäåíå!');
CloseFile(F1); CloseFile(F2); Activ; Exit;
end;
if start_wave=StrToInt(wave) then
begin
for k:=0 to abs(kslitsum) do
begin
if kslitsum>0 then begin
PortOut($378,portlpt0_SlitF);Delay(v);
PortOut($378,portlpt1_SlitF);Delay(v);
end;
if kslitsum<0 then begin
PortOut($378,portlpt0_SlitB);Delay(v);
PortOut($378,portlpt1_SlitB);Delay(v);
end;
end;
Series1.Clear;
init; acquisition;
Series1.AddXY(StrToFloat(wave),d,'',clRed);//âèâåäå
ííÿ íà åêðàí
if start_wave=finish_wave then
begin CloseFile(F1); CloseFile(F2); Activ;
Exit; end;
Append(F2);Writeln(F2,wave,'
',FloatToStr(d));
repeat
Reading; TestMotor;
if (i mod StrToInt(Edit4.Text)=0) then
begin
init; acquisition;
Series1.AddXY(StrToFloat(wave),d,'',clRed);//âèâåäå
ííÿ íà åêðàí
Append(F2);Writeln(F2,wave,'
',FloatToStr(d));
Edit3.Text:=wave;
end;
i:=i+1;
until
(StrToInt(wave)<=finish_wave)or(KnStop=0)or(EOF
(F1));
if (StrToInt(wave)<=finish_wave)or(EOF(F1))
then
begin
CloseFile(F1); CloseFile(F2);
rezsave:=MessageDlg('Âèì³ðþâàííÿ
çàâåðøåí³!'+
' Çáåðåãòè ðåçóëüòàòè
âèì³ðþâàíü?',mtCustom,[mbOk,mbNo],0);
if rezsave=mrOk then Form5.ShowModal;
Activ; Exit;
end;
end;
if KnStop=0 then
begin
ShowMessage('Âèì³ðþâàííÿ íå çàâåðøåí³! Äàí³
çáåðåæåí³ íå áóäóòü!');
CloseFile(F1); CloseFile(F2); Activ; Exit;
end;
end;
end;
{******************************************
*****************}
{Ñòîï}
procedure TForm1.Button2Click(Sender: TObject);
begin
KnStop:=0; PortOut($378,portlptStop_v);
end;
{Âèõ³ä ç ïðîãðàìè ç ãîëîâíîãî â³êíà}
procedure TForm1.Button4Click(Sender: TObject);
begin
Close;
end;
{³äêðèòòÿ ôàéëó äàíèõ}
procedure TForm1.N2Click(Sender: TObject);
begin
OpenDialog1.Execute;
AssignFile(F1,OpenDialog1.FileName); Reset(F1);
Series1.Clear;
Readln(F1,zapis);
Readln(F1,zapis);
repeat
nm:=Pos('
',zapis);
wave:=Copy(zapis,1,nm-1); Delete(zapis,1,nm+9);
kwave:=Copy(zapis,1,length(zapis));
Series1.AddXY(StrToFloat(wave),StrToFloat(kwave
),'',clRed);//âèâåäåííÿ íà åêðàí
Readln(F1,zapis);
until EOF(F1);
Form1.Chart1.Title.Text.Text:=zapis;
SetCurrentDir(a);
end;
{Çáåðåæåííÿ äàíèõ ó ôàéë}
procedure TForm1.N3Click(Sender: TObject);
begin
Form5.ShowModal;
end;
{Âèõ³ä ç ïðîãðàìè ç ãîëîâíîãî ìåíþ}
procedure TForm1.N4Click(Sender: TObject);
begin
Close;
end;
{Ïðî ïðîãðàìó}
procedure TForm1.N5Click(Sender: TObject);
begin
Form2.ShowModal;
end;
{³äêðèòòÿ â³êíà ç ³íñòðóêö³ºþ}
procedure TForm1.N6Click(Sender: TObject);
begin
Form3.ShowModal;
end;
{³äêðèòòÿ â³êíà ç³ ñõåìîþ}
procedure TForm1.N7Click(Sender: TObject);
begin
Form4.ShowModal;
end;
end.
unit SPH26v2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes,
Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls;
type
TForm2 = class(TForm)
Button1: TButton;
RichEdit1: TRichEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject);
begin
Close;
end;
end.
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes,
Graphics, Controls, Forms,
Dialogs, StdCtrls, Menus, ExtCtrls;
type
TForm3 = class(TForm)
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
GroupBox3: TGroupBox;
GroupBox4: TGroupBox;
GroupBox5: TGroupBox;
RadioButton3: TRadioButton;
RadioButton4: TRadioButton;
RadioButton5: TRadioButton;
RadioButton6: TRadioButton;
RadioButton7: TRadioButton;
RadioButton8: TRadioButton;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Button7: TButton;
Button8: TButton;
Button9: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Button10: TButton;
Button11: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure Button9Click(Sender: TObject);
procedure Button10Click(Sender: TObject);
procedure Button11Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
const
portlpt0_WaveF=46;
portlpt0_WaveB=44;//Îáåðòàííÿ äâèãóíà øêàëè
portlpt1_WaveF=47; portlpt1_WaveB=45;//äîâæèíè
õâèë³ Âïåðåä/Íàçàä
portlpt0_SlitF=42; portlpt0_SlitB=40;//Îáåðòàííÿ
äâèãóíà øêàëè
portlpt1_SlitF=43; portlpt1_SlitB=41;//øèðèíè ù³ëèíè
Âïåðåä/Íàçàä
portlptStop_VimirF=38;
//Ñòîï Âïåðåä
portlptStop_VimirB=36;
//Ñòîï Íàçàä
var
Form3: TForm3;
i,RegStop,portlpt0,portlpt1,napriam,motor: integer;
v: longint;
iw,j1,j2: integer;
F1,F2: TextFile;
implementation
{$R *.dfm}
{Âèçíà÷åííÿ Delay, PortIn, PortOut}
function IsDriverInstalled : Boolean; stdcall; external
'io.dll';
procedure PortOut(Port : Word; Data : Byte);stdcall;
external 'io.dll';
function PortIn(Port : Word) : Byte;stdcall; external
'io.dll';
procedure Delay(dwMilliseconds:
DWORD{Longint});
var
iStart, iStop: DWORD;
begin
iStart := GetTickCount;
repeat
iStop := GetTickCount;
Application.ProcessMessages;
until (iStop - iStart) >= dwMilliseconds;
end;
//******************************************
*****************
{Âèáið ðåæèìó ðîáîòè}
procedure TForm3.Button10Click(Sender: TObject);
begin
GroupBox1.Enabled:=True;
GroupBox3.Enabled:=False;
j1:=0; j2:=0; i:=0;
end;
procedure TForm3.Button11Click(Sender: TObject);
begin
GroupBox3.Enabled:=True;
GroupBox1.Enabled:=False;
end;
//******************************************
*****************
{Òåñòóâàííÿ äâèãóí³â}
procedure TForm3.Button8Click(Sender: TObject);
begin
Edit5.Text:=''; v:=StrToInt(Edit4.Text); RegStop:=8;
if
(RadioButton5.Checked)and(RadioButton7.Checked)
then
begin
portlpt0:=portlpt0_WaveF;
portlpt1:=portlpt1_WaveF;
end;
if
(RadioButton5.Checked)and(RadioButton8.Checked)
then
begin
portlpt0:=portlpt0_WaveB;
portlpt1:=portlpt1_WaveB;
end;
if
(RadioButton6.Checked)and(RadioButton7.Checked)
then
begin
portlpt0:=portlpt0_SlitF;
portlpt1:=portlpt1_SlitF;
end;
if
(RadioButton6.Checked)and(RadioButton8.Checked)
then
begin
portlpt0:=portlpt0_SlitB;
portlpt1:=portlpt1_SlitB;
end;
repeat
PortOut($378,portlpt0);Delay(v);
PortOut($378,portlpt1);Delay(v);
i:=i+1; Edit5.Text:=IntToStr(i); Delay(v);
until RegStop=0;
PortOut($378,portlptStop_VimirF);
RegStop:=8; i:=0;
end;
procedure TForm3.Button9Click(Sender: TObject);
{Ñòîï Òåñòóâàííÿ}
begin
RegStop:=0;
end;
//******************************************
*****************
{Êàë³áðóâàííÿ}
procedure TForm3.Button3Click(Sender: TObject);
{Íàçàä íà 1}
begin
Edit2.Text:=''; Edit3.Text:='';
v:=StrToInt(Edit1.Text);
PortOut($378,portlpt1_WaveB);Delay(v);
PortOut($378,portlpt0_WaveB);Delay(v);
i:=i-1; Edit2.Text:=IntToStr(i);
end;
procedure TForm3.Button4Click(Sender: TObject);
{Âïåðåä íà 1}
begin
Edit2.Text:=''; Edit3.Text:='';
v:=StrToInt(Edit1.Text);
PortOut($378,portlpt1_WaveF);Delay(v);
PortOut($378,portlpt0_WaveF);Delay(v);
i:=i+1; Edit2.Text:=IntToStr(i);
end;
procedure TForm3.Button5Click(Sender: TObject);
{Íàçàä}
begin
Edit2.Text:=''; Edit3.Text:=''; RegStop:=8;
v:=StrToInt(Edit1.Text);
repeat
PortOut($378,portlpt0_WaveB); Delay(v);
PortOut($378,portlpt1_WaveB); Delay(v);
i:=i-1; Edit2.Text:=IntToStr(i);
until RegStop=0;
PortOut($378,portlptStop_VimirB); RegStop:=8;
end;
procedure TForm3.Button6Click(Sender: TObject);
{Ñòîï Êàë³áðóâàííÿ}
begin
RegStop:=0; PortOut($378,portlptStop_VimirF);
end;
procedure TForm3.Button7Click(Sender: TObject);
{Âïåðåä}
begin
Edit2.Text:=''; Edit3.Text:=''; RegStop:=8;
v:=StrToInt(Edit1.Text);
repeat
PortOut($378,portlpt0_WaveF); Delay(v);
PortOut($378,portlpt1_WaveF); Delay(v);
i:=i+1; Edit2.Text:=IntToStr(i);
until RegStop=0;
PortOut($378,portlptStop_VimirF); RegStop:=8;
end;
procedure TForm3.Button2Click(Sender: TObject);
{Çàïèñ}
begin
if Edit3.Text='' then begin
ShowMessage('Ââåä³òü çíà÷åííÿ äîâæèíè õâèë³, ùî
â³äïîâ³äຠäàí³é ê³ëüêîñò³ êðîê³â äâèãóíà!');
exit;
end;
iw:=StrToInt(Edit3.Text);
if (RadioButton3.Checked) then
begin
if j1=0 then
begin
AssignFile(F1,'Wavef.txt'); Rewrite(F1);
Writeln(F1,'Äîâæ_õâ,íì | ','êðîêWave');
Writeln(F1,iw,'
',i); j1:=j1+1;
CloseFile(F1);
end
else
begin
Append(F1);
Writeln(F1,iw,'
',i);
CloseFile(F1);
end;
end;
if (RadioButton4.Checked) then
begin
if j2=0 then
begin
AssignFile(F2,'Waveb.txt'); Rewrite(F2);
Writeln(F2,'Äîâæ_õâ,íì | ','êðîêWave');
Writeln(F2,iw,'
',i); j2:=j2+1;
CloseFile(F2);
end
else
begin
Append(F2);
Writeln(F2,iw,'
',i);
CloseFile(F2);
end;
end;
i:=0; iw:=0; PortOut($378,portlptStop_VimirF);
end;
//******************************************
*****************
procedure TForm3.Button1Click(Sender: TObject);
begin
PortOut($378,portlptStop_VimirF); Close;
end;
end.
unit Unit4;
interface
uses
Windows, Messages, SysUtils, Variants, Classes,
Graphics, Controls, Forms,
Dialogs, jpeg, ExtCtrls;
type
TForm4 = class(TForm)
Image1: TImage;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form4: TForm4;
implementation
{$R *.dfm}
end.
Додаток 10
Початок
Виставлення
початкових значень на
шкалах довжини хвилі
та ширини щілини
Задання швидкості
вимірювання
Запуск процесу
вимірювання
Натиснута кнопка
«Стоп»
Запис у файл
Передача даних на двигун
Кінець
362.
8050
1020
130
13Д
4
Змн. Арк.
№ докум.
Підпис Дата
Арк.
362. 805010201 3 013 Д4
Розробив
Самойлова С.В.
Перевірив
Воробець О.І.
Т. Контр.
Н. Контр.
Баловсяк С.В.
Затверд.
Мельничук С.В
Апаратно-програмне забез-
печення для автоматизації
СФ-26
Алгоритм проведення вимі-
рювань
Літ.
Аркушів
Кафедра комп’ютерних сис-
тем та мереж, група 521
Реценз.
Маса
Масштаб
1:1
Додаток 12
Інструкція з проведення калібрування та вимірювання автоматизова-
ним СФ-26.
Калібрування двигуна шкали довжини хвилі
1. На шкалі довжини хвилі приладу СФ-26 виставити мітку на початкову
довжину хвилі.
2. Активувати поля "Шкала довжини хвилі" і "Запис даних у файл".
3. Записати у поле "Швидкість обертання двигуна" число в межах
1..2000000000, котре задає тривалість затримки імпульсів (що подають-
ся на обмотки електродвигуна), і тому є обернено пропорційним до са-
мої величини швидкості обертання електродвигуна.
4. Натиснути кн."Вперед" і запустити електродвигун шкали довжини хви-
лі. При співпаданні потрібної довжини хвилі з міткою, відпустити
кн."Вперед" і зупинити електродвигун. При необхідності кн."Назад" і
"Вперед" провести точне налаштування, прокручуючи двигун на 1 крок
короткочасним натисненням на дані кнопки.
5. Кн."Запис" записати у файл даних ("Wave.txt") кількість кроків елект-
родвигуна між попередньою і поточною довжинами хвилі шкали. Пун-
кти 4-5 повторювати до кінця шкали довжини хвилі.
Калібрування двигуна шкали ширини щілини
1. Попередньо роздрукувати таблицю калібрування двигуна шкали дов-
жини хвилі (файл "Wave.txt").
2. На шкалах довжини хвилі та ширини щілини приладу СФ-26 виставити
мітки на їх початкові значення.
3. Записати у поле "Швидкість обертання двигуна" число в межах
1..2000000000 (див. п.3 - "Калібрування двигуна шкали довжини хви-
лі").
4. Активувати поле "Шкала довжини хвилі".
5. Кн."Вперед" відповідно до таблиці прокрутити двигун шкали довжини
хвилі на перше значення, записане в таблиці.
6. Активувати поле "Ширина щілини".
7. Запустити двигун шкали ширини щілини і відрегулювати потрібну ши-
рину щілини приладу СФ-26 (кн."Назад","Вперед").
УВАГА! При регулюванні ширини щілини кн."Назад" на N кроків, а по-
тім кн."Вперед" на М кроків,недопустимо, щоб M>N. І навпаки: при регулю-
ванні ширини щілини кн."Вперед" на М кроків, а потім кн."Назад" на N кро-
ків, не можна, щоб N>M. Тобто, для першого випадку: різниця N-M, а для
другого М-N мають бути >0 (додатними). Недотримання даних вимог приве-
де до неправильно створеного файлу даних Slit.txt,що, в свою чергу, суттєво
вплине на точність проведення вимірювань!
8. Активувати поле "Запис даних у файл".
9. Кн."Запис" записати у файл даних ("Slit.txt") кількість кроків електрод-
вигуна шкали ширини щілини між попереднім і поточним значенням
ширини щілини.
10. Повторювати п.п.4-9 для всіх значень до кінця таблиці калібрування
двигуна шкали довжини хвилі.
Для повторного калібрування двигунів відповідних шкал потрібно зно-
ву натиснути кн."Калібрування", але при цьому (УВАГА!) не збережуться
попередні файли калібрування (нові файли будуть збережені під тими сами-
ми іменами: Wave.txt і Slit.txt)
Вимірювання
1. На шкалах довжини хвилі та ширини щілини приладу СФ-26 виставити
мітки на їх початкові значення.
2. Записати у поле "Швидкість вимірювання" число в межах
1..2000000000 (див. п.3 - "Калібрування двигуна шкали довжини хви-
лі").
3. Запустити процес вимірювання (кн."Пуск"), про завершення якого про-
грама видасть повідомлення.
Зупинити вимірювання в будь-який момент часу можна кн."Стоп". Ре-
зультати вимірювань, відображених у вікні програми можна записати у файл
даних з допомогою меню Файл/Зберегти. Переглянути Файли даних, виміря-
них раніше - з допомогою меню Файл/Відкрити.
Информация о работе Апаратно-програмне забезпечення для автоматизації спектрофотометра сф-26