- Необхідні матеріали:
- Концепції послідовника рядків
- Електрична схема та пояснення:
- Програмування мікроконтролера PIC:
- Послідовник рядка PIC в дії:
Line Follower Robot - це простий, але захоплюючий робот для побудови більшості студентів / любителів. У цьому підручнику ми дізнаємося, як працює робот-послідовник ліній, і як ми можемо створити його за допомогою мікроконтролера PIC PIC16F877A. PIC16F877A - це 40-контактний багатофункціональний мікроконтроллер від Microchip, ми використовували цю мікросхему в нашій повній серії навчальних посібників з PIC. Якщо ви новачок, тут ви, можливо, захочете поглянути на ці підручники з PIC, щоб дізнатися основи цього ІС та як завантажувати програми на мікроконтролер. Оскільки ми вже висвітлювали цю інформацію в наших підручниках, ми пропустимо їх у поясненні нижче.
Якщо ви зацікавлені в робототехніці, тоді ви повинні бути добре знайомі з назвою « Робот послідовника ліній ». Цей робот здатний слідувати за лінією, лише використовуючи пару датчиків і двигунів. Цей робот дає вам можливість для нескінченного розвитку, і такі роботи, як Ківа (робот-склад Amazon), є прикладом цього. Ви також можете перевірити наші інші роботи послідовників ліній:
- Робот-послідовник лінії за допомогою мікроконтролера 8051
- Робот-послідовник лінії за допомогою Arduino
- Робот-послідовник лінії за допомогою Raspberry Pi
Необхідні матеріали:
- PIC16F877A
- ІЧ-датчик (2 Ні)
- Двигун постійного струму постійного струму (2 Ні)
- L293D Драйвер двигуна
- Шезлонги (Ви також можете побудувати власні, використовуючи картон)
- Банк живлення (будь-яке доступне джерело живлення)
Концепції послідовника рядків
Line Follower Robot здатний відстежувати лінію за допомогою ІЧ-датчика. Цей датчик має ІЧ-передавач та ІЧ-приймач. ІЧ-передавач (ІЧ-світлодіод) пропускає світло, а приймач (фотодіод) чекає повернення переданого світла назад. ІЧ-світло повернеться назад, лише якщо воно відображається поверхнею. Тоді як усі поверхні не відображають ІЧ-світло, лише біла кольорова поверхня може повністю відображати їх, а чорна кольорова поверхня буде повністю спостерігати їх, як показано на малюнку нижче. Дізнайтеся більше про модуль ІЧ-датчика тут.
Тепер ми будемо використовувати два ІЧ-датчики, щоб перевірити, чи робот знаходиться в колії з лінією, і два двигуни, щоб виправити робота, якщо він рухається з колії. Ці двигуни потребують великого струму і повинні бути двонаправленими; отже, ми використовуємо модуль драйвера двигуна, такий як L293D. Нам також знадобиться мікроконтролер, такий як PIC, для інструктажу двигунів на основі значень ІЧ-датчика. Спрощена блок-схема того ж наведена нижче.
Ці два ІЧ-датчики будуть розміщені по обидва боки лінії. Якщо жоден з датчиків не виявляє чорну лінію, мікроконтролер PIC вказує двигунам рухатися вперед, як показано нижче
Якщо лівий датчик потрапляє на чорну лінію, тоді мікроконтролер доручає роботу повернути ліворуч, обертаючи праве колесо самостійно
Якщо правий датчик потрапляє на чорну лінію, тоді мікроконтролер доручає роботу повернути праворуч, обертаючи ліве колесо самостійно.
Якщо обидва датчики потрапляють на чорну лінію, робот зупиняється.
Таким чином, Робот зможе слідувати за лінією, не виходячи за межі колії. А тепер давайте подивимося, як виглядає схема та код.
Електрична схема та пояснення:
Повна принципова схема для цього робота на основі PIC Line Follower Robot наведена нижче
У схемі працюють два ІЧ-датчики та пара двигунів постійного струму постійного струму разом із модулем драйвера двигуна, як показано вище. У цьому проекті використовується модуль двигуна L293D, нам знадобиться драйвер двигуна, оскільки вихідний штифт мікроконтролера PIC не може подавати достатню кількість струму для роботи двигунів. Цей модуль буде живитися безпосередньо від джерела живлення (5 В), як показано на схемі. Модуль має чотири штирі (два для кожного двигуна), які підключені до PIC для управління напрямком двигунів. У нас також є два ІЧ-датчики, які діють як вхід до мікроконтролера PIC. Ці датчики будуть високими (1), якщо вони знаходяться над білою поверхнею, і будуть низькими (0), коли над чорною поверхнею. Повне з'єднання штифтів показано в таблиці нижче.
С.Ні |
Підключено від |
Пов'язаний з |
1 |
ІЧ-датчик Залишений штифт |
RD2 (контакт 21) |
2 |
ІЧ-датчик Правий зовнішній штифт |
RD3 (контакт 22) |
4 |
Двигун 1 канал А штифт |
RC4 (контакт 23) |
5 |
Двигун 1 Канал B штифт |
RC5 (контакт 25) |
6 |
Двигун 2-канальний штифт A |
RC6 (контакт 26) |
7 |
Двигун 2-канальний B контакт |
RC7 (контакт 27) |
У власне апаратному забезпеченні я використовував блок живлення, який видаватиме напругу + 5 В безпосередньо через свій USB-порт; отже, я обійшов регулятор напруги 7805 і живив ПІК, датчики та двигуни, використовуючи їх. Ви можете зробити те саме, використовуючи акумулятор 12 В разом з регулятором, як показано в схемі.
Програмування мікроконтролера PIC:
Після того, як ви готові до свого обладнання, настав час приступити до програмування. Повна програма цього проекту PIC Line Follower Робот приводиться в кінці цієї сторінки. Однак важливі фрагменти пояснюються нижче.
Ініціалізуйте штифти вводу-виводу наступними рядками. 2 штирі ІЧ-датчика виконують роль вхідних, а чотири штифти двигуна виконують роль вихідних.
TRISD2 = 1; TRISD3 = 1; // Приймаємо штифти ІЧ-датчика декларуються як вхідні TRISC4 = 0; TRISC5 = 0; // Шпильки двигуна 1 оголошені як вихідні TRISC6 = 0; TRISC7 = 0; // Двигун 2 висновки, оголошені як вихідні
Тепер нам доведеться зчитувати стан ІК-датчика і відповідно керувати мотором. Наприклад, якщо обидва датчика високі (не потрапляють під чорну лінію), тоді ми рухаємо обидва двигуна вперед, як показано в програмі нижче.
if (RD2 == 1 && RD3 == 1) // Обидва датчика не перевищують лінію {RC4 = 0; RC5 = 1; // Двигун 1 вперед RC6 = 1; RC7 = 0; // Двигун 2 вперед}
Якщо лівий датчик переходить чорну лінію, тоді ми робимо правий поворот, утримуючи двигун 1 нерухомо і обертаючи двигун 2 у напрямку вперед. Цей тип токарної обробки називається диференціальним токарним.
інакше якщо (RD2 == 0 && RD3 == 1) // Лівий датчик знаходиться над чорною лінією {RC4 = 1; RC5 = 1; // Двигун 1 зупинка RC6 = 1; RC7 = 0; // Двигун 2 вперед}
Подібним чином, якщо правий датчик потрапляє через чорну лінію, тоді бот змушений здійснити лівий поворот, утримуючи другий двигун нерухомо і обертаючи перший двигун самостійно у напрямку вперед, як показано нижче.
інакше якщо (RD2 == 1 && RD3 == 0) // Правий датчик знаходиться над чорною лінією {RC4 = 0; RC5 = 1; // Двигун 1 вперед RC6 = 1; RC7 = 1; // Двигун 2 зупинки}
Нарешті, якщо обидва датчика потрапляють під чорну лінію, тоді час зупинити бота. Це можна зробити, зробивши високими всі штирі обох двигунів. Код, щоб зробити те ж саме, показано нижче
else // Обидва датчика над чорною лінією {RC4 = 1; RC5 = 1; // Двигун 1 зупинка RC6 = 1; RC7 = 1; // Двигун 2 зупинки}
Тобто програма готова і може бути завантажена до PIC за допомогою будь-якого програміста, такого як PicKit.
Послідовник рядка PIC в дії:
Коли апаратне забезпечення та код готові, настав час для певних дій. Як вже було сказано раніше, я використовував Power Bank для живлення бота, тому все, що мені потрібно зробити, це просто підключити Power Bank до бота, який має налаштоване обладнання та вже завантажений код.
Плата PIC Perf була створена для нашої навчальної серії PIC, в якій ми навчились користуватися мікроконтролером PIC. Можливо, ви захочете повернутися до цих підручників з мікроконтролера PIC за допомогою MPLABX та XC8, якщо ви не знаєте, як записати програму за допомогою Pickit 3, оскільки я пропускаю всю цю основну інформацію.
Тепер просто запустіть бота по чорній лінії, і ви повинні спостерігати за ним, слідуючи рядку.
На початку ви можете зіткнутися з деякими труднощами, тоді читайте далі. Якщо колеса обертаються в протилежному напрямку, просто обміняйтеся полярністю двигуна, колесо якого обертається в протилежному напрямку. Якщо бот відхиляється від лінії, поміняйте інфрачервоний датчик, і все має бути добре.
Повну роботу бота можна знайти на відео, поданому нижче. Сподіваюся, вам сподобався проект і сподобалось будувати щось подібне. Якщо у вас є проблеми з тим, щоб це працювало, ви можете опублікувати їх у розділі коментарів нижче, щоб вирішити проблему, або використати наші форуми для обговорення технічного змісту.