- Необходими материали
- Концепции на Line Follower
- Обяснение на веригата
- Работа на Line Follower Robot с помощта на MSP430
- Електрическа схема
- Обяснение на програмирането
Роботът с последователни линии е един от популярните проекти за роботика сред учениците и начинаещите поради своята простота. Следва линия, черна или бяла, в зависимост от това как програмирате микроконтролера. Тук правим робот за последовател на линии, използвайки стартовата площадка MSP430 от Texas Instruments, който следва черната линия. Ако не сте начинаещи в стартовата площадка на MSP430, моля, прочетете нашия урок „Първи очи с MSP430“.
Необходими материали
- MSP430G2 LaunchPad от Texas Instruments
- Модулът за задвижване на двигателя L298D
- Свързващи проводници
- Модули на IR сензора
- Шаси, колело, влакче в увеселителен парк
- Energia IDE
- Захранване (3.3v) и 5v-12v
Концепции на Line Follower
Концепцията за последовател на линия е свързана със светлината. Използвали сме поведението на светлината на черно-бялата повърхност. Когато светлината падне върху бяла повърхност, тя почти се отразява и в случай на черна повърхност светлината се абсорбира от черна повърхност. Това обяснено поведение на светлината се използва в този робот за последователи на линии.
В този базиран на MSP430 робот за последователни линии използвахме IR трансмитери и IR приемници, наречени също фотодиоди. Те се използват за изпращане и получаване на светлина. IR предава инфрачервени светлини. Когато инфрачервените лъчи попаднат върху бялата повърхност, те се отразяват обратно и се улавят от фотодиоди, което генерира някои промени в напрежението. Когато IR светлината попадне върху черна повърхност, светлината се абсорбира от черната повърхност и никакви лъчи не се отразяват обратно, поради което фотодиодът не получава никаква светлина или лъчи. За да научите повече за IR сензорите, следвайте връзката.
Тук в този базиран на MSP430 робот за последователи на линии, когато сензорът усети бяла повърхност, тогава MSP получава 1 като вход и когато усети черна линия MSP получава 0 като вход.
Обяснение на веригата
Можем да разделим целия последователен робот на различни секции като сензорна секция, секция за управление и секция за водача.
Сензорна секция: Тази секция съдържа IR диоди, потенциометър, компаратор (Op-Amp) и светодиоди. Потенциометърът се използва за задаване на еталонно напрежение на единия терминал на компаратора, а IR сензорите усещат линията и осигуряват промяна в напрежението на втория терминал на компаратора. След това компараторът сравнява двете напрежения и генерира цифров сигнал на изхода. Тук в тази схема използвахме два компаратора за два сензора. LM358 се използва като компаратор. LM358 има вградени два нискошумови Op-усилвателя.
Контролна секция: MSP430 Launchpad се използва за управление на целия процес на робот с последовател на линия. Изходите на компараторите са свързани към цифрови щифтове P1_3 и P1_4 на MPS430 Launchpad. MSP430 Launchpad чете тези сигнали и изпраща команди към веригата на водача към последователя на задвижващата линия.
Секция за водача: Секцията за водача се състои от двигател и два постояннотокови мотора. Двигателят на двигателя се използва за задвижване на двигатели, защото MSP430 Launchpad не доставя достатъчно напрежение и ток към двигателя. Така че добавихме верига на двигател, за да получим достатъчно напрежение и ток за двигателя. Тук използвахме драйвера L298d за управление на двигатели с постоянен ток. MSP430 Launchpad изпраща команди към този драйвер на двигателя и след това той задвижва двигатели.
Ние разработихме Line Follower Robots, използвайки различни Micrcontroller:
- Line Follower Robot с помощта на микроконтролер 8051
- Line Follower Robot, използващ Arduino
- Line Follower Robot с помощта на Raspberry Pi
- Line Follower Robot с помощта на PIC микроконтролер
Работа на Line Follower Robot с помощта на MSP430
Работата на последовател на редове е много интересна. Роботът за последовател на линия усеща черна линия с помощта на сензор и след това изпраща сигнала към стартовата площадка MSP430. След това MSP430 Launchpad задвижва двигателя в съответствие с изхода на сензорите.
Тук в този проект използваме два модула за IR сензор, а именно ляв сензор и десен сензор. Когато и левият, и десният сензор усети бяло, роботът се придвижва напред.
Ако левият сензор идва на черна линия, роботът завива наляво.
Ако десният сензор усети черна линия, тогава роботът завъртете надясно, докато двата сензора дойдат на бяла повърхност. Когато дойде бялата повърхност, роботът отново започва да се движи напред.
Ако и двата сензора са на черна линия, роботът спира.
Електрическа схема
Веригата за този MSP430 Line Follower Robot е много проста. Изходът на компараторите е директно свързан с цифровия пинов номер на MSP430 Launchpad p1_3 и P1_4. И входният щифт IN1, IN2, IN3 и IN4 на драйвера на двигателя са свързани съответно на цифровия щифт P1_5, P2_0, P2_1, P2_2 на MSP430 Launchpad. Един двигател е свързан към изходния щифт на драйвера на двигателя OUT1 и OUT2, а друг двигател е свързан към OUT3 и OUT4. Тук сме използвали 3.3v захранване за захранване на цялата верига, с изключение на модула Motor Driver. Доставихме 8v към модула на драйвера на двигателя. Потребителят може да използва 5v-12v.
Можете също така да създадете свой собствен IR модул, както аз изградих на Perf Board. По-долу е схемата за IR модул:
Обяснение на програмирането
Пълна програма и видео можете да намерите в края на тази статия.
В една програма, на първо място, ние дефинираме входния и изходния щифт за сензор и двигатели. След това дефинирайте някои макроси за посоката на последовател на линията и след това напишете директива, за да изберете изхода на сензора
Забележка: Сензорът може да е активен нисък или активен висок, така че първо проверете какъв е изходът на сензора, след това изберете директива, като коментирате или коментирате 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 (pins, 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 Launchpad. Използвали сме два сензора, а именно левия и десния сензор.
Условия: Активен HIGH изход
Вход |
Изход |
Движение На робот |
||||
Ляв сензор |
Десен сензор |
Ляв мотор |
Десен мотор |
|||
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 |
Напред |
Програмата е написана съгласно горните условия на таблицата. Проверете пълния код и демонстрационно видео по-долу.