roboforum.ru

Технический форум по робототехнике.
Текущее время: 02 дек 2024, 10:20

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: радиоуправляемая платформа 4wd
СообщениеДобавлено: 14 дек 2014, 21:21 
Не в сети

Зарегистрирован: 14 дек 2014, 19:20
Сообщения: 4
Вот и я начал делать подобие робота. Прикупил эту платформу
Драйвер двигателей на L298N. Два канала, на каждом канале по два двигателя, левая и правая сторона. Ардуинка на 328 меге, и цветной дисплей 1.8 дюйма на контролере ST7735 для вывода служебной информации.
Пульт тоже с дисплеем цветным, резистивный джойстик, гироскоп - пока не подключен, DC-DC преобразователь, схема заряда литиевого аккумулятора.

Для радиоуправления выбрал протокол кейлог. В восьми байтах первые четыре это серийник машинки, 5 и 6 байт наклон джойстика по Х и У координатам деленый на 4 (АЦП пульта выдает данные с джойстика от 0 до 1024 значения).
Протокол наверно всетаки не подходящий подобрал, у кейлога сначала идет преамбула в 12 импульсов, потом время тишины в 10Те, потом данные в 64 бита. Получается довольно длинный пакет, еще посылаю два пакета и между ними тишина в 39Те (400*39=15 милисек). А данные нужно обрабатывать быстро, т.к. в последствии хочу поставить трансиверы на СС1101 для контроля уровня сигнала приема-передачи пакетов, чтобы контролировать возможность потери связи. Вопрос - какой протокол радиоуправления оптимален для радиоуправления?

Далее, не могу сообразить по какой формуле совмещать координаты наклона джойстика с командами управления двигателями. Т.Е. функция опроса наклона джойстика
x_position = analogRead(pin_analog_x);
y_position = analogRead(pin_analog_y);
возвращают значения от 0 до 1024, в нормальном состоянии значение 512, когда нет наклона джойстика. И как мне преобразовывать эти значения в команды управления двигателями

digitalWrite(D1, left_napravlenie); // Задаем направление вращения
digitalWrite(D2, riht_napravlenie);
analogWrite(M1, left_motor); // Задаем скорость вращения
analogWrite(M2, riht_motor);

Т.е при наклоне джойстика в лево - платформа должна разворачиваться на месте в левую сторону. При наклоне в лево в перед платформа должна на макс скорости поехать в перед- в лево, т.е. скорость зависит от У наклона а направление заворота от Х координат. И как мне нужно делать преобразования ?


Вложения:
IMG_2350.jpg
IMG_2350.jpg [ 1.8 МиБ | Просмотров: 2825 ]
IMG_2349.jpg
IMG_2349.jpg [ 1.96 МиБ | Просмотров: 2807 ]
5.JPG
5.JPG [ 27.47 КиБ | Просмотров: 2771 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: радиоуправляемая платформа 4wd
СообщениеДобавлено: 15 дек 2014, 01:18 
Не в сети
Аватара пользователя

Зарегистрирован: 18 апр 2009, 22:18
Сообщения: 10668
вариантов много, дело вкуса и фантазии. с инетом тут туго, на смарте могу только в общем корявенько описать. один из простеньких вариантов может быть примерно таким: получаем данные с потенциометров. значения 0..1024 переводим в +-100%. "center" - это позиция джойстиков, которые считаем нулём. мало ли, может с отпущенной ручкой не всегда будет 512 возвращать. перемещая вверх/вниз, управляем скоростью моторов с обеих сторон. +- это соответственно будет направление. для дальнейшего упрощения максимумом делаем 70% вместо 100%. перемещая джойстик вправо/влево, корректируем процентики. чтобы не вылазить за 100%, соответственно берём не 100, а 30. в коде это примерно так будет выглядеть
Код:
  x_position = (analogRead(pin_analog_x) - 512) / 5.12;   
  y_position = (analogRead(pin_analog_y) - 512) / 5.12;
  center = 5;
  if(abs(x_position) <= center) x_position = 0;
  else x_position *= 0.3;
  if(abs(y_position) <= center) y_position = 0;
  else y_position *= 0.7;
  left = y_position;
  right = y_position;
  if(x_position > 0)
  {
    left += x_position;
    right -= x_position;
  }
  else
  {
    left -= x_position;
    right += x_position;
  }

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: радиоуправляемая платформа 4wd
СообщениеДобавлено: 15 дек 2014, 22:34 
Не в сети

Зарегистрирован: 14 дек 2014, 19:20
Сообщения: 4
Это я знаю,

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

По какой формуле?

Добавлено спустя 14 минут 24 секунды:
А понял, завтра попробую.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: радиоуправляемая платформа 4wd
СообщениеДобавлено: 27 дек 2014, 18:08 
Не в сети

Зарегистрирован: 14 дек 2014, 19:20
Сообщения: 4
Контролер виснет через минуту, как будто тактовая падает раз в пятьдесят.

В общем я запутался.

Может кто поделиться исходниками радиоуправления или ик управления от пульта на резистивном джойстике. :RTFM:


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 25


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

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO