Автобот — ардуїновий Хижак.  Частина 2: Роборука, або як я воював з сервоприводами

Хто читав першу частину — той знає що машинка вже їздить. FlySky більше не пилиться на полиці, iBUS читається, танкове керування працює. Але оскільки ми збираємо справжнього хижака, то в нього як мінімум повинна бути клешня, тож зупинятись на просто машинці за рано треба рука (клешня).

Ідея проста: поки лівий джойстик керує рухом, правий керує маніпулятором. Красиво на папері. На практиці досить заплутана пригода.


Що є в господарстві

Розклав на столі все що знайшов:

  • AS3103PG — двоосьовий цифровий серво з U-подібним кронштейном. Виглядає серйозно, коштує серйозно, поводиться… нестандартно
  • MG995 × 3 — клони популярного серводвигуна, 13кг/см, метал всередині
  • Купа кронштейнів
  • Металева клешня з серво вже всередині

Чотири серво, чотири вільних піна на Pico (GP2-GP5), чотири вільних канали на пульті. Математика сходиться. Починаємо.


Перший сюрприз: AS3103PG виявився мотором

Підключаю AS3103PG, пишу простий тест:

Серво радісно крутиться… і не зупиняється. Пишу write(90) — стоїть. Пишу write(0) — крутиться в один бік. Пишу write(180) — в інший.

Це 360° серво безперервного обертання. Не позиційне. Тримати кут воно не вміє взагалі — це по суті мотор з регулюванням швидкості. Щось нашаманив, зібрав, але виявилось що серво в цьому вузлі занадто слабкий.

Добре, перепризначаємо. AS3103PG іде на… поки нікуди. Відкладаємо.

Мораль: читай даташит тав прораховуй до покупки, а не після 😄, та я себе прощаю оскільки купував ту роборуку і сервоприводи років десять тому, що я міг тоді про таке знати.


Калібровка: у кожного серво свій характер

Стандартна бібліотека Servo.h дає імпульси 544-2400 мкс. MG995 клони цього не розуміють і видають лише ~90° замість 180°. До речі AS3103PG так і запустився

Рішення — вказати правильні імпульси вручну:

Але і це не одразу. Спочатку пробував різні значення:

300 мкс — занадто малий імпульс, серво його не розуміє і сходить з розуму. Кажу собі запам’ятай мінімум 500 мкс, інакше серво вирішить що воно безперервне 😄. Перевіряв знов таки методом втика чи може просто перебором, ну якось так.

Ще один лайфхак при калібровці: завжди починай з write(0), а не write(90). Тоді бачиш реальний діапазон від початку.


Реальні межі кожного серво

Після годин тестування Serial Monitor:

Серво Пін Мін Макс Функція
MG995 №1 GP2 160° стріла
AS3103PG №2 GP3 160° нахил
MG995 №3 GP4 160° рукоять
MG995 №4 GP5 160° клешня

Клешня особлива: = розкрита, 160° = закрита. Логічно.


Код: додаємо руку до машинки

Ліво/право джойстиком — нахил. Вперед/назад — стріла. Крутилки — рукоять і клешня. Все логічно і зручно.


Проблема яку не вирішив код

Стріла (MG995 №1) падає під власною вагою.

MG995 має 13кг/см моменту — теоретично більш ніж достатньо. Але є нюанс: кут кріплення серво невигідний, важіль короткий, і серво працює у слабкій частині діапазону. Теж саме з AS3103PG №2

Варіанти вирішення:

  1. Пружина — найдешевше, компенсує вагу механічно, (спробував резинку від рибальскої снасті, такий собі костиль)
  2. Сильніше серво — DS3218 (20кг/см) або JX PDI-6221MG
  3. Паралелограм — як у справжніх роборуках, вага розподіляється рівномірно
  4. Черв’ячна передача — тримає позицію без струму

Поки використовую резинку. Хотів би сказати, що це “Дешево і сердито”, аале поки просто дешево 😄


Що далі

Рука рухається, клешня хапає, машинка їздить. Але керувати наосліп — то половина задоволення. У наступній частині підключаємо FPV камеру і дивимось на світ очима Автобота.

Є питання або теж воювали з MG995? Пишіть в коментарях, разом розберемось!

 

Опубліковано в Arduino

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *