фото.1 | фото.2 |
Все это умещается на плате которую вам предстоит спаять и установить на нее детали. Все детали, кстати, выполнены в DIP корпусе и с ним подобным, что облегчает жизнь начинающему робототехнику. Паять не сложно будет. Детали расположены очень кучно и при пайке соблюдайте аккуратность и внимательно устанавливайте на свои места детали. Иначе перепаивать а это очень тяжко для таких плат, так как у меня обычно детали припаиваются намертво =).
Мозговым центром бота является микроконтроллер фирмы Atmel - ATmega8L, где L - означает что микросхема из рода мало потребляющих и мало-требующих для работы. Обычно запускаются от 3-5 Вольт. Этот МК управляет 6 тактильными датчиками (датчиками касания), установленными в передней части бота, 4 оптопарами которые установлены рядом с редуктором для подсчета количества оборотов колеса. А также датчиком линии состоящим из 2х фототранзисторов и одним светодиодом между ними.
Редуктор на этом роботе, мягко говоря - никудышнейший ! Я просто не могу Вам сказать все что о нем думаю! Редуктор нельзя использовать для участия в конкурсах или настоящих соревнований по робототехнике. Он очень м-е-едленный, очень слабенький, руками слегка притормаживаешь и он дохнет от напряги, пищит. Сразу говорю - редуктор меняйте !Моторами управляет Н-мост на транзисторах C32740 и, кажется микросхемой CD4081BD.
Напряжение робот просит в количестве 4 батареек типоразмера ААА по 1.5 (1.2) Вольт каждая.
2.ВИДЕОТЕСТЫ РОБОТА ASURO
На видео показано прохождение роботом трассы.
Технические характеристики набора приведены в таблице.1.
Табл.1.
МИКРОКОНТРОЛЛЕР | ПРОГРАММИРОВАНИЕ | СЕНСОРЫ | ИСТОЧНИК ПИТАНИЯ | РАЗМЕРЫ |
AVR ATMega8 Память: 8 kB флэш, из них около килобайта занято Bootloader_ом 1 kB RAM 1 kB EEPROM | Робот поставляется с прошитой во флэш программой AVR-Bootloader, после подачи питания загрузчик пытается принять с компьютера данные, а если IR сигнал не обнаружен, через две секунды робот начинает исполнять текущую программу. | Два фототранзистора позволяют отслеживать линию на полу шесть контактных датчиков (микропереключатели) Две фотоячейки считают обороты колёс. | 4 шт. гальванических элемента типоразмера 4AAA | Длина × Ширина × Высота 117×122×45мм |
Будем считать что робот у вас допаян и собран. Батарейки новые и при включении он запускает тестовую прошивку которая проверяет все агрегаты типа моторов, датчиков, сенсоров.
4.ПРОГРАММИРОВАНИЕ.
- WinAVR или AVRStudio4. Компиляторы С\С++ с помощью которых мы будем составлять и
компилировать инструкцию поведения робота - .hex файл, который скушает
микроконтроллер. В нашем случае будет использоваться первый вариант -
WinAVR - Flash - загрузчик нашего .hex кода.
- Adobe Reader по идее есть у каждого, но если хотите можете его скачать тоже для чтения мануала на английском.
корректной работы робота и его микроконтроллера ATmega8.
--------
>
> Tame Taken: 00:01
7.ЧТО ЭТО ЗНАЧИТ ?
Первая строка говорит о том, что в ходе компилирования не обнаружено каких либо ошибок синтаксиса и прочего. Вторая строка просто так. Третья строка говорит что ошибок (точек выхода\сбоя\ошибки) не найдено. Четвертая строка показывает затраченное время на компиляцию.
Перед каждой компиляцией обязательно сохранитесь! Иначе, когда вы вносите изменения в коде, в самой программе WinAVR NP, в тесте вашей программы, при запуске на компиляцию он вам не покажет ошибки. И вы, радостные, побежите заливать прошивку в МК и потом будете ломать голову почему ничего не изменилось )
Для проверки увидит ли он ошибку сделайте тест:
1.Открыв файл программы test.c и запустите на компиляцию. Вы увидите что ошибок 0.
2.Теперь открытый файл test.c на любой из строчек удалите ";"
Для этого нужно нашу программу запихать в его мозги, - микроконтроллер. Причем в память его не энергозависимую. А то если запишем в энергозависимую, то при его выключении все потеряется. Для тех кого заинтересовало какие есть типы памяти - ищите в гугле
Помните мы было дело создавали папку FirstTry ? Вот сейчас идем в эту папку и находим там файлик test.hex. Это тот самый файл который умеет читать МК. Если хотите, можете его открыть в блокноте и узнаете что он из себя представляет =)
а) COM-порт
COM-порт - это мост, который связывает программку Flash и наш программатор, который вы подключили в USB-порт. На самом деле COM - тот же самый USB, только называется по другому. Как узнать какой COM порт нам нужен ? Когда вы подключите программатор в USB, если у вас стоит Windows 7, то в большинстве случаев драйвера на него найдутся сами, и
установятся автоматически. Но бывают случаи, в большинстве, приходится все делать вручную.
б) Обзор ...
- Тут мы находим файл с расширением .HEX. В нашей папке выбираем файл test.hex
в) Programm ...
Нажимая эту кнопку программатор начинает запрашивать у МК состояние - готов ли МК к прошивке или нет. Включен он или нет ? Будьте готовы включить робота сразу после нажатия на эту кнопку, так как если робот будет выключен - программа будет писать TameOut - время ожидания вышло.
2. Нажимаем правой кнопкой по этому неизвестному -> Обновить драйвер -> Выполнить поиск драйверов на этом компьютере ->Выбрать драйвер из списка уже установленных -> В списке (принтеры, мониторы, клавиатуры и прочей фигне) тыкаете на первое попавшееся устройство, например "Принтеры" -> В открывшемся окошке жмем "Установить с диска" -> Заходим в папку, точнее на диск что идет в комплекте с роботом. На диске идем в папку "USB-driver", тыкаем по первому попавшемуся INF файлу. Жмет открыть, ОК. Появится строка типа "USB Serial converter". Нажимаете на эту строку, -> Далее -> Да.
3. Установка драйвера завершена. Можете проверить наличие нашего программатора. Заходим в Диспетчер устройств, находим вкладку "Порты(COM и USB)". Там будет либо название программатора, либо название как у меня: USB Serial port (COM1). Так вот, к чему я все подвожу. Вот эта надпись в скобках - (COM1) - и есть тот порт, который вам нужно указать в программе Flash. У кого-то может быть другой порт, например COM21. Так что смотрите каждый персонально.
Выполните следующую последовательность действий:
1. В программе Flash нажимаем Programm.
2. Берем тут же робота и включаем его.
3. Глаз робота - TSOP - ИК датчик, с помощью которого он видит данные от программатора. Черный такой, с 3 ножками. Его направьте на ваш программатор чтобы между роботом и программатором не было предметов. Расстояние должно быть около 20 см, больше не рекомендую.
Если все идет хорошо, то там будет писаться flashed, flashed, tttflashed, tcccflashed. Главное что flashed - записано, сохранено.
После картины "шамана с бубном", трясущего роботом над программатором, ну, по крайней мере - я тряс ) Вы кое как, возможно и не с первого раза, но все же прошили МК на 100%. Теперь можно выключить питание робота, так как он будет висеть так далее, ждать новые команды от программатора.
Включите робота. Через 5 секунд ожидания робот начнет выполнять программу. Что он начнет делать ? Ответ прост - ничего ! =) Мы не указывали каких либо действий - просто программа типа START-END.
Также в нашем случае, производитель заранее попарился и напридумывал различных функций, упрощающих жизнь программисту.
Начнем с индикатора питания. Он у нас сдвоенный, имеет два цвета - красный, зеленый, желтый(если горят и тот и тот). Команда для включения красного цвета:
Прошивка на месте. Перезапускам робота. Сначала как всегда ожидание в 5 секунд, и после чего загорается красным цветом светодиод. Готово - как говорят программисты - It's Work !
Для тех кто хочет зажечь другие светодиоды, вот другие команды:
1. FrontLED(ON); - светодиод который предназначен для поиска линии
2. BackLED(OFF,ON); - два светодиода расположенные рядом с моторами
Инфракрасные светодиоды включаются чуть по другому, но об этом позже. Кстати по поводу дефайнов, ниже пример того как их правильно указывать:
#define NAME replacement_text
12.DEFINE ПРОСТОЙ НАГЛЯДНЫЙ ПРАКТИЧЕСКИЙ ПРИМЕР
#include "asuro.h”
#define STARTINGVALUE 33
int main(void)
int i;
i= STARTINGVALUE;
// теперь переменная i равна 33
return 0;
}
Разберем пример: мы задали переменную i типа int (int - Integer - Целое число). До начала программы, в "хедере" (шапке, в самом верху), мы задаем замену - число 33 мы заменяем на целое слово STARTINGVALUE. По умолчанию переменная i = 0. Но в программе мы нашу переменную приравниваем (=\==) к слову STARTINGVALUE, которое в свою очередь просто заменяется цифрой 33. В будущем такой заменой можно заменить целую кучу строк кода !
13.РАБОТА С УСЛОВИЯМИ IF ELSE
Эти команды всегда используются для создания различного рода событий, которые происходят и выполняются в зависимости от ситуации. Как движение автомобилей на перекрестке с участием светофора - ЕСЛИ (IF) горит красный (StatusLED(RED), то { выполняется одно действие }, если нет, т.е. что-нибудь еще (ELSE), то { выполняется другое действие }.
Как это выглядит в программе:
if ( Ваше условие)
{
Если условие совпадает, т.е. оно правда (true), выполняется эта строка ;
}
else
{
Если условие не совпадает, т.е. оно не правда (false), выполняется эта строка ;
}
Какими бывают условия:
== что-то равно чему-то
!= что-то не равно чему-тоl
< что-то меньше чего-то
> что-то больше чего-то
<= что-то меньше или равно чему-то
>= что-то больше или равно чему-то
Пример: (A > B), (A <= и так далее... Давайте разберем более наглядный пример с использованием все тех же светодиодов:
#include "asuro.h”
int main(void)
while (1)
if (PollSwitch()>0)
else
}
Скомпилируйте и залейте этот код в микроконтроллер. Готово ? Тогда включите робота. Что начало происходить ? Нет, выключать и включать по десять раз, думая что что-то не так, не стоит. В идеале у вас должен загореться зеленый светодиод, и больше никаких действий не будет совершаться, пока...
Вот тут то и начинает работать наше условие "ПОКА".
Что такое функция PollSwitch() ? Объясняю. Эта функция отвечает за опрос наших контактных датчиков, которых у нас аж 6 штук. Каждый датчик обзывается как К1, К2, ... ,К6.
В нашей программе мы делаем условие: ЕСЛИ хоть 1 датчик касания нажат, ТО включаем зеленый светодиод, ЕСЛИ нет, то включаем красный светодиод. Теперь снова включите робота и тут же нажмите и держите любой датчик касания. Светодиод поменяет свой цвет. Ура ! Работает !
MotorDir(FWD,FWD); -Задать движение обоих моторов впередMotorDir(RWD,RWD); -Задать движение обоих моторов назадMotorDir(FWD,RWD); -Один мотор крутим вперед, второй крутим назад. "Танковый разворот"MotorDir(FWD,BREAK); -Один мотор крутим вперед, второй останавливаем.
© SERVODROID.RU Внимание! Полное либо частичное копирование материала без разрешения администрации запрещено!
Привет! Желаешь собрать не сложного в сборке робота? Ты пришел по адресу! =) Именно у нас на сайте ты сможешь найти подробные статьи по сборке шаг-за-шагом своего первого робота, а так же многих других роботов, и даже для соревнований.
Мы очень рады,
что наши статьи помогут тебе - начинающему робототехнику, освоить эту интереснейшую сферу и прокачать свой скилл в этом направлении. Также хотим отметить, что по данным статьям мы - разработчики сайта SERVODROID проводим занятия в бесплатных кружках робототехники, и нам очень нравится учить и рассказывать что такое BEAM-робототехника всем желающих.
Помоги нашему проекту! Зарегистрируйся на нашем сайте и приходи в наш Online-чат или форум и делись своими поделками и своим прогрессом - ведь именно твоя активность привлекает к робототехнике все больше и больше внимания начинающих - они смотрят на твой успех и хотят стать такими же крутыми, а нам очень приятно видеть что у вас все получается. А если что-то не получается - мы поможем ;)
Начни общаться на нашем Форуме или Онлайн-чате
[ Стать участником сайта / Авторизоваться ]
Всего комментариев: 7 | |
| |