1

Перейти к содержимому


       Торент трекер от http://stalker-worlds.ru        Хранилище сайта http://stalker-worlds.ru        Онлайн Сталкер Канал Унесенные Сталкером Присоединяйся к нашему сообществу на facebook Вступай в нашу группу в контакте


Добро пожаловать к нам на сайт! Про Ваш статус и права можно прочитать в Этой теме

Для просмотра картинок и скачивания файлов с форума - пройдите регистрацию!   Проблемы с регистрацией - вам сюда


Фотография

Робот с ультразвуковым датчиком


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 6

#1
RUS_D

RUS_D

    Главный АДМИН

  • В сети
  • Тех. Админ
  • админ Администратор
  • Старожил сайта
<- Информация ->
  • PipPipPipPip
  • Регистрация:
    08-December 08
  • 3012 Cообщений
  • Пропуск №: 2


Репутация: 6807 Постов: 3012
  • Skype:rus_did
  • Страна проживания:Украина
  • Реальное имя:Руслан
  • Пол:Мужчина
  • Город:Полтавская обл.
Попытаемся построить самого простого робота с ультразвуковым датчиком растояния.

Начнем с концепции: мы хотим робота, который может самостоятельно передвигаться по комнате, при этом объезжать все препятствия, встречаемые на своем пути.
Задачу поставили. Теперь бегом по магазинам!
Есть такие варианты: сделать самому всё, купить детальки (например Tamiya ) и собрать из них, либо же купить готовое.

Выбираем второй вариант :)

Нужные материалы:
1. Ультразвуковой дальномер HC-SR04

2. Плата с микроконтролером arduino Nano или подобные

3. Motor Shield драйвер электродвигателей

4. Мотор-редуктор с колесом - 2шт.

5. Платформа робота (любая или самодельная)


Схема подключения


Програма для контролера
Код
#include <CyberLib.h>      

#define motors_init {D4_Out; D5_Out; D6_Out; D7_Out;}      
#define robot_go {D4_Low; D5_High; D6_High; D7_Low;}      
#define robot_stop {D4_Low; D5_Low; D6_Low; D7_Low;}      
#define robot_rotation_left {D4_Low; D5_High; D6_Low; D7_High;}      
#define robot_rotation_right {D4_High; D5_Low; D6_High; D7_Low;}      

#define size_buff 5 //размер массива sensor      
uint16_t sensor[size_buff]; //массив для хранения замеров дальномера      
uint8_t stat=0; //направление разворота      

void setup()        
{      
       motors_init;  //инициализация выходов моторов      
       D11_Out;     //динамик      
       D14_Out; D14_Low; //пин trig ультразвукового сонара      
       D15_In;     //пин echo  ультразвукового сонара      
       randomSeed(A6_Read); //Получить случайное значение      
       for(uint8_t i=0; i<12; i++) beep(50, random(100, 1000)); //звуковое оповещение готовности робота      
       wdt_enable (WDTO_500MS);    //Сторожевая собака 0,5сек.      
}      

void loop()      
{Start        
       uint16_t dist=GetDistance(); //производим замер дистанции      

         if( dist < 10) {rotation(stat, 255);} else   //если 10см максимальный угол разворота      
         if( dist < 20) {rotation(stat, 200);} else   //если 20см  средний угол разворота      
         if( dist < 40) {rotation(stat, 130);} else   //если 40см  минимальный угол разворота      
                        {robot_go; stat=~stat;}       //поехали!!!            
          wdt_reset(); //сторожевой таймер      
End;}      
//***************************************************      
void rotation(uint8_t arr, uint8_t dur)       
{      
         switch (arr) //смотрим в каком направление разворачиваться      
         {      
         case 0:    robot_rotation_right;      
           break;      
         case 255:    robot_rotation_left;       
           break;          
         }       
         delay_ms(dur);    //угол разворота      
         robot_stop;      //стоп мотор!      
}      
//***************************************************      
uint16_t GetDistance()       
{      
      uint16_t dist;      
      for (uint8_t i = 0; i < size_buff; ++i) //производим несколько замеров      
       {       
         D14_High; delay_us(10);  D14_Low;  //запустить измерение      
        dist = pulseIn(15, HIGH, 2400); //считываем длительность времени прохождения эха, ограничить время ожидания      
        if(dist==0) dist=2400;        
        sensor[i]=dist;  //сохранить в массиве      
        delay_ms(40); //задержка между посылками      
        wdt_reset(); //сторожевой таймер
       }      
       dist=(find_similar(sensor, size_buff, 58))/58; // //фильтруем показания датчика и переводим в см      
       return dist;      
}       
//***************************************************        
void beep(uint8_t dur, uint16_t frq)      
{      
       dur=(1000/frq)*dur;  //рассчет длительности бипа      
       for(byte i=0; i<dur; i++)      
       {      
         D11_High;       
         delay_us(frq);       
         D11_Low;      
         delay_us(frq);      
       }       
}




Итог наших трудов. Робот завершен, все работает :)



Видео заезда робота

"Бить не нужно, а не вникнут - разъяснять" © В.С. Высоцкий
я в скайпе - rus_did
Мои детство и юность прошли без Интернета. Может быть, поэтому я понимаю, что за языком надо следить, а за слова отвечать.


#2
RUS_D

RUS_D

    Главный АДМИН

  • В сети
  • Тех. Админ
  • админ Администратор
  • Старожил сайта
<- Информация ->
  • PipPipPipPip
  • Регистрация:
    08-December 08
  • 3012 Cообщений
  • Пропуск №: 2


Репутация: 6807 Постов: 3012
  • Skype:rus_did
  • Страна проживания:Украина
  • Реальное имя:Руслан
  • Пол:Мужчина
  • Город:Полтавская обл.
Принцип работы ультразвукового дальномера HC-SR04.
Девайс представляет из себя модуль с двумя пъезоизлучателями, один из которых служит излучателем, а второй - приемником ультразвуковой волны; плюс управляющая электроника для управления излучателем и приемником. Для подключения модуль имеет 4-х контактный разъем: два из которых питание (требуется 5 вольт), и еще два для общения с микроконтроллером.

Интерфейс связи тут организован очень просто: на вход подаем короткий умпульс длительностью 10-15 микросекунд и ждем импульса на выходе. Как только до приемника дойдет отраженная волна, модуль сам рассчитает расстояние и выдаст на ногу Echo импульс высокого уровня длинной до 25 мс. Длина выходного импульса будет пропорциональна расстоянию до препятствия от которого отразилась ультразвуковая волна. Нам остается только поймать этот импульс, посчитать его длину и перевести это значение в расстояние.




Технические характеристики: Напряжение питания: 5V Ток покоя: < 2 мА Эффективный угол обзора: < 15 ° Диапазон расстояний: 2 см - 500 см Разрешение: 0,3 см

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

S=F/58 ; где S - дистанция в сантиметрах, F - длина импульса в микросекундах

Как видно, даже знать скорость звука не обязательно.

"Бить не нужно, а не вникнут - разъяснять" © В.С. Высоцкий
я в скайпе - rus_did
Мои детство и юность прошли без Интернета. Может быть, поэтому я понимаю, что за языком надо следить, а за слова отвечать.


#3
weles17

weles17

    Призрак

  • Не в сети
  • Проверенные
  • Опытные
  • Спонсор сайта Старожил сайта
<- Информация ->
  • Регистрация:
    15-November 11
  • 427 Cообщений
  • Пропуск №: 5511


Репутация: 1213 Постов: 427
  • Страна проживания:Россия
  • Реальное имя:Юрий
  • Пол:Мужчина
  • Город:Алтай, Россия
Цитата (RUS_D)
все работает

И на сколько минут езды одной зарядки батарей хватает ?
С Зоной ведь так: с хабаром вернулся — чудо, живой вернулся — удача, патрульная пуля мимо — везенье, а все остальное — судьба…

#4
RUS_D

RUS_D

    Главный АДМИН

  • В сети
  • Тех. Админ
  • админ Администратор
  • Старожил сайта
<- Информация ->
  • PipPipPipPip
  • Регистрация:
    08-December 08
  • 3012 Cообщений
  • Пропуск №: 2


Репутация: 6807 Постов: 3012
  • Skype:rus_did
  • Страна проживания:Украина
  • Реальное имя:Руслан
  • Пол:Мужчина
  • Город:Полтавская обл.
Несколько часов, потом на зарядку.
Или ставить более емкие акумы.

"Бить не нужно, а не вникнут - разъяснять" © В.С. Высоцкий
я в скайпе - rus_did
Мои детство и юность прошли без Интернета. Может быть, поэтому я понимаю, что за языком надо следить, а за слова отвечать.


#5
RUS_D

RUS_D

    Главный АДМИН

  • В сети
  • Тех. Админ
  • админ Администратор
  • Старожил сайта
<- Информация ->
  • PipPipPipPip
  • Регистрация:
    08-December 08
  • 3012 Cообщений
  • Пропуск №: 2


Репутация: 6807 Постов: 3012
  • Skype:rus_did
  • Страна проживания:Украина
  • Реальное имя:Руслан
  • Пол:Мужчина
  • Город:Полтавская обл.

Видео этой тварюшки :)


"Бить не нужно, а не вникнут - разъяснять" © В.С. Высоцкий
я в скайпе - rus_did
Мои детство и юность прошли без Интернета. Может быть, поэтому я понимаю, что за языком надо следить, а за слова отвечать.


#6
yeov

yeov

    Пришедший

  • Не в сети
  • Пользователь

<- Информация ->
  • Регистрация:
    01-July 15
  • 1 Cообщений
  • Пропуск №: 19349


Репутация: 0
  • Страна проживания:Россия
  • Реальное имя:Олег
  • Пол:Мужчина
  • Город:Иркутск

Добрый день, уважаемые конструкторы!

Не знаю правильно ли я обращаюсь, но у меня  (у нас) возникла идея построить для нужд РЖД телегу на автопилоте... :)

Предполагается что масса телеги в снаряженном состоянии до 250 кг (что бы один максимум 2 человека смогли её установить-снять с рельсов) сама телега должна быть беспилотной, на неё устанавливается комплекс приборов (геосканер, 3D сканер, тепловизоры ну и кое что по желанию Заказчика) и она запускается в рейс, скорость движения данной телеги прогнозируется 30-50 км/ч

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

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

За реальную помощь можно обсуждать и разумное вознаграждение!!!

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

Теперь разъясню что и как я понимаю:

В наличии имеется квадроцикл с объёмом двигателя 150 куб.см и коробкой автоматом

У него будут сняты родные колёса, увеличена колёсная база и установлены железнодорожные колёса

Будет сварена платформа на которую всё и будет монтироваться

Далее в качестве исполнительного механизма переключения будут использоваться компоненты взятые отсюда: http://www.festo.com...products_011100

для включения предполагаю что то из: http://www.razumdom....thernet/row647/

осталось придумать что использовать вместо мозгов и глазов...

Моск должен уметь распознавать сигнал от "глаз" и самостоятельно принять решение об остановке, а в случае если препятствие приближается то и удрать от него. Чего ещё от него требуется - включать скорость вперёд-назад (через нейтральное положение) и тянуть тросик акселератора.

Как запасной вариант управления желательно установка дистанционного управления по радиоканалу.

Есть желающие посотрудничать?


Сообщение отредактировал yeov: 02 July 2015 - 08:20


#7
Юрий_88

Юрий_88

    Сталкер

  • Не в сети
  • модератор Модераторы
  • Спонсоры сайта
  • Спонсор сайта
<- Информация ->
  • PipPipPipPip
  • Регистрация:
    30-June 13
  • 729 Cообщений
  • Пропуск №: 8852


Репутация: 985 Постов: 729
  • Страна проживания:Россия
  • Реальное имя:Юрий
  • Пол:Мужчина
  • Город:город

модуль с двумя пъезоизлучателями, один из которых служит излучателем, а второй - приемником

А можно вопрос: Какой минимальный диаметр препятствия "виден" датчику? И расстояние. Как датчик реагирует на препятствия углового профиля (направленные вершиной угла к излучателю - ножка стула)? Туман, снегопад, дождь дают ложное срабатывание? Наверное, не проверялось... Спасибо.


Сообщение отредактировал Юрий_88: 03 July 2015 - 12:49

Я всегда хотел отвечать людям добром. Но жизнь научила отвечать взаимностью.




Количество пользователей, читающих эту тему: 0

0 members, 0 guests, 0 anonymous users

яндекс.метрика
Button automatically alert search engines 31x31 WHOIS.UANIC.NAME - Identify traffic by Google

реклама на сайте подключена