Menu Home

Бесплатная техническая библиотека для любителей и профессионалов Бесплатная техническая библиотека


Простой робот. Энциклопедия радиоэлектроники и электротехники

Бесплатная техническая библиотека

Энциклопедия радиоэлектроники и электротехники / Аппаратура радиоуправления

Комментарии к статье Комментарии к статье

В этой статье представлена схема простого "робота". Он ездит на свет, а если нет источника света, тогда включается режим "Свободный поиск" т.е. робот будет ездить, а при столкновении отъезжать и разворачиваться.

Простой робот. Принципиальная схема робота
(нажмите для увеличения)

Сердцем робота является микроконтроллер фирмы ATMEL: AT90S2313, но можно и любой другой этой фирмы, у этого микроконтроллера 2кб памяти для программы, 15 портов ввода/вывода, доступное питание - 4-6В. Двигателями будет управлять "драйвер двигателя" - микросхема L293D (отечественный аналог - КР1128КТ4А). В качестве датчика было решено взять фоторезисторы СФ3-1.

Робот состоит из двух моторов. Вот как они будут работать при определенных действиях:

Команда Ходовой двигатель Двигатель поворота
вперед (F) вперед стоп
вперед-вправо (FR) вперед вперед
вперед-влево (FL) вперед назад
назад (B) назад стоп
назад-вправо (BR) назад вперед
назад-влево (BL) назад назад
назад-влево (BL) стоп стоп

Используемые радиоэлементы в схеме:

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

Микросхема L293D (отечественный аналог - КР1128КТ4А)

2 фоторезистор СФ3-1

Кварц на 4МГц

Конденсаторы 22-24 пФ

Стабилизатор 7805 (или КРЕН5А)

Резистор 100 Ом (Опционально)

Два мотора

Питание Vbat - 4батарейки пальчиковые, или 1 крона (9В)

Питание Vm - 1крона (9В)

После сборки схемы, необходимо загрузить программу в микроконтроллер и робот готов:

/****************************************************

Chip type : AT90S2313

Clock frequency : 4,000000 MHz

Memory model : Tiny

External SRAM size : 0

Data Stack size : 32

****************************************************/

#include <90s2313.h>

#include <stdlib.h>

#include <delay.h>

// назначение определений для удобства работы с периферией

#define OUT PORTB

#define MOTOR_F 7

#define MOTOR_B 6

#define TURN_R 5

#define TURN_L 4

#define IN PIND

#define LIGHT_R 0

#define LIGHT_L 1

#define BUMPER_F 2

#define BUMPER_B 3

// Возможные режимы движения

enum {STOP, F, FR, FL, B, BR, BL};

//------------------------------------------------------------------------------

// Задержка t х 10ms

//------------------------------------------------------------------------------

void Delay_10ms(unsigned char t)

{char i;

for(i=0;i<t;i++) delay_ms(10);}

// таблица вероятностей для выбора направления движения

// исходя из текущего направления движения

unsigned char p[7][7] =

{14, 43, 57, 71, 86, 93, 100,

7, 43, 71, 100, 100, 100, 100,

7, 50, 93, 100, 100, 100, 100,

7, 50, 57, 100, 100, 100, 100,

29, 29, 29, 29, 57, 79, 100,

36, 36, 36, 36, 71, 93, 100,

36, 36, 36, 36, 71, 79, 100};

// текущее направление движения

unsigned char this_move;

//------------------------------------------------------------------------------

// Включение комбинации моторов для движения в заданном направлении

//------------------------------------------------------------------------------

void go(unsigned char direction){

switch (direction) {

case STOP:

OUT.MOTOR_F=0;

OUT.MOTOR_B=0;

OUT.TURN_R=0;

OUT.TURN_L=0;

break;

case F:

OUT.MOTOR_F=1;

OUT.MOTOR_B=0;

OUT.TURN_R=0;

OUT.TURN_L=0;

break;

case FR:

OUT.MOTOR_F=1;

OUT.MOTOR_B=0;

OUT.TURN_R=1;

OUT.TURN_L=0;

break;

case FL:

OUT.MOTOR_F=1;

OUT.MOTOR_B=0;

OUT.TURN_R=0;

OUT.TURN_L=1;

break;

case B:

OUT.MOTOR_F=0;

OUT.MOTOR_B=1;

OUT.TURN_R=0;

OUT.TURN_L=0;

break;

case BR:

OUT.MOTOR_F=0;

OUT.MOTOR_B=1;

OUT.TURN_R=1;

OUT.TURN_L=0;

break;

case BL:

OUT.MOTOR_F=0;

OUT.MOTOR_B=1;

OUT.TURN_R=0;

OUT.TURN_L=1;

break;

}

}

//------------------------------------------------------------------------------

// Выбор направления движения в следующем шаге по таблице вероятностей

//------------------------------------------------------------------------------

unsigned char next_move(void){

unsigned char pp, i;

pp = rand()/327; // получаем случайное число 0..99

for (i=0;i<7;i++){ // ищем соответствие в таблице вероятностей

if (p[this_move][i] > pp) break;

}

this_move = i; // записываем новое полученное направление как текущее

return(i);

}

//------------------------------------------------------------------------------

// Обработка прерывания от переднего бампера (INT0 = PD2)

//------------------------------------------------------------------------------

interrupt [EXT_INT0] void ext_int0_isr(void)

{

if(this_move==FR) go(BL);

if(this_move==FL) go(BR);

else go(B);

Delay_10ms(250); // отъезд в течение 2.5 х 2 сек

Delay_10ms(250);

this_move=B;

}

//------------------------------------------------------------------------------

// Обработка прерывания от заднего бампера (INT1 = PD3)

//------------------------------------------------------------------------------

interrupt [EXT_INT1] void ext_int1_isr(void)

{

if(this_move==BR) go(FL);

if(this_move==BL) go(FR);

else go(F);

Delay_10ms(250); // отъезд в течение 2.5 х 2 сек

Delay_10ms(250);

this_move=F;

}

//------------------------------------------------------------------------------

// "Случайное блуждание"

//------------------------------------------------------------------------------

unsigned char walk(void){

// этот цикл организует "свободное блуждание" пока

// нет сигнала ни от одного из датчиков освещенности

while((IN.LIGHT_R) && (IN.LIGHT_L)){

go(next_move()); // получаем следующее направление движения и

Delay_10ms(250); // движемся в этом направлении 2.5 сек

}

// этот цикл организует движение на свет, пока

// есть сигнал хотя бы от одного из датчиков освещенности

while((IN.LIGHT_R==0) || (IN.LIGHT_L==0)){

if((IN.LIGHT_R==0) && (IN.LIGHT_L==0)) go(F);

else if(IN.LIGHT_R==0) go(FR);

else if(IN.LIGHT_L==0) go(FL);

}

return(0);

}

//------------------------------------------------------------------------------

// Главная программа

//------------------------------------------------------------------------------

void main(void)

{

DDRB = 0xff; // назначаем все линии порта B на выход

PORTB = 0x00; // и устанавливаем на них низкий уровень

DDRD = 0x00; // назначаем все линии порта D на вход

PORTD = 0xff; // подключаем внутренние нагрузочные резисторы

// External Interrupt(s) initialization

// INT0: On

// INT0 Mode: Falling Edge

// INT1: On

// INT1 Mode: Falling Edge

GIMSK=0xC0;

MCUCR=0x0A;

GIFR=0xC0;

// разрешаем прерывания

#asm("sei")

// запускаем главный цикл

while(1) walk();

}

Скачать программу, файл прошивки и схему робота в формате sPlan

Публикация: cxem.net

Смотрите другие статьи раздела Аппаратура радиоуправления.

Читайте и пишите полезные комментарии к этой статье.

<< Назад

Последние новости науки и техники, новинки электроники:

Лабораторная модель прогнозирования землетрясений 30.11.2025

Предсказание землетрясений остается одной из самых сложных задач геофизики. Несмотря на развитие сейсмологии, ученые все еще не могут точно определить момент начала разрушительного движения разломов. Недавние эксперименты американских исследователей открывают новые горизонты: впервые удалось наблюдать микроскопические изменения в контактной зоне разломов, которые предшествуют землетрясению. Группа под руководством Сильвена Барбота обнаружила, что "реальная площадь контакта" - участки, где поверхности разлома действительно соприкасаются - изменяется за миллисекунды до высвобождения накопленной энергии. "Мы открыли окно в сердце механики землетрясений", - отмечает Барбот. Эти изменения позволяют фиксировать этапы зарождения сейсмического события еще до появления традиционных сейсмических волн. Для наблюдений ученые использовали прозрачные акриловые материалы, через которые можно было отслеживать световые изменения в зоне контакта. В ходе искусственного моделирования примерно 30% ко ...>>

Музыка как естественный анальгетик 30.11.2025

Ученые все активнее исследуют немедикаментозные способы облегчения боли. Одним из перспективных направлений становится использование музыки, которая способна воздействовать на эмоциональное состояние и когнитивное восприятие боли. Новое исследование международной группы специалистов демонстрирует, что даже кратковременное прослушивание любимых композиций может значительно снижать болевые ощущения у пациентов с острой болью в спине. В эксперименте участвовали пациенты, обратившиеся за помощью в отделение неотложной помощи с выраженной болью в спине. Им предлагалось на протяжении десяти минут слушать свои любимые музыкальные треки. Уже после этой короткой сессии врачи фиксировали заметное уменьшение интенсивности боли как в состоянии покоя, так и при движениях. Авторы исследования подчеркивают, что музыка не устраняет саму причину боли. Тем не менее, она воздействует на эмоциональный фон пациента, снижает уровень тревожности и отвлекает внимание, что в сумме приводит к субъективном ...>>

Алкоголь может привести к слобоумию 29.11.2025

Проблема влияния алкоголя на стареющий мозг давно вызывает интерес как у врачей, так и у исследователей когнитивного старения. В последние годы стало очевидно, что границы "безопасного" употребления спиртного размываются, и новое крупное исследование, проведенное международной группой ученых, вновь указывает на это. Работы Оксфордского университета, выполненные совместно с исследователями из Йельского и Кембриджского университетов, показывают: даже небольшие дозы алкоголя способны ускорять когнитивный спад. Команда проанализировала данные более чем 500 тысяч участников из британского биобанка и американской Программы миллионов ветеранов. Дополнительно был выполнен метаанализ сорока пяти исследований, в общей сложности включавших сведения о 2,4 миллиона человек. Такой масштаб позволил оценить не только прямую связь между употреблением спиртного и развитием деменции, но и влияние генетической предрасположенности. Один из наиболее тревожных результатов касается людей с повышенным ге ...>>

Случайная новость из Архива

Искусственные реснички управляются магнитом и светом 07.06.2020

Исследователи из Университета штата Северная Каролина и Университета Элон (США) создали искусственные реснички, или структуры, похожие на волоски, которые могут принимать новую форму в ответ на магнитное поле, а затем возвращаться к своей первоначальной форме - под воздействием соответствующего источника света. Разработка найдет применение в мягкой робототехнике, сообщает пресс-служба Университета штата Северная Каролина.

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

Реснички приводятся в действие магнитом, но при этом они не тянутся к магниту, а вращаются и выравниваются с магнитным полем от постоянного магнита. В предыдущей работе исследователей магнит также приводит в действие мягких роботов, однако он тянет робота за собой - и тем самым приводит робота в действие. Новый подход предлагает еще один инструмент для разработки мягких роботов.

Ученые также разработали теоретическую модель, которая позволяет пользователям предсказать, как магнитные реснички с памятью формы будут реагировать на то, что их приводят в действие. Кроме того, модель объясняет, почему в конкретном случае реснички реагируют именно так, а не иначе.

Другие интересные новости:

▪ Шестиканальные головные телефоны 5.1

▪ Электролюминесценция

▪ Электронные сигареты вредят легочному иммунитету

▪ Панорамная камера GoPro Max 360

▪ Сердца поющих хористов синхронизируются

Лента новостей науки и техники, новинок электроники

 

Интересные материалы Бесплатной технической библиотеки:

▪ раздел сайта Гражданская радиосвязь. Подборка статей

▪ статья Пегас. Крылатое выражение

▪ статья Почему киты считаются млекопитающими? Подробный ответ

▪ статья Ремонт и техническое обслуживание тракторов и сельскохозяйственных машин. Типовая инструкция по охране труда

▪ статья Микросхемы управления балластами. Энциклопедия радиоэлектроники и электротехники

▪ статья Угадывание стопки с картами. Секрет фокуса

Оставьте свой комментарий к этой статье:

Имя:


E-mail (не обязательно):


Комментарий:





Главная страница | Библиотека | Статьи | Карта сайта | Отзывы о сайте

www.diagram.com.ua

www.diagram.com.ua
2000-2025