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

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

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

<< Назад

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

Психологическое состояние и старение 26.04.2026

Наука все чаще рассматривает старение не только как биологический процесс, но и как явление, тесно связанное с психологическим состоянием человека. Эмоциональное благополучие, уровень стресса и ощущение социальной включенности могут напрямую влиять на то, как быстро изнашивается организм на клеточном уровне. Китайские исследователи провели масштабный анализ данных людей старше 45 лет и обнаружили важную закономерность: такие факторы, как одиночество и субъективное ощущение несчастья, связаны с ускорением биологического старения примерно на 1,65 года. Иными словами, внутреннее эмоциональное состояние может "добавлять" организму лишний возраст даже при одинаковом паспортном возрасте. Чтобы получить более точную оценку биологического старения, ученые использовали комплексный подход. В их анализ вошли 16 биомаркеров крови, семь биометрических параметров, а также данные, связанные с биологическим полом участников. Такой набор позволил сформировать более многослойную картину состояния ...>>

BMW i7 2027 26.04.2026

Компания BMW представила обновленный флагманский седан BMW i7 модельного года 2027, который стал заметным шагом в эволюции линейки. Внешность автомобиля сохранила узнаваемые черты бренда, однако была переосмыслена в стилистике Neue Klasse. Фирменная решетка радиатора стала шире и ниже, получив светодиодную подсветку, а передняя оптика разделилась на два уровня: основные фары смещены вниз, а тонкие дневные ходовые огни расположены выше. Задняя часть получила удлиненные фонари и обновленный матовый логотип, подчеркивающий современный характер модели. Интерьер BMW i7 2027 года во многом строится вокруг новой системы Panoramic iDrive. Она выводит информацию на всю нижнюю часть лобового стекла, создавая расширенное поле визуализации данных для водителя. Центральную роль по-прежнему играет 17,9-дюймовый дисплей, а передний пассажир впервые получает собственный экран диагональю 14,6 дюйма, который автоматически затемняется при отвлечении водителя. Задняя часть салона остается ориенти ...>>

Новизна корма влияет на кошачий аппетит 25.04.2026

Пищевое поведение животных часто кажется простым, но на деле оно зависит от множества тонких сенсорных и когнитивных механизмов. Особенно это заметно у кошек, чьи предпочтения в еде могут меняться не только из-за насыщения, но и из-за восприятия вкуса и запаха. Новое исследование японских ученых позволило точнее понять, почему питомцы нередко оставляют корм в миске. В лабораторных условиях исследователи из Японии наблюдали за двенадцатью кошками, чтобы изучить, как меняется их аппетит при повторяющемся питании. Животным поочередно предлагали шесть видов промышленного сухого корма, обозначенных от A до F, что позволило сравнить их предпочтения и оценить стабильность потребления. В ходе экспериментов выяснилось, что корм F оказался наиболее привлекательным для кошек и заметно опережал остальные варианты по уровню потребления. Однако даже он не сохранял свою "привлекательность" при многократном повторении: когда один и тот же корм предлагали шесть раз подряд в течение двух часов, жи ...>>

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

Прорыв в регенерации конечностей 09.03.2019

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

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

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

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

Успешное завершение этих опытов заставило задуматься о том, что играет в этом процессе первоочередную роль - электрические сигналы или гены. Вполне возможно, что первые могут не дирижировать регенерацией, а просто отражать изменения в активности тех участков ДНК, которые отвечают за восстановления потерянного хвоста или головы.

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

Как оказалось, различия в напряжении на мембранах клеток в разных частях раны появились задолго до того, как поменялся уровень активности генов Wnt, notum и прочих участков ДНК, непосредственно отвечающих за формирование новых органов и конечностей. Это говорит о том, что именно электрические сигналы "дирижировали" генами, а не наоборот.

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

▪ V2V-технологии для безопасности на дорогах

▪ Солнечные батареи из лунного грунта

▪ Одночиповые решения Texas Instruments для мобильных телефонов

▪ DDL-лазер Panasonic

▪ Сканер-брелок адресов интернет-сайтов

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

 

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

▪ раздел сайта Радиоуправление. Подборка статей

▪ статья Луций Апулей. Знаменитые афоризмы

▪ статья Что такое материя? Подробный ответ

▪ статья Финансовое обеспечение охраны труда

▪ статья Влияние близлежащих предметов на работу штыря и грозозащита. Энциклопедия радиоэлектроники и электротехники

▪ статья Волшебный огурец. Секрет фокуса

[an error occurred while processing this directive] Оставьте свой комментарий к этой статье:

Имя:


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


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





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

www.diagram.com.ua

www.diagram.com.ua
2000-2026