Розробка системи керування крокового двигуна з допомогою джойстика на навчально-налагоджувальному стенді
Технічна характеристика та функціональні можливості навчально-налагоджуваного стенда. Будова контролера. Периферійні пристрої стенду. Принцип роботи крокового двигуна. Технології аналогових джойстиків. Організація взаємодії датчиків з мікроконтролером.
Рубрика | Коммуникации, связь, цифровые приборы и радиоэлектроника |
Вид | курсовая работа |
Язык | украинский |
Дата добавления | 08.11.2017 |
Размер файла | 954,0 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
ЗМІСТ
Технічне завдання
Вступ
1. Загальна технічна характеристика навчально-налагоджуваного стенда ST841/SPLD
1.1 Функціональні можливості стенду ST841/CPLD
1.2 Будова контролера
1.3 Периферійні пристрої стенду
2. Кроковий двигун
2.1 Принцип роботи крокового двигуна
2.2 Переваги і недоліки крокових двигунів
3. Джойстик-потенціометр
3.1 Типи джойстиків
3.2 Принцип роботи джойстик
4. Реалізація завдання
Додатки
ТЕХНІЧНЕ ЗАВДАННЯ
Розробити систему керування крокового двигуна з допомогою джойстика на навчально-налагоджувальному стенді ST841/CPLD.
ВСТУП
Однокристальні мікроконтролери знаходять широке застосування в різноманітних сферах техніки: від вимірювальних приладів, фотоапаратів та відеокамер, принтерів, сканерів, копіювальних апаратів до виробів електронних розваг і будь-якої домашньої техніки.
Мікроконтролери відрізняються від мікропроцесорів за рядом ознак. В першу чергу це їх функціональність.
При застосуванні мікропроцесорів для їх роботи потрібні додаткові компоненти як пам'ять, пристрої вводу і виводу даних, генератор тактової частоти і ін.
Мікроконтролери сконструйовані таким чином, що всі ці частини зібрані разом на одному кристалі і поміщені в одному корпусі.
Для роботи мікроконтролера потрібно мінімум зовнішніх компонентів, тому що вся необхідна периферія вбудована в його середині. Таким чином зменшується апаратна частина і скорочується час при конструюванні нових пристроїв.
З моменту появи перших мікроконтролерів їх складність постійно зростає за рахунок появи нових апаратних рішень та додавання нових команд для програмної підтримки нових функціональних вузлів, призначених для вирішення різноманітних задач.
Проектування вбудованих систем на сучасній елементній базі значно підвищує ефективність розробки за рахунок скорочення часу, мініатюризації, зниження споживаної потужності і збільшення швидкодії і надійності.
На сьогоднішній день актуальною є задача придбання навиків розробки інформаційно-керуючих пристроїв на базі мікроконтролерів і програмованих логічних пристроїв, що дозволяють реалізувати алгоритми високої складності.
Розроблений стенд дозволяє ознайомитися із сучасною елементною базою, практично вивчати типові вузли приладів інформаційних вимірювальних систем, алгоритмів роботи, проводити відладку нових програм, організувати взаємодію датчиків з мікроконтролером, а також керувати виконуючими пристроями, такими як двигуни різних типів, електромагнітні виконавчі органи, та інші.
1. ЗАГАЛЬНА ТЕХНІЧНА ХАРАКТЕРИСТИКА НАВЧАЛЬНО-НАЛАГОДЖУВАНОГО СТЕНДА ST841/SPLD
Рис.1.1 - Зовнішний вигляд стенда ST841/CPLD
Стенд призначений для освоєння архітектури та методів проектування інформаційно-керуючих систем, систем збору і оброблення інформації на базі найпоширеніших мікроконтролерів сімейства MCS-51/52, а також ПЛІС фірм Altera або Xilinx.
Стенд може бути використаний для:
· вивчення вузлів мікроконтролерних інформаційно-вимірювальних систем, промислових інтерфейсів, пристроїв вводу-виводу;
· виконання курсових, дипломних та науково-дослідних робіт.
· розробки і відлагодження апаратно-орієнтованого програмного забезпечення;
· взаємодії із аналоговими та цифровими первинними перетворювачами та виконавчими органами;
1.1 Функціональні можливості стенду ST841/CPLD
· мікроконтролер ADuC841 (однотактове ядро, 62 кбайт флеш-пам'яті програм, 4 кбайт флеш-пам'яті даних, 2304 байт оперативної пам'яті, апаратна підтримака інтерфейсів ART, I2C, SPI, восьмиканальний 12-розрядний АЦП, 320кГц, два 12-розрядні цифро-аналогові перетворювачі, джерело опорної напруги, датчик температури);
· програмована логічна матриця CPLD: EPM3032, EPM3064 (Altera), або XCR3032XL, XCR3064XL (Xilinx);
· інвертуючий, неінвертуючий, диференційний та інструментальний підсилювачі;
Пристрої вводу:
· матрична клавіатура,
· дискретні кнопки,
· джойстик-потенціометр,
· механічний енкодер;
Пристрої відображення:
· лінійка світлодіодів,
· 4 семисигментні індикатори,
· 1 матричний індикатор,
· індикатор на рідких кристалах;
Звукова підсистема:
· звуковий pcm кодек (TLV320AIC1109),
· підсилювач звукової частоти TDA7052,
· динамік, мікрофонний вхід, вихід на телефони;
Шини даних:
· паралельна 8-бітна шина даних;
· SPI
· I2C
· RS232
· RS485
Цифрова периферія:
· годинник реального часу з I2C інтерфейсом DS1307;
· 8 кбіт флеш-пам'ять із I2C інтерфейсом,
· 8 Мбіт флеш-пам'ять із SPI інтерфейсом,
· генератор прямокутних імпульсів (NE555),
· генератор тактової частоти;
Виконавчі пристрої:
· драйвери крокових двигунів (8 ключів);
· драйвер двигуна типу ДБМ;
· ШІМ-регулятор.
1.2 Будова контролера
Як процесор використовується однокристальний мікроконтролер ADuC841 з такими характеристиками:
· Однотактне 20MIPS ядро архітектури 8052;
· Швидкісний 12-розрядний АЦП;
· Два 12-розрядні ЦАП;
· 62 кбайт вбудованої пам'яті програм;
· кбайти вбудованої пам'яті даних;
· UART, I2C, SPI інтерфейси;
· Програмування та можливість відладки через інтерфейс UART.
Для роботи із стендом необхідне знання архітектури контролера, його регістрів та периферії.
ADuC841 є функціонально завершеним контролером інтелектуальних датчиків і включає в себе високоякісний багатоканальний АЦП із самокалібруванням, два ЦАПи, і швидкий (20МГц) з однотактовим виконанням команд 8-ми розрядний програмований мікроконтролер з системою команд МК 8051 на однім кристалі.
Ядром МК є контролер 8052, що забезпечує пікову продуктивність до 20 MIPS. На кристалі розміщено 62Кбайт Flash пам'яті програм, 4Кбайт Flash пам'яті даних, 256 байт пам'яті з довільним доступом (RAM) і 2Кбайт розширеної пам'яті з довільним доступом (ХRAM).
В склад ADuC841 входять також додаткові аналогові пристрої: два 12-розрядні ЦАПи, монітор напруги живлення і джерелом опорної напруги. Додатковими цифровими пристроями є: два 16-розрядні У-Д ЦАПи, два 16-розрядні широтно-імпульсні модулятори, сторожовий таймер, лічильник часових інтервалів, три таймери-лічильники, і три порти послідовного вводу- виводу (SPI, I2C, і UART). Заводська прошивка контролера підтримує завантаження програмного забезпечення через послідовний порт UART, а також емуляцію через один контакт пристрою - ЕА.
навчальний стенд джойстик мікроконтролер
Рис.1.2 - Функціональна схема контролера ADuC841
1.3 Периферійні пристрої стенду
Програмована логічна інтегральна схема.
На платі стенду розміщена панелька для встановлення ПЛІС типу EPM3032ALC44, EPM3064ALC44 виробництва Altera а також сумісних з ними XCR3032XL, XCR3064XL виробництва XILINX. Для завантаження програмного забезпечення в ПЛІС та його відладки призначений роз'єм інтерфейсу JTAG. ПЛІС та МК можуть обмінюватись між собою даними по послідовних інтерфейсах UART, I2C, SPI або працювати незалежно.
Блок операційних підсилювачів для аналогових сигналів.
Блок призначений для підсилення вхідних сигналів, що подаються на входи АЦП МК ісигналів з виходів ЦАП.
Звуковий кодек.
Звуковий кодек TLV320AIC1109 призначений для перетворення аналогового сигналу звукової частоти в стиснений цифровий формат для подальшої передачі, а також для здійснення зворотного перетворення цифрових даних в звуковий сигнал. Для підключення мікрофона і телефона передбачено роз'єми. Сигнал з виходу кодека може подаватись на розміщені на платі підсилювач і динамік.
Джойстик та механічний енкодер.
На платі установлений потенціометричний джойстик з двома осями і кнопкою. Сигнал з виходів джойстика подається на входи 6 та 7 АЦП МК. Механічний енкодер призначений для перетворення кутового переміщення в електричний сигнал. Дані пристрої позволяють проектувати системи з необхідністю ручного вводу інформації (наприклад, маніпулятори, прилади, спецтехніка, блоки керування і т.п.).
Цифрова клавіатура.
Матрична клавіатура застосовується при побудові вузлів вводу даних в інформаційну систему.
Кнопки переривань та скидання процесора.
Кнопки переривань призначені для генерації сигналів переривання процесора. Кнопка скидання призначена для скидання процесора під час програмування або для перезапуску існуючої програми.
Рідкокристалічний дисплей.
На платі установлений знакосинтезуючий рідкокристалічний 4х10 дисплей, підключений до шини даних по чотирибітній схемі. Дисплей має вбудовану підсвітку та регулятор контрасту.
Семисегментний чотиризначний та матричний індикатори, світлодіодна лінійка.
На основі світлодіодів, семисегментних та матричних індикаторів будуються підсистеми відображення інформації. Схема включення семисегментного індикатора позволяє здійснювати статичну індикацію, матричного - динамічну знакосинтезуючу.
Інтерфейси стандартів RS232, RS485, I2C, SPI, 1-wire та системний інтерфейс.
На платі розміщено драйвери інтерфейсів RS232, RS485, які узгоджують логічні рівні даних стандартів та TTL рівень а також роз'єми для підключення кабелів чи шлейфів периферійних пристроїв. Системний інтерфейс включає шину даних, адресні лінії, лінії UART, I2C, живлення та загальний провід.
Годинник реального часу DS1307.
Використовується для генерації точних секундних імпульсів, а також як годинник і календар.
8 кбіт І2С EEPROM пам'ять.
Енергонезалежна пам'ять призначена для зберігання даних користувача навіть під час вимкнення живлення стенду.
Восьмиканальний драйвер крокових двигунів.
Драйвер дозволяє керувати двома уніполярними двигунами з чотирма обмотками невеликої потужності (із споживаним струмом до 2А).
Контрольні точки для підключення осцилографа.
Контрольні точки розміщені у важливих функціональних вузлах і дозволяють проводити візуальне спостереження форми сигналу за допомогою осцилографа.
Генератор імпульсів.
Генератор прямокутних імпульсів побудований на основі таймера 555 і може використовуватись для генерації контрольних імпульсів.
Стабілізатори живлення.
На платі встановлено стабілізатори напруг 5В, 3.3В, а також керований ШІМ стабілізатор живлення драйвера ДБМ. Передбачено роз'єм підключення напруг +12В та +5В від зовнішнього стабілізатора.
Размещено на http://www.allbest.ru/
Рис.1.3 - Структурна схема стенда ST841/CPLD
2. КРОКОВИЙ ДВИГУН
Кроковий двигун -- електричний двигун, в якому імпульсне живлення електричним струмом призводить до того, що його ротор не обертається неперервно, а виконує щоразу обертальний рух на заданий кут. Завдяки цьому, кут повороту ротора залежить від числа поданих імпульсів струму, а кутова швидкість ротора точно рівна частоті імпульсів помноженій на кут повороту ротора за один цикл роботи двигуна.
Кут повороту двигуна під впливом одного імпульсу може мати різні значення, залежні від конструкції двигуна, -- як правило це значення в діапазоні від декількох градусів до декілька десятків градусів. Крокові двигуни, залежно від призначення пристосовані до виконання від частки оберту на хвилину, до декількох тисяч обертів на хвилину.
2.1 Принцип роботи крокового двигуна
Конструктивно крокові електродвигуни складаються із статора, на якому розташовані обмотки збудження, і ротора, виконаного з магніто-м'якого (феромагнітного) матеріалу або з магніто-твердого (магнітного) матеріалу. Крокові двигуни з магнітним ротором дозволяють отримувати більший крутний момент і забезпечують фіксацію ротора при знеструмлених обмотках.
Гібридні двигуни поєднують у собі найкращі риси двигунів зі змінним магнітним опором і двигунів з постійними магнітами. Статор гібридного двигуна також має зубці, забезпечуючи велику кількість еквівалентних полюсів, на відміну від основних полюсів, на яких розташовані обмотки. Зазвичай використовуються 4 основні полюси для 3,6 градусних двигунів і 8 основних полюсів для 1,8-0,9 градусних двигунів. Зубці ротора забезпечують менший опір магнітного ланцюга у певних положеннях ротора, що покращує статичний і динамічний момент. Це забезпечується відповідним розташуванням зубців, коли частина зубців ротора знаходиться строго навпроти зубців статора, а частина між ними.
Ротор гібридного двигуна має зубці, розташовані в осьовому напрямку. Ротор розділений на дві частини, між якими розташований циліндричний постійний магніт. Таким чином, зубці верхньої половинки ротора є північними полюсами, а зубці нижньої половинки -- південними. Крім того, верхня і нижня половинки ротора повернуті один відносно одного на половину кута кроку зубців. Число пар полюсів ротора дорівнює кількості зубців на одній з його половинок. Зубчасті полюсні наконечники ротора, як і статор, набрані з окремих пластин для зменшення втрат на вихрові струми.
Цикл роботи електродвигуна можна розбити на 4 кадри:
Рис.2.1 - верхній електромагніт (1) включений, відбувається притягання найближчого зуба ротора шестеренної форми. Зуби вирівнюються по електромагніту (1), вони будуть трохи зміщені відносно електромагніта (2).
Рис.2.2 - верхній електромагніт (1) відключений, а правий електромагніт (2) знаходиться під напругою, потягнувши найближчі зуби прокрутивши ротор вправо. У результаті відбудеться повертання на 3,6°.
Рис.2.3 - нижній електромагніт (3) знаходиться під напругою, спричинивши наступне повертання ротора на 3,6° для цього прикладу.
Рис.2.4 - лівий електромагніт (4) включений, що знову проверне ротор на 3,6°. Коли верхній знову увімкнеться, ротор у кінцевому підсумку за 4 кроки повернеться на один зуб, а оскільки у ротора є 25 зубів, то повний оберт займе 100 кроків для даного прикладу.
2.2 Переваги і недоліки крокових двигунів
Переваги:
· Кут повороту двигуна пропорційний кількості вхідних імпульсів.
· Двигун працює з повним моментом у стані спокою (якщо обмотки підключені до живлення).
· Прецезійне позиціонування і повторюваність кроку -- хороші крокові двигуни мають точність близько 3 -- 5% кроку і ці помилки не накопичується від кроку до кроку.
· Можливість швидкого розгону, гальмування і зміни напряму руху.
· Безвідмовність -- у зв'язку з відсутністю щіток. Довговічність двигуна залежить тільки від довговічності підшипників.
· Залежність оборотів двигуна від дискретних імпульсів дозволяє керувати двигуном без зворотного зв'язку, завдяки чому кроковий двигун простіший і дешевший в керуванні.
· Можливість досягнення дуже низьких швидкостей обертання з навантаженням закріпленим безпосередньо на осі двигуна.
· Широкий діапазон швидкостей обертання отримуваний завдяки тому, що швидкість пропорційна частоті вхідних імпульсів.
Недоліки:
· Механічний резонанс з'являється при неправильному керуванні.
· Складнощі при роботі з дуже високими швидкостями.
· Можлива втрата контролю положення у зв'язку з роботою без зворотного зв'язку.
· Споживання електроенергії не зменшується навіть без навантаження.
· Невисока питома потужність.
· Відносно складна схема управління.
3. ДЖОЙСТИК-ПОТЕНЦІОМЕТР
Джойстик (англ. joystick) -- пристрій-рукоятка для керування, який можна відхиляти у двох площинах. На важелі можуть бути різного роду гашетки і перемикачі. Словом «джойстик» в побуті називають важіль управління.
Джойстик - пристрій введення інформації, виконаний у вигляді рукоятки управління, який нагадує за формою перемикач швидкостей автомобіля або штурвал літака.
Рис.3.1 - Джойстик - потенціометр
3.1 Типи джойстиків
За кількістю ступенів свободи і, відповідно, площин, у яких можлива зміна стану контрольованого об'єкта, джойстики поділяються на:
· одномірні (управління переміщенням об'єкта або вгору-вниз, або вліво-вправо)
· двомірні (управління об'єктом в двох площинах)
· тривимірні (управління об'єктом у всіх трьох площинах)
3.2 Принцип роботи джойстиків
За принципом аналізу положення ручки, джойстики можна розділити на наступні види:
· дискретні-- сенсори таких джойстиків можуть приймати два значення: «0» або «1», включений/виключений. Переміщення ручки в крайні положення видає один інформаційний код відповідного напрямку. Утримання ручки в крайньому положенні повторює код нескінченно. Джойстики такого типу практично не застосовуються в ПК, але широко зустрічаються у простих ігрових приставках, ігрових автоматах і мобільних телефонах.
· аналогові сенсори таких джойстиків видають інформаційні коди зі значенням від нуля до максимуму в залежності від кута відхилення ручки: чим більше рукоять відхилена, тим більше цифрове значення коду. Діапазон цифрового значення коду обмежений ходом ручки джойстика і роздільною здатністю застосованих сенсорів. Після калібрування, подібні джойстики можна застосовувати для визначення абсолютної позиції курсору.
Існує декілька технологій аналогових джойстиків:
· Потенціометр і аналогово-цифровий перетворювач. Переваги: немає особливих вимог до механіки. Недоліки: вимогливий до якості живлення і АЦП, сам датчик недовговічний. Цікаво, що в інтерфейсі типу ігровий порт використовувався аналогово-цифровий перетворювач персонального комп'ютера, а не джойстика.
· Енкодер -- оптичний датчик часто застосовуваний в маніпуляторах типу «миша» (зубчасте колесо, при обертанні, перериває промінь від світлодіода до фотодіоду). Переваги: точність, надійність. Недоліки: мала кількість кроків дискретності (приблизно 500 кроків на оборот керма, або 150 на рух джойстика від краю до краю, або 100 на хід педалі), для підвищення дискретності необхідне застосування високоточного енкодера або редуктора (мультиплікатора).
· Тензометричні датчики. Застосовуються у ноутбуках, у деяких літаках. В ігрових пристроях майже не поширені: тензодатчики практичні тільки коли джойстик надійно прикріплений до столу. Відоме застосування тензодатчиків в комплекті HOTAS X-65 CCS від компанії Saitek.
· Оптична матриця. Такі джойстики діють аналогічно оптичної миші і поєднують високу точність з високою надійністю. Недоліки аналогічні оптичному энкодеру.
· Магнітні датчики -- магниторезистивні та на ефекті Холу. Дуже надійні і довговічні, розповсюдження отримали після початку масового застосування схем компенсації похибок при збиранні і похибок виробництва.
4. РЕАЛІЗАЦІЯ ЗАВДАННЯ
Дане завдання було написано в середовищі програмування Keil uvision 4. В чотирьох асемблерних файлах:
· main.asm (див. Додаток А);
· Stepper.asm (див. Додаток Б);
· Joystick.asm (див. Додаток В);
· adc.asm (див. Додаток Г).
Дане завдання є дуже актуальним, оскільки в наш час крокові двигуни широко використовуються в різних галузях, починаючи з простого принтера і закінчуючи 3D принтером. Тому вміння, з допомогою аналогово-цифрового перетворювача, керувати таким типом двигунів може бути корисним у подальшій роботі.
Керування джойстиком є також корисним навиком, оскільки в наш час дуже багато пристроїв використовують саме джойстики як засоби введення інформації. Особливо широко вони використовуються в ігровій індустрії.
ДОДАТКИ
Додаток А
вміст файлу main.asm
EXTRN CODE (Joystick_Init)
EXTRN CODE (Joystick_GetAxisPos)
EXTRN CODE (Tim0_ovf)
EXTRN CODE (Stepper_Init)
EXTRN CODE (Stepper_Process)
EXTRN CODE (StepperCtrl)
PUBLIC Write
CSEG AT0
//Interrupt vector
ORG 0x0000
JMP RESET
ORG 0x000B
JMP Tim0_ovf
ORG 0x0033
RESET:
mov SP, #16
call Joystick_Init
call Stepper_Init
MainLoop:
mov A, #0
call Joystick_GetAxisPos
add A, #128
mov R1, A
mov B, #7
call Write
; if ((a<10)&&(a>-10))
CLR C
MOV A,R1
XRL A,#080H
SUBB A,#08AH
JNC Exit
SETB C
MOV A,R1
XRL A,#080H
SUBB A,#076H
JC Exit
; a =0;
MOV R1,#00H
Exit:
mov A, R1
call StepperCtrl
jmp MainLoop
// Write to periferal device subroutine
// Input:
// A - Data to Write
// B - Address to write
Write:
push ACC
setb P3.6 //Set Data bus buffer to TX
mov P0, A //moving data to bus buffer
mov P2, B //set periferals address
nop //wait
nop
mov P2, #0x00 //clock pulse for device latch
pop ACC
ret //exit from subroutine
Delay:
push 6
push 7
mov R6, #0
mov R7, #0
Delay1:
djnz R7,$
djnz R6,Delay1
pop 7
pop 6
ret
END
Додаток Б
вміст файлу Stepper.asm
C_TL0 EQU 000h
C_TH0 EQU 0F8h //07FFh - max stab. vel. of rotation
SM_addr EQU 009h //Step motoraddress
RotVal EQU 0x8
RotSpd EQU 0x9
RotState EQU 0xA ; 0 - Stopped; 1 - Rotate Left;
; 2 -Rotate Right
TmrOvfDiv EQU 0xB
Tmr0RVH EQU 0xC
Tmr0RVL EQU 0xD
PUBLIC Tim0_ovf
PUBLIC Stepper_Init
PUBLIC Stepper_Process
PUBLIC StepperCtrl
EXTRN CODE (Write)
Stepper SEGMENT CODE
RSEG Stepper
Timer0_init:
MOV TH0, Tmr0RVH
MOV TL0, Tmr0RVL
MOV TMOD,#001h
MOV TCON, #010h //Run timer
MOV IE, #010000010b //Enable global interrupt and
// Timer0 interrupt
MOV IP, #000000000b //interrupt priority
RET
Tim0_ovf:
push ACC
push 0
push 1
MOV TH0, Tmr0RVH //1,0XX ms
MOV TL0, Tmr0RVL //Reload timer 0
mov R1, TmrOvfDiv
dec R1
cjne R1, #0, T0Skip
call Stepper_Process
mov R1, #16
T0Skip:
mov TmrOvfDiv, R1
pop 1
pop 0
pop ACC
reti
Stepper_Init:
mov RotVal, #11h
mov RotSpd, #0h
mov RotState, #0h
mov TmrOvfDiv,#16
mov A, #0
mov B, #SM_addr
call Write
mov Tmr0RVH, #C_TH0
mov Tmr0RVL, #C_TL0
call Timer0_init
ret
Stepper_Process:
mov A, RotVal
mov R0,#RotState
SPL:
cjne @R0, #1,SPR
rl A
jmp SP_Do
SPR:
cjne @R0, #2,SPELSE
rr A
jmp SP_Do
SPELSE:
mov RotState, #0
mov a, #00h
mov B, #SM_addr
call Write
ret
SP_Do:
mov RotVal, A
mov B, #SM_addr
call Write
ret
; Stepper Control Function
; A - Rotation Speed (signed)
StepperCtrl:
mov RotSpd, A
jz SC_Stop
jb ACC.7, SC_1
mov RotState, #1
rl a
mov Tmr0RVH, a
jmp SC_Exit
SC_1:
mov RotState, #2
CPL A
INC A
rl a
mov Tmr0RVH, a
jmp SC_Exit
SC_Stop:
mov RotState, #0
SC_Exit:
ret
end
Додаток В
вміст файлу Joystick.asm
EXTRN CODE (ADC_Init)
EXTRN CODE (GetADCVal)
PUBLIC Joystick_GetAxisPos
PUBLIC Joystick_Init
Joystick SEGMENT CODE
RSEG Joystick
Joystick_Init:
call ADC_Init
ret
; Input:
; A - Axis number (0-1)
; Output:
; A (signed) - Position
Joystick_GetAxisPos:
push ACC
;Select ADC Channel
cjne A, #0, JGP1
mov A, #7
jmp JGP2
JGP1:
mov A, #6
JGP2:
; Invoke ADC Conversion
call GetADCVal
mov R1, A
mov R0, B
mov R7, #4
ADCShift:
clr C
mov A, R0
rlc A
mov R0, A
mov A, R1
rlc A
mov R1, A
djnz R7, ADCShift
pop ACC
;Select Channel and offset correction
cjne A, #0, JGP3
mov A, R1
add A, #0
mov R1, A
jmp JGP4
JGP3:
mov A, R1
add A, #0
mov R1, A
JGP4:
ret
END
Додаток Г
вміст файлу adc.asm
ADCCON1 DATA 0EFH ;ADC CONTROL
ADCCON2 DATA 0D8H ;ADC CONTROL
ADCDATAL DATA 0D9H ;ADC DATA LOW BYTE
ADCDATAH DATA 0DAH ;ADC DATA HIGH BYTE
ADCI BIT 0DFH ;ADCCON2.7 - ADC INTURRUPT
;FLAG
SCONV BIT 0DCH ;ADCCON2.4 - SINGLE
ADC SEGMENT CODE
RSEGADC
PUBLICADC_Init
PUBLIC GetADCVal
ADC_Init:
mov p1, 0xFF
mov ADCCON1, #0ACh
ret
; Input:
; A - Channel number (0-8)
; Output:
; A - ADCH
; B - ADCL
GetADCVal:
anl a, #0fh
mov ADCCON2, a
clr ADCI
setb SCONV
jnb ADCI,$
mov b, ADCDATAL
mov a, ADCDATAH
anl a, #0fh
ret
END
Размещено на Allbest.ru
Подобные документы
Опис роботи лабораторного стенду, технічні характеристики та умови експлуатації. Розрахунки калькуляції його виготовлення, енерговитрати. Забезпечення ремонтопридатності виробу. Розробка технологічного процесу монтажу стенду, характеристика місця праці.
дипломная работа [26,7 K], добавлен 23.06.2009Основні види схем керування кроковими двигунами. Розробка варіантів структурної схеми електропривода та прийняття рішення принципу його побудови. Розробка вузла мікроконтролера, блока живлення. Забезпечення індикації режимів роботи схеми дослідження КД.
курсовая работа [1,6 M], добавлен 14.05.2013Конструкція та принцип роботи холодильної камери. Структурна схема автоматизованої системи керування, її проектування на основі мікроконтролера за допомогою сучасних програмно-інструментальних засобів розробки та налагодження мікропроцесорних систем.
курсовая работа [4,5 M], добавлен 08.07.2012Розробка структурної схеми мікропроцесора. Узгодження максимальної вхідної напруги від датчиків з напругою, що може обробити МПСза допомогою дільника напруги та аналогового буферного повторювача. Система тактування та живлення. Організація виводу даних.
курсовая работа [354,3 K], добавлен 14.12.2010Пристрої захисту офісу. Аналіз мікропроцесорних охоронних датчиків. Апаратна частина та принципова схема. Вибір типу контролера, наведення його технічних характеристик. Підбір елементів схеми, калькуляція виробу. Вибір середовища та мови програмування.
курсовая работа [982,3 K], добавлен 15.02.2012Блок керування та синхронізації. Вибір АЦП, комутатора-мультиплексора, інтерфейсних схем. Таблиця розподілу оперативної пам'яті. Розробка структурної та принципової схеми і алгоритму функціонування контролера. Архітектура мікроконтролерів MCS-51.
курсовая работа [801,8 K], добавлен 17.05.2013Класифікація кремнієвих датчиків тиску, конструкція та принцип їх роботи, пристій для калібрування. Переваги датчиків на основі тонких плівок перед ємнісними. Використання технології інтегральних мікросхем, сфера їх застосування. Електронний барометр.
курсовая работа [2,6 M], добавлен 17.05.2012Аналіз існуючих засобів автоматизації швидкості двигуна прокатного стану як об'єкту автоматичного управління. Налаштування контурів за допомогою пакету прикладних програм VisSim 3.0 та Program CC 5.0. Дослідження стійкості моделі системи управління.
дипломная работа [3,2 M], добавлен 16.01.2012Функціональна схема мікроконтролера ATMega8. Розробка робота на базі мікроконтролера ATMega8 з можливістю керування електродвигунами за допомогою програми. Функціональна і принципова схеми пристрою з вибором додаткових елементів, алгоритм його роботи.
курсовая работа [1,3 M], добавлен 08.10.2012Визначення та класифікація датчиків. Особливості датчиків механічних величин, принцип дії оптоелектронних датчиків положення. Порівнянні характеристики датчиків різних типів для перетворення параметрів зовнішнього середовища у електричний сигнал.
курсовая работа [6,3 M], добавлен 29.06.2010