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

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

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

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

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

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

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

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

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

  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, совмещенной с контроллером Ардуино и присоединёнными серво, необходимо получать от внешнего мощного источника постоянного тока с напряжением, не превышающим 5 В. Расчёт минимального значения силы тока, которым должен обеспечивать блок питания, выполняется из сложения пиковых токов всех сервомашинок в цепи питания плюс 1А, если энергопотребление микроконтроллера Ардуино осуществляется через плату расширения SNA151.

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

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

Печатная плата модуля управления серво SNA151 Small Hammer  
Информация представленная на данном информационном ресурсе преследует исключительно рекламные цели и не является договором-офертой !
© Все права защищены 2019г https://compacttool.ru