Драйвер керування крокового двигуна
Поняття про крокові двигуни, їх принцип роботи, переваги та недоліки в експлуатації. Програмна частина драйверу управління. Вибір інтерфейсу керування та схемо-технічної складової. Розробка друкованої плати. Опис алгоритму роботи програми, її лістинг.
Рубрика | Производство и технологии |
Вид | курсовая работа |
Язык | украинский |
Дата добавления | 16.02.2016 |
Размер файла | 1,2 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Національний Технічний Університет
«Київський Політехнічний Інститут»
Факультет Електроніки
Кафедра «Електронних Приладів та Пристроїв»
Драйвер керування крокового двигуна
Курсовий проект
з дисципліни «Мікропроцесорна техніка»
ЕПП.КП.ДЕ2109.000П3
Студент гр. ДЕ-21 Ромадін Л.В.
Керівник Михайлов С. Р.
Київ 2015
Зміст
кроковий плата драйвер інтерфейс
Вступ
1. Розробка апаратної частини
1.1 Аналіз технічного завдання
1.2 Вибір інтерфейсу керування
1.3 Вибір схемо-технічної складової
1.4 Розробка друкованої плати
2. Розробка програмного забезпечення
2.1 Опис алгоритму роботи програми
2.2 Лістинг програми
Висновки
Список використаної літератури
Додатки
Вступ
Сучасна промисловість потребує наявність рішень в області автоматизації, і прискоренні темпів виробництва. Допомогти у цьому можуть крокові двигуни. Вони значно спрощують деякі задачі і здатні виконувати функції значно швидше. Дана робота направлена на розробку схеми керування даним двигуном. Створенням можливості комфортного способу керування ним.
Даний курсовий проект являє собою один із можливих варіантів для управління кроковим двигуном. Так як досвіду у схемотехніці і конструюванні у мене не багато, то основну увагу я приділю програмній частині даної роботи. Технічна частина буде представлена також , але не так точно і не у повному обсязі, бо брак досвіду є великою перепоною на цьому шляху.
Про крокові двигуни
Кромковий двигумн -- електричний двигун, в якому імпульсне живлення електричним струмом призводить до того, що його ротор не обертається неперервно, а виконує щоразу обертальний рух на заданий кут. Завдяки цьому, кут повороту ротора залежить від числа поданих імпульсів струму, а кутова швидкість ротора точно рівна частоті імпульсів помноженій на кут повороту ротора за один цикл роботи двигуна.
Кут повороту двигуна під впливом одного імпульсу може мати різні значення, залежні від конструкції двигуна, -- як правило це значення в діапазоні від декількох градусів до декілька десятків градусів. Крокові двигуни, залежно від призначення пристосовані до виконання від частки обороту в хвилину до декількох тисяч оборотів в хвилину.
Принцип роботи
Конструктивно крокові електродвигуни складаються із статора, на якому розташовані обмотки збудження, і ротора, виконаного з магніто-м'якого (феромагнітного) матеріалу або з магніто-твердого (магнітного) матеріалу. Крокові двигуни з магнітним ротором дозволяють отримувати більший крутний момент і забезпечують фіксацію ротора при знеструмлених обмотках.
Гібридні двигуни поєднують у собі найкращі риси двигунів зі змінним магнітним опором і двигунів з постійними магнітами.
Статор гібридного двигуна також має зубці, забезпечуючи велику кількість еквівалентних полюсів, на відміну від основних полюсів, на яких розташовані обмотки. Зазвичай використовуються 4 основні полюси для 3,6 градусних двигунів і 8 основних полюсів для 1,8-0,9 градусних двигунів. Зубці ротора забезпечують менший опір магнітного ланцюга у певних положеннях ротора, що покращує статичний і динамічний момент. Це забезпечується відповідним розташуванням зубців, коли частина зубців ротора знаходиться строго навпроти зубців статора, а частина між ними.
Ротор гібридного двигуна має зубці, розташовані в осьовому напрямку. Ротор розділений на дві частини, між якими розташований циліндричний постійний магніт. Таким чином, зубці верхньої половинки ротора є північними полюсами, а зубці нижньої половинки -- південними. Крім того, верхня і нижня половинки ротора повернуті один відносно одного на половину кута кроку зубців. Число пар полюсів ротора дорівнює кількості зубців на одній з його половинок. Зубчасті полюсні наконечники ротора, як і статор, набрані з окремих пластин для зменшення втрат на вихрові струми.
Переваги
· Кут повороту двигуна пропорційний кількості вхідних імпульсів.
· Двигун працює з повним моментом у стані спокою (якщо обмотки підключені до живлення).
· Прецезійне позиціонування і повторюваність кроку -- хороші крокові двигуни мають точність близько 3 -- 5% кроку і ці помилки не накопичується від кроку до кроку.
· Можливість швидкого розгону, гальмування і зміни напряму руху.
· Безвідмовність -- у зв'язку з відсутністю щіток. Довговічність двигуна залежить тільки від довговічності підшипників.
· Залежність оборотів двигуна від дискретних імпульсів дозволяє керувати двигуном без зворотного зв'язку, завдяки чому кроковий двигун простіший і дешевший в керуванні.
· Можливість досягнення дуже низьких швидкостей обертання з навантаженням закріпленим безпосередньо на осі двигуна.
· Широкий діапазон швидкостей обертання отримуваний завдяки тому, що швидкість пропорційна частоті вхідних імпульсів.
Недоліки
· Механічний резонанс з'являється при неправильному керуванні.
· Складнощі при роботі з дуже високими швидкостями.
· Можлива втрата контролю положення у зв'язку з роботою без зворотного зв'язку.
· Споживання електроенергії не зменшується навіть без навантаження.
· Невисока питома потужність.
· Відносно складна схема управління.
1. Розробка апаратної частини
1.1 Аналіз технічного завдання
Проаналізував технічне завдання можна пред'явити до пристрою ряд вимог:
· Наявність стандартизованого інтерфейсу керування
· Наявність внутрішніх стабілізованих джерел напруги для логічної і силової частини.
· Можливість обирання напряму повороту двигуна
· Діапазон живлення приладу від 20 до 40 вольт
· Монтаж компонентів на друкованій платі
1.2 Вибір інтерфейсу керування
У якості інтерфейсу керування був обраний інтерфейс «КРОК-НАПРЯМ» (англ. Step-Direction Interface). Такий вибір обумовлений наявністю можливості керувати приводом дискретно.
Інтерфейс «КРОК-НАПРЯМ» являє собою дві цифрових, сигнальних ліній (опціонально три лінії) перша із котрих називається «КРОК» и являє собою тактуючу лінію. По одиничному імпульсу на цій лінії керуючий прилад (драйвер) робить один дискретний крок приводом. Напрямок кроку вказується станом лінії «НАПРЯМ» в момент (та на повному його протязі) подачі одиничного імпульсу на лінію «КРОК». Третя лінія «ДОЗВІЛ», своїм станом дозволяє, або забороняє рух привода. Блок схема роботи даного інтерфейсу зображена на рисунку 1.1
Размещено на http://www.allbest.ru/
Рисунок 1.1
1.3 Вибір схемо-технічної складової
Схемо-технічну складову починемо з побудови блок-схеми пристрою, для загального розуміння призначення окремих елементів прототипу. Блок-схема зображена на рисунку 1.2.
Рисунок 1.2
Для проектування даного типу приладу потрібно обрати компонентну базу для побудови логічної та силової частини, а також спроектувати джерело живлення малої потужності для забезпечення роботи всіх елементів від одної лінії живлення.
Силові ключі:
Даний елемент потрібен для того щоб керувати струмом двигуна та полярністю напруги (а отже і напрямом обертання) на його виводах. Схемо-технічною реалізацією подібного елементу є так званий Н-міст. Це рішення виглядає як чотири ключі (S1-S4) попарне ввімкнення яких дозволяє нам змінювати полярність на навантаженні (у нашому випадку двигуні). На рисунку 1.3 ви можете побачити ідеалізовану схему Н-мосту.
Рисунок 1.3
У нашому випадку будуть використовуватися високочастотні, потужні, електронно-керовані, твердотільні, силові ключі.
Якщо говорити точніше то у даному приладі має сенс застосувати польові (КМОП) транзистори. Такий вибір обумовлений тим що даний тип транзисторів вважається дуже високоефективним, через їхній малий опір у відкритому стані.
Силовий блок:
Дана частина пристрою (як було сказано вище) формує управляючі сигнали для силових ключів. Її задача приймати цифрові сигнали від логічного блока (амплітудою 5 вольт), і формувати управляючі імпульси для польових транзисторів.
Задача ускладнюються тим що плюс живлення мотора комутується через n-канальний польовий транзистор, а це означає що на затвор даного транзистора потрібно подавати напругу вище ніж напруга лінії живлення. Для цього застосовується метод так званого «BOOT» конденсатора (англ. загрузочного).
Він полягає у тому що поки польовий транзистор закритий, конденсатор (порівняно з ємністю затвора польового транзистора) великої ємності заряджається до напруги відкриття затвору польового транзистора, а в момент коли потрібно відкрити ключ конденсатор включається паралельно виток-затвор так щоб транзистор відкрився. Із-за малої ємності затвора и мізерно малого струму затвору, таким чином можливо достатньо довго утримувати транзистор в відкритому стані.
Чийсь багато досвідний вибір міг зупинитися на мікросхемі від фірми International Rectifier моделі IR2104, тому я зроблю так само.
Короткі характеристики мікросхеми драйвера напівмосту IR2104.
· Керуючі канали розроблені для навантаженого функціонування
· Повністю працездатні до +600В
· Нечутливі к зворотнім напругам при перехідних процессах
· Стійкість к швидкості наростання напруги (dV/dt)
· Діапазон напруги живлення драйверів 10…20В
· Блокування при зниженні напруги
· 5В вхідна логіка с тригерами Шміта
· Логіка запобігання поперечної провідності
· Узгоджена затримка розповсюдження для обох каналів
· Внутрішня встановлена пауза при перемиканні каналів
· Вихід драйвера верхнього рівня у фазі з входом
· Вхід вимкнення зупиняє роботу обох каналів
· Напруга змішення VOFFSET не більше 600В
· Имп.вих. струм к.з Iо± 130 мА/ 270 мА
· Вихідна напруга драйверів VOUT 10 - 20В
· Час вкл./викл. 680/150 нс
· Пауза 520 нс
Як видно з характеристик дана мікросхема має ряд важливих переваг, а саме:
· Наявність захисту від наскрізного струму через ключі
· 5ти вольтова вхідна лінія керування
· Наявність можливості вимкнути обидва канали
Рекомендовану принципову схему котру можна знайти в документації на мікросхему можна побачити на рисунку 1.4.
Рисунок 1.4
Корпус мікросхеми був обраний PDIP-8 виходячи з простоти монтажу даного корпусу при відсутності спец обладнання. Цоколевку виводів мікросхеми можна побачити на рисунку 1.5.
Рисунок 1.5
Розрахунок «BOOT» конденсатора потрібно проводити виходячи з частоти широтно-імпульсної модуляції (котра буде використовуватися для керування струмом мотору) по формулі:
де Vcc = 15 В - напруга живлення схеми керування, Vf = 0,8 В - падіння напруги на діоді, Qg - заряд затвора польового транзистора, Iqbs = 30 мкА, f - частота ШІМ, Qls = 5 нКл - циклічна зміна заряду драйвера.
Логічний блок:
Задачею даного блоку є формування логічних сигналів для управління силовим блоком виходячи із сигналів інтерфейсу. В якості логічного блоку буде виступати мікроконтролерна система. Тобто те що і є метою роботи.
Сучасні мікроконтролерні системи представлені широким спектром екземплярів. При виборі ми будемо керуватися такими критеріями:
· Наявність апаратних можливостей для формування ШІМ сигналу частотою не менш 1 КГц.
· Наявність мінімум 2х незалежних переривань по зміні стану виводу
· Тактування центрального ядра не менш 10 МГц для забезпечення потрібної швідкодії
· Наявність вивідної корпусировки для простоти монтажу даного мікроконтролера при відсутності спец обладнання.
· Достатня кількість портів вводу виводу
Цим вимогам цілком задовільне мікроконтролер фірми Atmel
моделі ATTiny2313A. Такий вібір обумовлений дешевизною даного контролера и гарною геометричною зовнішністю. Короткий огляд характеристик даного контролера можна переглянути нижче:
Швидкодіюча и мало споживаюча RISC Архітектура
- 120 потужних Команд - більшість виконуется за 1 такт ЦП
- 32 x 8 регістри загального призначення
- Швидкодія до 20 мільйонів команд на секунду при 20 МГЦ тактуванні ЦП
Енергонезалежна пам'ять даних і програм
- 2 КБ вбудованої FLASH пам'яті програм
- Витривалість FLASH пам'яті 10 000 циклів запису/стирання
- 128-байтовая вбудована програмуєма EEPROM пам'ять
- Витривалість EEPROM: 100 000 циклів запису/стирання
- 128-байтовая вбудована SRAM пам'ять
- Програмування захисного блокування FLASH пам'яті и EEPROM пам'яті
Периферійні особливості
- Один 8-битный Таймер/Лічильник с окремім пре-дільником частоти і режимом порівняння
- Один 16-битный Таймер/ Лічильник с окремім пре-дільником частоти і режимом порівняння и захвату.
- Чотири ШІМ каналу
- Вбудований аналоговий компаратор
- Програмуємий сторожовій таймер с вбудованим генератором
- USI - універсальній послідовний інтерфейс
- Повно-дуплексній інтерфейс - USART
Додаткові особливості
- debugWIRE-шина для відладки на кристалі
- Внутрісистемне програмування через SPI Порт
- Зовнішні і внутрішні джерела переривання
- Холостий режим (Low-power Idle відключає тільки ЦП), економічний режим (Power-down відключає тільки генератор)
и режим Сну (Standby Modes залишає включеним тільки генератор)
- Удосконалена система сбросу при включенні живлення
- Програмуєма схема захисту від пониженої напруги живлення Brown-out Detector (BOD)
- Внутрішній калібрований генератор
Порти вводу/виводу и корпуси
- 18 програмуємих ліній вводу - выводу
- PDIP с 20 ножками, SOIC с 20 ножками, и MLF с 32 ножками
Напруга живлення
- 1.8 - 5.5V
Таблиця швидкодії
- 0 - 4 MHz @ 1.8 - 5.5V
- 0 - 10 MHz @ 2.7 - 5.5V
- 0 - 20 MHz @ 4.5 - 5.5V
Температурний діапазон
-40 ° C до +85 ° C
Корпус мікроконтролера був обраний PDIP-20 виходячи з простоти монтажу даного корпусу при відсутності спец обладнання. Цоколевку виводів мікросхеми можна побачити на рисунку 1.6.
Рисунок 1.6
Схема включення була розроблена відповідно до документації і приведена на рисунку 1.7.
Рисунок 1.7
*Примітка. На схемі входи-виходи мікроконтролера позначені як «не під'єднанні», насправді вони під'єднанні до інших елементів приладу.
Що буде продемонстровано далі у принципійній схемі, доданій до даної роботи.
Джерело живлення:
Задачею даного блока є живлення окремих елементів системи. Так як усі елементи системи є доволі малопотужними, в якості джерел напруги оптимальніше всього використовувати лінійні стабілізатори напруги. Для вибору стабілізаторів напруги нам треба визначиться з вхідною напругою, і вихідними напругами які потрібні силовому блоку, логічному блоку, а також енкодеру.
· Вхідна напруга 24 В.
· Напруга живлення логічного блоку 5 В.
· Напруга живлення силового блоку 15 В.
Отже нам потрібно 2 лінійних стабілізатора напруги, на 5 і 15 вольт відповідно.
Мною були обрані лінійні моделі LM317T. Даний лінійний стабілізатор має можливість регулювати свою вихідну напругу, тобто у нас е можливість обзавестись напругою 5 вольт напругою 15 вольт .
Короткі характеристики наведені нижче:
Вхідна напруга: от 7 до 40 вольт.
Вихідна напруга:
от 1,2 до 37 вольт
Вихідний струм (максимальний): 1500 мА.
Струм споживання (стабілізатором): 5 мА.
Допустима мінімальна різниця напруг вхід-вихід: 3 вольт.
Робоча температура: от 0 до +125 °C.
Рекомендовану принципову схему яку можна знайти в документації можна побачити на рисунку 1.8.
Рисунок 1.8
Корпус стабілізаторів був обраний TO-220 виходячи з простоти монтажу даного корпусу при відсутності спецобладнання і його габаритів.
1.4 Розробка друкованої плати
З даним етапом розробки пов'язана ціла низка інженерних завдань які належить вирішити. Для початку треба оголосити перелік вимог до друкованої плати.
· Плата повинна бути односторонньою.
· Розміри плати не повинні перевищувати 100х100 мм.
· Допускаються перемички з мідного дроту перетином 2 кв. мм.
· Ширина доріжок за якими йтиме струм мотора не менше 2 мм.
· Передбачити можливість установки радіатора.
· Всі елементи повинні встановлюється «через дірку».
· Невикористану площу заповнити мідним шаром електрично пов'язаним з нулем живлення і передбачити термо-бар'єри для комфортного монтажу компонентів.
З урахуванням даних вимог була розроблена розводка друкованої плати в програмному забезпеченні Sprint-Layout 6. Рендер готової плати можна побачити нижче на рисунку 1.9
Рисунок 1.9
2. Розробка програмного забезпечення
2.1 Опис роботи алгоритму програми
Алгоритм програми повинен вирішувати ряд завдань, і відповідати низці вимог:
· Алгоритм повинен бути досить оптимізований щоб відповідати вимогам за часом реакції при тактуванні мікроконтролера від кварцового резонатора на 16 МГц.
· Алгоритм повинен паралельно і абсолютно незалежно робити 3 завдання, а саме вести відлік вхідних імпульсів від інтерфейсу управління, формувати вихідний ШІМ сигнал, а також приводити значення шпаруватості вихідного ШІМ сигналу відповідно до різниці кількості імпульсів що прийшли від інтерфейсу управления.
Для відповідності цим вимогам мною був обраний цілком стандартний метод формування значення шпаруватості ШІМ, а саме використання ПІД регулятора.
ПІД-регулятор формує керуючий сигнал, який є сумою трьох доданків, перше з яких пропорційно різниці вхідного сигналу і сигналу зворотного зв'язку (сигнал неузгодженості), друге - інтеграл сигналу неузгодженості, третє - похідна сигналу неузгодженості.
Для обліку імпульсів що прийшли від інтерфейсу управління буде використовуватися переривання INT1, яке треба проініціалізувати в режимі спрацьовування по передньому фронту. До входу даного переривання буде підключений «ШАГ» інтерфейсу управління. Напрямок руху буде визначаться за станом 5того входу порту D, до котрого в свою чергу буде підключений сигнал «НАПРЯМ» інтерфейсу управління.
Також потрібно проініціалізувати 16ти бітний TIMER1 з частотою 8 МГц, заздалегідь заданим значенням 0хЕ0С0 і включеним перериванням по переповненню для отримання часового періоду переповнення таймера в 10 мс, а також включити переривання в порівнянні щоб регулювати шпаруватість ШІМ.
В основному циклі програми буде реалізований алгоритм PID регулятора результат обчислень котрого буде записуватися в регістр порівняння TIMER1. Також треба передбачити умову при якій нульовий стан на 4том вході порту В буде записувати в регістр порівняння TIMER1 значення 0хЕ0С0. (Опціональний вхід інтерфейсу управління «ДОЗВІЛ»)
Примітка. Всі вищеперелічені входи розглядаються як інвертовані і проініціалізовані з внутрішньої підтяжкою до напруги живлення, а значить в непідключеному стані вони перебувають у стані 1.
2.2 Лістинг програми
Код програмного забезпечення був написаний відповідно з описом алгоритму і налагоджений на реальній системі. Написання коду відбувалося на мові С ++ в програмному забезпеченні для розробки прошивок до мікроконтролерів сімейства АVR під назвою CodeVisionAVR V3.10 Advanced розробленої компанією HP InfoTech.
/*******************************************************
This program was created by the
CodeWizardAVR V3.10 Advanced
Automatic Program Generator
© Copyright 1998-2014 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
Project :
Version :
Date : 15.09.2015
Author :
Company :
Comments:
Chip type : ATtiny2313A
AVR Core Clock frequency: 8,000000 MHz
Memory model : Tiny
External RAM size : 0
Data Stack size : 32
*******************************************************/
#include <tiny2313a.h>
#include <delay.h>
// Declare your global variables here
char step;
bit stepbuf0;
bit stepbuf1;
bit stepbuf2;
bit stepbuf3;
char move;
char wait;
bit stop;
bit dir;
// Pin change 0-7 interrupt service routine
interrupt [PC_INT0] void pin_change_isr0(void)
{
// Place your code here
if(!PINB.7&stop==0)
{
stop=1;
dir=PINB.6;
}
else
{
if(PINB.7)
{
stop=0;
}
}
if(!stop)
{
if(!PINB.5)
{
move=200;
wait=2;
if(PINB.6)
{
if(step<7){step++;}else{step=0;}
}
else
{
if(step>0){step--;}else{step=7;}
}
switch(step)
{
case 0:
PORTB.1=1;
PORTB.0=0;
PORTB.3=0;
PORTB.2=0;
break;
case 1:
PORTB.1=1;
PORTB.0=0;
PORTB.3=1;
PORTB.2=0;
break;
case 2:
PORTB.1=0;
PORTB.0=0;
PORTB.3=1;
PORTB.2=0;
break;
case 3:
PORTB.1=0;
PORTB.0=1;
PORTB.3=1;
PORTB.2=0;
break;
case 4:
PORTB.1=0;
PORTB.0=1;
PORTB.3=0;
PORTB.2=0;
break;
case 5:
PORTB.1=0;
PORTB.0=1;
PORTB.3=0;
PORTB.2=1;
break;
case 6:
PORTB.1=0;
PORTB.0=0;
PORTB.3=0;
PORTB.2=1;
break;
case 7:
PORTB.1=1;
PORTB.0=0;
PORTB.3=0;
PORTB.2=1;
break;
}
}
}
else
{
if(PINB.6!=dir)
{
if(!PINB.5)
{
move=200;
wait=2;
if(PINB.6)
{
if(step<7){step++;}else{step=0;}
}
else
{
if(step>0){step--;}else{step=7;}
}
switch(step)
{
case 0:
PORTB.1=1;
PORTB.0=0;
PORTB.3=0;
PORTB.2=0;
break;
case 1:
PORTB.1=1;
PORTB.0=0;
PORTB.3=1;
PORTB.2=0;
break;
case 2:
break;
case 3:
PORTB.1=0;
PORTB.0=1;
PORTB.2=0;
break;
case 4:
PORTB.1=0;
PORTB.0=1;
PORTB.3=0;
PORTB.2=0;
break;
case 5:
PORTB.1=0;
PORTB.0=1;
PORTB.3=0;
PORTB.2=1;
break;
case 6:
PORTB.1=0;
PORTB.0=0;
PORTB.3=0;
PORTB.2=1;
break;
case 7:
PORTB.1=1;
PORTB.0=0;
PORTB.3=0;
PORTB.2=1;
break;
}
}
}
void main(void)
{
// Declare your local variables here
// Crystal Oscillator division factor: 1
#pragma optsize-
CLKPR=(1<<CLKPCE);
CLKPR=(0<<CLKPCE) | (0<<CLKPS3) | (0<<CLKPS2) | (0<<CLKPS1) | (0<<CLKPS0);
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif
// Input/Output Ports initialization
// Port A initialization
// Function: Bit2=In Bit1=In Bit0=In
DDRA=(0<<DDA2) | (0<<DDA1) | (0<<DDA0);
// State: Bit2=T Bit1=T Bit0=T
PORTA=(0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0);
// Port B initialization
// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=Out Bit2=Out Bit1=Out Bit0=Out
DDRB=(0<<DDB7) | (0<<DDB6) | (0<<DDB5) | (0<<DDB4) | (1<<DDB3) | (1<<DDB2) | (1<<DDB1) | (1<<DDB0);
// State: Bit7=P Bit6=P Bit5=P Bit4=T Bit3=0 Bit2=0 Bit1=0 Bit0=0
PORTB=(1<<PORTB7) | (1<<PORTB6) | (1<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0);
// Port D initialization
// Function: Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In
DDRD=(0<<DDD6) | (0<<DDD5) | (0<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) | (0<<DDD0);
// State: Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T
PORTD=(0<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0);
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=0xFF
// OC0A output: Disconnected
// OC0B output: Disconnected
TCCR0A=(0<<COM0A1) | (0<<COM0A0) | (0<<COM0B1) | (0<<COM0B0) | (0<<WGM01) | (0<<WGM00);
TCCR0B=(0<<WGM02) | (0<<CS02) | (0<<CS01) | (0<<CS00);
TCNT0=0x00;
OCR0A=0x00;
OCR0B=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer1 Stopped
// Mode: Normal top=0xFFFF
// OC1A output: Disconnected
// OC1B output: Disconnected
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=(0<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (0<<WGM10);
TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (0<<WGM12) | (0<<CS12) | (0<<CS11) | (0<<CS10);
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=(0<<TOIE1) | (0<<OCIE1A) | (0<<OCIE1B) | (0<<ICIE1) | (0<<OCIE0B) | (0<<TOIE0) | (0<<OCIE0A);
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// Interrupt on any change on pins PCINT0-7: On
// Interrupt on any change on pins PCINT8-10: Off
// Interrupt on any change on pins PCINT11-17: Off
MCUCR=(0<<ISC11) | (0<<ISC10) | (0<<ISC01) | (0<<ISC00);
PCMSK0=(1<<PCINT7) | (0<<PCINT6) | (1<<PCINT5) | (0<<PCINT4) | (0<<PCINT3) | (0<<PCINT2) | (0<<PCINT1) |
(0<<PCINT0);
GIMSK=(0<<INT1) | (0<<INT0) | (1<<PCIE0) | (0<<PCIE2) | (0<<PCIE1);
GIFR=(0<<INTF1) | (0<<INTF0) | (1<<PCIF0) | (0<<PCIF2) | (0<<PCIF1);
// USI initialization
// Mode: Disabled
// Clock source: Register & Counter=no clk.
// USI Counter Overflow Interrupt: Off
USICR=(0<<USISIE) | (0<<USIOIE) | (0<<USIWM1) | (0<<USIWM0) | (0<<USICS1) | (0<<USICS0) | (0<<USICLK) | (0<<USITC);
// USART initialization
// USART disabled
UCSRB=(0<<RXCIE) | (0<<TXCIE) | (0<<UDRIE) | (0<<RXEN) | (0<<TXEN) | (0<<UCSZ2) | (0<<RXB8) | (0<<TXB8);
// Analog Comparator initialization
// The Analog Comparator's negative input is
// connected to the AIN1 pin
ACSR=(1<<ACD) | (0<<ACBG) | (0<<ACO) | (0<<ACI) | (0<<ACIE) | (0<<ACIC) | (0<<ACIS1) | (0<<ACIS0);
// Digital input buffer on AIN0: On
// Digital input buffer on AIN1: On
DIDR=(0<<AIN0D) | (0<<AIN1D);
// Global enable interrupts
#asm("sei")
while (1)
{
// Place your code here
if(move>0)
{
move--;
delay_ms(3);
}
else
{
stepbuf0=PORTB.0;
stepbuf1=PORTB.1;
stepbuf2=PORTB.2;
stepbuf3=PORTB.3;
while(move==0)
{
delay_us(5);
if(wait==0)
{
wait=2;
PORTB.0=stepbuf0;
PORTB.1=stepbuf1;
PORTB.2=stepbuf2;
PORTB.3=stepbuf3;
}
else
{
wait--;
PORTB.0=0;
PORTB.1=0;
PORTB.2=0;
PORTB.3=0;
}
}
}
}
}
* Примітка. З коду не були прибрані фрагменти з ініціалізацією портів, переривань і таймерів для кращого сприйняття.
Висновки
Під час виконання даної курсової роботи я розробив програмне забезпечення для електронного пристрою для управління кроковим двигуном, проаналізував можливі блоки для його створення та характеристики якими вони мусять обладати. Під час випробувань коду недоліків виявлено не було, що говорить про добре проведений етап розробки, з передбаченням можливих можливих доповнень і покращень коду при необхідній потребі.
Також можна відзначити той факт що я освоїв принцип дії програматора, а також програмні оболонки що дозволяють працювати з ним і програмувати за допомогою них.
Список використаної літератури
1. Белов А.В. Микроконтроллеры АVR в радиолюбительской практике - СП-б, Наука и техника, 2007 - 352с.
2. Проектирование цифровых устройств на однокристальных микроконтроллерах / В.В. Сташин [ и др.]. - М.: Энергоатомиздат, 1990. - 224 с.
3. Евстифеев А.В. Микроконтроллеры Microchip: практическое руководство/А.В.Евстифеев. - М.: Горячая линия - Телеком, 2002. - 296 с.
4. Кравченко А.В. 10 практических устройств на AVR-микро-
контроллерах. Книга 1 - М., Додэка -ХХ1, МК-Пресс, 2008 - 224с.
5.Трамперт В. Измерение, управление и регулирование с помощью АVR-микроконтроллеров: Пер. с нем - К., МК-Пресс, 2006 - 208с.
6. Мортон Дж. Микроконтроллеры АVR. Вводный курс /Пер. с англ. - М., Додэка -ХХ1, 2006 - 272с.
Додаток
Размещено на Allbest.ru
Подобные документы
Розробка системи керування фрезерним верстатом ЧПК на основі Arduino Uno. Мікроконтроллер та драйвер крокового двигуна. Огляд кнопки аварійного керування. Програмна реалізація та математичне моделювання роботи системи, техніко-економічне обґрунтування.
дипломная работа [6,3 M], добавлен 17.02.2022Розрахунок потужності і вибір двигуна відповідно до заданих параметрів. Перевірка вибраного двигуна в умовах пуску і перевантаження. Перевірка двигуна по кількості включень та по перегріву. Обгрунтування та вибір елементів схеми. Опис роботи схеми.
курсовая работа [71,1 K], добавлен 13.05.2012Дослідження принципів керування в системах автоматичного керування об’єктами і процесами за збуренням і відхиленням. Основні переваги та недоліки керування за збуренням. Аналіз якості способу керування швидкістю обертання двигуна постійного струму.
лабораторная работа [333,0 K], добавлен 28.05.2013Структурний синтез як перехід від формалізованого алгоритму керування. Розробка технологічної установки схеми керування. Схема керування асинхронним двигуном з коротко замкнутим ротором і двома статорними обмотками. Механічні характеристики двигуна.
курсовая работа [74,2 K], добавлен 22.12.2010Принцип роботи пульту числового програмного керування. Текст керуючої програми для заданих умов обробки деталі. Частота обертання шпинделя верстата. Цикли поперечної обробки та обробки дуги проти годинникової стрілки. Цикл глибокого свердління.
лабораторная работа [62,6 K], добавлен 09.05.2011Опис роботи функціональної та кінематичної схеми установки. Розрахунок і побудова механічної характеристики робочої машини, електродвигуна та його механічної характеристики. Визначення потужності, споживаної електродвигуном. Вибір пристрою керування.
курсовая работа [270,8 K], добавлен 18.07.2011Класифікація насосних станцій водопостачання. Вимоги до електроприводу та вибору двигуна. Розробка схеми керування та взаємодії електроприводу насоса з електроприводом засувки. Конфігурування перетворювача частоти для реалізації поставленої задачі.
дипломная работа [980,5 K], добавлен 03.09.2013Розрахунок потужності навантаження. Контурно-позиційне керування в приводах подач верстатів і ланок роботів. Вибір двигуна і його перевірка. Вибір інформаційних електромеханічних елементів виконавчих систем верстату. Система регулювання положення.
курсовая работа [43,6 K], добавлен 14.08.2011Побудова математичних моделей об'єктів керування. Вибір пристроїв незмінної та змінної частин. Вирішення задачі аналізу чи синтезу. Принцип роботи змішувальної установки основі одноконтурних систем регулювання. Синтез автоматичної системи регулювання.
курсовая работа [301,9 K], добавлен 22.02.2011Конструкція, кінематика, технічні характеристики екскаватора ЕКГ–10I. Обґрунтування і вибір системи електропривода, розрахунок її потужності. Розрахунок регуляторів аналогової системи керування. Моделювання динамічних режимів роботи привода на ЕОМ.
дипломная работа [5,6 M], добавлен 18.06.2015