За основу было решено взять лампу Икеа, которая благодаря использованию пружин всегда сохраняла заданную позицию. Соответственно в роборуке энергия сервоприводов расходуется только на изменение положения рычагов, а пружины удерживают вес руки и груза. Таким образом грузоподъемность манипулятора зависит от количества и конфигурации пружин. Например, в видео с испытанием максимальной грузоподъемности я использую 3 пружины в плечевом суставе и 1 в локтевом:
Технические характеристики:
- 5 степеней свободы
- Полная длина: 690мм
- Грузоподъемность: 0,5кг (расстояние от базы до точки крепления груза 500мм)
Все суставы смоделированы в solidworks и напечатаны на 3d принтере. Рука пока имеет 5 степеней свободы и соответственно 5 серв. Я использовал 1- MG958, 2 — MG945 и 2-SG5010.
Контролер: Arduino Uno и SensorShield v5.
Захват: 12в магнит.
В тестовой программе используется библиотека VarSpeedServo. Она позволяет регулировать скорость сервоприводов и выполняет каждое движение только после предыдущего.
#include int motorPin = 2; VarSpeedServo myservo1; VarSpeedServo myservo2; VarSpeedServo myservo3; VarSpeedServo myservo4; VarSpeedServo myservo5; void setup() { pinMode(motorPin, OUTPUT); myservo1.attach(11); myservo2.attach(10); myservo3.attach(6); myservo4.attach(5); myservo5.attach(3); } void loop() { myservo1.write(150, 30, true); myservo2.write(140, 30, true); myservo4.write(160, 30, true); myservo3.write(160, 30, true); digitalWrite(motorPin, HIGH); delay(500); myservo3.write(90, 30, true); myservo2.write(90, 30, true); myservo1.write(70, 30, true); myservo3.write(140, 30, true); myservo5.write(180, 30, true); delay(500); digitalWrite(motorPin, LOW); delay(500); myservo3.write(90, 30, true); }
→ Файлы для 3d-печати и полный список компонентов на Thingiverse
→ Инструкция по сборке Instructables
→ Страница проекта на Hackaday
Еще несколько фотографий:
Спасибо за внимание!
Источник