Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам > Робототехника

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 23.05.2013, 22:32   #1
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Синхронизация вращения колес у робота

Выбрал время допилить алгоритм синхронизации вращения колес Arduino робота
Описание по сборке робота.

Долго изобретал разные алгоритмы, а оказалось что можно синхронизировать колеса всего несколькими строчками кода
Достаточно энкодеры каждого колеса повесить на внешние прерывания контроллера Ардуино
В одном обработчике прерывания делать инкремент, а в другом декремент, а разница между ними и будет расхождением

Вот так просто выглядит код синхронизации колес
PHP код:
void  MotorL()  // обработка внешнего прерывания левое колесо

  
course--; 
  if(
course 0) { robot_left; }else{ robot_right;}
}  

void  MotorR()  // обработка внешнего прерывания правое колесо
{
   
course++; 
   if(
course 0){ robot_right; }else{ robot_left;}

На видео видно что робот едет идеально ровно
Admin вне форума   Ответить с цитированием
Старый 23.05.2013, 22:38   #2
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию

Схема подключения к Arduino NanoV.7
Можно приобрести материнскую плату робоконтроллера
Драйвер моторов H-мост
Платформа робота
к которой можно подключить все модули и без проводов

Нажмите на изображение для увеличения
Название: Cyberbot.png
Просмотров: 7397
Размер:	12.7 Кб
ID:	1017

Полностью весь код для Arduino
PHP код:
#include <CyberLib.h>

#define encoders_init D2_In; D3_In; D2_High; D3_High
#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_left  D4_Low; D5_High; D6_Low; D7_Low
#define robot_right D4_Low; D5_Low; D6_High; D7_Low
#define robot_rotation_left D4_Low; D5_High; D6_Low; D7_High

#define size_buff 5 //размер массива sensor
uint16_t sensor[size_buff]; //массив для хранения замеров дальномера
volatile int8_t course=0;

void setup()  
{
  
motors_init;  //инициализация выходов моторов
  
encoders_init;  //инициализация входов Энкодеров
  
D14_OutD14_Low//пин trig ультразвукового сонара
  
D15_In//пин echo  ультразвукового сонара
  
for(uint8_t i=0i<12i++) beep(70random(1002000)); //звуковое оповещение готовности робота
  
IntOn();  //включить прерывания
  
robot_go;  //поехали!!!
}

void loop()
{
Start   
      uint16_t dist
=GetDistance(); //делаем замер 
      
if( dist 40)  Rotation(); //если дистанция меньше 38см
      
if( dist 39 && course==0)  robot_go;
End;}

//***************************************************
void  MotorL()  // обработка внешнего прерывания левое колесо

  
course--; 
  if(
course 0) { robot_left; }else{ robot_right;}
}  

void  MotorR()  // обработка внешнего прерывания правое колесо
{
   
course++; 
   if(
course 0){ robot_right; }else{ robot_left;}

//*************************************************** 
uint16_t GetDistance() 
{
 
uint16_t dist;
 for (
uint8_t i 0size_buff; ++i//производим несколько замеров
  

  
D14_Highdelay_us(10);  D14_Low;  //запустить измерение
   
dist pulseIn(15,HIGH); //считываем длительность времени прохождения эха 
   
delay_ms((50000-dist)/1000); //задержка между посылками
   
sensor[i]=dist;
  }
  
dist=(find_similar(sensorsize_buff58))/58// //фильтруем показания датчика и переводим в см
  
return dist;

//*************************************************** 
void Rotation()
{  
                
IntOff();
                
robot_rotation_left;
                
delay_ms(180);
                
robot_stop
                
course=0
                
IntOn();  
}   

//*************************************************** 
void IntOn()
{
  
attachInterrupt(0MotorLRISING);  // настроить срабатывание прерывания interrupt0 pin 2 по перерпапду с низкого (Low) на высокий(HIGH)
  
attachInterrupt(1MotorRRISING);  // настроить срабатывание прерывания interrupt1 pin 3 по перерпапду с низкого (Low) на высокий(HIGH) 
}

void IntOff()
{
  
detachInterrupt(0);  // отключить срабатывание прерывания interrupt0
  
detachInterrupt(1);  // отключить срабатывание прерывания interrupt1

Admin вне форума   Ответить с цитированием
Старый 28.12.2014, 20:31   #3
John_23
Junior Member
 
Регистрация: 28.12.2014
Сообщений: 1
Вес репутации: 0
John_23 is an unknown quantity at this point
По умолчанию Re: Синхронизация вращения колес у робота

Здравствуйте, Admin.

Помогите пожалуйста разобраться с приведенной схемой подключения сенсоров. У меня на плате с сенсором 4 выхода (Vcc, Gnd, Sen_A, Sen_B). Одна плата на одном колесе, другая - на другом.
На вашей схеме, как я понял, сенсоры имеют тоже по 4 выхода, 2 из которых объединены, другие 2 объединены и подключены к земле, 2 - к МК, у левого 4-ый тоже к земле, а у правого к питанию через резистор.
Как все таки их подключать? Для данной схемы достаточно опрашивать по одному датчику (в моем случае Sen_A)? У меня есть схема моей платы с датчиком. Если понадобится, могу прислать.
John_23 вне форума   Ответить с цитированием
Старый 21.01.2015, 13:58   #4
Sirocco
Senior Member
 
Регистрация: 12.10.2012
Адрес: Moscow-Voronezg
Сообщений: 272
Вес репутации: 0
Sirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant future
По умолчанию Re: Синхронизация вращения колес у робота

Админ, не понятно. tcst2103 подключается просто, как на схеме, или нужно резисторы ещё ставить? И оно прям так будет работать? Или нужна хрень типа этой: http://www.ebay.com/itm/gib-2-Channe...item27e6f0c396
Она, кстати, дешевле выйдет. Получится её прилепить?
Sirocco вне форума   Ответить с цитированием
Старый 21.01.2015, 13:59   #5
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: Синхронизация вращения колес у робота

Подключается как на схеме.
В схеме есть резистор.
У меня все работает

Цитата:
Она, кстати, дешевле выйдет. Получится её прилепить?
Датчики можно использовать вместо tcst2103
Не нужно искать именно tcst2103 , можно использовать любые аналогичные
Admin вне форума   Ответить с цитированием
Старый 21.01.2015, 14:15   #6
Sirocco
Senior Member
 
Регистрация: 12.10.2012
Адрес: Moscow-Voronezg
Сообщений: 272
Вес репутации: 0
Sirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant future
По умолчанию Re: Синхронизация вращения колес у робота

Цитата:
Сообщение от Admin Посмотреть сообщение
Подключается как на схеме.
Не нужно искать именно tcst2103 , можно использовать любые аналогичные
Спасибо, попробую. Мир в моей голове перевернулся, на китайских сайтах, ибее такие стоят дорого и доставки в Россию нет. А на чип-и-дип, на котором всё в тридорого, они по 110р, на заказ по 80 и если от 10 шт по 43р. С кем скооперироваться и купить бы 10 шт..
Sirocco вне форума   Ответить с цитированием
Старый 21.01.2015, 14:33   #7
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: Синхронизация вращения колес у робота

У китайцев они дешевые, но доставка еще в стоимость включена
И курс доллара вырос, Чип и Дип покупал похоже еще по низкому курсу
Admin вне форума   Ответить с цитированием
Старый 28.01.2015, 11:56   #8
Shalman
Junior Member
 
Регистрация: 19.12.2014
Адрес: Великий Новгород
Сообщений: 8
Вес репутации: 0
Shalman is an unknown quantity at this point
По умолчанию Re: Синхронизация вращения колес у робота

Доброго времени суток всем форумчанам.
Хотелось бы узнать можно-ли при использовании такого как в этом проекте драйвера моторов регулировать скорость вращения колес , или она регулируется только напряжением питания драйвера ?
Shalman вне форума   Ответить с цитированием
Старый 28.01.2015, 12:06   #9
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: Синхронизация вращения колес у робота

Можно, в CyberBot2 эта функция реализована
Admin вне форума   Ответить с цитированием
Старый 28.01.2015, 20:33   #10
Shalman
Junior Member
 
Регистрация: 19.12.2014
Адрес: Великий Новгород
Сообщений: 8
Вес репутации: 0
Shalman is an unknown quantity at this point
По умолчанию Re: Синхронизация вращения колес у робота

Спасибо.Буду читать и пробовать.
Shalman вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 12 (пользователей: 0 , гостей: 12)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 02:16. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика