- Концепція робота послідовника лінії
- Потрібні компоненти
- Кругова діаграма
- Програмування Atmega16 для Line Follower Robot
Тут ми будуємо ще один проект з мікроконтролером AVR Atmega16. Якщо ви не знайомі з мікроконтролерами AVR, ви можете звернутися до попередніх проектів AVR та навчальних посібників.
Створення робота - це завжди гострі відчуття для всіх любителів електроніки. І це відчуття можна максимізувати, якщо робот може автоматично робити деякі дії без будь-яких зовнішніх вказівок. Одним з найпоширеніших роботів-початківців електроніки є Line Follower Robot. Як випливає з назви, робот буде слідувати лінії, намальованій на поверхні. Лінія не повинна бути прямою. Також лінії можуть бути будь-яких кольорів.
Раніше ми будували проекти Line Follower Robot, використовуючи різні контролери:
- Робот-послідовник лінії за допомогою мікроконтролера 8051
- Робот-послідовник лінії за допомогою мікроконтролера PIC
- Робот-послідовник лінії за допомогою Arduino
- Робот-послідовник лінії за допомогою Raspberry Pi
- Робот-послідовник лінії за допомогою стартової панелі MSP430
Сьогодні ми використаємо мікроконтролер AVR для створення робота-лінійного послідовника.
В основному ІЧ-датчики використовуються для виявлення ліній. ІЧ-датчики добре виявляють білі або чорні поверхні. Хоча ви можете використовувати інші складні датчики, які зможуть виявляти всі кольори і можуть зробити робота, який може слідувати за всіма кольоровими лініями. Робот повинен мати можливість виявляти лінію, навіть якщо шлях змінено шляхом зміни кута, і продовжувати слідувати за лінією. Крім того, він повинен зупинятися там, де зона зупинки потрапляє на лінію.
Роботи-послідовники широко використовуються зараз у виробничих галузях, медичній галузі, побутовому застосуванні та на складі товарів. Роботи не обмежуються лише цими програмами і можуть розширити свої програми в багатьох майбутніх програмах.
Концепція робота послідовника лінії
ІЧ-датчики є ключовим гравцем у цьому проекті. ІЧ-датчики розміщені на передній стороні робота для відстеження намальованої чорної лінії та поверхні. Робот розміщений між лінією і за допомогою ІЧ-датчиків робот відстежує лінію. ІЧ-датчики зворотним чином зчитують дані з мікроконтролером, а за допомогою ІЧ-зчитування мікроконтролер рухає двигуни вліво або вправо і знову виводить робота на шлях.
Line Follower Robot здатний відстежувати лінію за допомогою ІЧ-датчика. Цей датчик має ІЧ-передавач та ІЧ-приймач. ІЧ-передавач (ІЧ-світлодіод) пропускає світло, а приймач (фотодіод) чекає повернення переданого світла назад. ІЧ-світло повернеться назад, лише якщо воно відображається поверхнею. Тоді як усі поверхні не відображають ІЧ-світло, лише біла кольорова поверхня може повністю відображати їх, а чорна кольорова поверхня буде повністю спостерігати їх, як показано на малюнку нижче. Дізнайтеся більше про модуль ІЧ-датчика тут.
Тепер ми будемо використовувати два ІЧ-датчики, щоб перевірити, чи робот знаходиться в колії з лінією, і два двигуни, щоб виправити робота, якщо він рухається з колії. Ці двигуни потребують великого струму і повинні бути двонаправленими; отже, ми використовуємо модуль драйвера двигуна, такий як L293D. Нам також знадобиться мікроконтролер, такий як ATmega16, для інструктажу двигунів на основі значень ІЧ-датчика. Спрощена блок-схема того ж наведена нижче.
Ці два ІЧ-датчики будуть розміщені по обидва боки лінії. Якщо жоден з датчиків не виявляє чорну лінію, тоді мікроконтролер AVR вказує двигунам рухатися вперед, як показано нижче
Якщо лівий датчик потрапляє на чорну лінію, тоді мікроконтролер доручає роботу повернути ліворуч, обертаючи праве колесо самостійно
Якщо правий датчик потрапляє на чорну лінію, тоді мікроконтролер доручає роботу повернути праворуч, обертаючи ліве колесо самостійно.
Якщо обидва датчики потрапляють на чорну лінію, робот зупиняється.
Таким чином, Робот зможе слідувати за лінією, не виходячи за межі колії. А тепер давайте подивимося, як виглядає схема та код.
Потрібні компоненти
- Двигуни постійного струму постійного струму (2 одиниці)
- Модуль ІЧ-датчика (2 одиниці)
- Модуль L293D
- Джерело бездротового живлення (наприклад, акумулятор, акумулятор)
- Шезлонги роботів
- Мікроконтролер мікросхеми Atmega16
- Кристалічний генератор 16 МГц
- Два конденсатори 100 нФ
- Два конденсатори 22pF
- Нажимна Кнопка
- Провід перемички
- Макет
- USBASP v2.0 (для програмування Atmega16)
Кругова діаграма
Підключіть усі компоненти, як показано на схемі нижче
Програмування Atmega16 для Line Follower Robot
Тут Atmega16 програмується за допомогою USBASP та Atmel Studio7.0. Якщо ви не знаєте, як можна програмувати Atmega16 за допомогою USBASP, перейдіть за посиланням. Повна програма подається в кінці проекту, просто завантажте програму в Atmega16 за допомогою програміста JTAG та Atmel Studio 7.0, як пояснювалось у попередньому підручнику.
Ми намагалися зробити код максимально коротким і простим. Отже, ми використовуємо макроси та регістри спеціальних функцій у цьому коді.
if (bit_is_clear (PINA , leftSen)) { // перевірити, чи вимкнено лівий датчик
Це твердження перевіряє, чи є PA0 там, де підключений лівий датчик, низький або високий.
Якщо ви хочете дізнатись більше про це твердження та інші макроси, перейдіть за цим посиланням
Існує чотири умови, яких ми дотримуємось, щоб прочитати ІЧ-датчики. ІЧ-датчики називаються відповідно до їх розміщення перед роботом. Лівий ІЧ - лівий датчик, а правий ІК - правий датчик. Наступні умови визначатимуть рух робота.
Ми написали код відповідно до вищезазначених умов. Єдина зміна полягає в тому, що ми використовуємо лише два вхідні штифти L293D для приводу обох двигунів.
Повний код із демонстраційним відео наведено нижче.