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

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

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

<< Назад

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

Экраны влияют на детей неравномерно в разном возрасте 01.08.2026

Планшеты и смартфоны давно стали привычной частью повседневной жизни даже самых маленьких детей. Родители часто используют гаджеты, чтобы успокоить малыша или занять его на время, однако ученые все чаще задаются вопросом, как экранное время сказывается на развитии мозга и будущей способности к обучению. Новое исследование показывает, что значение имеет не только продолжительность просмотра, но и возраст, в котором ребенок проводит время перед экраном. Ученые наблюдали детей от рождения до 8 лет. Оказалось, что больше всего экраны влияют на мозг в два периода - в раннем младенческом возрасте и перед поступлением в школу. У детей, много времени проводивших перед экранами в эти возрастные точки, в 9 лет были несколько хуже успехи в обучении, а в 10,5 лет хуже работала рабочая память - способность удерживать и обрабатывать информацию здесь и сейчас. Исследователи из Франции и Сингапура проанализировали данные 502 детей и выделили два ключевых этапа. У младенцев мозг развивается очень ...>>

Умные жилеты, спасающие от жары 01.08.2026

Летняя жара в больших городах все чаще становится серьезным испытанием для людей, работающих на открытом воздухе. Мусорщики, строители и другие специалисты вынуждены проводить часы под палящим солнцем, рискуя перегревом. Китайские инженеры предложили практичное решение - специальные охлаждающие жилеты, которые помогают снизить ощущаемую температуру примерно на 10 градусов. Пока мир страдает от сильной жары, китайские инженеры разработали "умные" жилеты с климат-контролем. Жилеты с кондиционированием почти не отличаются от обычной рабочей одежды. Главное отличие - в системе охлаждения. В городе Нанкин в жилет вмонтированы два вентилятора, работающих от портативных аккумуляторов. Одного заряда хватает на 3-4 часа непрерывной работы. В Чанчжоу решили разместить в карманах охлаждающие элементы с материалом, который при нагревании переходит из твердого состояния в жидкое, активно поглощая тепло. Это поддерживает комфортную температуру в течение 2,5-4 часов. Такие жилеты выглядят почти ...>>

Летающие ветротурбины 3 МВт вышли в серию 31.07.2026

Традиционные ветряные электростанции зависят от силы и стабильности ветра у поверхности земли, где воздушные потоки часто бывают слабыми и порывистыми. На больших высотах ветер обычно сильнее и постояннее, поэтому инженеры уже давно рассматривают возможность подъема турбин в воздух. Китайская компания сделала важный шаг в этом направлении, перейдя от испытаний к мелкосерийному производству. Компания Beijing Linyi Yunchuan Energy Technology запустила мелкосерийное производство летающей ветротурбины S2000, а в провинции Чжэцзян возводят отдельный завод по производству материалов для оболочки аппарата. У компании уже есть предварительные договоренности с прибрежными городами и горными регионами, которые рассматривают возможность использования этой технологии для удовлетворения собственных энергетических потребностей. Прототип, который полгода назад только что поднялся в небо над Сычуанем, теперь превращается в целую отрасль. Идея S2000 проста: вместо того чтобы устанавливать ветряну ...>>

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

Агровольтаика с овцами на солнечных фермах 24.08.2025

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

Яркий пример такого подхода демонстрирует солнечная электростанция Glenrowan West в Австралии. Ее мощность составляет 149 мегаватт, и она не только снабжает регион возобновляемой энергией, но и продолжает поддерживать местное животноводство. Здесь под панелями пасутся овцы, которые выполняют роль своеобразных "живых газонокосилок", поддерживая травяной покров и предотвращая зарастание территории. Для фермеров это стало важным сигналом: установка солнечных батарей больше не означает потерю земель для сельскохозяйственных нужд.

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

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

Финансированием одного из подобных проектов в Новом Южном Уэльсе занимается компания EnergyCo. Это свидетельствует о том, что крупные игроки энергетического рынка видят в агровольтаике не временный эксперимент, а долгосрочное направление, способное изменить баланс между сельским хозяйством и возобновляемой энергетикой.

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

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

▪ Смертельная опасность обычной пыли

▪ Энергетические окна

▪ Модули памяти Micron LPCAMM2

▪ Сила мышц влияет на здоровье мозга

▪ Курящая мама вредит будущему ребенку

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

 

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

▪ раздел сайта Заводские технологии на дому. Подборка статей

▪ статья Джон Китс. Знаменитые афоризмы

▪ статья Кто был первым человеком, ступившим на поверхность Луны? Подробный ответ

▪ статья Охрана труда инвалидов. Справочник

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

▪ статья Вертящееся яйцо. Секрет фокуса

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

Имя:


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


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





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

www.diagram.com.ua

www.diagram.com.ua
2000-2026