Модуль управления сервомоторами с шестью степенями свободы
Совершенно простой, и одновременно очень удобный в использовании, модуль ручного управления сервомашинками 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:
- Servo 1 — аналоговый вход А0, выход ШИМ GPIO11
- Servo 2 — аналоговый вход А1, выход ШИМ GPIO10
- Servo 3 — аналоговый вход А2, выход ШИМ GPIO9
- Servo 4 — аналоговый вход А3, выход ШИМ GPIO6
- Servo 5 — аналоговый вход А4, выход ШИМ GPIO5
- 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
Нет отзывов об этом товаре.
Нет вопросов об этом товаре.