Модуль управления манипулятором Servo 6DOF для Arduino
Модуль управления манипулятором Servo 6DOF для Arduino
Модуль управления манипулятором Servo 6DOF для Arduino
Модуль управления манипулятором Servo 6DOF для Arduino
Модуль управления манипулятором Servo 6DOF для Arduino
Модуль управления манипулятором Servo 6DOF для Arduino
Модуль управления манипулятором Servo 6DOF для Arduino
Модуль управления манипулятором Servo 6DOF для Arduino

Модуль управления манипулятором Servo 6DOF для Arduino

Арт. 14740

860

менее 10 шт.

Описание

Модуль управления сервомоторами с шестью степенями свободы

Совершенно простой, и одновременно очень удобный в использовании, модуль ручного управления сервомашинками SNA151 предоставляет возможность пользователю облегчить сборку несложных механизмов перемещения или манипуляции, состоящих из 1-6 сервоприводов, на основе популярной полноразмерной платы с контроллером Ардуино UNO.

Технические характеристики

  • Производитель: Small Hammer
  • Модель: SNA151
  • Напряжение питания: 5В
  • Поддержка серво: MG90S, SG90, MG996, MG995
  • Каналов управления: 1-6
  • Выходной сигнал: аналоговый
  • Размеры платы: 68 х 53мм

Основная задумка появления модуля контроля серво SNA151 от разработчика Small Hammer — управление разнообразными многоступенчатыми роботизированными манипуляторами. В тоже время, модуль SNA151 может оказаться полезным при разработке других аналогичных приложений или пригодится в задачах проверки работоспособности поддерживаемых сервоприводов. Конструкция платы расширения не несёт какого-либо дополнительного функционала за исключением возможности ручной регулировки углового отклонения вала одного-шести сервоприводов. Для каждого сервомотора, подключенного к плате расширения SNA151, выделен отдельный аналоговый поворотный потенциометр B10K (10кОм) с установленной на него пластиковой ручкой вращения.

Управление сервомоторами в модуле SNA151, программирование на Arduino

Управление сервомоторами основано на считывании микроконтроллером Ардуино аналогового сигнала, поступающего на аналоговый вход А0-А5 платы. Пользовательское программное приложение, прошитое во встроенную память Arduino-контроллера, должно самостоятельно отвечать за интерпретацию уровня входящего аналогового сигнала в соответствующие импульсы широтной модуляции (ШИМ), управляющих углом поворота вала сервопривода.

Задействованные модулем SNA151 контакты контроллера Arduino R3:

  1. Servo 1 — аналоговый вход А0, выход ШИМ GPIO11
  2. Servo 2 — аналоговый вход А1, выход ШИМ GPIO10
  3. Servo 3 — аналоговый вход А2, выход ШИМ GPIO9
  4. Servo 4 — аналоговый вход А3, выход ШИМ GPIO6
  5. Servo 5 — аналоговый вход А4, выход ШИМ GPIO5
  6. Servo 6 — аналоговый вход А5, выход ШИМ GPIO3

Модуль SNA151 поддерживает работу с интегрированной в среду разработки Arduino IDE библиотекой Servo, однако в репозитории сайта GitHub опубликована в открытом доступе переработанная и улучшенная её версия под названием VarSpeedServo. Её алгоритмы построены на использовании внешних прерываний и позволяют управлять одновременно несколькими моторами в независимом друг от друга режиме. Библиотека включает набор дополнительных полезных процедур, среди которых найдутся: остановка мотора на заданной позиции, установка скорости поворота вала, ожидание окончания позиционирования вала перед возвращением и другие.

#include "VarSpeedServo.h"

// Инициализируем подкласс для серво
VarSpeedServo servo1;
VarSpeedServo servo2;
VarSpeedServo servo3;
VarSpeedServo servo4;
VarSpeedServo servo5;
VarSpeedServo servo6;

// Назначем аналоговые входы
int potpin1 = 0; //A0
int potpin2 = 1; //A1
int potpin3 = 2; //A2
int potpin4 = 3; //A3
int potpin5 = 4; //A4
int potpin6 = 5; //A5

// Переменные входящего аналогового напряжения
int val1;
int val2;
int val3;
int val4;
int val5;
int val6;

void setup()
{
  // Назначаем серво контакт GPIO PWM
  servo1.attach(11);
  servo2.attach(10);
  servo3.attach(9);
  servo4.attach(6);
  servo5.attach(5);
  servo6.attach(3);
}

void loop()
{
  //Считываем потенциометр Control 1 и поворачиваем вал серво1
  val1 = analogRead(potpin1);
  val1 = map (val1, 0, 1023, 0, 179);
  servo1.write(val1);
  delay(10);

  //Считываем потенциометр Control 2 и поворачиваем вал серво2
  val2 = analogRead(potpin2);
  val2 = map (val2, 0, 1023, 0, 179);
  servo2.write(val2);
  delay(10);

  //Считываем потенциометр Control 3 и поворачиваем вал серво3
  val3 = analogRead(potpin3);
  val3 = map (val3, 0, 1023, 0, 179);
  servo3.write(val3);
  delay(10);

  //Считываем потенциометр Control 4 и поворачиваем вал серво4
  val4 = analogRead(potpin4);
  val4 = map (val4, 0, 1023, 0, 179);
  servo4.write(val4);
  delay(10);

  //Считываем потенциометр Control 5 и поворачиваем вал серво5
  val5 = analogRead(potpin5);
  val5 = map (val5, 0, 1023, 0, 179);
  servo5.write(val5);
  delay(10);

  //Считываем потенциометр Control 6 и поворачиваем вал серво6
  val6 = analogRead(potpin6);
  val6 = map (val6, 0, 1023, 0, 179);
  servo6.write(val6);
  delay(10);
}

Питание модуля SNA151

Питание для платы расширения SNA151 необходимо рассчитывать с учётом совмещения её с контроллером Ардуино и присоединением 1-6 серво. Минимальное значение силы тока, которым должен обеспечивать внешний 5-вольтовый блок питания, складывается из пиковых токов всех используемых сервомашинок. Если энергообеспечение микроконтроллера Ардуино осуществляется через плату расширения SNA151, к расчёту величины тока добавляется дополнительно еще 1000мА.

Обратите внимание! Модуль расширения SNA151 не имеет какой-либо защиты от превышения рабочего напряжения или ошибки полярности подключения источника питания. Все питающие линии в модуле разведены напрямую на соответствующие контакты Arduino R3. Встроенные в Arduino-контроллер стабилизаторы не используются.

Разводка печатной платы SNA151

Печатная плата модуля управления серво SNA151 Small Hammer