Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
новий документ.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
3 Мб
Скачать
☆

4.1 Опис функцій програмного забезпечення

#include <ADUC841.H> - підключення файлу з описом регістрів спеціальних функцій мікроконтролера ADuC841.

unsigned int peremishchennya_shtoka_davacha - глобальна змінна для збереження даних вимірювання.

void init (void) – функція ініціалізації налаштовує внутрішню периферію контролера та порти на ввід/вивід інформації. До порта Р0 всі виводи підключені через підтягуючий резистор до напруги живлення. Піни Р0.0, Р0.1, Р0.2 налаштовуються на вивід інформації для керування драйвером SLA7078 крокового двигуна. Пін Р0.3 налаштовується на вивід через резистор, який підтягує сигнал до рівня напруги живлення, до якого, через обмежуючий резистор та транзисторний ключ Q1, підключений електромагнітний виконавчий пристрій. Піни Р0.4, Р0.5, Р0.6 налаштовуються на прийом інформації з виводів оптопар №1, №2 та №3. На виводах оптопар ми можемо отримати високий або низький рівень напруги. Пін Р0.7 налаштований на вивід інформації. Він підключений до катодів діодів D6, D7, D8, D9. Порт Р2 налаштовується на вивід інформації, до якого в восьми бітному режимі підключений LCD. Паралельно до пінів Р2.0, Р2.1, Р2.2, Р2.3 підключені кнопки «Star», «Break», «Stop», «Reserve». Пін Р3.2 контролера налаштований на вивід інформації та підключений до піна RS (register select) LCD. Пін Р3.3 налаштований на вивід та заведений на пін R/W (read/write) LCD. Пін Р3.4 налаштований на вивід інформації та підключений до піна E (enable) LCD. Піни Р3.0, Р3.1 налаштовуються один на вхід, інший на вихід, а саме RXD для прийому даних, а TXD для передачі даних на персональний комп’ютер. Пін Р1.0 це канал АЦП який налаштовується на приймання даних. До нього через RC фільтр та подільник підключений індуктивний давач.

unsigned char readKey () – функція повертає значення стану кнопок, які підключені одним виводом до пінів мікроконтролера Р2.0, Р2.1, Р2.2, Р2.3 через резистор, який підтягує сигнал до рівня живлення, та іншими виводами підключені до виводу Р0.7. Для зчитування стану кнопок потрібно на вивід Р0.7 подати високий рівень напруги і зчитати дані з молодшї тетради байтів порта Р2. При цьому якщо кнопка натиснута в фукцію «readKey» буде передаватися низький рівень напруги. Зчитування стану кнопок проводиться не частіше ніж через 50 мс, тому що для будь якого механічного контакту характерне явище вібрації контактної пари, протягом якої контакт декількаразово розмикається-замикається, протягом приблизно 8-12 мс.

void keryvannya_elektromagnitom (char stan_elektromagnity) – функція зберігає значення змінної «stan_elektromagnity», а змінна повертає значення стану електромагніта, який через обмежуючий струм резистор та транзисторний ключ з підтяжкою в верх підключений до виводу Р0.3. Для ввімкнення електромагніту на вивід Р0.3 необхідно подати низький рівень напруги, відповідно для вимкнення подати високий рівень напруги на вивід Р0.3.

«stan_elektromagnity» змінна приймає два значення стану електромагніту:

0 – електромагніт увімкнений;

1 – електромагніт вимкнений;

unsigned char Oputatu_Optopary (char nomer_optoparu) – функція «Oputatu_Optopary» повертає значення номеру оптопар, які підключені до виводів Р0.4, Р0.5, Р0.6 через резистор який підтягує сигнал до рівня живлення. Для зчитування номеру оптопар потрібно на виводи Р0.4, Р0.5, Р0.6 подати низький рівень напруги та чекати коли на колекторі транзисторів оптопар коли появиться високий рівень напруги. Високий рівень напруги повинен встановлюватися на виводах Р0.4, Р0.5, Р0.6 не одразу, а в певній послідовності, яку зберігає змінна «nomer_optoparu», що може приймати три значення:

1 - номер оптопари №1;

2 - номер оптопари №2;

3 - номер оптопари №3;

«stan» – змінна яка зберігає значення стану опропар. Вона може приймати два значення:

1 – на оптопарі встановлений високий рівень напруги;

0 – на оптопарі встановлений низький рівень напруги.

unsigned int oputatu_davach (char result) – змінна зберігає та повертає значення переміщення штока індуктивного давача який підключений до одного виводу аналого-цифрового перетворювача P1.0, через резистивний подільник та RC фільт. Для зчитування даних із індуктивного давача потрібно ввімкнути АЦП. Для його ввімкнення в регістр спеціальних функцій «ADCCON1», потрібно записати байт ініціалізації «0хBC (1011 1100)».

Таблиця 4.1 - Біти регістру ADCCON1

Далі, щоб провести одиничне вимірювання, потрібно записати в ADCCON2

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

Таблиця 4.2 - Біти регістру ADCCON2

Результат перетворення знаходитиметься в регістрах ACDDATAH:ADCDATAL. Далі запускається аналого-цифрова перетворення, яке зберігає результат в змінній «result».

void keruvannya_krokovum_dvugynom (bit CCW) – змінна зберігає значення стану крокового двигуна. До виводів Р0.0, Р0.1, Р0.2 через резистор який підтягує сигнал до рівня живлення підключений драйвер крокового двигуна SLA7078, який через захисні діоди підключений до крокового двигуна. Захисні діоди потрібні для захисту драйвера від напруги само – е.р.с., яка виникає в обмотках двигуна під час її відключення. Керування кроковим двигуном здійснюється шляхом почергового ввімкнення його обмоток. Для кожного двигуна існує гранична частота перемикання перевищення якої приведе до пропускання кроків. Гранична частота обертання залежить від моменту опору двигуна та режиму роботи.

В півкроковому режимі (half stepping) спочатку вмикається перша обмотка, далі – перша і друга, далі – друга, далі – друга і третя і так далі. Кількість кроків в цьому режимі вдвічі більша від паспортної, споживаний струм теж більший.

Завдяки більш плавній роботі вища гранична частота обертання.

Таблиця 4.3 - Послідовність комутацій обмоток в півкроковому режимі

bit CCW змінна яка може примати два значення:

1 - двигун приводиться в рух;

0 – двигун не працює;

static unsigned char StepN – зберігає значення кількості кроків двигуна.

void vuvestu_dani_LCD (void) функція відображає значення зчитані із індуктивного давача та оброблені АЦП на LCD, яке підключене в восьми бітному режимі через підтяжки до виводів Р2.0, Р2.1, Р2.2, Р2.3, Р2.4, Р2.5, Р2.6, Р2.7 та Р3.2, Р3.3, Р3.4, та має можливість регулювання контрастності зображення. Дані на LCD відображаються у вигляді:

  • min – ширина;

  • max – ширина;

  • середнє значення ширини пояска;

  • брак/не брак;

void peredacha_danuh_PC (void) функція організовує передачу даних отриманих в результаті вимірювання через універсальний асинхронний приймач-передавач та послідовний інтерфейс RS-232. який через мікросхему MAX232 підключений до виводів Р3.0 - RXD, та Р3.1 – TXD на персональний комп’ютер;

Мікросхема МАХ232 працює прийомо-передавачем і перетворює сигнали RXD та TXD. Схема забезпечує рівень вихідної напруги, який використовується в RS-232. Стандарт RS-232 передбачає використання напруги від -3В до -25В для кодування логічної одиниці та напруги від 3В до 25В для кодування логічного нуля. Для успішного обміну приймач і передавач має бути налаштованим на одну і ту ж швидкість передавання.

int main() - функція забезпечує правильну послідовність виконання операцій для сприяння правильності роботи пристрою для вимірювання ширини робочих поясків поршневих кілець.