- Необхідні матеріали
- Концепції послідовника рядків
- Пояснення схеми
- Робота робота-послідовника з використанням MSP430
- Кругова діаграма
- Пояснення програмування
Робот-послідовник - один із популярних робототехнічних проектів серед студентів та початківців завдяки своїй простоті. Він йде за рядком, чорним або білим, залежно від того, як ви програмуєте мікроконтролер. Тут ми робимо робота-послідовника ліній, використовуючи стартову панель MSP430 від Texas Instruments, яка йде за чорною лінією. Якщо ви новачок у стартовій панелі MSP430, прочитайте наш підручник з вивчення MSP430.
Необхідні матеріали
- MSP430G2 LaunchPad від Texas Instruments
- Модуль драйвера двигуна L298D
- Підключення проводів
- Модулі ІЧ-датчика
- Шасі, колесо, американські гірки
- Energia IDE
- Блок живлення (3.3v) та 5v-12v
Концепції послідовника рядків
Концепція послідовника лінії пов'язана зі світлом. Ми використовували поведінку світла на чорно-білій поверхні. Коли світло падає на білу поверхню, воно майже повністю відбивається, а у випадку чорної поверхні світло поглинається чорною поверхнею. Це пояснюється поведінкою світла, що використовується в цьому лінійному послідовнику робота.
У цьому роботі-послідовнику на основі MSP430 ми використовували ІЧ-передавачі та ІЧ-приймачі, які також називаються фотодіодами. Вони використовуються для передачі та прийому світла. ІЧ-пропускає інфрачервоне світло. Коли інфрачервоні промені падають на білу поверхню, вони відбиваються назад і вловлюються фотодіодами, що генерує деякі зміни напруги. Коли ІЧ-світло падає на чорну поверхню, світло поглинається чорною поверхнею, і промені не відбиваються назад, тому фотодіод не отримує ні світла, ні променів. Щоб дізнатись більше про ІЧ-датчики, перейдіть за посиланням.
Ось у цьому роботі-послідовнику ліній на основі MSP430, коли датчик відчуває білу поверхню, тоді MSP отримує 1 як вхід, а коли відчуває чорну лінію MSP отримує 0 як вхід.
Пояснення схеми
Ми можемо розділити робота-послідовника на всі лінії на різні секції, такі як секція датчика, секція управління та секція водія.
Розділ датчика: Цей розділ містить ІЧ-діоди, потенціометр, компаратор (Op-Amp) та світлодіоди. Потенціометр використовується для встановлення опорної напруги на одному терміналі компаратора, а ІЧ-датчики відчувають лінію і забезпечують зміну напруги на другому терміналі компаратора. Потім компаратор порівнює обидві напруги і генерує цифровий сигнал на виході. Тут у цій схемі ми використовували два компаратори для двох датчиків. LM358 використовується як компаратор. LM358 має вбудований два низькошумних ОУ.
Розділ керування: Стартова панель MSP430 використовується для керування всім процесом робота-послідовника. Виходи компараторів підключені до цифрових виводів P1_3 та P1_4 пускової панелі MPS430. MSP430 Launchpad зчитує ці сигнали та надсилає команди в схему драйвера для послідовника приводного рядка.
Секція драйвера: Секція драйвера складається з драйвера двигуна та двох двигунів постійного струму. Двигун двигуна використовується для приводу двигунів, оскільки пускова площадка MSP430 не подає на двигун достатньо напруги та струму. Тож ми додали схему двигуна двигуна, щоб отримати достатню напругу та струм для двигуна. Тут ми використовували драйвер L298d для керування двигунами постійного струму. MSP430 Launchpad надсилає команди цьому драйверу двигуна, а потім він керує двигунами.
Ми розробили Line Follower Robots, використовуючи різні мікроконтролери:
- Робот-послідовник лінії за допомогою мікроконтролера 8051
- Робот-послідовник лінії за допомогою Arduino
- Робот-послідовник лінії за допомогою Raspberry Pi
- Робот-послідовник лінії за допомогою мікроконтролера PIC
Робота робота-послідовника з використанням MSP430
Робота послідовника рядків дуже цікава. Робот-послідовник лінії розпізнає чорну лінію за допомогою датчика, а потім передає сигнал на панель запуску MSP430. Потім пускова панель MSP430 керує двигуном відповідно до виходу датчиків.
У цьому проекті ми використовуємо два модулі ІЧ-датчика, а саме лівий датчик і правий датчик. Коли і лівий, і правий датчик відчувають білий колір, робот рухається вперед.
Якщо лівий датчик потрапляє на чорну лінію, тоді робот поверне ліву сторону.
Якщо правий датчик відчуває чорну лінію, тоді робот повертає праву сторону, поки обидва датчика не потраплять на білу поверхню. Коли біла поверхня приходить, робот знову починає рухатися вперед.
Якщо обидва датчики потрапляють на чорну лінію, робот зупиняється.
Кругова діаграма
Схема для цього робота-послідовника MSP430 дуже проста. Вихід компараторів безпосередньо підключений до цифрових контактних номерів p1_3 та P1_4 пускової панелі MSP430. А вхідні штифти IN1, IN2, IN3 та IN4 драйвера двигуна підключені на цифровому штифті P1_5, P2_0, P2_1, P2_2 MSP430 Launchpad відповідно. Один двигун підключений на вихідному штифті драйвера двигуна OUT1 і OUT2, а інший двигун підключений до OUT3 і OUT4. Тут ми використовували джерело живлення 3,3 в для живлення всієї схеми, крім модуля драйвера двигуна. Ми поставили 8 в модуль драйвера двигуна. Користувач може використовувати 5v-12v.
Ви також можете створити свій власний ІЧ-модуль, як я побудував на Perf Board. Нижче наведена схема для ІЧ-модуля:
Пояснення програмування
Повну програму та відео можна знайти в кінці цієї статті.
У програмі, перш за все, ми визначаємо вхідний та вихідний штифт для датчика та двигунів. Потім визначте деякі макроси для напрямку послідовника лінії, а потім напишіть директиву для вибору вихідного сигналу датчика
Примітка: Датчик може бути активним низьким або активним високим, тому спочатку перевірте, який вихідний сигнал датчика, а потім виберіть директиву, коментуючи або коментуючи activeLowMode . Для активного HIGH прокоментуйтемакрос activeLowMode .
#define l_sensor P1_3 #define r_sensor P1_4 int pins = {P1_5, P2_0, P2_1, P2_2}; #define forward 0x05 #define left 0x06 #define right 0x09 #define stop 0x00 // # define activeLowMode #ifdef activeLowMode int res = {вперед, ліворуч, праворуч, зупинка}; #else int res = {зупинка, праворуч, ліворуч, вперед}; #endif
Після цього, у функції налаштування , ми даємо напрямок датчику та штифту двигуна. А потім у функції циклу ми перевіряємо входи та надсилаємо вихід в модуль драйвера двигуна для запуску двигунів.
void setup () { for (int i = 0; i <4; i ++) pinMode (pin, OUTPUT); pinMode (l_sensor, INPUT); pinMode (r_sensor, INPUT); } void loop () {int sense = (digitalRead (l_sensor) << 1) - digitalRead (r_sensor); для (int i = 0; i <4; i ++) digitalWrite (шпильки, (res >> i) & 0x01); }
У цьому послідовнику рядків є чотири умови, які ми читаємо, використовуючи стартову панель MSP430. Ми використовували два датчики, а саме лівий і правий.
Умови: Активний високий вихід
Вхідні дані |
Вихідні дані |
Рух Робот |
||||
Лівий датчик |
Правий датчик |
Лівий мотор |
Правий двигун |
|||
LS |
RS |
LM1 |
LM2 |
RM1 |
RM2 |
|
0 |
0 |
0 |
0 |
0 |
0 |
Стій |
0 |
1 |
1 |
0 |
0 |
0 |
Поверніть праворуч |
1 |
0 |
0 |
0 |
1 |
0 |
Поверніть наліво |
1 |
1 |
1 |
0 |
1 |
0 |
Вперед |
Програма написана відповідно до наведених вище умов таблиці. Перевірте повний код та демонстраційне відео нижче.