Розробка мобільного гоночного робота

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Кафедра СКС

Інформація про роботу

Рік:
2024
Тип роботи:
Курсовий проект
Предмет:
Спеціалізовані мікропроцесорні системи

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” Кафедра СКС / Курсовий проект з дисципліни “Спеціалізовані мікропроцесорні системи” на тему: “Розробка мобільного гоночного робота” Зміст Завдання на проектування 3 Вступ 5 1. Розробка структури автоматизованого робота 6 1.1.Платформа Arduino 7 1.2. Детектори лінії траси 8 1.3. С Двоколісна платфорама miniQ 9 1.4. Двигуни 10 1.5. Motor Shield 11 1.6. Troyka Shield 12 Висновки 13 2. Розробка керуючого модуля на базі мікроконтролерра Arduino Uno в середовищі проектування Fritzing 15 2.1. Система на Arduino 15 2.2. Arduino та переваги 15 2.3. Методика розробки і засіб проектування Fritzing 16 2.4. Реалізація автономного управління робота 17 Висновок 18 Додатки 19 Завдання на проектування Розробити мобільний гоночний робот, призначений для участі в змаганнях Roborace [http://www.roborace.te.ua/]. Основним завданням робота є проїхати певну кількість кіл траси за найкоротший термін. Траса представляє собою набір концентричних ліній чорного кольору на білому фоні, обмежених бортами. Основні функції, які повинен виконувати мобільний гоночний робот: керування рухом повинне здійснюватися в автоматичному режимі; під час руху забороняються зіткнення робота з іншими роботами та бортами траси; об’їзд перешкод на трасі (інших роботів) може здійснюватися з будь якої сторони. Мобільний гоночний робот будується за класичним, для автомобілів, компонуванням і складається з наступних підсистем: виконавчі механізми; вимірювальна підсистема; підсистема керування. Виконавчі механізми призначені для забезпечення керованого руху робота і складаються з: курсового колекторного двигуна призначеного для забезпечення обертання ведучих коліс з заданою швидкістю та у заданому напрямку; сервопривода або колекторного двигуна призначеного для встановлення направляючих коліс під заданим кутом до осі робота для забезпечення руху по заданій траєкторії. Вимірювальна підсистема призначена для визначення параметрів руху робота, положення робота відносно смуг траси, її бортів та інших роботів і складається з: курсового дальноміру (дальномірів) призначеного для визначення відстані до найближчої перешкоди розташованої по напрямку руху робота; бокового дальноміру (дальномірів) призначених для визначення відстаней до бокових перешкод; контактних вимикачів призначених для визначення зіткнень з перешкодами, які не були виявлені дальномірами; спідометр призначений для вимірювання швидкості руху; сенсор положення направляючих коліс призначений для визначення куту повороту направляючих коліс; Вступ Системам безпілотних автономних засобів пересування відводиться щільне місце в науковій розвідці та дослідженнях, це пов’язано як і з відсутністю можливості забезпечення керування людиною, так і нездатністю оператора об’єктивно реагувати на деякі ситуації. А оскільки таке керування набуває все більшого поширення, то і вимоги до таких систем стають вищими, що в свою чергу вимагає як більшої гнучкості, продуктивності та функціональності від вузлів обробки та управління, так і нових рішень в апаратній складовій. 1. Розробка структури автоматизованого робота Завданням розроблюваного гоночного робота є участь у змаганнях – перегонах роботів, виходячи з цього перед ним ставляться наступні вимоги: пересування в просторі, моніторинг зовнішнього середовища і реакція на подразники (наявність перешкоди, наявність доріжки). Аналізуючи висунуті вимоги можна конкретизувати структурні одиниці робота та відповідальне за їх функціонування апаратне забезпечення. Перш за все це система приводів, які дозволяють пересуватися у горизонтальній площині в довільному напрямі. По-друге, це система виявлення перешкод, яка б дозволяла роботу своєчасно виявляти, отже, і оминати їх. По-третє, мусить бути система детектування доріжок траси, що дозволятиме безперервно слідкувати і слідувати по одній з них. По-четверте, необхідна наявність мусить бути IRDA приймача команд від суддів. Таким чином виділено такі апаратні складові робота: двигун приводу і відповідний йому драйвер; двигун керма і драйвер даного двигуна; система відслідковування доріжок траси; IRDA приймач команд від суддів; вузол керування пересуванням і реагування на подразники. Загальна структурна схема робота представлена на рис.1. / Рис.1.1. Загальна структурна схема автоматизованого робота Як базу для побудови робота була обрана модель іграшкового автомобіля на платформі Arduino Uno , оскільки його платформа задовільняє висунутим вимогам функціональності в просторовому пересуванні. Із штатного обладнання іграшки використано: механічна частина; двигун приводу; рульовий двигун; акумуляторна батарея. Для забезпечення автономності керування використано наступні засоби: лінійка інфрачервоних детекторів лінії траси; керуючий вузол; Платформа Arduino Arduino (Ардуіно) — апаратна обчислювальна платформа для аматорського конструювання, основними компонентами якої є плата мікроконтролера з елементами вводу/виводу та середовище розробки Processing/Wiring на мові програмування, що є підмножиною C/C++. Суть створення Arduino-проектів проста, ви берете одну плату з великої лінійки, підключаєте до її контактів датчик чи якийсь модуль, і пишете, коли на ці контакти потрібно подавати струм чи наоборот перевіряти наявність струму на них. Для свого проетку було обрано модель Arduino Uno R3. / Рис. 1.1. Зовнішній вигляд плати Arduino Uno R3 Характеристики  Мікроконтроллер ATmega328  Робоча напруга 5B  Оекомендована напруга 7-12B  Максимальна напруга 6-20B  Цифрові входи/виходи 14(6)  Аналогові входи 6  максимальний струм одного виходу 40 мА  Максимальний вихідний струм виходу 3.3V 50мА  Flash пам'ять 32КБ  EEPROM 2КБ  SRAM 1КБ  Тактова частота 16МГц  Рис. 1.2. Характеристики Arduino Uno R3 Детектори лінії траси Нам необхідно відрізнити чорну поверхню від білої? Скористайтеся цифровим датчиком лінії.Датчик лінії дозволяє визначати колір поверхні біля нього. Виходом є простою бінарний цифровий сигнал: логічний 0 або 1 в залежності від кольору, який він бачить перед собою. Одиниця - чорний або порожнеча, нуль - НЕ чорний. Основний фотоелемент працює в інфрачервоному спектрі. Додатково на сенсорі встановлений світлодіод, який загоряється коли поверхню під датчиком світла. Це зручно для діагностики і настройки. / Рис. 1.2.1 Зовнішній вигляд детекора Характеристики  Напруга живлення 3-5В  Споживаний струм 10мА  Рис. 1.2.2 Характеристики детектора / Рис. 1.2.3 Паринципова схема оптопари детекторів розмітки траси Двоколісна платфорама miniQ Маленька і легка платформа виробництва DFRobot є конструктор, в який входять: 1 монтажна поверхня , що не проводить струм всіх частин та інших компонентів; Пара коліс 42 × 19 мм; 2 мікромотора шириною 12 мм з редуктором; Пара кріплень для моторів; Кульова опора 12 мм (третє колесо); Кріплення. / Рис. 1.3.1 Набір miniQ Даний набір доцільно використовувати через наявність коліс, двигунів та кріплень. Проте дана платфорама не підходить під мій проект через наявність на передній та задній сторонах лиш по 2 кріплення для детекторів ліній. На рисунку 1.3.2 зробаженя платформа яку доцільно використовуати через наявність 3 кріплень. Це позволить встановити 3 датчики, тим самим збільшити якість і точніть розпізнавання ліній. / Рис. 1.3.2 модифікована поверхня miniQ Двигуни Мікромотор з передавальними шестернями, що формують редуктор і D-образним шпинделем підійде для приведення в рух коліс, лопатей і подібних речей. Мотор поставляється без кріплення і проводів. Для підключення може знадобитися пайка. Щоб надійно встановити мотор куди-небудь, існує спеціальне кріплення. Для кріплення чого-небудь на вал мікромотора підійде монтажна втулка. Не намагайтеся підключити мотор до мікроконтролеру безпосередньо - великий струм виведе його з ладу! Для підключення приводу повинен бути використаний драйвер, такий як L293D або Motor Shield. / Рис. 1.4 Мотор 12мм Характеристики  Робоча напруга 3 - 9 В  Номінальна напруга 6 В  Струм без навантаження 80 мА  Струм при блокуванні 1600 мА  Діаметр вихідного валу 3 мм  Довжина без вала 25 мм (для  Вага 10 гр   Motor Shield Виходи мікроконтролера є слабкострумовими, тому струм мотора, при підключенні його безпосередньо, виведе їх з ладу. Цю проблему вирішує так званий H-міст. Він дозволяє керувати швидкістю і напрямком обертання мотора за допомогою логічних сигналів мікроконтролера. На сьогоднішній день, найпопулярнішим H-мостом, є мікросхема L298P. Motor Shield - плата розширення для Arduino на базі чіпа L298P, що дозволяє керувати моторами з напругою 5-24 В в режимі роздільного харчування і 7-12 В в режимі об'єднаного харчування. Плата має 2 незалежних канали. Використовуючи їх, можна підключити 2 Мотори. / Рис. 1.5. зовнішній вигляд MotorShield Troyka Shield Troyka Shield - це плата розширення, яка допомагає підключати велику кількість периферії на зразок сенсорів через стандартні 3-провідні шлейфи. Це дозволяє не вдаватися до пайки або окремої макетної платі. / Рис. 1.6. зовнішній вигляд Troyka Shield По периметру встановлені трійки контактів «S-V-G». Вони з'єднані з лініями керуючої плати наступним чином: -сигнал (S) - з відповідним цифровим або аналоговим піном; -харчування (V) - з робочою напругою; -земля (G) - з землею. Саме ці лінії потрібні для взаємодії з більшістю модулів. У групі пинов з 8-го по 13-й використовується альтернативна лінія харчування V2, напруга на якій можна вибирати джампером: V2 + 5V - на V2 буде 5 вольт незалежно від робочої напруги керуючої плати; V2 + IOref - на V2 буде робоча напруга, то ж саме, що і на інших групах пінів. Кабель живлення Кабель має роз'єм для підключення стандартних батарейок на 9 В типу «Крона» на одному боці та штекер 2,1 мм з позитивним центром на інший. Він підійде для автономного живлення Arduino і для забезпечення необхідним струмом потужних споживачів на кшталт моторів. / Рис. 1.7. Кабель живлення Висновки У даному розділі розглядається загальна структура автоматизованого гоночного робота та апаратні рішення для реалізації його основних вузлів. Починаючи з платформи Arduino, проаналізовано її використання для керування роботом завдяки простоті та гнучкості програмування. Далі розглянуті детектори лінії траси, що визначають межі траси, допомагаючи роботу утримуватися на заданій траєкторії. Двоколісна платформа miniQ використовується як базова конструкція робота, забезпечуючи стабільну підставу для розміщення електроніки та інших компонентів. Для приведення руху робота використовуються двигуни, які передають рух до коліс або гусениць. Для керування цими двигунами використовується Motor Shield, що є розширювачем для платформи Arduino, спрощуючи підключення та керування різними типами двигунів. Troyka Shield використовується для розширення можливостей платформи Arduino, дозволяючи підключати різноманітні датчики та інші пристрої для збору даних та контролю. Ці розділи спрямовані на розуміння загальної структури автоматизованого гоночного робота та вибір оптимальних апаратних рішень для ефективної реалізації поставлених завдань. Розробка керуючого модуля на базі мікроконтролерра Arduino Uno в середовищі проектування Fritzing Система на Arduino / Рис. 2.1. Структурна схема Arduino Uno Arduino та переваги ля фізичного програмування існує безліч мікрокомп'ютерів і платформ, в тому числі популярний і дешевий Raspberry Pi. Більшість існуючих програм допомагає полегшити роботу і навчання програмуванню, Arduino не стає винятком . Але у цієї платформи є безліч вагомих переваг перед рядом конкурентів: Низька ціна в порівнянні з більшістю подібних платформ. Кросплатформеність. З Arduino працювати можна хоч на Windows, хоч на Mac OS, тоді як більшість платформ розробляється виключно під Windows. Проста програмна обстановка. Платформа відмінно підходить для новачків, а докладних уроків в мережі безліч. Відкритий ресурс і розширюване програмне забезпечення. Просунуті програмісти можуть без проблем самостійно розширювати під себе ПО (і навіть залізо). Методика розробки і засіб проектування Fritzing Для проектування систем на базі мікроконтролерів Arduino використовується інтегроване середовище розробки програмного забезпечення Fritzing. Fritzing - це програма, що призначена для розробки ( точніше зображення, програма не симулятор!!! ) електронних пристроїв від прототипу в вигляді макетної плати до кінцевого продукту у вигляді друкованої плати (присутнє автотрасування).  Пристрої створюються з готових елементів, список яких можна подивитися в правому верхньому куті програми, які включають монтажну плату Arduino, різні аналогові і цифрові мікросхеми, транзистори, світлодіоди, резистори, конденсатори, кнопки, макетні плати, батарейки і навіть моторчики:). Щоб помістити їх на схему - їх досить вибрати зі списку і перетягнути на робоче місце лівою кнопкою мишки:). Малювати схему можна як у режимі макетної плати - так і в режимі принципової схеми. Друга схема буде будуватися автоматично! Тобто накидавши схему на макетціі - вона автоматично побудується і у вигляді принципової схеми. Реалізація автономного управління робота Автономне управління робота реалізоване на базі Arduino Uno. / Рис. 2.2. Пердставлення всіх компонентів робота на базі Arduino Uno. Для написання робочої програми управлінням робота використовується середовище розробки Arduino IDE. / Рис. 2.2. Arduino IDe. Висновок У даній курсовій роботі було розглянуто основні принципи побудови автономного мобільного робота на базі іграшкової моделі автомобіля. Було розглянуто сенсорні та керуючі підсистеми необхідні для повноцінного функціонування робота, які забезпечують виконання основного завдання: проїхати певну кількість кіл, яка представляє собою набір концентричних ліній чорного кольору на білому фоні, обмежених бортами. Елемнети системи, які встановлюються як готові покупні модулі: смуга давачів на відбиття; оптичні інфрачервоні дальноміри; рульовий сервопривід; драйвер колекторного двигуна. Відповідно до завдання були розроблені електрична функціональна та принципова схеми. Керуючий елемент (мікроконтролер) Arduino дозволяє реалізувати всю периферію всередині самого мікроконтролера, що дозволило зменшити витрати на такі елементи периферії як ШІМ модулятори та АЦП. Відповідно для розробки використовувалась система проектування Fritzing , особливістю якої є можливість емуляції роботи мікроконтролера. Додатки Додаток 1. Код керування Мотори підключаються до клем M1 +, M1-, M2 +, M2-   Motor shield використовує чотири контакти 6,5,7,4 для управління моторами #define SPEED_LEFT 6 #define SPEED_RIGHT 5 #define DIR_LEFT 7 #define DIR_RIGHT 4 #define LEFT_SENSOR_PIN 8 #define RIGHT_SENSOR_PIN 9 Швидкість руху (0-255) #define SPEED 100 Скорость прохождения сложных участков #define SLOW_SPEED 35 #define BACK_SLOW_SPEED 30 #define BACK_FAST_SPEED 50 Коефіцієнт гальмув #define BRAKE_K 4 #define STATE_FORWARD 0 #define STATE_RIGHT 1 #define STATE_LEFT 2 #define SPEED_STEP 2 #define FAST_TIME_THRESHOLD 500 int state = STATE_FORWARD; int currentSpeed = SPEED; int fastTime = 0; void runForward() { state = STATE_FORWARD; fastTime += 1; if (fastTime FAST_TIME_THRESHOLD) { currentSpeed = SLOW_SPEED; } else { currentSpeed = min(currentSpeed + SPEED_STEP, SPEED); } analogWrite(SPEED_LEFT, currentSpeed); analogWrite(SPEED_RIGHT, currentSpeed); digitalWrite(DIR_LEFT, HIGH); digitalWrite(DIR_RIGHT, HIGH); } void steerRight() { state = STATE_RIGHT; fastTime = 0; сповільнення правого колеса analogWrite(SPEED_RIGHT, 0); analogWrite(SPEED_LEFT, SPEED); digitalWrite(DIR_LEFT, HIGH); digitalWrite(DIR_RIGHT, HIGH); } void steerLeft() { state = STATE_LEFT; fastTime = 0; analogWrite(SPEED_LEFT, 0); analogWrite(SPEED_RIGHT, SPEED); digitalWrite(DIR_LEFT, HIGH); digitalWrite(DIR_RIGHT, HIGH); } void stepBack(int duration, int state) { if (!duration) return; В зависимости от направления поворота при движении назад будем делать небольшой разворот int leftSpeed = (state == STATE_RIGHT) BACK_SLOW_SPEED BACK_FAST_SPEED; int rightSpeed = (state == STATE_LEFT) BACK_SLOW_SPEED BACK_FAST_SPEED; analogWrite(SPEED_LEFT, leftSpeed); analogWrite(SPEED_RIGHT, rightSpeed); реверс колёс digitalWrite(DIR_RIGHT, LOW); digitalWrite(DIR_LEFT, LOW); delay(duration); } void setup() { Налаштовуєт виходи плати 4,5,6,7 на вивід сигналів for(int i = 4; i = 7; i++) pinMode(i, OUTPUT); Сразу едем вперёд runForward(); } void loop() { boolean left = !digitalRead(LEFT_SENSOR_PIN); boolean right = !digitalRead(RIGHT_SENSOR_PIN); задання руху в сторони int targetState; if (left == right) { targetState = STATE_FORWARD; } else if (left) { targetState = STATE_LEFT; } else { targetState = STATE_RIGHT; } if (state == STATE_FORWARD && targetState != STATE_FORWARD) { int brakeTime = (currentSpeed SLOW_SPEED) currentSpeed 0; stepBack(brakeTime, targetState); } switch (targetState) { case STATE_FORWARD runForward(); break; case STATE_RIGHT steerRight(); break; case STATE_LEFT steerLeft(); break; } }
Антиботан аватар за замовчуванням

11.04.2024 00:04-

Коментарі

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

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!