Домашен робот. Малък домашен робот. Какво може да се възпитава с този комплект

Направете роботмного просто Да видим какво се изисква създайте роботу дома, за да разберете основите на роботиката.

Със сигурност, след като гледахте филми за роботи, вие повече от веднъж сте искали да изградите своя другар по оръжие, но не знаехте откъде да започнете. Разбира се, няма да можете да изградите двукрак терминатор, но и ние не се стремим към това. Събирай прост роботВсеки, който знае как правилно да държи поялник в ръцете си, може да го направи и това не изисква дълбоки познания, въпреки че няма да се намесват. Аматьорската роботика не се различава много от схемата, само че е много по-интересна, защото тук са засегнати и области като механика и програмиране. Всички компоненти са лесно достъпни и не са толкова скъпи. Така че напредъкът не стои на едно място и ние ще го използваме в своя полза.

Въведение

Така. Какво е робот? В повечето случаи е така автоматично устройствокойто реагира на всяко действие заобикаляща среда... Роботите могат да се управляват от хора или да извършват предварително програмирани действия. Обикновено роботът е оборудван с различни сензори (разстояние, ъгъл на въртене, ускорение), видеокамери, манипулатори. Електронната част на робота се състои от микроконтролер (MC) – микросхема, която съдържа процесор, тактов генератор, различни периферни устройства, произволен достъп и постоянна памет. Има го в света страхотно количестворазнообразие от микроконтролери за различни областиприложения и въз основа на тях можете да събирате мощни роботи. За любителски сгради AVR микроконтролерите са широко използвани. Днес те са най-достъпните и в интернет можете да намерите много примери, базирани на тези MK. За да работите с микроконтролери, трябва да можете да програмирате на асембли или C и да имате основни познания по цифрова и аналогова електроника. Ще използваме C в нашия проект. Програмирането за MK не се различава много от програмирането на компютър, синтаксисът на езика е същият, повечето функции са практически еднакви, а новите са доста лесни за научаване и удобни за използване.

Това, което ни трябва

Като начало нашият робот ще може просто да заобикаля препятствия, тоест да повтаря нормалното поведение на повечето животни в природата. Всичко, от което се нуждаем, за да изградим такъв робот, може да се намери в магазините за радио. Ние ще решим как ще се движи нашият робот. Най-успешните според мен са коловозите, които се използват в танкове, това е най-удобното решение, тъй като коловозите имат по-голяма проходимост от колелата на превозното средство и са по-удобни за управление (за да завиете, е достатъчно за завъртане на пистите в различни посоки). Следователно ще ви трябва всеки резервоар за играчки с писти, които се въртят независимо една от друга, можете да закупите това във всеки магазин за играчки на разумна цена. От този резервоар ви трябва само платформа с релси и двигатели със скоростни кутии, останалото можете спокойно да развиете и изхвърлите. Имаме нужда и от микроконтролер, моят избор падна върху ATmega16 - има достатъчно портове за свързване на сензори и периферни устройства и като цяло е доста удобен. Също така трябва да закупите някои радиокомпоненти, поялник, мултицет.

Изработка на табло с МК

В нашия случай микроконтролерът ще изпълнява функциите на мозъка, но няма да започнем с него, а със захранването на мозъка на робота. Правилно хранене- гаранция за здраве, така че ще започнем с това как правилно да храним нашия робот, защото обикновено това е грешката, която правят начинаещите строители на роботи. И за да работи нашият робот нормално, трябва да използвате стабилизатор на напрежението. Предпочитам микросхемата L7805 - тя е проектирана да осигурява стабилно напрежение от 5V на изхода, от което се нуждае нашия микроконтролер. Но поради факта, че спадът на напрежението на тази микросхема е около 2,5V, към нея трябва да се подаде поне 7,5V. Заедно с този стабилизатор се използват електролитни кондензатори за изглаждане на вълните на напрежението и диод трябва да бъде включен във веригата, за да се предпази от обръщане на полярността.

Сега можем да се справим с нашия микроконтролер. Корпусът за MK е DIP (по-удобно е да се запоява по този начин) и има четиридесет извода. На борда има ADC, PWM, USART и много други, които няма да използваме засега. Помислете за няколко важни възли... Щифтът RESET (9-ти крак на MK) се изтегля от резистора R1 към "плюса" на захранването - това трябва да се направи! В противен случай вашият MK може неволно да бъде нулиран или, с други думи, да бъде бъгнат. Също така е желана мярка, но не е задължителна, свързването на RESET през керамичния кондензатор C1 към земята. На диаграмата можете да видите и електролит от 1000 uF, той спестява от спадове на напрежението, когато двигателите работят, което също ще има благоприятен ефект върху работата на микроконтролера. Кварцовият кристал X1 и кондензаторите C2, C3 трябва да бъдат поставени възможно най-близо до изводите XTAL1 и XTAL2.

Няма да говоря за това как да флашвам MK, тъй като можете да прочетете за това в интернет. Ще напишем програмата на C; аз избрах CodeVisionAVR като среда за програмиране. Това е доста удобна среда и полезна за начинаещи, тъй като има вграден съветник за създаване на код.

Моторен контрол

Също толкова важен компонент в нашия робот е моторният драйвер, който ни улеснява при управлението му. Никога и при никакви обстоятелства не трябва да свързвате двигатели директно към MK! По принцип мощните товари не могат да се управляват директно от микроконтролера, в противен случай той ще изгори. Използвайте ключови транзистори. За нашия случай има специална микросхема - L293D. В такива прости проекти винаги се опитвайте да използвате тази конкретна микросхема с индекс "D", тъй като тя има вградени диоди за защита от претоварване. Тази микросхема е много лесна за работа и може лесно да бъде получена от радиомагазините. Предлага се в два DIP и SOIC пакета. Ще използваме DIP пакет поради лесния монтаж на платката. L293D има отделно захранване за двигатели и логика. Следователно ще захранваме самата микросхема от стабилизатора (VSS вход), а двигателите директно от батериите (VS вход). L293D може да издържи натоварване от 600 mA на канал и има два от тези канала, тоест два двигателя могат да бъдат свързани към една микросхема. Но, за да играем на сигурно, ще комбинираме каналите и след това се нуждаем от един микрон за всеки двигател. От това следва, че L293D ще може да издържи 1,2 A. За да постигнете това, трябва да комбинирате краката на микра, както е показано на диаграмата. Микросхемата работи по следния начин: когато се приложи логическа "0" към IN1 и IN2 и логическа единица към IN3 и IN4, двигателят се върти в една посока и ако сигналите са обърнати, се прилага логическа нула, тогава двигателят ще започне да се върти в другата посока. Щифтовете EN1 и EN2 са отговорни за включване на всеки канал. Свързваме ги и ги свързваме към "плюса" на захранването от стабилизатора. Тъй като микросхемата се нагрява по време на работа и инсталирането на радиатори е проблематично за този тип случаи, разсейването на топлината се осигурява от краката GND - по-добре е да ги запоявате на широка контактна площ. Това е всичко, което трябва да знаете за драйверите на двигатели за първи път.

Сензори за препятствия

За да може нашият робот да навигира и да не се блъсне във всичко, ще инсталираме два инфрачервен сензор... Най-простият сензор се състои от IR диод, който излъчва в инфрачервения спектър, и фототранзистор, който ще приема сигнала от IR диода. Принципът е следният: когато няма препятствие пред сензора, IR лъчите не удрят фототранзистора и той не се отваря. Ако има препятствие пред сензора, тогава лъчите от него се отразяват и падат върху транзистора - той се отваря и токът започва да тече. Недостатъкът на такива сензори е, че могат да реагират различно различни повърхностии не са защитени от смущения - от външни сигнали от други устройства сензорът, случайно, може да работи. Модулирането на сигнала може да предпази от смущения, но засега няма да се занимаваме с това. За начало това е достатъчно.


Фърмуер на робот

За да съживите робота, трябва да напишете фърмуер за него, тоест програма, която ще взема показания от сензори и ще управлява двигателите. Моята програма е най-простата, не съдържа сложни структурии всеки ще разбере. Следващите два реда включват заглавни файлове за нашия микроконтролер и команди за формиране на закъснения:

#включи
#включи

Следните редове са условни, тъй като стойностите на PORTC зависят от това как сте свързали драйвера на двигателя към вашия микроконтролер:

PORTC.0 = 1; PORTC.1 = 0; PORTC.2 = 1; PORTC.3 = 0; Стойността 0xFF означава, че изходът ще бъде log. "1" и 0x00 - дневник. "0". Със следната конструкция проверяваме дали има препятствие пред робота и от коя страна е то: ако (! (PINB & (1<

Ако светлината от IR диод удари фототранзистора, тогава на крака на микроконтролера се поставя лог. "0" и роботът започва да се движи назад, за да се отдалечи от препятствието, след което се обръща, за да не се сблъска отново с препятствието и след това отново тръгва напред. Тъй като имаме два сензора, проверяваме за наличие на препятствие два пъти - отдясно и отляво и следователно можем да разберем от коя страна е препятствието. Командата "delay_ms (1000)" показва, че ще отнеме една секунда, преди да бъде изпълнена следващата команда.

Заключение

Обхванах повечето от аспектите, които ще ви помогнат да изградите първия си робот. Но роботиката не свършва дотук. Ако изградите този робот, тогава ще имате много възможности за неговото разширяване. Можете да подобрите алгоритъма на робота, като например какво да направите, ако препятствието не е от някаква страна, а директно пред робота. Също така не пречи да инсталирате енкодер - просто устройство, което ще ви помогне да позиционирате точно и да знаете местоположението на вашия робот в пространството. За по-голяма яснота е възможно да се инсталира цветен или монохромен дисплей, който може да показва полезна информация - ниво на заряд на батерията, разстояние до препятствие, различна информация за отстраняване на грешки. Подобряването на сензорите също няма да навреди - инсталирането на TSOP (това са IR приемници, които възприемат сигнал само с определена честота) вместо конвенционалните фототранзистори. В допълнение към инфрачервените сензори има и ултразвукови, те са по-скъпи и също не са без недостатъци, но напоследък те набират популярност сред инженерите по роботика. За да може роботът да реагира на звук, би било хубаво да инсталирате микрофони с усилване. Но наистина интересното според мен е инсталирането на камерата и програмирането на базата на машинното зрение. Има набор от специални OpenCV библиотеки, с които можете да програмирате разпознаване на лица, движение по цветни маяци и много други интересни неща. Всичко зависи само от вашето въображение и умения.

Списък на компонентите:

    ATmega16 в DIP-40 пакет>

    L7805 в опаковка TO-220

    L293D в DIP-16 опаковка х2 бр.

    Резистори 0,25 W с номинални стойности: 10 kOhm x1 бр., 220 Ohm x4 бр.

    керамични кондензатори: 0,1 μF, 1 μF, 22 pF

    електролитни кондензатори: 1000 uF x 16 V, 220 uF x 16V x 2 бр.

    диод 1N4001 или 1N4004

    кристален резонатор на 16 MHz

    IR диоди: всички два са подходящи.

    фототранзистори, също всякакви, но реагиращи само на дължината на вълната на инфрачервените лъчи

Код на фърмуера:

/ ************************************************** ** ** Фърмуер за робота MK тип: ATmega16 Тактова честота: 16.000000 MHz Ако имате различна кварцова честота, трябва да посочите това в настройките на средата: Project -> Configure -> Tab "C Compiler" ****** ********************************************** / #include #включи void main (void) (// Настройте портове за вход // Чрез тези портове получаваме сигнали от сензори DDRB = 0x00; // Включете издърпващи резистори PORTB = 0xFF; // Настройте портове за изход // Чрез тези портове, които управляваме DDRC двигатели = 0xFF; // Основният цикъл на програмата Тук четем стойностите от сензорите // и управляваме двигателите, докато (1) (// Отиваме напред PORTC.0 = 1; PORTC. 1 = 0; PORTC.2 = 1; PORTC.3 = 0; ако (! (PINB & (1<За моя робот

В момента моят робот е почти готов.


Разполага с безжична камера, сензор за разстояние (и камерата, и този сензор са монтирани на въртящата се кула), сензор за препятствия, енкодер, приемник на сигнал за дистанционно управление и RS-232 интерфейс за свързване към компютър. Работи в два режима: автономен и ръчен (получава контролни сигнали от дистанционното управление), камерата може да се включва/изключва и дистанционно или от самия робот за пестене на батерията. Пиша фърмуер за сигурност на апартамента (прехвърляне на изображение към компютър, детекция на движение, обход на стаята).

Как да си направим робот от различни материали у домабез подходящо оборудване? Такива въпроси все по-често започват да се появяват в различни блогове и форуми, посветени на производството на всякакви устройства със собствени ръце и роботика. Разбира се, изработването на модерен, многофункционален робот е почти невъзможна задача у дома. Но е напълно възможно да се направи най-простият робот на една микросхема на драйвера и с помощта на няколко фотоклетки. Днес не е трудно да се намерят диаграми в Интернет с подробно описание на етапите на производство на мини-роботи, които могат да реагират на източници на светлина и препятствия.

Ще получите много пъргав и подвижен робот, който ще се скрие в тъмното, или ще се движи към светлината, или ще бяга от светлината, или ще се движи в търсене на светлина, в зависимост от начина на свързване на микросхемата с двигатели и фотоклетки.

Можете дори да накарате вашия интелигентен робот да следва само светла или, обратно, тъмна линия, или можете да накарате мини-робота да следва ръката ви - просто добавете няколко ярки светодиода към неговата верига!

Всъщност дори начинаещ, който тепърва започва да овладява този занаят, може да направи обикновен робот със собствените си ръце. В тази статия ще разгледаме варианта за домашен робот, който реагира на препятствия и ги избягва.

Нека да преминем направо към въпроса. За да направим домашен робот, се нуждаем от следните части, които лесно можете да намерите под ръка:

1. 2-ри батерии и калъф за тях;

2. Два мотора (по 1,5 волта всеки);

3. 2 SPDT превключвателя;

4. 3 скоби;

4. Пластмасова топка с дупка;

5. Малко парче твърда тел.

Етапи на изработване на домашен робот:

1. Нарежете парче тел на 13 части, по шест сантиметра всяка, и оголете всяка от двете страни с по 1 см.

С поялник свързваме 3 проводника към SPDT превключвателите и 2 проводника към двигателите;

2. Сега вземаме кутия за батерии, от едната страна на която се простират два многоцветни проводника (най-вероятно черни и червени). Трябва да запоим друг проводник от другата страна на кутията.

Сега трябва да разгънете кутията на батерията и да залепите двата SPDT превключвателя отстрани със запоения V-образен проводник;

3. След това от двете страни на тялото трябва да залепите двигателите, така че да се въртят напред.

След това вземаме голяма кламер и я разгъваме. Плъзваме неогъната кламер през проходния отвор на пластмасовата топка и изправяме краищата на кламера успоредно един на друг. Залепваме краищата на кламера към нашата структура;

4. Как да си направим домашен робот, така че наистина да избягва препятствията? Важно е да запоите всички инсталирани проводници, както е показано на снимката;

5. Изработваме антени от неогънати кламери и ги залепваме към SPDT ключове;

6. Остава да поставите батериите в кутията и домашният робот ще започне да се движи, избягвайки препятствията по пътя си.

Сега знаете как да направите домашен робот, който може да реагира на препятствия.

Как можете сами да направите робот с определени принципи на поведение?Цял клас от такива роботи е създаден с помощта на BEAM технология, чиито типични принципи на поведение се основават на така нареченото "фоторецепция". В отговор на промените в интензитета на светлината такъв мини-робот се движи по-бавно или, обратно, по-бързо (фотокинеза).

За да направим робот, чието движение е насочено от светлина или към светлина и е причинено от реакция на фототаксис, имаме нужда от два фотосензора. Реакцията на фототаксис ще се прояви по следния начин: ако светлината удари един от фотосензорите на BEAM-робота, съответният електродвигател се включва и роботът се обръща към източника на светлина.

И тогава светлината удря втория сензор и след това вторият електромотор се включва. Сега мини-роботът започва да се движи към източника на светлина. Ако светлината отново удари само един фотосензор, роботът отново започва да се върти към светлината и продължава да се движи към източника, когато светлината освети и двата сензора. Когато никаква светлина не удари някой от сензорите, мини роботът спира.

Как да си направим робот, който следва ръка?За да направите това, нашият мини-робот трябва да бъде оборудван не само със сензори, но и със светодиоди. Светодиодите ще излъчват светлина и роботът ще реагира на отразената светлина. Ако поставим дланта си пред един от сензорите, тогава мини-роботът ще се обърне в неговата посока.

Ако отдалечите леко дланта си от съответния сензор, роботът „послушно“ ще следва дланта. За да може отразената светлина да бъде ясно уловена от фототранзисторите, изберете ярко оранжеви или червени светодиоди (над 1000 mCd) за конструиране на вашия робот.

Не е тайна, че броят на инвестициите в областта на роботиката се увеличава всяка година, създават се много нови поколения роботи, с развитието на производствените технологии се появяват нови възможности за създаване и използване на роботи и талантливи самоуки майстори продължават да удивляват света с новите си изобретения в областта на роботиката.

Вградените фотосензори реагират на светлината и са насочени към източника, а сензорите разпознават препятствие по пътя и роботът променя посоката. За да направите такъв прост робот със собствените си ръце, не е необходимо да имате "седем педя в челото" и висше техническо образование. Достатъчно е да закупите (и някои части могат да бъдат намерени под ръка) всички необходими части, за да създадете робот и постепенно да свържете всички микросхеми, сензори, сензори, проводници и двигатели.

Нека разгледаме вариант на робот, направен от вибрационен двигател от мобилен телефон, изтощена батерия, двустранна лента и ... четка за зъби. За да започнете да правите този прост робот от наличните инструменти, вземете стария си ненужен мобилен телефон и отстранете вибрационния мотор от него. След това вземете стара четка за зъби и отрежете главата с прободен трион.

В горната част на главата на четката за зъби залепете парче двустранна лента, а отгоре - вибрационен двигател. Остава само да осигурите захранване на мини-робота, като инсталирате плоска батерия до вибрационния мотор. Всичко! Нашият робот е готов - поради вибрация, роботът ще се движи напред по четината.

♦ МАЙСТОРСКИЯ КЛАС ЗА "НАПРАВИЛНИ DIY": Кликнете върху снимката

♦ ВИДЕО УРОЦИ ЗА НАЧИНАЕЩИ:

Дори тези, които току-що са взели поялник, могат да направят най-простия робот.

Най-вече нашият робот (в зависимост от дизайна) ще се натъкне на светлината или, напротив, ще избяга от нея, ще тича напред в търсене на лъч светлина или ще се върне като къртица.

За нашия бъдещ "изкуствен интелект" се нуждаем от:

  1. Микросхема L293D
  2. Малък електромотор M1 (може да се извади от колички играчки)
  3. Фототранзистор и резистор 200 ома.
  4. Проводници, батерия и, разбира се, самата платформа, където ще се намира всичко това.

Ако добавите още няколко ярки светодиода към дизайна, тогава лесно можете да постигнете, че роботът просто ще тича след ръката или дори ще следва светла или тъмна линия. Нашето творение ще бъде типичен представител на роботите от клас BEAM. Принципът на поведение на такива роботи се основава на "фоторецепция", тоест светлината в този случай ще действа като източник на информация.

Нашият робот ще се придвижи напред, когато лъч светлина го удари. Това поведение на устройството се нарича "фотокинеза" - ненасочено увеличаване или намаляване на мобилността в отговор на промени в нивата на светлина.

В нашето устройство, както бе споменато по-горе, като фотосензор беше използван n-p-n фототранзистор от структурата PTR-1. Тук можете да използвате не само фототранзистор, но и фоторезистор или фотодиод, тъй като принципът на работа за всички елементи е един и същ.

Фигурата веднага показва схемата на свързване на робота. Ако все още не сте запознати достатъчно с техническите символи, тогава въз основа на тази диаграма ще бъде лесно да разберете принципите на обозначаване и свързване на елементи един с друг.

GND. Проводниците, свързващи различните елементи на веригата към земята (отрицателния полюс на захранването), обикновено не са напълно показани на диаграмите. Вместо това е начертано малко тире, за да се посочи заземяващата връзка. Понякога до тирето пишат "GND" - от английски. думите "земя" - земя.

Vcc. Това обозначение показва, че чрез тази част веригата е свързана към захранването - Положителен полюс! Понякога на диаграмите вместо тези букви често се изписва текущата оценка. В този случай + 5V.

Принципът на робота.

Когато светлинен лъч удари фототранзистора (на диаграмата е обозначен като PRT1), на изхода на микросхемата INPUT1 се появява положителен сигнал, който кара двигателя M1 да работи. Обратно, когато светлинният лъч спре да осветява фототранзистора, сигналът на изхода на микросхемата INPUT1 изчезва, следователно двигателят спира.

Резистор R1 в тази верига е предназначен да компенсира тока, преминаващ през фототранзистора. Номиналната стойност на резистора е 200 Ohm - разбира се, тук можете да запоявате резистори с други номинали, но трябва да се помни, че чувствителността на фототранзистора, а оттам и производителността на самия робот, ще зависи от номиналната стойност.

Ако стойността на резистора е голяма, тогава роботът ще реагира само на много ярък лъч светлина, а ако е малък, тогава чувствителността ще бъде много по-висока.

Накратко, не трябва да използвате резистори със съпротивление по-малко от 100 Ohm в тази верига, в противен случай фототранзисторът може просто да прегрее и да се повреди.

Цифрови и аналогови мултиметри за измерване Вериги за четене: екраниране, заземяване Вериги за четене: лампи и фотоклетки Ремонт на електрическа кана Направи си сам часовник с прожекция на изображение

Със сигурност, след като гледахте филми за роботи, вие повече от веднъж сте искали да изградите своя другар по оръжие, но не знаехте откъде да започнете. Разбира се, няма да можете да изградите двукрак терминатор, но и ние не се стремим към това. Всеки, който знае как правилно да държи поялник в ръцете си, може да сглоби прост робот и това не изисква дълбоки познания, въпреки че няма да се намесват. Аматьорската роботика не се различава много от схемата, само че е много по-интересна, защото тук са засегнати и области като механика и програмиране. Всички компоненти са лесно достъпни и не са толкова скъпи. Така че напредъкът не стои на едно място и ние ще го използваме в своя полза.

Въведение

Така. Какво е робот? В повечето случаи това е автоматично устройство, което реагира на всяко действие в околната среда. Роботите могат да се управляват от хора или да извършват предварително програмирани действия. Обикновено роботът е оборудван с различни сензори (разстояние, ъгъл на въртене, ускорение), видеокамери, манипулатори. Електронната част на робота се състои от микроконтролер (MC) – микросхема, която съдържа процесор, тактов генератор, различни периферни устройства, произволен достъп и постоянна памет. В света има огромно разнообразие от микроконтролери за различни области на приложение и на тяхна база могат да се сглобяват мощни роботи. За любителските сгради широко се използват AVR микроконтролерите. Днес те са най-достъпните и в интернет можете да намерите много примери, базирани на тези MK. За да работите с микроконтролери, трябва да можете да програмирате на асембли или C и да имате основни познания по цифрова и аналогова електроника. Ще използваме C в нашия проект. Програмирането за MK не се различава много от програмирането на компютър, синтаксисът на езика е същият, повечето функции са практически еднакви, а новите са доста лесни за научаване и удобни за използване.

Това, което ни трябва

Като начало нашият робот ще може просто да заобикаля препятствия, тоест да повтаря нормалното поведение на повечето животни в природата. Всичко, от което се нуждаем, за да изградим такъв робот, може да се намери в магазините за радио. Ние ще решим как ще се движи нашият робот. Най-успешните според мен са коловозите, които се използват в танкове, това е най-удобното решение, тъй като коловозите имат по-голяма проходимост от колелата на превозното средство и са по-удобни за управление (за да завиете, е достатъчно за завъртане на пистите в различни посоки). Следователно ще ви трябва всеки резервоар за играчки с писти, които се въртят независимо една от друга, можете да закупите това във всеки магазин за играчки на разумна цена. От този резервоар ви трябва само платформа с релси и двигатели със скоростни кутии, останалото можете спокойно да развиете и изхвърлите. Имаме нужда и от микроконтролер, моят избор падна върху ATmega16 - има достатъчно портове за свързване на сензори и периферни устройства и като цяло е доста удобен. Също така трябва да закупите някои радиокомпоненти, поялник, мултицет.

Изработка на табло с МК



Роботна верига

В нашия случай микроконтролерът ще изпълнява функциите на мозъка, но няма да започнем с него, а със захранването на мозъка на робота. Правилното хранене е ключът към здравето, затова ще започнем с това как правилно да храним нашия робот, защото обикновено това е грешката, която правят начинаещите строители на роботи. И за да работи нашият робот нормално, трябва да използвате стабилизатор на напрежението. Предпочитам микросхемата L7805 - тя е проектирана да осигурява стабилно напрежение от 5V на изхода, от което се нуждае нашия микроконтролер. Но поради факта, че спадът на напрежението на тази микросхема е около 2,5V, към нея трябва да се подаде поне 7,5V. Заедно с този стабилизатор се използват електролитни кондензатори за изглаждане на вълните на напрежението и диод трябва да бъде включен във веригата, за да се предпази от обръщане на полярността.
Сега можем да се справим с нашия микроконтролер. Корпусът за MK е DIP (по-удобно е да се запоява по този начин) и има четиридесет извода. На борда има ADC, PWM, USART и много други, които няма да използваме засега. Нека разгледаме няколко важни възела. Щифтът RESET (9-ти крак на MK) се изтегля от резистора R1 към "плюса" на захранването - това трябва да се направи! В противен случай вашият MK може неволно да бъде нулиран или, с други думи, да бъде бъгнат. Също така е желана мярка, но не е задължителна, свързването на RESET през керамичния кондензатор C1 към земята. На диаграмата можете да видите и електролит от 1000 uF, той спестява от спадове на напрежението, когато двигателите работят, което също ще има благоприятен ефект върху работата на микроконтролера. Кварцовият кристал X1 и кондензаторите C2, C3 трябва да бъдат поставени възможно най-близо до изводите XTAL1 и XTAL2.
Няма да говоря за това как да флашвам MK, тъй като можете да прочетете за това в интернет. Ще напишем програмата на C; аз избрах CodeVisionAVR като среда за програмиране. Това е доста удобна среда и полезна за начинаещи, тъй като има вграден съветник за създаване на код.


Моята роботна дъска

Моторен контрол

Също толкова важен компонент в нашия робот е моторният драйвер, който ни улеснява при управлението му. Никога и при никакви обстоятелства не трябва да свързвате двигатели директно към MK! По принцип мощните товари не могат да се управляват директно от микроконтролера, в противен случай той ще изгори. Използвайте ключови транзистори. За нашия случай има специална микросхема - L293D. В такива прости проекти винаги се опитвайте да използвате тази конкретна микросхема с индекс "D", тъй като тя има вградени диоди за защита от претоварване. Тази микросхема е много лесна за работа и може лесно да бъде получена от радиомагазините. Предлага се в два DIP и SOIC пакета. Ще използваме DIP пакет поради лесния монтаж на платката. L293D има отделно захранване за двигатели и логика. Следователно ще захранваме самата микросхема от стабилизатора (VSS вход), а двигателите директно от батериите (VS вход). L293D може да издържи натоварване от 600 mA на канал и има два от тези канала, тоест два двигателя могат да бъдат свързани към една микросхема. Но, за да играем на сигурно, ще комбинираме каналите и след това се нуждаем от един микрон за всеки двигател. От това следва, че L293D ще може да издържи 1,2 A. За да постигнете това, трябва да комбинирате краката на микра, както е показано на диаграмата. Микросхемата работи по следния начин: когато се приложи логическа "0" към IN1 и IN2 и логическа единица към IN3 и IN4, двигателят се върти в една посока и ако сигналите са обърнати, се прилага логическа нула, тогава двигателят ще започне да се върти в другата посока. Щифтовете EN1 и EN2 са отговорни за включване на всеки канал. Свързваме ги и ги свързваме към "плюса" на захранването от стабилизатора. Тъй като микросхемата се нагрява по време на работа и инсталирането на радиатори е проблематично за този тип случаи, разсейването на топлината се осигурява от краката GND - по-добре е да ги запоявате на широка контактна площ. Това е всичко, което трябва да знаете за драйверите на двигатели за първи път.

Сензори за препятствия

За да може нашият робот да навигира и да не се блъсне във всичко, ще инсталираме два инфрачервени сензора върху него. Най-простият сензор се състои от IR диод, който излъчва в инфрачервения спектър, и фототранзистор, който ще приема сигнала от IR диода. Принципът е следният: когато няма препятствие пред сензора, IR лъчите не удрят фототранзистора и той не се отваря. Ако има препятствие пред сензора, тогава лъчите от него се отразяват и падат върху транзистора - той се отваря и токът започва да тече. Недостатъкът на такива сензори е, че те могат да реагират различно на различни повърхности и не са защитени от смущения - сензорът може случайно да се задейства от външни сигнали от други устройства. Модулирането на сигнала може да предпази от смущения, но засега няма да се занимаваме с това. За начало това е достатъчно.


Първата версия на сензорите на моя робот

Фърмуер на робот

За да съживите робота, трябва да напишете фърмуер за него, тоест програма, която ще взема показания от сензори и ще управлява двигателите. Моята програма е най-простата, не съдържа сложни структури и ще е ясна за всички. Следващите два реда включват заглавни файлове за нашия микроконтролер и команди за формиране на закъснения:

#включи
#включи

Следните редове са условни, тъй като стойностите на PORTC зависят от това как сте свързали драйвера на двигателя към вашия микроконтролер:

PORTC.0 = 1;
PORTC.1 = 0;
PORTC.2 = 1;
PORTC.3 = 0;

Стойността 0xFF означава, че изходът ще бъде log. "1" и 0x00 - дневник. "0".

Със следната конструкция проверяваме дали има препятствие пред робота и от коя страна е то:

Ако (! (PINB & (1< {
...
}

Ако светлината от IR диод удари фототранзистора, тогава на крака на микроконтролера се поставя лог. "0" и роботът започва да се движи назад, за да се отдалечи от препятствието, след което се обръща, за да не се сблъска отново с препятствието и след това отново тръгва напред. Тъй като имаме два сензора, проверяваме за наличие на препятствие два пъти - отдясно и отляво и следователно можем да разберем от коя страна е препятствието. Командата "delay_ms (1000)" показва, че ще отнеме една секунда, преди да бъде изпълнена следващата команда.

Заключение

Обхванах повечето от аспектите, които ще ви помогнат да изградите първия си робот. Но роботиката не свършва дотук. Ако изградите този робот, тогава ще имате много възможности за неговото разширяване. Можете да подобрите алгоритъма на робота, като например какво да направите, ако препятствието не е от някаква страна, а директно пред робота. Също така не пречи да инсталирате енкодер - просто устройство, което ще ви помогне да позиционирате точно и да знаете местоположението на вашия робот в пространството. За по-голяма яснота е възможно да се инсталира цветен или монохромен дисплей, който може да показва полезна информация - ниво на заряд на батерията, разстояние до препятствие, различна информация за отстраняване на грешки. Подобряването на сензорите също няма да навреди - инсталирането на TSOP (това са IR приемници, които възприемат сигнал само с определена честота) вместо конвенционалните фототранзистори. В допълнение към инфрачервените сензори има и ултразвукови, те са по-скъпи и също не са без недостатъци, но напоследък те набират популярност сред инженерите по роботика. За да може роботът да реагира на звук, би било хубаво да инсталирате микрофони с усилване. Но наистина интересното според мен е инсталирането на камерата и програмирането на базата на машинното зрение. Има набор от специални OpenCV библиотеки, с които можете да програмирате разпознаване на лица, движение по цветни маяци и много други интересни неща. Всичко зависи само от вашето въображение и умения.
Списък на компонентите:
  • ATmega16 в DIP-40 пакет>
  • L7805 в опаковка TO-220
  • L293D в DIP-16 опаковка х2 бр.
  • Резистори 0,25 W с номинални стойности: 10 kOhm x1 бр., 220 Ohm x4 бр.
  • керамични кондензатори: 0,1 μF, 1 μF, 22 pF
  • електролитни кондензатори: 1000 uF x 16 V, 220 uF x 16V x 2 бр.
  • диод 1N4001 или 1N4004
  • кристален резонатор на 16 MHz
  • IR диоди: всички два са подходящи.
  • фототранзистори, също всякакви, но реагиращи само на дължината на вълната на инфрачервените лъчи
Код на фърмуера:
/*****************************************************
Фърмуер на робот

Тип MK: ATmega16
Тактова честота: 16.000000 MHz
Ако имате различна кварцова честота, това трябва да бъде посочено в настройките на средата:
Проект -> Конфигуриране -> Раздел C компилатор
*****************************************************/

#включи
#включи

Void main (недействителен)
{
// Конфигуриране на портове за вход
// Чрез тези портове получаваме сигнали от сензори
DDRB = 0x00;
// Включете издърпващи резистори
PORTB = 0xFF;

// Настройване на портове за изход
// Чрез тези портове управляваме двигателите
DDRC = 0xFF;

// Основният цикъл на програмата. Тук четем стойностите от сензорите
// и задвижващи двигатели
докато (1)
{
// Да вървим напред
PORTC.0 = 1;
PORTC.1 = 0;
PORTC.2 = 1;
PORTC.3 = 0;
ако (! (ПИНБ & (1< {
// Върнете се 1 секунда назад
PORTC.0 = 0;
PORTC.1 = 1;
PORTC.2 = 0;
PORTC.3 = 1;
закъснение_ms (1000);
// обвивам
PORTC.0 = 1;
PORTC.1 = 0;
PORTC.2 = 0;
PORTC.3 = 1;
закъснение_ms (1000);
}
ако (! (ПИНБ & (1< {
// Върнете се 1 секунда назад
PORTC.0 = 0;
PORTC.1 = 1;
PORTC.2 = 0;
PORTC.3 = 1;
закъснение_ms (1000);
// обвивам
PORTC.0 = 0;
PORTC.1 = 1;
PORTC.2 = 1;
PORTC.3 = 0;
закъснение_ms (1000);
}
};
}

За моя робот

В момента моят робот е почти готов.


Разполага с безжична камера, сензор за разстояние (и камерата, и този сензор са монтирани на въртящата се кула), сензор за препятствия, енкодер, приемник на сигнал за дистанционно управление и RS-232 интерфейс за свързване към компютър. Работи в два режима: автономен и ръчен (получава контролни сигнали от дистанционното управление), камерата може да се включва/изключва и дистанционно или от самия робот за пестене на батерията. Пиша фърмуер за сигурност на апартамента (прехвърляне на изображение към компютър, детекция на движение, обход на стаята).

По желание пускам видео:

UPD.Презаредих снимките и направих малки корекции в текста.