МОУ «Шипицынская СОШ». ИНЖЕНЕРНАЯ КНИГА




МОУ «Шипицынская СОШ»

ИНЖЕНЕРНАЯ КНИГА

AVTONET14+

Выполнено командой

AVTO29 SHIP

Руководитель

Каликин Андрей Геннадьевич

Капитан

Галушин Константин

Механик

Лахтионов Константин

Программист

Кицан Даниил

Инженер-конструктор

Зубарева Лейла

Автомобили с автопилотом

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

 

 

Автономные автомобили становятся реальностью. Остается все меньше времени до того, как нас начнут массово окружать различные транспортные средства с автономными системами управления. По прогнозу к 2030 году больше половины автомобилей в мире будет оснащаться системой автопилота. Так что не ровен тот час, когда мы, садясь в машину, вместо того чтобы управлять машиной, зададим маршрут следования, откинемся на спинку комфортного кресла, для того чтобы во время движения заняться чтением любимой книги, газеты или журнала или провести время в дороге за просмотром фильма, отправимся в дорогу, доверившись компьютеру.

 

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

 

Вот список того, что может автопилот Е-класса:

 

- Автоматической набор скорости

 

- Автоматическое торможение для поддержания дистанции

 

- Автоматическое экстренное торможение для предотвращения столкновения

 

- Автоматическое поддержание крейсерской скорости (адаптивный круиз-контроль)

 

- Автоматический контроль движения в полосе

 

- Автоматическое перестроение в другую полосу

 

- Автоматический контроль светофоров и дорожных знаков

 

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

В ближайшем будущем такие компании как Apple и Google, которые стали успешными на рынке телефонов и электронных технологий, могут войти в новый для себя бизнес в качестве автопроизводителей. Многие из вас уже, наверное, слышали о разрабатываемом автономном автомобиле Google Car.

 

Компания Ауди ведет разработку автономного автомобиля под рабочим названием А9.

 

Также компания Мерседес вложила миллионы долларов для разработки инновационного автомобиля будущего, который будет иметь полностью автономный автопилот. Разработка ведется на базе футуристического концепт-кара, который был представлен на нескольких автосалонах в 2015 году. Концепция получила имя Mercedes-Benz F 015

.

 

 

Источник: https://www.1gai.ru/publ/516284-avtonomnyy-avtomobil-chto-eto-na-samom-dele-oznachaet.html @ 1gai.ru

Процесс подготовки

Вот список того, что должна уметь наша мобильная робототехническая система транспортировки:

- Автоматическое экстренное торможение для предотвращения столкновения

- Автоматический контроль движения в полосе

- Автоматический контроль светофоров и дорожных знаков

Для достижения поставленных целей мы используем датчик расстояния до стенки и инфракрасный дальномер (SHARP 2Y0A02 F 64).

 

Робот AVTO 29 SHIP

Габариты робота:

- Максимальный размер робота для участия в матчах - 45см в ширину, 45 см в длину и 60 см в высоту. Минимальный размер робота – 30 см в ширину, 30 см в длину и 30 см в высоту.

Наш робот 31 см в ширину, 31 см в длину и 34 см в высоту.

Материалы при создании робота:

При создании робота могу быть использованы любые материалы.

Наш робот состоит из данных материалов:

-дерево;

-металл.

Выбор материала:

1) Мы выбрали дерево, потому что оно легче некоторых металлов, экологично, легкодоступно, легкобрабатываемо.

2) Металл мы выбрали, так как он прочнее, чем дерево и может быть использован для скелета робота.

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

Разрешённые обработанные материалы в нашем роботе:

- кабели

- болты

Наш робот НЕ ИСПОЛЬЗУЕТ высокопрофильные и шипованные колёса, которые могут повредить покрытие игрового поля.

 

Блок схема

 

 

 
 

 


Датчик цвета TCS3200:

TCS3200 - детектор цвета (TAOS TCS3200 RGB чип и 4 белых светодиода)

 

Может обнаружить и измерить практически любой цвет (из видимого спектра). Поддерживает сортировку по цвету а также калибровку.

 

Характеристики

Напряжение: (от 2,7В до 5,5В)

Интерфейс: цифровой TTL

Преобразование интенсивности света в частоту

Программирование цветов и выходной частоты

Функция "Power Down"

Напрямую взаимодействует с микроконтроллером

Размер: 28.4x28.4mm

 

Датчик линии TCRT5000:

Описание:

Модуль датчика линии сочетает в себе два основных элемента: инфракрасный излучатель и инфракрасный приемник. Излучатель постоянно излучает инфракрасный свет, когда излучаемые инфракрасные лучи не отражаются, или отражаются обратно, но их интенсивность недостаточно большая - выходное напряжение остается низким. Когда обнаруженный объект (линия) присутствует в зоне обнаружения и инфракрасные лучи отражаются с достаточной интенсивностью, выходное напряжение становится высоким. Модуль выдает цифровой сигнал (0 или 1). На модуле присутствует светодиод - индикатор выходного напряжения.

Технические характеристики

· Напряжение питания: 3,3 - 5 В

  • Потребляемый ток: 10 мА
  • Цифровой вывод (0 или 1)

Физические размеры

  • Модуль (Д х Ш х В): 42 х 10 х 13 мм
  • Модуль (Keyestudio) (Д х Ш х В): 47 х 11 х 12 мм

Плюсы использовании:

  • Прост в подключении
  • Только Имеет светодиодный индикатор

Минусы использования

  • цифровой сигнал о присутствии линии

 

 

Инфракрасный дальномер:

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

 

Датчик препятствий:

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

На этом уроке мы рассмотрим один из самых распространенных датчиков препятствия, который работает по принципу отражения. Устроен он очень просто. Датчик содержит направленный источник света и детектор света. Источником часто служит инфракрасный светодиод с линзой, а детектором — фотодиод или фототранзистор.

Технологическая часть проекта:

 

1)Сделали основу для робота, используя фанеру; установили колёса.

 

Основой для робота послужила фанера размером 31Х31.

Так же на основе мы закрепили колёса с помощью металлического конструктора.

 

2)Установили направляющие из металлического конструктора.

Для установки датчиков мы установили направляющие из металлического конструктора.

 

 

 

3)Откалибровали положение робота с помощью изменения высоты среднего колеса.

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

 

 

4)Разместили все необходимые датчики.

Три датчика препятствия с правой стороны, датчик цвета спереди внизу, датчики линии справа внизу, инфракрасный дальномер спереди.

 

 

5) Закрепили датчики на металлический конструктор при помощи гаек и болтов и подключили с помощью гибких проводов к источникам питания.

 

 

6)Установили Arduino MEGA на основу робота.

Все датчики подключили к Arduino MEGA.

 

 

7)Подключили двигатели колёс к драйверу двигателей, а сам драйвер к Arduino MEGA.

 

 

8) Установили флагшток.

Для установки флага мы установили флагшток, используя деревянную рейку.

 

 

 

Датчик линии:

const int pin = 8; //пин подключения датчика void setup(){ Serial.begin(9600); //инициализация Serial – порта}void loop(){ Serial.println(digitalRead(pin)); //вывод данных в Serial - порт delay(500); //задежка в полсекунды}

Датчик цвета:

int s0=3,s1=4,s2=5,s3=6;int out=2;int flag=0;byte counter=0;byte countR=0,countG=0,countB=0;void setup(){Serial.begin(115200);pinMode(s0,OUTPUT);pinMode(s1,OUTPUT);pinMode(s2,OUTPUT);pinMode(s3,OUTPUT);}void TCS(){flag=0;digitalWrite(s1,HIGH);digitalWrite(s0,HIGH);digitalWrite(s2,LOW);digitalWrite(s3,LOW);attachInterrupt(0, ISR_INTO, LOW);timer0_init();}void ISR_INTO(){counter++;}void timer0_init(void){TCCR2A=0x00;TCCR2B=0x07; //the clock frequency source 1024 pointsTCNT2= 100; //10 ms overflow againTIMSK2 = 0x01; //allow interrupt}int i=0;ISR(TIMER2_OVF_vect)//the timer 2, 10ms interrupt overflow again. Internal overflow interrupt executive function{TCNT2=100;flag++;if(flag==1){countR=counter;Serial.print("red=");Serial.println(countR,DEC);digitalWrite(s2,HIGH);digitalWrite(s3,HIGH);}else if(flag==2){countG=counter;Serial.print("green=");Serial.println(countG,DEC);digitalWrite(s2,LOW);digitalWrite(s3,HIGH);}else if(flag==3){countB=counter;Serial.print("blue=");Serial.println(countB,DEC);Serial.println("n");digitalWrite(s2,LOW);digitalWrite(s3,LOW);}else if(flag==4){flag=0;}counter=0;}void loop(){TCS();while(1);}

Инфракрасный дальномер:

#define pin A0 //желтый провод дальномера подключаем к выводу А0 Arduinovoid setup () { Serial.begin (9600); // определяем скорость обмена данными с компьютером pinMode (pin, INPUT);}void loop () { float value = analogRead (pin); // считываем напряжение с дальномера float range = get_gp2d12 (value); Serial.println (value); Serial.print (range); // выдаем в порт расстояние Serial.println (" mm"); Serial.println (); delay (500);}float get_gp2d12 (float value) { // переводим значение напряжения в расстояние if (value < 10) value = 10; return ((67870.0 / (value - 3.0)) - 40.0);}

Датчик препятствия:

const int prx_pin = 2;const int led_pin = 13;byte v;void setup() { pinMode(prx_pin, INPUT); pinMode(led_pin, OUTPUT);}void loop() { v = digitalRead(prx_pin); if(v == HIGH) digitalWrite(led_pin, HIGH);else digitalWrite(led_pin, LOW);}

Общий вид программы для контроля датчиков:

int s0=3,s1=4,s2=5,s3=6;

int flag=0;

int counter=0;

int countR=0,countG=0,countB=0;

const int INA = 7;

const int INB = 8;

const int INC = 9;

const int IND = 10;

const int lain_R = 14;

const int lain_L = 15;

const int bok_1 = 16;

const int bok_2 = 17;

const int bok_3 = 18;

const int bok_4 = 19;

#define STATE_FORWARD 0

#define STATE_RIGHT 1

#define STATE_LEFT 2

#define pin A0

int state = STATE_FORWARD;

 

float get_gp2d12 (float value)

{

if (value < 10) value = 10;

return ((67870.0 / (value - 3.0)) - 40.0);

}

void TCS()

{

digitalWrite(s1,HIGH);

digitalWrite(s0,LOW);

flag=0;

attachInterrupt(0, ISR_INTO, CHANGE);

timer2_init();

}

void ISR_INTO()

{

counter++;

}

void timer2_init(void)

{

TCCR2A=0x00;

TCCR2B=0x07;

TCNT2= 100;

TIMSK2 = 0x01;

}

int i=0;

ISR(TIMER2_OVF_vect)

{

TCNT2=100;

flag++;

if(flag==1)

{

counter=0;

}

else if(flag==2)

{

digitalWrite(s2,LOW);

digitalWrite(s3,LOW);

countR=counter/1.051;

Serial.print("red=");

Serial.println(countR,DEC);

digitalWrite(s2,HIGH);

digitalWrite(s3,HIGH);

}

else if(flag==3)

{

countG=counter/1.0157;

Serial.print("green=");

Serial.println(countG,DEC);

digitalWrite(s2,LOW);

digitalWrite(s3,HIGH);

}

else if(flag==4)

{

countB=counter/1.114;

Serial.print("blue=");

Serial.println(countB,DEC);

digitalWrite(s2,LOW);

digitalWrite(s3,LOW);

}

else

{

flag=0;

TIMSK2 = 0x00;

}

counter=0;

delay(2);

}

void runForward()

{

state = STATE_FORWARD;

analogWrite(INA, 219);

digitalWrite(INB, 0);

analogWrite(INC, 255);

digitalWrite(IND, 0);

delay(5);

}

void steerRight()

{

state = STATE_RIGHT;

analogWrite(INA, 250);

digitalWrite(INB,0);

digitalWrite(INC, 0);

digitalWrite(IND, 0);

delay(30);

}

void steerLeft()

{

state = STATE_LEFT;

digitalWrite(INA, 0);

digitalWrite(INB, 0);

analogWrite(INC, 250);

digitalWrite(IND, 0);

delay(30);;

}

 

void setup()

{

Serial.begin(9600);

pinMode (pin, INPUT);

pinMode(s0,OUTPUT);

pinMode(s1,OUTPUT);

pinMode(s2,OUTPUT);

pinMode(s3,OUTPUT);

pinMode(INA, OUTPUT);

pinMode(INC, OUTPUT);

pinMode(INB, OUTPUT);

pinMode(IND, OUTPUT);

pinMode(lain_L, INPUT);

pinMode(lain_R, INPUT);

pinMode(bok_1, INPUT);

pinMode(bok_2, INPUT);

pinMode(bok_3, INPUT);

pinMode(bok_4, INPUT);

}

 

void loop()

{

delay(500);

float value = analogRead (pin);

float range = get_gp2d12 (value);

Serial.println (value);

Serial.print (range);

Serial.println (" mm");

Serial.println ();

TCS();

if((countR>10)||(countG>10)||(countB>10))

{

if((countR>countG)&&(countR>countB))

{

Serial.print("red");

Serial.print("\n");

delay(100);

}

else if((countG>=countR)&&(countG>countB))

{

Serial.print("green");

Serial.print("\n");

delay(100);

}

else if((countB>countG)&&(countB>countR))

{

Serial.print("blue");

Serial.print("\n");

delay(100);

}

}

else

{

delay(100);

}

boolean left =!digitalRead(lain_L);

boolean right =!digitalRead(lain_R);

int targetState;

if (left == right)

{

targetState = STATE_FORWARD;

}

else if (left)

{

targetState = STATE_LEFT;

}

else

{

targetState = STATE_RIGHT;

}

if (state == targetState)

{

return;

}

switch (targetState)

{

case STATE_FORWARD:

runForward();

break;

 

case STATE_RIGHT:

steerRight();

break;

 

case STATE_LEFT:

steerLeft();

break;

}

 

}



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-03-17 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: