Приветствую Вас ГостьВторник, 26.09.2017, 10:24

Robostroi


ПРОСТОЙ РОБОТ НА МИКРОКОНТРОЛЛЕРЕ (Часть 1)

ПРОСТОЙ РОБОТ НА МИКРОКОНТРОЛЛЕРЕ (Часть 1)


Простого робота на микроконтроллере можно собрать на основе драйвера управления двигателями и непосредственно самого микроконтроллера.

В качестве драйвера двигателей используем микросхему L293D, входы которой подсоединим к выводам микроконтроллера так, как показано на схеме. В данном примере будет рассмотрен микроконтроллер ATmega8, хотя можно использовать практически любой микроконтроллер (например, ATtiny2313, ATtiny26 или любой микроконтроллер из семейства Mega).



Схема робота на микроконтроллере AVR


На схеме робота входы драйвера двигателей L293D подключены к выводам порта C микроконтроллера ATmega8, но их можно подключить к любому из портов микроконтроллера (при этом будет необходимо внести изменения в программную часть, указав порт и непосредственно его выводы в соответствующих строках программы, приводимой ниже).

Электролитический конденсатор C3 (1000 мкф, 10-25 в.) необходим для того, чтобы сгладить броски по питанию, вызванные работой моторов. Для того чтобы еще больше стабилизировать работу микроконтроллера, хорошим решением может служить керамический конденсатор емкостью около 0,33 мкф, подсоединенный между выводами питания VCC, GND (ножки 7 и 8) и располагающийся в непосредственной близости от них (на схеме не указан).

Механическая схема рассматриваемого робота должна быть собрана по "танковому" принципу: левый мотор передает движение на левое колесо, правый - на правое.

Для того чтобы собранный робот "ожил", напишем для него программу. Откомпилируем ее и загрузим в микроконтроллер. (Как это сделать, см. в статьях: Makefile и компиляция программы; Простой программатор AVR; Первый проект на микроконтроллере AVR.)


/*******************************************************
ПРИМЕР 1 :: ВРАЩЕНИЕ МОТОРАМИ ВПЕРЕД-НАЗАД :: MYROBOT.RU
********************************************************/


#include <avr/io.h>

/***************** Функция задержки ****************/
void delay(unsigned short ms) // Минимальная задержка с кварцем 8 МГц - 1 мс
{
unsigned short i, j, k; // объявляем переменные

for (i=0; i<ms; i++) // главный цикл формирования задержки
for (j=0; j<185; j++) // вложенный цикл формирования задержки
k++; // произвольное действие
}
/****************************************************/


int main(void) // начало основной программы
{

DDRC = 0xff; // все выводы порта C сконфигурировать как выходы

while (1) { // Бесконечный цикл

// ---------- вращаем моторы вперед 1 сек ----------

PORTC |= _BV(PC1); // установить "1" на линии 1 порта C
PORTC &= ~_BV(PC2); // установить "0" на линии 2 порта C
PORTC |= _BV(PC3); // установить "1" на линии 3 порта C
PORTC &= ~_BV(PC4); // установить "0" на линии 4 порта C

delay(1000); // ждем 1 сек.
// --------------------------------------------------


// ---------- вращаем моторы назад 1 сек ----------

PORTC &= ~_BV(PC1); // установить "0" на линии 1 порта C
PORTC |= _BV(PC2); // установить "1" на линии 2 порта C
PORTC &= ~_BV(PC3); // установить "0" на линии 3 порта C
PORTC |= _BV(PC4); // установить "1" на линии 4 порта C

delay(1000); // ждем 1 сек.
// --------------------------------------------------


} // закрывающая скобка бесконечного цикла

} // закрывающая скобка основной программы

Отсоединив программатор, проверим направление вращения колес робота. Если моторы вращают колеса в противоположные стороны, поменяйте местами их выводы.

Следующим шагом будет создание программы, реализующей поворот на необходимый угол остановкой одного из моторов.


/***************************************************
ПРИМЕР 2 :: ДВИЖЕНИЕ ПРЯМО С ПОВОРОТОМ :: MYROBOT.RU
****************************************************/


#include <avr/io.h>


/***************** Функция задержки ****************/
void delay(unsigned short ms) // Минимальная задержка с кварцем 8 МГц - 1 мс
{
unsigned short i, j, k; // объявляем переменные

for (i=0; i<ms; i++) // главный цикл формирования задержки
for (j=0; j<185; j++) // вложенный цикл формирования задержки
k++; // произвольное действие
}
/****************************************************/


int main(void) // начало основной программы
{

DDRC = 0xff; // все выводы порта C сконфигурировать как выходы

while (1) { // Бесконечный цикл

// ---------- вращаем моторы вперед 1 сек ------------

PORTC |= _BV(PC1); // установить "1" на линии 1 порта C
PORTC &= ~_BV(PC2); // установить "0" на линии 2 порта C
PORTC |= _BV(PC3); // установить "1" на линии 3 порта C
PORTC &= ~_BV(PC4); // установить "0" на линии 4 порта C

delay(1000); // ждем 1 сек.
// ----------------------------------------------------


// ---------- останавливаем мотор M2 на 0,5 сек ------

PORTC |= _BV(PC1); // установить "1" на линии 1 порта C
PORTC |= _BV(PC2); // установить "1" на линии 2 порта C

delay(500); // ждем 0,5 сек.
// ----------------------------------------------------


} // закрывающая скобка бесконечного цикла

} // закрывающая скобка основной программы

Изменяя время задержки, попробуйте добиться поворота на прямой угол так, чтобы траектория движения робота напоминала квадрат.

Для более быстрого разворота робота можно использовать реверс (вращение в противоположную сторону) одного из моторов. Написание такой программы будет хорошим практикумом для самостоятельного программирования движения робота.



Искусство роботов

A new kind of art: the painting robots.
     Ежегодно проводимая Международная художественная выставка робототехнического искусства ArtBots: "Шоу талантов роботов" собирает тысячи посетителей.
     Самая первая выставка ArtBots прошла еще в мае 2002 года в Бруклинском институте. А уже в июле 2003 года работу выставки освещали самые престижные газеты и журналы.
     "Каждый год мы публикуем открытое приглашение для художников со всего мира принять участие в нашей выставке. Никаких формальных требований не существует: если Вы считаете, что это робот, и если Вы считаете, что это искусство, то можете смело отправлять заявку".

ArtSBot (Art Symbiotic roBots)
Хотя получившийся робот достаточно прост, с ним можно провести ряд интереснейших экспериментов, среди которых могут быть опыты по созданию рисующего робота и робота-танцора.

Для того чтобы сделать первого из них, достаточно укрепить на шасси робота цветной маркер, касающийся поверхности, по которой движется робот, и поставить робота на лист ватмана. Циклоидные рисунки такого арт-робота будут зависеть от написанной вами программы и, конечно же, вашей фантазии.





Если последовательно использовать на одном листе несколько толстых цветных маркеров разных цветов, под каждый из которых будет написана специальная программа, можно получить настоящие шедевры абстрактного искусства. Такие произведения робототехнического искусства сегодня экспонируются даже в престижных галереях.

Robotic Action Painter - робот, созданный португальским дизайнером Леонелом Моурой. Интересные результаты можно получить, используя маркеры и фломастеры разных типов, толщины и фактуры. Красиво выглядит фактурная прерывистая линия, оставляемая мягким толстым стеклографом. А самые необычные результаты дают подогреваемые восковые палочки для рисования. Устройство подогрева легко сделать из небольшого кусочка нихромовой проволоки и стеклянной трубки. (Батареи питания робота при этом быстро садятся.)

Как выглядит рисующий робот в работе, вы можете посмотреть на видеоролике в режиме он-лайн (необходим Macromedia Flash Player) или скачать видеофайл.



Танцующий робот более кропотлив в программировании, но результат хорошо подобранных под музыку последовательностей движений может быть очень впечатляющим. При этом движения робота могут быть настолько подобраны в такт, что может показаться, что он слышит музыку. Такой робот может вызвать не только удивление ваших гостей, но и "зажигать" на вечеринке (если, конечно, его не затопчут).


Поиск
Наш опрос
Оцените мой сайт
Всего ответов: 180
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
Календарь новостей
«  Сентябрь 2017  »
ПнВтСрЧтПтСбВс
    123
45678910
11121314151617
18192021222324
252627282930
Реклама
    WMmail.ru - сервис почтовых рассылок WMlink.ru - рекламный брокер SB-MONEY.RU - Электронная коммерция, Сервисы для вебмастеров, Раскрутка
    OZON.ru
    Обмен SMS
    ПОЛУЧИТЬ:  
    НА:
Мини-чат