Готини роботи на микроконтролери. Полезни ресурси за създаване на робот със собствените си ръце

Преди около 20 години, когато бях студент в ЧПТ и работех на практика в Станкомаш (това е отделна епична история, колоритно описана в блога ми), тогава следобед, както подобава на уважаван студент, бягах от работа, бъркайки се в търсене на лакомства чрез многобройни вътрешни индустриални сметища, които бяха щедро разпръснати близо до всяка изоставена работилница и дори вътре в работилниците;) Каквото и да беше там, но основно всички черни метали. Цветните метали, включително и намотките на двигателя, бяха откраднати много преди мен.

Търсих развалена електроника, понякога имаше разпръснати КМ кондензатори, ETO и други редкоземни екстри, които се купуваха за 800 долара за килограм (тогава заплатата беше стотина и плащаха веднъж на шест месеци) и на местните трудолюбиви работници. Имаше достатъчно мозък да вземе алуминиеви радиатори и медни пръти. Като цяло това, което хвана окото ми, беше стойка от CNC машина от ерата на автоматизацията и ускорението на 80-те години на перестройката.

Беше Robotron, огромен ковчег, направен от 2 мм желязо. Струва ми се, че дори може да издържи на изстрел от автомат Калашников, въпреки факта, че стреля през релсата. Дъските бяха смачкани при опит за разбиване на радиаторите, но петинчовото устройство беше непокътнато, въпреки здравото алуминиево шаси. Това, което ме изненада, беше, че устройството за палачинки не беше от трифазен синхронен двигател, както при по-късните дискове.

Майната му! Шпинделът се въртеше от колекторен двигател през ремък. Леле, помислих си. Ако един колекционер е натоварен с толкова точна задача, тогава той трябва да е наистина страхотен колекционер.


Една интересна подробност попадна в упоритите ми ръце. Триосен цифров акселерометър, комбиниран с цифров магнитометър, чувствителност до 1,5 Gauss. Между другото, силата на магнитното поле на Земята е около 0,4 гауса. Почти една трета от обхвата, така че това нещо може да бъде доста добър електронен компас. Между другото, цената на емисията е само 350 рубли на чип. Доста божествено, като се има предвид пълнежът на борда и чувствителността на тази микросхема.

Чип LSM303DLH
Коремът изглежда особено интересен - естествена печатна платка. С коловози и преходни отвори. Веднага не исках да правя пътеки под него. В противен случай някое гвоздиче по пътеката ще обере лака на корема и ще го скъси в грешната посока.


Другото, което не ми хареса е, че контактните площадки не се виждат от краищата. Позиционирането и проверката на точността на запечатването е трудно. В това отношение корпусите QFN са по-удобни.


Размерът на корпуса е 5х5 мм. Като клетка от тетрадка. Ужас:)

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

Така че всеки, който не си спомня как се управляват сервомеханизмите, може да се разходи и да опресни знанията си.

Да вземем, като за начало, 8 сервомашини. Всяко серво получава следния сигнал:


Всяко серво трябва да има следната последователност от своя контролен крак. Пълна прилика с PWM за 8 канала. Как да генерирам този бъг? Толкова е просто. Принципът тук е прост. Импулсите са бавни - само 50 Hz, те също се променят рядко - сервото е инерционно нещо, така че не можете да го потрепвате дори сто пъти в секунда. Така че имаме вагон и малка количка за обработка.

Самите импулси ще бъдат генерирани от един таймер във фонов режим. Принципът на генериране е прост: Всички импулси стартират едновременно, като нивата им се задават на 1.
След това продължителността на първия импулс се въвежда в таймера, в регистъра за сравнение. Когато сравнението бъде прекъснато, се случва следното:

  • Нулирайте бита на порта на първия канал
  • Зареждане на втората продължителност на импулса в регистъра за сравнение на таймера

Това е поредният роботизиран конструктор – механична ръка с пет степени на свобода. Velleman Robotic Arm KSR10
Нещото е доста рядко, защото... Намерих само един продавач в Ebay и тази репичка не иска да бъде изпратена в бившия СССР. Има го в няколко буржоазни магазина и май беше в ChiD, но ние го купихме от там :) Цената е от 60...100 бона.

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

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

Тук на помощ идва виртуалната машина. Основното е, че основните процедури за управление на устройството се съхраняват в паметта на контролера, в основната програма. Ако това е робот, тогава това могат да бъдат такива прости команди като „напред“, „назад“, „завой“ и т.н.

След това се нуждаем от скриптов процесор, който да вземе нашата последователност от действия отнякъде - скрипт - и да я преобразува в извиквания към реални части от код - микрооперации.
Манипулаторът на скрипта може да бъде същата задача на диспечер, изпълнявана във фонов режим. Няма значение откъде получава данните. Те могат да бъдат изтеглени чрез usart или изтеглени от EEPROM паметта. Или можете да поставите памет на IIC и ще получите сменяема касета :)

Освен роботизирани конструктори Inex Global продава и готини мотор-редуктори. Същите, които стоят в и. Периодично ги носи в Челябинск. Купих няколко, за да опитам, имам една идея за тях, но повече за това по-късно;)

Засега ще ви разкажа за самия двигател. Предлагат се в два модела IE-BO2-120MИ IE-BO2-48M, се различават един от друг в предавателно отношение 1:120 и 1:48.

Спомняте ли си, че обещах ръководство на руски за ? И така, нямах време и дизайнерът беше пометен от рафтовете по-бързо, отколкото се съгласих да дам книгата за сканиране. въпреки това Бшепан, един от доволните собственици на тази играчка, направи добро дело и публикува сканиране в DejaVu.

Когато мощността на един транзистор не е достатъчна, за да управлява товара, използвайте съставен транзистор (транзистор Дарлингтън).Въпросът тук е, че един транзистор отваря друг. И заедно те работят като един транзистор с усилване на тока, равно на произведението на коефициентите на първия и втория транзист.

Ако вземем например транзистор MJE3055Tима максимален ток от 10А, а печалбата е само около 50; съответно, за да се отвори напълно, трябва да изпомпва около двеста милиампера ток в основата. Обикновеният MK изход няма да се справи с толкова много, но ако свържете по-слаб транзистор между тях (някакъв вид BC337), способен да издърпа тези 200mA, тогава е лесно. Но това е така, за да знае. Ами ако трябва да си направиш контролна система от импровизирани боклуци - ще ти дойде добре.

На практика готови транзисторни възли. Външно не се различава от конвенционалния транзистор. Същото тяло, същите три крака. Просто има много мощност, а управляващият ток е микроскопичен :) В ценоразписите обикновено не се притесняват и пишат просто - транзистор Дарлингтън или композитен транзистор.

Междувременно в Казахстан разработването на киборг с оригинален дизайн, базиран на контролер, продължава с ускорени темпове СНИМКА, за какво S.W.G.много активно се отписва в коментари към публикации за своя робот.

По пътя ми подари част от работата си със сапун.

SWG:

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

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

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

На бордовете на бронята има сини блокове отдолу - подови сензори с фоторезистори и светодиоди с бяла подсветка. (Направих го от клемни блокове, като ги пробих леко на места). Прозрачни светодиоди отгоре - включено осветление на IR локатора TSOP(стоящ в средата, с главата надолу).Черните кубчета във вътрешните ъгли са оптрони за отразяване на сензори за сблъсък. Над тях ще бъдат прикрепени ъгли към страничните стени - завеси с бяла зона на черен фон или дупка с определена форма.

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

DPM-25-N1-7T със скоростни кутии (27v, но те дърпат добре вече на 12, ще са необходими повече - ще направя конвертор 12->27 ) и самоделно въртящо се устройство с ролка (трето колело).

Консумация от 12v: 33 mA когато е изключен. двигатели, при макс. скорост без товар (колела не докосват пода) = 103 mA напред, 115 mA назад. При блокирано едно колело - 300 mA, при блокиране на двете колела = 500 mA.
L293DNмалко топло. Ако стане горещо, ще залепя радиатора. Да, честота ШИМЗасега взех 500 Hz. (период 2 ms). Ще измеря скоростта на нарастване на тока в двигателите и ще определя по-оптималния (При най-краткия импулс токът в двигателя трябва да има време да достигне своя максимум).
Максималната скорост на движение по пода вече е 15-20 см/сек. Засега не ми трябва нищо друго, ще тичам през стаята твърде бързо. Диаметър на колелото = 80 мм (гумените „понички“ изглежда са от някаква водопроводна инсталация, има много на пазара).

Честно казано, бях много изненадан, когато потърсих в гугъл характеристиките на двигателя DPM

Силов агрегат.
Имаме 12-волтова оловна батерия, но контролерът се нуждае от 5 волта. Така че създадох импулсно захранване. Възможно е, разбира се, да се сложат някои LM7805(като на моя макет) и освободете напрежението върху него, но това е глупав метод. Въпросът е, че LM7805 ще регургитира разликата в напрежението под формата на топлина. Така Ефективносттова устройство ще бъде под 50%, и имаме захранване от батерията. Така че има само един изход - DC-DC преобразуване. Като контролер взех изпитан във времето, популярен, достъпен и евтин MC33063A. Не измислих нищо и взех стандартна верига за понижаване ( Слизам) от неговия лист с данни. Ще ви разкажа как работи веригата на това захранване малко по-късно, в отделна публикация. След публикуването на статия в Hacker, където публикувах статия за захранвания.

Реших плавно да премина към динамично движещи се модели. Това е проект за малък домашен робот с инфрачервено управление, сглобен от прости и лесно достъпни части. Базиран е на два микроконтролера. Предвидено е предаване от дистанционното управление PIC12F675, а приемната част за моторния контролер е внедрена на PIC12F629.

Роботна схема на микроконтролер

Всичко вървеше гладко с цифровата част, единственият проблем беше в „задвижващата система“ - малки скоростни кутии, които са много проблематични за правене у дома, така че трябваше да развия идеята " вибробъгове„Микродвигателите се управляват чрез усилващи транзисторни превключватели на BC337. Те могат да се сменят с всякакви други малки n-p-n транзистори с колекторен ток от 0,5 A.

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

Обсъдете статията МАЛЪК ДОМАШЕН РОБОТ

26.01.2011, 09:18
източник:

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

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

Сега всичко е наред. Микроконтролерът Attiny2313 получава сигнал за препятствие (логическа единица или нула) от два инфрачервени сензора. След това, според фърмуера, микроконтролерът управлява чипа на драйвера на двигателя L293D (контролен ток до 1 ампер). Фигура 3 показва снимка на обърнат робот.

Основата на дизайна на домашен робот е метална лента, огъната в трапец. Ъгълът на огъване е около 120°. Принципно важно е да се получи еднакъв завой от двете страни, в противен случай роботът няма да се движи по права линия. Въпреки че, от друга страна, това, което един механик или електронен инженер е направил лошо, понякога може да бъде коригирано от програмист, да речем, използвайки ШИМ за постигане на линейно движение на робота

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

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

Следващата модификация за робота бяха IR сензори на корема му, позволяващи на робота да следва черна линия, начертана върху бяла хартия с маркер. Внедряването изисква три сензора и компаратор на чипа LM339N за облекчаване на микроконтролера. Съществен недостатък се оказа необходимостта от предварителна настройка на датчиците с тримиращи резистори в зависимост от осветеността в помещението.

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

Избор на микроконтролер за създаване на вашия робот. Първо трябва да разберете концепцията за това какво е микроконтролер и какво прави?

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

Често се нарича "мозък" или "контролен център" на робота. Обикновено микроконтролерът е отговорен за всички изчисления, вземане на решения и комуникации.

За да комуникира с външния свят, микроконтролерът има серия от щифтове или щифтове за електрически усещане на сигнала. Така че сигналът може да бъде обърнат на максимум (1/C) или минимум (0/изключено) с помощта на инструкция за програмиране. Тези щифтове могат да се използват и за четене на електрически сигнали. Те идват от сензори или други устройства и определят дали сигналите са високи или ниски.

Повечето съвременни микроконтролери също могат да измерват напрежението на аналоговите сигнали. Това са сигнали, които могат да имат пълен диапазон от стойности вместо две ясно дефинирани нива. Това се случва с помощта на аналогово-цифров преобразувател (ADC). В резултат на това микроконтролерът може да присвои цифрова стойност на сигнала под формата на аналогово напрежение.Това напрежение не е нито високо, нито ниско и обикновено е в диапазона от 0 - 10 волта.

Какво може да направи микроконтролерът?

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

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


По същия начин микроконтролерите могат да се използват за управление на други електрически устройства. Предимно като устройства (когато са свързани към контролер на мотор), устройства за съхранение (като SD карти), WiFi или bluetooth интерфейси и т.н. Като следствие от тази невероятна гъвкавост, микроконтролерите могат да бъдат намерени в ежедневието.

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

За разлика от микропроцесорите (като централния процесор в персоналните компютри), микроконтролерът не изисква периферни устройства. Като външна RAM памет или външно устройство за съхранение за работа. Това означава, че въпреки че микроконтролерът може да е по-малко мощен от техния компютърен аналог. Почти винаги е много по-лесно и по-евтино да се разработват схеми и продукти, базирани на микроконтролери, тъй като са необходими много малко допълнителни хардуерни компоненти.

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

Какви са по-специализираните функции на микроконтролера?

Специален хардуер, вграден в микроконтролерите, позволява на тези устройства да правят повече от обикновен цифров I/O, основни изчисления и вземане на решения. Много микроконтролери лесно поддържат най-популярните комуникационни протоколи, като UART (RS232 или друг), SPI и I2C. Тази функция е невероятно полезна при комуникация с други устройства като компютри, сензори или други микроконтролери.

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


Аналогово-цифровите преобразуватели (ADC) се използват за преобразуване на аналогови сигнали за напрежение в цифрови. Там количеството е пропорционално на големината на напрежението и това число може след това да се използва в програмата на микроконтролера. За да направят междинния енергиен изход различен от висок и нисък, някои микроконтролери имат способността да използват модулация на ширината на импулса (PWM). Например, този метод ви позволява плавно да променяте яркостта на светодиода.

И накрая, някои микроконтролери имат вграден регулатор на напрежението. Това е доста удобно, тъй като позволява на микроконтролера да работи с широк диапазон на напрежение. Следователно не е необходимо да предоставяте необходимите стойности на напрежението. Освен това ви позволява лесно да свързвате различни сензори и други устройства без допълнително външно регулирано захранване.

Аналогов или цифров?

Кои входни и изходни сигнали трябва да се използват зависи от задачата и условията. Например, ако задачата ви е просто да включите или изключите нещо, тогава всичко, от което се нуждаете, е сигналът на входния щифт на микроконтролера да бъде цифров. Двоичното състояние на превключвателя е 0 или 1. Високото ниво на сигнала може да бъде 5 волта, а ниското ниво 0. Ако трябва да измерите например температура, тогава имате нужда от аналогов входен сигнал. След това ADC на микроконтролера интерпретира напрежението и го преобразува в числена стойност.


Как да програмираме микроконтролери?

Програмирането на микроконтролери стана по-лесно благодарение на използването на модерни интегрирани среди за разработка (IDE) с пълнофункционални библиотеки. Те лесно покриват всички най-често срещани задачи и имат много готови примерни кодове.

В наши дни микроконтролерите могат да бъдат програмирани на различни езици от високо ниво. Това са езици като C, C++, C#, Java, Python, Basic и други. Разбира се, винаги можете да напишете програма на асемблер. Въпреки че това е за по-напреднали потребители със специални изисквания (с нотка на мазохизъм). В този смисъл всеки трябва да може да намери език за програмиране, който най-добре отговаря на неговия вкус и предишен опит в програмирането.

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


Разработените микроконтролерни платки са доста удобни за използване. И те са по-лесни за използване за дълго време. Те също така осигуряват удобно USB захранване и интерфейси за програмиране. Следователно е възможно да се свържете с всеки съвременен компютър.

Защо не използвате стандартен компютър?

Очевидно микроконтролерът е много подобен на компютърен процесор. Ако случаят е такъв, защо просто не използвате компютър, за да управлявате робота? И така, трябва ли да изберете настолен компютър или микроконтролер?


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

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

Как да изберем правилния микроконтролер?

Ако изучавате роботика, тогава ще ви трябва микроконтролер за всеки проект по роботика. За начинаещ изборът на правилния микроконтролер може да изглежда като трудна задача. Особено предвид гамата, техническите характеристики и областите на приложение. На пазара има много различни микроконтролери:

  • Ардуино
  • BasicATOM
  • BasicX
  • Лего EV3
  • и много други

За да изберете правилния микроконтролер, задайте си следните въпроси:

Кой е най-популярният микроконтролер за моето приложение?

Разбира се, създаването на роботи и електронни проекти като цяло не е състезание за популярност. Много е добре микроконтролерът да има голяма подкрепа от общността. И се използва успешно в подобни или дори идентични ситуации. В резултат на това това може значително да опрости фазата на проектиране. По този начин можете да се възползвате от опита на други потребители, както любители, така и професионалисти.

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

Вашият робот има ли специални изисквания?

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

Други контролери може да изискват специфичен хардуер (напр. ADC, PWM и поддръжка на комуникационни протоколи). Също така трябва да се вземат предвид изискванията за памет и скорост, както и броя на щифтовете.

Какви компоненти са налични за конкретен микроконтролер?

Може би вашият робот има специални изисквания или изисква специфичен сензор или компонент. А това е критично за вашия проект. Следователно изборът на съвместим микроконтролер, разбира се, е много важен.

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

Какво ни крие бъдещето?

Цените на компютрите рязко падат, а напредъкът на технологиите ги прави по-малки и по-ефективни. В резултат на това едноплатковите компютри се превърнаха в привлекателна опция за роботите. Те могат да работят с пълна операционна система (Windows и Linux са най-често срещаните).

Освен това компютрите могат да се свързват с външни устройства като USB устройства, LCD дисплеи и т.н. За разлика от предците си, тези едноплаткови компютри са склонни да консумират значително по-малко енергия.

Практическа част

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

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

Отговаря на тези критерии EV3 модулот комплекта Lego Mindstorms EV3.


Преглед на EV3 Brick

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

Въведение

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

Какво ни трябва

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

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



Диаграма на робота

В нашия случай микроконтролерът ще изпълнява функциите на мозъка, но няма да започнем с него, а с захранването на мозъка на робота. Правилното хранене е ключът към здравето, така че ще започнем с това как правилно да храним нашия робот, защото това е мястото, където начинаещите строители на роботи обикновено правят грешки. И за да работи нормално нашият робот, трябва да използваме стабилизатор на напрежението. Предпочитам чипа L7805 - той е проектиран да произвежда стабилно изходно напрежение 5V, което е необходимо на нашия микроконтролер. Но поради факта, че спадът на напрежението на тази микросхема е около 2,5 V, трябва да се подаде минимум 7,5 V. Заедно с този стабилизатор се използват електролитни кондензатори за изглаждане на пулсациите на напрежението и диодът задължително се включва във веригата за защита срещу обръщане на полярността.
Сега можем да преминем към нашия микроконтролер. Корпусът на 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. За да постигнете това, трябва да комбинирате краката на micra, както е показано на диаграмата. Микросхемата работи по следния начин: когато към IN1 и IN2 се приложи логическа "0", а към IN3 и IN4 - логическа единица, двигателят се върти в една посока и ако сигналите се обърнат и се приложи логическа нула, тогава моторът ще започне да се върти в другата посока. Пинове EN1 и EN2 са отговорни за включването на всеки канал. Свързваме ги и ги свързваме към „плюса“ на захранването от стабилизатора. Тъй като микросхемата се нагрява по време на работа и инсталирането на радиатори на този тип кутия е проблематично, отстраняването на топлината се осигурява от краката GND - по-добре е да ги запоявате върху широка контактна площадка. Това е всичко, което трябва да знаете за драйверите на двигателя за първи път.

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

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


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

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

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

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

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

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

Стойността 0xFF означава, че изходът ще бъде лог. „1“, а 0x00 е журнал. "0".

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

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

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

Заключение

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

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

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

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

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

//Основен цикъл на програмата. Тук четем стойностите от сензорите
//и контролира двигателите
докато (1)
{
//Да вървим напред
PORTC.0 = 1;
PORTC.1 = 0;
PORTC.2 = 1;
PORTC.3 = 0;
ако (!(PINB & (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);
}
ако (!(PINB & (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.Качих отново снимките и направих дребни корекции в текста.