top of page

Манипулятор

  • Сычевскйи Виталий
  • 26 авг. 2017 г.
  • 3 мин. чтения

Манипулятор SNAM500 от производителя https://www.sinoning.cc.

Конструктор мной был получен за месяц и вот его недостатки:

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

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

3. Не пролезали сервы, пришлось работать напильником.

4. Не ясны углы установки серв, посему приходилось подбирать опытным путем с использованием сервотестера.

5. Пояснения к программе на китайском и скудны, но есть и Русский вариант тут lesson.iarduino.ru , правда требуется правильно установить конфигурацию пинов.

В общем конструктор не для самостоятельной сборки ребенку - ибо до Лего (на фоне которого он сфотографирован) им ой как далеко.

Но поигравшись с регуляторами стало понятно, что надо переходить к более продвинутым средствам управления, которые сейчас очень доступны для понимания и реализации. Таким средством является Remote XY, которое можно установить на планшет через маркет приложений и, которым можно управлять, как пультом дистанционного управления. Я использовал BlueTooth модуль HC-06, который легко подключается в соответствующий разъем на плате. И использовал свою компиляцию двух программ от Remote XY и iarduino под свой манипулятор (библиотеку RemoteXY.hможно взять у автора http://remotexy.com).

//Sychevsky Vitaly Alekseevich // определение режима соединения и подключение библиотеки RemoteXY #define REMOTEXY_MODE__HARDSERIAL #include <RemoteXY.h> // настройки соединения #define REMOTEXY_SERIAL Serial #define REMOTEXY_SERIAL_SPEED 9600 // конфигурация интерфейса #pragma pack(push, 1) uint8_t RemoteXY_CONF[] = { 255,4,0,0,0,25,0,6,0,2, 5,0,6,11,41,41,11,6,41,41, 2,5,0,53,11,41,41,11,53,41, 41,2 }; #include <Servo.h> // Подключаем библиотеку Servo для работы с сервоприводами Servo servo1; // Объявляем объект servo1 для работы с сервоприводом основания Servo servo2; // Объявляем объект servo2 для работы с сервоприводом левого плеча Servo servo3; // Объявляем объект servo3 для работы с сервоприводом правого плеча Servo servo4; // Объявляем объект servo4 для работы с сервоприводом захвата int valR1, valR2, valR3, valR4; // Объявляем переменные для хранения значений потенциометров // Назначаем выводы: const uint8_t pinS1 = 11; // Определяем константу с № вывода сервопривода левого плеча const uint8_t pinS2 = 10; // Определяем константу с № вывода сервопривода основания const uint8_t pinS3 = 9; // Определяем константу с № вывода сервопривода правого плеча const uint8_t pinS4 = 6; // Определяем константу с № вывода сервопривода захвата // структура определяет все переменные вашего интерфейса управления struct { // Выходные переменные int8_t joystick_1_x=0; // =-100..100 координата x положения джойстика int8_t joystick_1_y=0; // =-100..100 координата y положения джойстика int8_t joystick_2_x=0; // =-100..100 координата x положения джойстика int8_t joystick_2_y=0; // =-100..100 координата y положения джойстика // другие переменные uint8_t connect_flag; // =1 if wire connected, else =0 } RemoteXY; #pragma pack(pop) void setup(){ Serial.begin(9600); // Инициируем передачу данных в монитор последовательного порта servo1.attach(pinS1); // Назначаем объекту servo1 управление сервоприводом 1 servo2.attach(pinS2); // Назначаем объекту servo2 управление сервоприводом 2 servo3.attach(pinS3); // Назначаем объекту servo3 управление сервоприводом 3 servo4.attach(pinS4); // Назначаем объекту servo4 управление сервоприводом 4 RemoteXY_Init (); } void loop(){ RemoteXY_Handler (); valR1=map(RemoteXY.joystick_1_y+100, 0, 200, 0, 170); servo1.write(valR1); // Управляем первым плечом Ограничение по углам отклонения: 0 и 170 (подбирается при настройке) valR2=map(RemoteXY.joystick_1_x+100, 0, 200, 0, 180); servo2.write(valR2); // Вращаем основанием Ограничение по углам отклонения: 0 и 180 (подбирается при настройке) valR3=map(RemoteXY.joystick_2_y+100, 0, 200, 0, 170); servo3.write(valR3); // Управляем вторым плечом Ограничение по углам отклонения: 0 и 170 (подбирается при настройке) valR4=map(RemoteXY.joystick_2_x+100, 0, 200,30, 60); servo4.write(valR4); // Управляем захватом Ограничение по углам отклонения:30 и 60 (подбирается при настройке) }

Пульт, который появится в приложение Remote XY будет иметь вид:

 
 
 

Comments


Избранные записи
Новые записи
Поиск по ключевым словам
Обращайтесь
  • Иконка Google+ с длинной тенью
  • Иконка Facebook с длинной тенью
  • Иконка LinkedIn с длинной тенью
  • Иконка Twitter с длинной тенью

Как со мной связаться

vita_run@mail.ru

  • Google+ Social Icon
  • Facebook Social Icon
  • LinkedIn Social Icon
  • Twitter Social Icon

© 2016  Виталий Сычевский. Сайт создан на Wix.com

Отлично! Сообщение получено.

bottom of page