Смекни!
smekni.com

Схема електрична принципова Луноходу з мікроконтролерним управлінням (стр. 2 из 3)

2. Спеціальний розділ

2.1. Вибір і обґрунтування елементної бази

В схемі проектованого мною пристрою використано МК AT90S2313, технічні характеристики якого вказано у розділі 1.2, в схемі також є кварцовий резонатор з частотою 5 МГц, але можна використовувати будь-який інший до 10 МГц.

Для захисту виходу порту мікроконтролера від пошкоджень у випадку пробою польового транзистора VT3 (КП130Е) використано опір R7 (1 кОм) для обмеження струму через еміттерний перехід.

Синхронний детектор виконано на польовому транзисторі VT3 (КП 130Е), його використання обумовлене тим, що під час роботи локатора на резисторі R3 створюється не лише коливання частотою біля 1220 Гц, а й пульсації частотою 100 Гц від ламп накалювання та інші випадкові перешкоди, як в видимому так і в інфрачервоному діапазоні, що могло б призвести до хибного спрацювання, так як рівень таких перешкод може бути рівновеликим з рівнем відбитого робочого сигналу інфрачервоного випромінювання.

Спочатку в моделі було застосовано двигуни з великим споживаним струмом (біля 600 мА), але вини були джерелом інтенсивних імпульсних перешкод. Їх прийшлося замінити на біль економічні, такі що створюють значно менші перешкоди, двигуни ДПБ-902. Можливе використання і інших колекторних двигунів від магнітофонів і магнітол.

2.2. Принцип роботи окремих ВС з використанням часових діаграм

В даному розділі курсового проекту детально описано режимі адресації МК AT90S1200. Дані, над якими виконують операції знаходяться в регістрі r (Rr) іd(Rd).

Пряма регістрова адресація з двома регістрами – Rr і Rd.

Дані, над якими виконують операції знаходяться в регістрі r (Rr) іd(Rd). Результат операції зберігається у регістрі d(Rd).

Рисунок 2.2.1. – Пряма регістрова адресація з одним регістром

Рисунок 2.2.2. – Пряма регістрова адресація з двома регістрами

Схема прямої адресації до області вводу/виводу даних зображена на рисунку 2.2.3. На рисунку п – адреса регістру, використаного в операції, який знаходиться безпосередньо в коді команди, в бітах 0…5.


Рисунок 2.2.3. - Пряма адресація до області вводу/виводу

Схема прямої адресації до пам’яті даних зображена на рисунку 2.2.4.

16-розрядна адреса чарунки пам’яті знаходиться в коді команди, яка складається з двох слів. Rr/Rd визначає регістр, який використовується при роботі з пам’яттю даних.

Схема непрямої адресації до пам’яті даних зі здвигом зображена на рисунку 2.2.4. Адреса операнда визначається як сума вмісту Z або Y регістра і біт 0…5 коду команди.

Рисунок 2.2.4. – Схема непрямої адресації до пам’яті даних зі здвигом

Схема непрямої адресації до пам’яті даних зображена на рисунку 2.2.5. Адреса операнда знаходиться в Х-, Y-, або Z-регістрі.

Рисунок 2.2.5. - Схема непрямої адресації до пам’яті даних.

2.3. Принцип роботи пристрою згідно схеми електричної принципової

На основі цієї схеми лежить економічний восьмибітний КМОП мікроконтролер (МК) АТ90S2313, налаштований з використанням розширеної архітектури AVR. Тактову частоту задає кварцевий резонатор ZQ1 на частоту 5 мГц (вона може досягати до 10 мГц). Ланцюг из резистора R13 и конденсатора С12 служать для онулення МК в момент ввімкнення живлення. Рознімання Х1 призначене для швидкого з'єднання и розєднання МК і решти пристроїв, а також для підключенняМК до комп'ютера з метою оновлення програми або діагностики роботи.

Крім мікроконтролера, прилад має імпульсний передавач ІЧ випромінювання (VT4,VD2), приймач захищений від перешкод випромінювання, складається із світлодіода VD1, Двокаскадного підсилювача (VT1, VT2) і синхронного детектора (VT3), і чотирьох електронних ключів (1 VT1-1 VT3,...,4 VT1-4 VT3). Живеться пристрій від батареї, складається з чотирьох акумуляторів з ємністю 1500 мА. ч, які встановлюються в передбачений модельний відсік. Напруга живлення мікроконтролера і приймача ІЧ випромінювання підтримується незмінною мікросхемним стабілізатором напруги DА1.

В процесі роботи з виходу порту РD0 на базу транзистора VT4 послідовно надходять імпульси з частотою приблизно 1220Гц. В результаті він періодично відкривається, ввімкнений в її колекторний ланцюг світлодіод VT2 і створює в напрямі руху моделі пульсуюче з вказаною частотою ІЧ випромінювання. Резистор R7 обмежує напругу через емітерний перехід транзистора і захищає вихід порта МК від пошкодження при пробої цього переходу. Максимальну напруга через світлодіод обмежує резисто R9.

Відображена перешкода ІЧ випромінювання сприймає фотодіод VD2, ввімкнений паралельно резистору R2, через який здійснюється ООС по постійному струмі, охоплюючи двухкаскадним підсилювачем на транзисторах VT1, VT2. Импульси напруги з колектора транзистора VT2 поступають на синхронний детектор, виконаний на польовому транзисторі VT3. Його застосування обумовлено тим, що під час роботи локатора на резисторі R3 створюють не тільки коливання з частотою приблизно 1220 Гц, але й пульсації частотою 100 Гц. Програмне управління передатчиком ІЧ випромінювання проводиться записом деякого числа в порт DМК. Якщо молодший біт цього числа рівний-0, світлодіод VD2 погасне, а якщо він рівний-1, включиться.

Послідовна зміна значень цього біта приводить до появи зпереду моделі пульсуючого рівня освітлення в ІЧ частини спектра. Рівень відображеного випромінювання фіксується фотодатчиком, и при його зростанні робить попередження що попереду е перешкода.

3. Експлуатаційний розділ

3.1. Ініціалізація програмуємих ВІС

Після подачі сигналу скидання в той час включається живлення МК починає виконувати програму з відмітки старт. В цій частині програми проводиться начальна ініціалізація стека, резисторів, портів ввода/вивода В і D, аналогового компаратора, Восьмирозрядного таймера, встановлюються частота слідована імпульсам на таймері, рівна СК/8(СК-тактова частота яка дорівнює 5 мГц).

Програму ініціалізації та тестування роботи пристрою наведено в пункті 3.2.

3.2. Тест перевірки окремих вузлів або пристроїв

В даному розділі вашій увазі представлено програму ініціалізації та тестування мікросхеми пристрою:

bigpauseequ100; задаємо значення стартової паузи

pause1egu15; значення паузи перед зміною напрямку руху

pause2equ50; задаємо час, на протязі якого планетохід буде від'їжджати назад

pause2equ50; задаємо час, на протязі якого планетохід буде розвертатися

portAequ05h; адрес порта А

portBequ06h; адрес порта В

org0h; резервування 100 байт починаючи з адресу 0h

reset:

movr31,1Fh; задаємо направлення роботи портів

outportB,r31; PB0, PB1, PB2, PB3, PB4 - виходи, PB5, PB6 - входи

movr31,61h; виводимо в порт В код зупинки двигунів,

outportB,r31; і вмикаємо резистори на входах РВ5, РВ6

movr31,bigpause; записуємо в регістр r31 значення великої паузи

callpause; викликаємо підпрограму паузи

jmpstart; переходимо на мітку старт

start:

movr31,00000011b; установлюємо на виході РВ1 лог.1,

outportB,r31; що зумовлює ввімкнення лівого двигуна

movr31,00001011b; установлюємо на виході РВ3 лог.1,

outportB,r31; що зумовлює ввімкнення правого двигуна

movr31,00001010b; установлюємо на виходіРВ0 лог.0,

outportb,r31; що і гасить світлодіод

scan:

inr31,portB; читаємо стан порту В

testr31,01000000b; перевіряємо чи натиснута права кнопка

jzleft; якщо натиснута, переходимо на мітку left

testr31,00100000b; перевіряємо чи натиснута ліва кнопка

jzright; якщо натиснута, переходимо на мітку right

jmpscan; якщо ні одна кнопка не натиснена, повторяємо цикл перевірки стану кнопок

left:

movr30,63h; записуємо в регістр r30 код повороту наліво, який буде виводиться в порт в

callstop; визиваємо підпрограму stop

jmpstart; повертаємося на мітку start

right:

movr30,69h; записуємо в регістр r30 код повороту направо, який буде виводиться в порт в

callstop; визиваємо підпрограму stop

jmpstart; повертаємся на мітку start

; підпрограма stop, задача якої - ввімкнення потрібного маневру (відїзд, повороти направо та наліво)

stopproc

movr31,00001000b; установлюємо на виході РВ1 лог.0,

outportB,r31; що зумовлює вимкнення лівого двигуна

movr31,00000000b; установлюємо на виході РВ3 лог.0,

outportB,r31; що зумовлює вимкнення правого двигуна

movr31,pause1; записати в регістр r31 значення паузи перед зміною направлення руху

callpause; викликаємо підпрограму pause

movr31,00000100b; встановлюємо на виході РВ2 лог.1,

outportB,r31; що заставляє лівий двигун крутитися в іншу сторону

movr31,00010100bвстановлюэмо на виході РВ4 лог.1,

outportB,r31; що заставляє правий двигун крутитися в іншу сторону

movr31,00010101bвстановлюэмо на виході РВ0 лог.1,

outportB,r31; що запалює світлодіод

movr31,pause2; записати в регістр r31 значення часу, на протязі якого планетохід буде від'їжджати назад

callpause; викликаємо підпрограму pause

movr31,00010101b; встановлюємо на виході РВ2 лог.0,

outportB,r31; що вимикає лівий двигун

movr31,00010001bвстановлюэмо на виході РВ4 лог.0,

outportB,r31; що вимикає правий двигун

movr31,00000000bвстановлюэмо на виході РВ0 лог.0,

outportB,r31; чим гасимо світлодіод

movr31,pause1; записати в регістр r31 значення часу, перед зміною напрямку руху

callpause; викликаємо підпрограму pause

out portB,r30; виводимо в порт В код повороту наліво/направо

movr31,pause3; записати в регістр r31 значення часу, на протязі якого планетохід буде виконувати поворот

callpause; викликаємо підпрограму pause

outportB,r30; записуємо в порт В код відповідаючий повороту направо чи наліво

movr31,pause3; записати в регістр r31 значення часу, на протязі якого планетохід буде виконувати поворот

callpause; викликаємо підпрограму pause

movr31,61h; записуємо в регістр r31 код, відповідний відключенню двигунів