- Концепция на Line Follower Robot
- Необходими компоненти
- Електрическа схема
- Програмиране на Atmega16 за Line Follower Robot
Тук ще изградим още един проект с микроконтролер AVR Atmega16. Ако сте нов в AVR микроконтролерите, тогава можете да се обърнете към предишни AVR проекти и уроци.
Изграждането на робот винаги е тръпка за всички любители на електрониката. И тази тръпка може да бъде увеличена максимално, ако роботът може автоматично да прави някои неща без никакви външни инструкции. Един от най-често изгражданите роботи от начинаещи в електрониката е Line Follower Robot. Както подсказва името, роботът ще следва линия, начертана на повърхността. Линията не е задължително да е права линия. Също така линиите могат да бъдат от всякакви цветове.
Преди това изградихме проекти за Line Follower Robot, използвайки различни контролери:
- Line Follower Robot с помощта на микроконтролер 8051
- Line Follower Robot с помощта на PIC микроконтролер
- Line Follower Robot, използващ Arduino
- Line Follower Robot с помощта на Raspberry Pi
- Робот за последователи на линии, използващ стартова панел MSP430
Днес ще използваме микроконтролера AVR, за да изградим робот за последователи на линии.
За откриване на линии се използват предимно IR сензори. IR сензорите са добри при откриване на бели или черни повърхности. Въпреки че можете да използвате други сложни сензори, които ще могат да откриват всички цветове и могат да направят робот, който може да следва всички цветови линии. Роботът трябва да може да разпознава линията, дори ако пътят е променен чрез промяна на ъгъла и да продължи да следва линията. Също така, той трябва да спира навсякъде, където зоната за спиране идва в линията.
Роботите с последователни линии се използват широко днес в производствените индустрии, медицината, битовите приложения и складовете за стоки. Роботите не се ограничават само до тези приложения и могат да разширят своите приложения в много бъдещи приложения.
Концепция на Line Follower Robot
IR сензорите са ключов играч в този проект. IR сензорите са поставени отпред на робота, за да проследяват изтеглената черна линия и повърхността. Роботът е поставен между линията и с помощта на IR сензори роботът следи линията. IR сензорите връщат четенето на микроконтролера и с помощта на IR четенето микроконтролерът премества двигателите отляво или отдясно и отново извежда робота на пътя.
Line Follower Robot е в състояние да проследява линия с помощта на IR сензор. Този сензор има IR предавател и IR приемник. IR предавателят (IR LED) предава светлината и приемникът (фотодиод) изчаква предадената светлина да се върне обратно. IR светлината ще се върне обратно само ако се отразява от повърхност. Докато всички повърхности не отразяват IR светлина, само бялата цветна повърхност може напълно да ги отразява, а черна цветна повърхност ще ги наблюдава напълно, както е показано на фигурата по-долу. Научете повече за модула за IR сензор тук.
Сега ще използваме два IR сензора, за да проверим дали роботът е в коловоза с линията и два мотора, за да коригираме робота, ако той се изнесе извън пистата. Тези двигатели изискват висок ток и трябва да бъдат двупосочни; следователно използваме модул на моторния драйвер като L293D. Ще ни трябва и микроконтролер като ATmega16, за да инструктира двигателите въз основа на стойностите от IR сензора. Опростена блок-схема на същото е показана по-долу.
Тези два IR сензора ще бъдат поставени един от двете страни на линията. Ако никой от сензорите не открива черна линия, тогава AVR микроконтролерът инструктира двигателите да се движат напред, както е показано по-долу
Ако левият сензор идва на черна линия, тогава микроконтролерът инструктира робота да завие наляво, като завърти дясното колело сам.
Ако десният сензор идва на черна линия, тогава микроконтролерът инструктира робота да се обърне надясно, като завърти само лявото колело.
Ако и двата сензора са на черна линия, роботът спира.
По този начин Роботът ще може да следва линията, без да излиза извън пистата. Сега нека видим как изглежда веригата и кода.
Необходими компоненти
- Двигатели с постоянен ток (2 единици)
- IR сензорен модул (2 единици)
- Модул L293D
- Безжичен източник на захранване (напр. Батерия, захранваща банка)
- Шезлонги на роботи
- IC микроконтролер Atmega16
- 16Mhz кристален осцилатор
- Два кондензатора 100nF
- Два кондензатора 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, където е свързан левият сензор, е LOW или HIGH.
Ако искате да научите повече за това изявление и други макроси, отидете на тази връзка
Има четири условия, които спазваме, за да четем чрез IR сензори. IR сензорите се именуват според тяхното разположение отпред на робота. Левият IR е ляв сензор, а десният IR е десен сензор. Следните условия ще решат движението на робота.
Написали сме кода съгласно горните условия. Единствената промяна е, че използваме само два входни щифта на L293D за задвижване на двата двигателя.
Пълният код с демонстрационно видео е даден по-долу.