Оглавление:

Роботизированная рука Arduino: 5 шагов
Роботизированная рука Arduino: 5 шагов

Видео: Роботизированная рука Arduino: 5 шагов

Видео: Роботизированная рука Arduino: 5 шагов
Видео: Робот-платформа «Манипулятор» для Arduino 2024, Июль
Anonim
Image
Image
Роботизированная рука Arduino
Роботизированная рука Arduino
Роботизированная рука Arduino
Роботизированная рука Arduino

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

Этот проект посвящен роботизированной руке с 4 степенями свободы и захватом. С прилично низким бюджетом: конструкция была вырезана другом, 4 сервопривода стоили 30 евро, 2 джойстика 4 евро, болты и т. Д. Менее чем за 10 евро, а все остальное (Arduino, провода, сервопривод рукоятки и т. Д.)) уже был включен в мой стартовый комплект. В общей сложности 40-45 евро, что составляет около 45-50 долларов США (та же цена, что и комплект для me-arm, но, эй, было весело собирать его самому (и время от времени что-то портить) и не следуя инструкциям как машина).

Поскольку это был мой первый проект, и я был проинструктирован, я принял участие в конкурсе «Автор впервые» и в паре других конкурсов, так что, если он вам нравится, проголосуйте за него:)

Шаг 1: ПРОЕКТИРОВАНИЕ И СБОРКА:

Сначала мне нужна была структура: это определенно была самая длинная часть. Поскольку я не хотел копировать и вставлять проект от кого-то еще, я взял проект за образец и я (и еще пара более опытных одноклассников, которые действительно спасли меня) начал дорабатывать его под свои нужды (разные сервоприводы с разным крутящим моментом, массой и габаритами и т. д.). Мне приходилось строить его несколько раз, в каждом из них я обнаруживал что-то не так, и нам приходилось перерезать некоторые части и повторять попытку. Я прикрепил файл.dxf на случай, если вы захотите его использовать. Затем мне пришлось купить электронику: Большинство деталей были стандартными, сложнее всего было выбрать сервоприводы. Я рассчитал требуемый крутящий момент с помощью эмпирического правила, позже я попробовал более точный расчет и обнаружил, что, возможно, немного переборщил. Видимо для 2-го сервопривода (от базы) хватило бы 6 кг / см, а у меня 9-11 кг / см. Что ж, это дает мне некоторую безопасность и возможность загрузить до 2 кг груза (что невозможно, но мне нравится, что технически я могу это сделать). Я мог бы также купить другие сервоприводы с уменьшением крутящего момента при удалении от базы, но покупка идентичных сервоприводов у одного и того же поставщика была, безусловно, самым дешевым вариантом. 350 мА, а микросхема 9g потребляет 100 мА, всего 350 * 4 +100 = 1500 мА. Поэтому я спас зарядное устройство (6 В, 1,5 А) и припаял к нему две перемычки (если кому-то из вас могут понадобиться настоящие инструкции, просто спросите в комментариях, и я сделаю все возможное, чтобы создать пошаговый руководство) Список материалов: - Конструкция - Винт M5x7cm x5, болты M5 x15 (основание) - Винт M3x16mm x18 * - Винт M3x20mm x13 * - Болты M3 x40 * - Винт M3x8cm x3 - Зажим (иначе он упадет) - 3 дюбеля- Arduino (или что-то еще, чтобы управлять им, у него должно быть не менее 5 ШИМ) - Что-то для питания 5-6 В и не менее 1,5 А - 3 джойстика типа ps2 - 4 сервопривода TowerPro MG995 - 1 резервуар TowerPro 9g (для рукоятки) - Множество перемычек - Макетная плата * (я использовал болты и винты, чтобы можно было быстро собирать и разбирать, в противном случае вы могли бы заменить почти все их шурупами для деревянных конструкций)

Шаг 2: КОД:

Идея состоит в том, чтобы управлять каждым сервоприводом с помощью одной из двух осей джойстика, подобного ps2. Кажется, каждый джойстик имеет разные «значения покоя» (значение от 0 до 1023, когда он неподвижен) как для оси y, так и для оси x. было проблемой, так как разница была почти небольшой (у одного был ноль на y на 623), и я хотел использовать функцию карты для преобразования из 0-1023 в градусы. Но функция карты считает, что остальное значение равно 1023/2. Это приводило к тому, что каждый сервопривод двигался, как только я включаю Arduino, не очень хорошо. Мне удалось обойти это, найдя вручную разницу между значением чтения и каждым другим значением покоя (которое я рассчитал отдельно для каждого джойстика), а затем Чтобы сделать код короче и умнее, я заставил его прочитать остальные значения в функции настройки и сохранить их в некоторых переменных. Новый алгоритм основан на преобразовании приращения в градусы, но мне нужно было очень маленькое количество градусов для моего приращения, поэтому Мне пришлось разделить его на константу: я пробовал много значений, пока не нашел окончательные 200 (я могу добавить потенциометр, чтобы вручную изменить это значение на желаемое). Остальная часть кода, я думаю, довольно стандартна, хотя было бы более элегантно поместить вычисление приращения в отдельную функцию.

Шаг 3: ЭЛЕКТРОНИКА:

ЭЛЕКТРОНИКА
ЭЛЕКТРОНИКА

Подключение такое же, как показано на картинке или в файле fritzing: сигнал сервоприводов к контактам: 5-6-9-10-11 и ось джойстика к аналоговым контактам: A0-A1-A2-A3-A4 Основная проблема, с которой я столкнулся состоял в том, что джойстики ДОЛЖНЫ поставляться от Arduino, а НЕ от зарядного устройства, которое я использую для сервоприводов. В противном случае сервопривод просто сойдет с ума, беспорядочно перемещаясь взад и вперед. Я думаю, это может быть потому, что, если я снабжу их зарядным устройством, Arduino не сможет точно определить разность потенциалов, когда я их перемещаю, но опять же: Я новичок в электронике, так что это всего лишь предположение. Подключение заземления Arduino и заземления зарядного устройства через макетную плату помогло предотвратить случайные и неожиданные движения, по той же причине, что и джойстики.

Шаг 4: ПРОДОЛЖАЕТСЯ УЛУЧШЕНИЕ:

СОВЕРШЕНСТВОВАТЬСЯ В НАСТОЯЩЕЕ ВРЕМЯ
СОВЕРШЕНСТВОВАТЬСЯ В НАСТОЯЩЕЕ ВРЕМЯ

Поскольку каждый джойстик может управлять 2 сервоприводами (по одному на каждую ось), мне нужно 3 сервопривода для управления всей рукой, но, к сожалению, у меня есть только 2 больших пальца, поэтому я подумал, что вместо того, чтобы управлять каждым сервоприводом, я мог бы управлять только положением xyz рычага. хватать и открывать-закрывать захват, всего 4 оси, 2 джойстика и 2 больших пальца! Я обнаружил, что эта проблема хорошо известна как обратная кинематика, я также обнаружил, что это почти просто. Идея состоит в том, чтобы написать (нелинейные) уравнения, чтобы найти состояние каждого эффектора (углы для сервоприводов) с учетом конечного положения. Я загрузил рукописный документ с уравнениями, и в настоящее время я работаю над новым кодом для их использования. Это не должно быть слишком сложно, я в основном должен читать джойстики, использовать их показания для изменения координат xyz рукоятки, а затем добавлять их в свои уравнения, вычислять углы сервоприводов и записывать их.

Шаг 5: БУДУЩИЕ УЛУЧШЕНИЯ:

Итак, я очень доволен результатом, и, учитывая, что я новичок в электронике и не взорвал что-то или себя, это уже огромная победа. Как я сказал в начале, любая идея будущих улучшений, как программного обеспечения, так и железо, можно только приветствовать! Пока что думал о: 1. Потенциометр для изменения «чувствительности» джойстиков 2. Новый код, заставляющий его «записывать» некоторые движения и делать их снова (возможно, быстрее и короче, чем вводимые человеком) 3. Какой-то визуальный / дистанционный / голосовой ввод и возможность получать объекты без использования джойстиков 4. Уметь рисовать геометрические фигуры Есть еще идеи? Пожалуйста, не стесняйтесь комментировать любые предложения. Спасибо

Рекомендуемые: