- Необходимые компоненты
- Конструкция роботизированной руки
- Принципиальная схема и рабочее объяснение:
- Как управлять роботизированной рукой:
В этом уроке мы собираемся разработать роботизированную руку на базе Arduino Uno из картона и серводвигателей. Ниже подробно описан весь процесс строительства. Здесь, в этом проекте, Arduino Uno запрограммирована для управления серводвигателями, которые служат шарнирами роботизированной руки. Эта установка также выглядит как роботизированный кран, или мы можем преобразовать ее в кран, выполнив несколько простых настроек. Этот проект будет полезен новичкам, которые хотят научиться разрабатывать простого робота по низкой цене или просто хотят научиться работать с Arduino и серводвигателями.
Этой роботизированной рукой Arduino можно управлять с помощью четырех прикрепленных к ней потенциометров, каждый потенциометр используется для управления каждым сервоприводом. Вы можете перемещать эти сервоприводы, вращая кастрюли, чтобы выбрать какой-нибудь объект, с некоторой практикой вы можете легко выбрать и переместить объект из одного места в другое. Здесь мы использовали сервоприводы с низким крутящим моментом, но вы можете использовать более мощные сервоприводы для захвата тяжелых предметов. Весь процесс хорошо продемонстрирован в видео в конце. Также проверьте наши другие проекты робототехники здесь.
Необходимые компоненты
- Ардуино Уно
- Конденсатор 1000 мкФ (4 шт.)
- Конденсатор 100 нФ (4 шт.)
- Серводвигатель (SG 90 - четыре штуки)
- Переменный резистор 10 кОм (4 шт.)
- Блок питания (5в- желательно два)
Серводвигатель
Сначала поговорим немного о сервомоторах. Сервомоторы в основном используются, когда требуется точное перемещение или положение вала. Они не предлагаются для высокоскоростных приложений. Серводвигатели предлагаются для работы с низкой скоростью, средним крутящим моментом и точным положением. Так что эти двигатели лучше всего подходят для создания манипулятора-робота.
Серводвигатели доступны в различных формах и размерах. Мы собираемся использовать небольшие серводвигатели, здесь мы используем четыре сервопривода SG90. У серводвигателя в основном есть провода: один для положительного напряжения, другой - для заземления, а последний - для установки положения. КРАСНЫЙ провод подключается к источнику питания, черный провод подключается к земле, а ЖЕЛТЫЙ провод подключается к сигналу. Прочтите это руководство по управлению серводвигателем с помощью Arduino, чтобы узнать об этом больше. В Arduino у нас есть предопределенные библиотеки для управления сервоприводом, поэтому управлять сервоприводом очень легко, о чем вы узнаете вместе с этим руководством.
Конструкция роботизированной руки
Возьмите ровную и устойчивую поверхность, например стол или картон. Затем поместите серводвигатель посередине и приклейте его на место. Убедитесь, что угол поворота находится в области, представленной на рисунке. Этот сервопривод действует как основание руки.
Поместите небольшой кусок картона поверх первого сервопривода, а затем поместите второй сервопривод на этот кусок доски и приклейте его на место. Вращение сервопривода должно соответствовать диаграмме.
Возьмите картон и разрежьте его на кусочки размером 3 x 11 см. Убедитесь, что изделие не размякло. Вырежьте прямоугольное отверстие на одном конце (оставьте 0,8 см снизу) ровно настолько, чтобы в него поместился другой сервопривод, а на другом конце плотно закрепите сервопривод с помощью винтов или клея. Затем установите третий сервопривод в первое отверстие.
Теперь вырежьте еще один кусок картона длиной, показанной на рисунке ниже, и приклейте еще одну шестеренку внизу этой части.
Теперь приклейте четвертый и последний сервопривод к краю второй детали, как показано на рисунке.
При этом две части вместе выглядят.
Когда мы прикрепим эту установку к основанию, она должна выглядеть так:
Это почти сделано. Нам просто нужно сделать крючок, чтобы хватать и поднимать объект, как рука робота. Для крючка вырежьте еще два куска картона длиной 1х7см и 4х5см. Склейте их вместе, как показано на рисунке, и приклейте последнюю шестерню на самом краю.
Установите этот кусок сверху, и на этом мы закончили сборку робота-руки.
На этом наша основная конструкция роботизированной руки была завершена, и именно так мы создали нашу недорогую роботизированную руку. Теперь подключите схему на макетной плате согласно принципиальной схеме.
Принципиальная схема и рабочее объяснение:
Схема подключения роботизированной руки Arduino Uno показана ниже.
Напряжение на переменных резисторах не является полностью линейным; это будет шумно. Таким образом, чтобы отфильтровать этот шум, конденсаторы помещаются на каждом резисторе, как показано на рисунке.
Теперь мы подадим напряжение, обеспечиваемое этим переменным резистором (напряжение, которое представляет собой управление положением), в каналы АЦП Arduino. Мы собираемся использовать для этого четыре канала АЦП UNO от A0 до A3. После инициализации АЦП у нас будет цифровое значение горшков, представляющих позицию, необходимую пользователю. Мы возьмем это значение и сопоставим его с положением сервопривода.
Arduino имеет шесть каналов АЦП. Мы использовали четыре для нашей роботизированной руки. АЦП UNO имеет разрешение 10 бит, поэтому целочисленные значения находятся в диапазоне от 0 до 1023 (2 ^ 10 = 1024 значения). Это означает, что он будет отображать входные напряжения от 0 до 5 вольт в целочисленные значения от 0 до 1023. Таким образом, для каждого (5/1024 = 4,9 мВ) на единицу. Узнайте больше о отображении уровней напряжения с помощью каналов АЦП в Arduino здесь.
Теперь, чтобы UNO преобразовал аналоговый сигнал в цифровой, нам нужно использовать канал ADC Arduino Uno с помощью следующих функций:
1. analogRead (пин); 2. analogReference (); 3. analogReadResolution (биты);
Arduino каналов АЦП имеют опорное значение по умолчанию 5В. Это означает, что мы можем дать максимальное входное напряжение 5 В для преобразования АЦП на любом входном канале. Поскольку некоторые датчики обеспечивают напряжение от 0-2.5V, поэтому со ссылкой 5V, мы получаем меньшую точность, поэтому у нас есть инструкция, которая позволяет нам изменить это значение ссылки. Таким образом, для изменения эталонного значения мы имеем «analogReference ();»
По умолчанию мы получаем максимальное разрешение АЦП платы, равное 10 битам, это разрешение можно изменить с помощью инструкции («analogReadResolution (бит);»).
В нашей роботизированной руке цепи, мы оставили это опорное напряжение до значения по умолчанию, так что мы можем прочитать значение из АЦПА канала путем прямого вызова функции «analogRead (контакт);», здесь «контактный» представляет булавку, где мы подключили аналоговый сигнал, скажу мы хотим читать «A0». Значение из АЦП может быть сохранено в виде целого числа как int SENSORVALUE0 = analogRead (A0); .
Теперь давайте поговорим о сервоприводе, в Arduino Uno есть функция, которая позволяет нам контролировать положение сервопривода, просто задавая значение в градусах. Скажем, если мы хотим, чтобы сервопривод был на 30, мы можем напрямую представить значение в программе. Файл заголовка SERVO ( Servo.h ) выполняет все внутренние вычисления коэффициента заполнения .
#включают
Здесь первая инструкция представляет заголовочный файл для управления СЕРВО-ДВИГАТЕЛЕМ. Второе утверждение - это имя сервопривода; мы оставляем его как servo0, поскольку мы собираемся использовать четыре. Третье утверждение указывает, где подключен вывод сервосигнала; это должен быть вывод ШИМ. Здесь мы используем PIN3 для первого сервопривода. Четвертое утверждение дает команды для позиционирования серводвигателя в градусах. Если задано 30, серводвигатель вращается на 30 градусов.
Теперь у нас есть положение сервопривода SG90 от 0 до 180, а значения ADC от 0 до 1023. Мы будем использовать специальную функцию, которая автоматически сопоставляет оба значения.
sensorvalue0 = map (sensorvalue0, 0, 1023, 0, 180);
Этот оператор автоматически отображает оба значения и сохраняет результат в виде целого числа servvalue0 .
Вот как мы управляли сервоприводами в нашем проекте Robotic Arm с помощью Arduino. Проверьте полный код ниже.
Как управлять роботизированной рукой:
Пользователю предоставляются четыре горшка. Вращая эти четыре электролизера, мы обеспечиваем переменное напряжение на каналах АЦП UNO. Таким образом, цифровые значения Arduino находятся под контролем пользователя. Эти цифровые значения отображаются для регулировки положения серводвигателя, поэтому положение сервопривода находится под контролем пользователя, и , вращая эти горшки, пользователь может перемещать суставы роботизированной руки и может захватывать или захватывать любой объект.