Допомога у написанні освітніх робіт...
Допоможемо швидко та з гарантією якості!

Розробка робота для керування електродвигунами за допомогою програми

КурсоваДопомога в написанніДізнатися вартістьмоєї роботи

На фотодатчик 1 і фотодатчик 2 потрапляє світло, відбите від поверхні під деяким кутом (кути відбивання різних за кольором поверхонь — різні), а операційні підсилювачі ОУ1 і ОУ2 підсилюють сигнал з фотодатчика та передають його до АЦП. АЦПв свою чергу перетворює сигнал з фотодатчика на цифрові десятирозрядний дані D0-D10. Дані з обох датчиків обробляються в ядрі мікроконтроллера ATMega 8. Їх… Читати ще >

Розробка робота для керування електродвигунами за допомогою програми (реферат, курсова, диплом, контрольна)

Розробка робота для керування електродвигунами за допомогою програми

ЗМІСТ Завдання на проект Реферат Перелік умовних позначень, символів, одиниць, скорочень і термінів Вступ

1. Аналіз функціональної схеми мікроконтролера

2. Призначення виводів мікроконтролера

3. Розробка технічного завдання на пристрій

4. Розробка функціональної схеми пристрою

5. Розробка принципової схеми пристрою з вибором додаткових елементів

6. Розробка алгоритму роботи пристрою з описом алгоритму Висновки

ПЕРЕЛІК УМОВНИХ ПОЗНАЧЕНЬ, СИМВОЛІВ, ОДИНИЦЬ, СКОРОЧЕНЬ І ТЕРМІНІВ робот мікроконтролер електродвигун

Скорочення

Слово (словосполучення)

МК

ОС ПЗ ПК Рис.

С.

табл.

АЦП

ШД

БЖ

— мікроконтролер

— операційна система

— пояснювальна записка

— персональний комп’ютер

— рисунок

— сторінка

— таблиця

— аналогово-цифровий перетворювач

— шаговий двигун

— блок живлення

ВСТУП

AVR — найбільша виробнича лінія серед інших флеш-мікроконтролерів корпорації Atmel. Прогрес даної технології спостерігався в зниженні питомої енергії споживання (мА / МГц), розширення діапазону живлячих напруг (до 1.8 В) для продовження ресурсу батарейних систем, збільшення швидкодії до 16 млн. операцій в секунду, вбудовуванням емуляції в реальному масштабі часу, реалізації функції самопрограмування, вдосконалення і розширення кількості периферійних модулів, вбудовуванні спеціалізованих пристроїв (радіочастотний передавач, USB-контролер, драйвер ЖКИ, програмувальна логіка, контролер DVD, пристрої захисту даних) та ін.

Успіх AVR-мікроконтролерів пояснюється можливістю простого виконання проекту з досягненням необхідного результату в найкоротші терміни, чому сприяє доступність великої кількості інструментальних засобів проектування, що поставляються, як безпосередньо корпорацією Atmel, так і сторонніми виробниками. Провідні сторонні виробники випускають повний спектр компіляторів, програматорів, Асемблер, відладчиком, роз'ємів і адаптерів. Відмінною рисою інструментальних засобів від Atmel є їх невисока вартість.

Іншою особливістю AVR-мікроконтролерів, яка сприяла їх популяризації, це використання RISC-архітектури, що характеризуються потужним набором інструкцій, більшість яких виконуються за один машинний цикл. Це означає, що при рівній частоті тактового генератора вони забезпечують продуктивність в 12 (6) разів більше продуктивності попередніх мікроконтролерів на основі CISC-архітектури (наприклад, MCS51). З іншого боку, в рамках однієї програми з заданим швидкодією, AVR-мікроконтроллер може тактуватися в 12 (6) разів меншою тактовою частотою, забезпечуючи рівну швидкодію, але при цьому споживаючи набагато меншу потужність. Таким чином, AVR-мікроконтролери представляють більш широкі можливості щодо оптимізації продуктивності / енергоспоживання, що особливо важливо при розробці додатків з батарейним харчуванням. Мікроконтролери забезпечує продуктивність до 16 млн. оп. за секунду і підтримують флеш-пам'ять програм різної ємності: 1 … 256 кбайт. AVR-архітектура оптимізована під мову високого рівня С, а більшість представників сімейства megaAVR містять 8-канальний 10-розрядний АЦП, а також сумісний з IEEE 1149.1 інтерфейс JTAG або debugWIRE для вбудованого налагодження.

1. АНАЛІЗ ФУНКЦІОНАЛЬНОЇ СХЕМИ МІКРОКОНТРОЛЕРА У даному проекті використовується мікроконтролер ATMega8. Його функціональна схема зображена на рисунку 1.1.

Рисунок 1.1 — Функціональна схема мікроконтролера ATMega8

Мікроконтролер ATMega8 складається з таких основних блоків:

— 8-розрядний арифметично — логічний пристрій (АЛП);

— внутрішня флеш-пам'ять програм обсягом 8 Кбайт з можливістю внутрішньосистемного програмування через послідовний інтерфейс;

— 32 регістра загального призначення;

— внутрішню EEPROM пам’ять даних об'ємом 512 байт;

— внутрішнє ОЗУ даних об'ємом 1 Кбайт;

— 6 паралельних 8-розрядних портів;

— 4 програмованих таймера-лічильника;

— 10-розрядний 8-канальний АЦП і аналоговий компаратор;

— послідовні інтерфейси UART0, UART0, TWI і SPI;

— блоки переривання і управління (включаючи сторожовий таймер);

— вбудована периферія ;

— два 8-розрядних таймера/лічильника з окремим попереднім дільником, один з режимом порівняння;

— один 16-розрядний таймер / лічильник з окремим попередніми дільником і режимами захоплення і порівняння;

— лічильник реального часу з окремим генератором;

— три канали PWM;

— 8-канальний аналого-цифровий перетворювач (в корпусах TQFP і MLF);

— 6 каналів з 10-розрядної точністю;

— 2 канали з 8-розрядної точністю;

— 6-канальний аналого-цифровий перетворювач (в корпусі PDIP) ;

— 4 канали з 10-розрядної точністю;

— 2 канали з 8-розрядної точністю;

— байт-орієнтований 2-проводний послідовний інтерфейс;

— програмований послідовний USART;

— послідовний інтерфейс SPI (ведучий / ведений);

— програмований сторожовий таймер з окремим вбудованим генератором;

— вбудований аналоговий компаратор.

2. ПРИЗНАЧЕННЯ ВИВОДІВ МІКРОКОНТРОЛЕРА Мікроконтролер ATMega8 має 28 виводів у корпусі PDIP, які зображені на рисунку 2.1.

Рисунок 2.1 — Призначення виводів мікроконтролера ATMega8 у корпусі PDIP

Мікроконтролер ATMega8 має 32 виводи у корпусі TQFP, які зображені на рисунку 2.2.

Рисунок 2.2 — Призначення виводів мікроконтролера ATMega8 у корпусі TQFP

VCC, GND напруга живлення та заземлення відповідно.

Порт B (PB7. PB0) 8-розрядний двонаправлений порт з вбудованими навантажувальними резисторами. Вихідні буфери забезпечують струм 20 мА. При використанні виводів порту у якості входів та встановленні зовнішнього сигналу в низький стан, струм буде витікати тільки при увімкненних навантажувальних резисторах. Порт В використовується також при реалізації спеціальних функцій.

Порт C (PC5. PC0) 8-розрядний вихідний порт. Вихідні буфери забезпечують струм 20 мА. Порт C за наявності зовнішньої пам’яті даних використовується для організації шини адреси.

#RESET Вхід скидання. Для виконання скидання необхідно утримувати низький рівень на вході більш ніж 50 нс.

Port D (PD7.PD0) 8-розрядний двонаправлений порт з вбудованими навантажувальними резисторами. Вихідні буфери забезпечують струм 20 мА. При використанні портів у якості входів та встановленні зовнішнього сигналу в низький стан, струм буде витікати тільки при підключених вбудованих навантажувальних резисторах. Порт D використовується також при реалізації спеціальних функцій.

XTAL1, XTAL2 Вхід та вихід інвертую чого підсилювача генератора тактової частоти.

TOSC1, TOSC2 Вхід та вихід інвертую чого підсилювача генератора таймера/лічильника.

AVCC напруга живлення аналого-цифрового перетворювача. Вивід під'єднується до VCC через низькочастотний фільтр.

AREF вхід опорної напруги для аналого-цифрового перетворювача. На цей вивід подається напруга у діапазоні між AGND и AVCC.

AGND цей вивід має бути під'єднаний до окремого аналогового заземлення, якщо воно є на платі. В іншому випадку вивід під'єднується до загального заземлення.

3. РОЗРОБКА ТЕХНІЧНОГО ЗАВДАННЯ НА ПРИСТРІЙ Розробити робота на базі мікроконтролера ATMega8 з можливістю керування електродвигунами за допомогою програми. За допомогою фотодатчику реалізувати можливість руху роботу по прямій та кривій лініям. За допомогою програми реалізувати поворот робота на деякий кут. Вся інформація, що записується до внутрішньої пам’яті пристрою повинна зберігатися в ньому після вимкнення живлення, при чому схема повинна гарантувати повне збереження всієї інформації навіть у випадку непередбаченого вимкнення живлення. Забезпечити виявлення ліній пересічення. При русі робота по лінії можлива поява пересічення ліній. У такому випадку робот повинен призупинитися на цій лінії. Також за допомогою вбудованого динаміку робот повинен видати звуковий сигнал, при чому якщо пересічень декілька, то кількість звукових сигналів буде змінюватися лінійно.

4. РОЗРОБКА ФУНКЦІОНАЛЬНОЇ СХЕМИ ПРИСТРОЮ Робот базується на одному мікроконтролері ATMega та драйвері двигунів L293D. Функціональна схема пристрою зображена на рисунку 4.1.

Рисунок 4.1- Функціональна схема пристрою

Фотодатчик 1 та фотодатчик 2 складаються з двох частин: світло діод, що є джерелом світла і самого фото транзистора, який сприймає відбите світло. Якщо поверхня світла, то відбитого світла достатньо для відкриття фототранзистори, в іншому випадку фототранзистори буде закрито (не буде пропускати струм).

Використання фототранзистора обумовлено тим, що швидкість його спрацьовування висока і достатня навіть при дуже швидкому русі робота. Використання фотодіодів також є недопустимим. Фоторезистори мають невисоку швидкість спрацьовування, і її може бути недостатньо при високій швидкості руху робота. Світлодіод і фото транзистор розділені перешкодою, щоб світло від джерела не потрапляло на фото транзистор та не спричиняло завад.

На фотодатчик 1 і фотодатчик 2 потрапляє світло, відбите від поверхні під деяким кутом (кути відбивання різних за кольором поверхонь — різні), а операційні підсилювачі ОУ1 і ОУ2 підсилюють сигнал з фотодатчика та передають його до АЦП. АЦПв свою чергу перетворює сигнал з фотодатчика на цифрові десятирозрядний дані D0-D10. Дані з обох датчиків обробляються в ядрі мікроконтроллера ATMega 8. Їх рівні порівнюються за допомогою логічних і арифметичних дій, і залежно від результату порівняння приймається рішення про напрямок руху всієї конструкції робота.

Крім того, на вирішення схеми управління впливає замикання контактів перешкоди, встановлених ззаду і спереду конструкції. Якщо робот натрапив на перешкоду, то він повинен від'їхати назад і повернути на деякий кут наліво або на право, залежно від програми, щоб об'їхати перешкоду. Схема управління через порти, А і В подає код у драйвери обмоток D1-D4, які можуть комутувати струм через обмотку в обох напрямках. Драйвер побудований на базі контролера L293D.

По мірі протікання струму в обмотках збудження виникає обертаюче магнітне поле. Вал ШД1 і ШД2, у свою чергу, обертається згідно послідовності збудження магнітного поля. При подачі певної послідовності коду ШД1 і ШД2 обертаються, і конструкція рухається прямо або повертає вбік.

5. РОЗРОБКА ПРИНЦИПОВОЇ СХЕМИ ПРИСТРОЮ З ВИБОРОМ ДОДАТКОВИХ ЕЛЕМЕНТІВ У якості драйвера двигунів використовується мікросхема L293D, входи якої приєднані до виводів мікроконтролера так, як показано на схемі. На схемі робота входи драйвера двигунів L293D підключені до виводів порту C мікроконтролера ATmega8, але їх можна підключити до будь-якого з портів мікроконтролера (при цьому буде необхідно внести зміни в програмну частину, вказавши порт і безпосередньо його виводи відповідних рядках програми). У схемі використовується мікросхема TL499A. Саме вона дає можливість працювати схемі з необхідним рівнем стабільності. Забезпечення стабілізації напруги — один з найважливіших аспектів проектування пристроїв на мікроконтролерах.

Принципова схема пристрою вказана на рисунку 5.1.

Далі приведений список елементів, що використовуються у проекті:

— MOTOR A, MOTOR B — шагові двигуни;

— CR1 — кварцовий генератор на 16 МГц;

— 20 резисторів 150Ом;

— резистор 0,47Ом;

— два резистори 47Ом;

— два резистори 4,7кОм;

— чотири резистори 1кОм;

— резистор 30кОм;

— резистор 10кОм;

— мікроконтролери ATMega8, L293D, TL499A;

— два конденсатори ємністю 1000мкФ/ 6,3В;

— 10 конденсаторів ємністю 0,1мкФ / 50В;

— конденсатор ємністю 10 мкФ / 16В;

— конденсатор ємністю 220 мкФ / 16В;

— чотири кнопки;

— п'ять світлодіодів;

— катушка індуктивності 50 мГн.

Рисунок 5.1 — Принципова схема пристрою

6. РОЗРОБКА АЛГОРИТМУ РОБОТИ ПРИСТРОЮ З ОПИСОМ АЛГОРИТМУ Для керування роботом, його треба запрограмувати. Для цього створюється спеціальна програма, яка потім завантажується в мікроконтролер.

Для розробки програмного алгоритму використовується середа WINAVR. Дана середа розробки містить у собі наступні компоненти:

Programmers Notepad — зручний редактор програміста та інтегрована середа розробки (IDE);

AVR GCC — компілятор мов C и C++ для AVR;

avr-libc — стандартна С бібліотека для використання з GCC;

avr-as — ассемблер для микроконтроллерів AVR;

AVRDUDE — программатор (программа для загрузки та вигрузки коду микроконтроллерів);

avrdude-gui — графічний інтерфейс користувача для AVRDUDE;

MFile — автоматичний генератор Make-файлів for AVR GCC;

GNU Binutils — утиліти для AVR (

GNU Debugger (GDB) — дебагер (відладчик) с інтерфейсом командного рядка;

Insight — дебагер (відладчик) с графичним інтерфейсом користувача;

AVaRICE (JTAG ICE interface) — программа для інтерфейсів Atmel JTAG ICE;

SimulAVR — симулятор GDB с подтримкою симулятора від AVR;

Нижче приведена програма для обертання двигунами вперед та назад

#include

/***************** Функція затримки ****************/

void delay (unsigned short ms) // Мінімальна затримка кварцем 8 МГц — 1 мс

{

unsigned short i, j, k; // оголошення змінних

for (i=0; i

for (j=0; j<185; j++) // побічний цикл формування затримки

k++; // довільна дія

}

/****************************************************/

int main (void) // початок головної програми

{

DDRC = 0xff; // всі виводи порту C сконфігурувати як виходи

while (1) = _BV (PC4); // встановити «1» на лінії 4 порту C

delay (1000); // затримка 1 сек.

// ————————————————————————-;

}

Рух прямо з поворотом

#include

/***************** Функція затримки ****************/

void delay (unsigned short ms) // // Мінімальна затримка кварцем 8 МГц — 1 мс

{

unsigned short i, j, k; // оголошення змінних

for (i=0; i

for (j=0; j<185; j++) // побічний цикл формування затримки

k++; // довільна дія

/****************************************************/

int main (void) // початок головної програми

{

DDRC = 0xff; // всі виводи порту C сконфігурувати як виходи

while (1) = _BV (PC2); // встановити «1» на лінії 2 порту C

delay (500); // затримка 0,5 сек.

// —————————————————————————-;

}

Рух двигунами з використанням фотодатчика

#include

int main (void) // початок головної програми

{

DDRC = 0xff; // всі виводи порту C сконфігурувати як виходи

DDRD = 0×00; // всі виводи порту D сконфігурувати як виходи

PORTD = 0xff; // встановити «1» на на всіх виводах порту D,

// вмикаються підтягуючи резистори

while (1) { // нескінченний цикл

// перевірка сигналів низького рівня від фотодатчиків

if (!(PIND & (1<

= _BV (PC1); // встановити «1» на лінії 1 порту C

PORTC &= ~_BV (PC2); // встановити «0» на лінії 2 порту C

PORTC

else

= _BV (PC4); // встановити «1» на лінії 4 порту C

// ————————————————————————-;

}

}

Програма для руху робота по лінії

#include

int main (void) // початок головної програми

{

DDRC = 0xff; // всі виводи порту C сконфігурувати як виходи

DDRD = 0×00; // всі виводи порту D сконфігурувати як виходи

PORTD = 0xff; встановити «1» на на всіх виводах порту D,

// вмикаються підтягуючи резистори

while (1) { // нескінченний цикл

// перевірка сигналів низького рівня від фотодатчиків

if (!(PIND & (1<

// —— вмикається лівий двигун, зупиняється правий ——;

PORTC

else

= _BV (PC4); // встановити «0» на лінії 4 порту C

// ——————————————————————————;

}

}

Робот для змагань в кегльрінг

#include

/***************** Функція затримки ****************/

void delay (unsigned short ms) // Мінімальна затримка кварцем 8 МГц — 1 мс

{

unsigned short i, j, k; // оголошення змінних

for (i=0; i

for (j=0; j<185; j++) // допоміжний цикл формування затримки

k++; // довільна дія

}

/****************************************************/

int main (void) // початок головної програми

{

DDRC = 0xff; // всі виводи порту C сконфігурувати як виходи

DDRD = 0×00; // всі виводи порту D сконфігурувати як виходи

PORTD = 0xff; // встановлення «1» на на всіх виводах D,

// вмикаються підтягуючи резистори

while (1) { // нескінченний цикл

// перевірка сигналів низького рівня від фотодатчиків

if (!(PIND & (1<

= _BV (PC3); // встановити «1» на лінії 3 порту C

PORTC &= ~_BV (PC4); // встановити «0» на лінії 4 порту C

// ——————————————————————————;

else

= _BV (PC1); // встановити «1» на лінії 1 порту C

PORTC &= ~_BV (PC2); // встановити «0» на лінії 2 порту C

PORTC

}

}

Вимір дистанції

#include // перетворення типів даних

#include // підтримка послідовного каналу

#include // затримки

#include // підтримка АЛП

#define m 2933 // константа для перетворення дистанції в см

#define b 20

#define k 1

void main () // головна программа

{

unsigned char dec[4], dec2[4]; // для запису ascii після перетворення

unsigned int gp2=0,cm=0; // зчитування даних з АЛП

sleep (1000); // пауза 1 секунда

soft_serout_init (2,9600); // настройка послідовного порту 9600 8N1

while (1)

{

gp2 = analog (0); // читання

cm = (m/(gp2+b)) — k; // перетворення даних в см

utoa (gp2,dec, 10); // перетворення Integer в десят. Ascii

utoa (cm, dec2,10); // перетворення Integer в десят. Ascii

serout_byte (2,0xFE);serout_byte (2,0×00); // очищення дисплею

serout_byte (2,0xFE);serout_byte (2,0×80); // задання адреси першого рядка

serout_text (2," RAW Data= «);

serout_text (2,dec); // виведення даних Ascii

serout_byte (2,0xFE);serout_byte (2,0xC0); // задання адреси другого рядка

serout_text (2," Distance= «);

serout_text (2,dec2); // виведення даних в см

serout_byte (2,0xFE);serout_byte (2,0xCE); //

// строки 14-й позиции

serout_text (2," CM");

sleep (500);

}

}

Безконтактне уникнення перешкод

#include // перетворення типів даних

#include // управління двигунами

#include // затримки

#include

#include // підтримка АЛП

void main () // головна программа

{

unsigned int sensor=0;

unsigned char i=0;

sleep (200); sound (4000,50); // запуск та звуковий сигнал

while (1)

{

sensor=0;

for (i=0;i<5;i++)

{

sensor=(sensor+analog (0)); // зчитування даних GP2D120 5 раз

}

sensor=(sensor/5); // усереднення

if (sensor>260) // до перешкоди < 8 см?

{

backward (50);sleep (800); // оминання перешкоди

s_left (50);sleep (600);

}

else

{

forward (50); // рух вперед

}

}

}

ВИСНОВКИ В ході виконання даного курсового проекту було розроблено робота на базі мікроконтролера ATMega 8. Даний робот може рухатись по лінії, може використовуватись на змаганнях з «Кегльрінгу». Даний робот може бути вдосконалений в майбутньому.

Основними вдосконаленнями можуть бути підключення дистанційного пульту керування, також можна встановити датчики завад, а також можна змінювати програму керування роботом. Це дає можливість використовувати його у якості малюю чого робота, а також у якості танцюючого. Ці можливості можна реалізувати методом додання олівців до конструкції (для малюючого робота), а також підбору коду програми (для танцюючого робота).

Показати весь текст
Заповнити форму поточною роботою