roboforum.ru

Технический форум по робототехнике.

радиоуправляемая платформа 4wd

Наше хобби — конструировать и программировать.
Демонстрация готовых роботов и устройств построенных своими руками.

радиоуправляемая платформа 4wd

Сообщение russo » 14 дек 2014, 21:21

Вот и я начал делать подобие робота. Прикупил эту платформу
Драйвер двигателей на 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_2349.jpg
5.JPG
russo
 
Сообщения: 4
Зарегистрирован: 14 дек 2014, 19:20

Re: радиоуправляемая платформа 4wd

Сообщение Angel71 » 15 дек 2014, 01:18

вариантов много, дело вкуса и фантазии. с инетом тут туго, на смарте могу только в общем корявенько описать. один из простеньких вариантов может быть примерно таким: получаем данные с потенциометров. значения 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;
  }

а дальше из этих процентиков получаете значения шимов и какие направления вращения моторов. с флоатом или инверсией данных если что дорихтуйте. ну и в коде может чего накосячил, проверить сейчас нет возможности, да и для передачи смысла это не особо нужно.
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

Re: радиоуправляемая платформа 4wd

Сообщение russo » 15 дек 2014, 22:34

Это я знаю,

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

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

Добавлено спустя 14 минут 24 секунды:
А понял, завтра попробую.
russo
 
Сообщения: 4
Зарегистрирован: 14 дек 2014, 19:20

Re: радиоуправляемая платформа 4wd

Сообщение russo » 27 дек 2014, 18:08

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

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

Может кто поделиться исходниками радиоуправления или ик управления от пульта на резистивном джойстике. :RTFM:
russo
 
Сообщения: 4
Зарегистрирован: 14 дек 2014, 19:20


Вернуться в Наши проекты

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

Сейчас этот форум просматривают: Yandex [Bot] и гости: 8