PCA9685 управление сервоприводами

al072
Offline
Зарегистрирован: 20.04.2017

Всем доброго времени суток! Задача заключается в управлении манипулятором с двумя сервоприводами для захвата баночки "cocacola" - стандартная задача для робосоревнований. 

Оборудование используемое в проекте:

1. Arduino Nano v3.0 (http://ali.onl/1667);

2. Понижающий регулятор напряжения DC-DC XL4015 (http://ali.onl/1668);

3. Плата для управления серво PCA9685 (http://ali.onl/1669);

4. Два сервопривода MG995 (http://ali.onl/166a);

5. NI-MH аккумулятор 7.2v. (https://hobbycenter.ru/teamorion_btr/akkumulyator-team-orion-batteries-7-2v-1600mah-nimh-trx-plug-ori13002.html)

6. Манипулятор (http://ali.onl/1666)

Проблема заключается в том что при управлении сервоприводами они ведут себя не стабильно. Например команда поднять манипулятор вверх или опустить вниз отрабатывает нормально 1-й сервопривод отрабатывает на заданный угол, но в момент движения 1-го сервопривода 2-й сервопривод беспорядочно начинает открываться закрываться.

Питание для серв подается на PCA9685 через понижающий регулятор напряжения DC-DC XL4015 (понижается до 5v)  от NI-MH аккумулятора 7.2v (емкость 1600 mAh). 

Если к аккумулятору при выполнении скетча подключить еще зарядное устройство 12v от сети, то все работает стабильно и как нужно.

Вопросы:

1. почему при питании от аккумулятора NI-CD 7.2v (емкость 1600 mAh) скетч работает не корректно, сервоприводы дергаются, беспорядочно открываются? Если данного аккума не достаточно, тогда какой аккумулятор лучше использовать для стабильного управления 2-мя MG995 через PCA9685?

2. как нужно доработать, что поменять в схеме управления для достижения стабильной работы?

Ниже прилагаю скетч и скриншот схемы управления. Заранее спасибо!!!

Скетч:

#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>
Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();
#define MIN_PULSE_WIDTH 650 
#define MAX_PULSE_WIDTH 2350 
#define DEFAULT_PULSE_WIDTH 1500
#define FREQUENCY 50 
uint8_t servonum = 0;

void setup ()
{
  pwm.begin();
  pwm.setPWMFreq(FREQUENCY);
}

 int pulseWidth(int angle)//угол поворота серво
{
int pulse_wide, analog_value;
pulse_wide = map(angle, 0, 180, MIN_PULSE_WIDTH, MAX_PULSE_WIDTH);
analog_value = int(float(pulse_wide) / 1000000 * FREQUENCY * 4096);
return analog_value;
}

void loop ()
{
   pwm.setPWM(0, 0, pulseWidth(50));// разжать 
   delay(2000);
   pwm.setPWM(0, 0, pulseWidth(70));// cжать
   delay(2000); 
   pwm.setPWM(1, 0, pulseWidth(-20));// вниз 
   delay(2000); 
   pwm.setPWM(1, 0, pulseWidth(100));// вверх
   delay(2000); 
}

Схема:

 

 

Гриша
Offline
Зарегистрирован: 27.04.2014

al072 пишет:

Если к аккумулятору при выполнении скетча подключить еще зарядное устройство 12v от сети, то все работает стабильно и как нужно.

это и есть ответ, не хватает тока, зацепите еще аккумуляторы в параллель и все должно заработать

al072
Offline
Зарегистрирован: 20.04.2017

Какой лучше использовать Аккум для этих целей? Какой тип, емкость и напряжение выбрать для того чтобы хватило на практически непрерывное управление двумя сервоприводами MG995 в течение 30 мин?

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

1. Для начала стоит заглянуть в даташит и посмотреть какой ток тянет выход этой микросхемы. Насколько помню он не особо велик, чтобы напрямую подключать MG995. Даже мелкая SG90 может при желании отжирать около 0.8А, а эти сущестенно мощней.

2. Для захвата баночки кола-колы - это ну очень сильные сервы: 10-15кГ/см .. баночку сплющит легко, понадобится контроль усилия захвата чем-то ещё (датчик давления). SG-90 нам хватало за глаза.

3. На схеме указан Li-ion и на 3.7в, а Вы пишете про Ni-MH 7.2в .. какой из них применен на самом деле? По Ni-Mh: стоит проверить "ток КЗ" аккумулятора. Они имеют тенденцию высыхать со временем и их внутреннее сопротивление при этом сильно растет. У меня есть около 30шт таких аккумуляторов, ток КЗ полностью заряженного аккумулятора не превышает .. 0.5 - 1А .. нормально в районе 10А. Если это так - выбросить и не вспоминать. Только не в мусорку .. сдайте куда положено.

4. Li-ion 18650 2200мач .. 3400мач, как правило хватает всему роботу и надолго. Но, они тяжелые .. около 50-54гр/шт. Токи отдачи тоже на уровне, и главное они .. не усыхают как Ni-MH.. Правда требует защиты от КЗ, а то говорят могут рвануть (сам не видел ни разу). На рынке очень много "подделок", брать только у проверенного поставщика.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Архат, 6 октября в Питер едете?

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Нет, мы уже никуда не едем, у нас новые интересы и увлечения. ;)

trembo
trembo аватар
Онлайн
Зарегистрирован: 08.04.2011

al072 пишет:

Какой лучше использовать Аккум для этих целей? Какой тип, емкость и напряжение выбрать для того чтобы хватило на практически непрерывное управление двумя сервоприводами MG995 в течение 30 мин?

100% Original for LG HG2 18650 3000mAh electronic cigarette rechargeable battery high-discharge, 30A high current + DIY nicke
http://s.aliexpress.com/IBnIZfaM

Брал недавно 6 штук для пылесоса.
Зверь!
И цена 2.5 за штуку с табами.

al072
Offline
Зарегистрирован: 20.04.2017

Arhat109-2 пишет:

1. Для начала стоит заглянуть в даташит и посмотреть какой ток тянет выход этой микросхемы. Насколько помню он не особо велик, чтобы напрямую подключать MG995. Даже мелкая SG90 может при желании отжирать около 0.8А, а эти сущестенно мощней.

2. Для захвата баночки кола-колы - это ну очень сильные сервы: 10-15кГ/см .. баночку сплющит легко, понадобится контроль усилия захвата чем-то ещё (датчик давления). SG-90 нам хватало за глаза.

3. На схеме указан Li-ion и на 3.7в, а Вы пишете про Ni-MH 7.2в .. какой из них применен на самом деле? По Ni-Mh: стоит проверить "ток КЗ" аккумулятора. Они имеют тенденцию высыхать со временем и их внутреннее сопротивление при этом сильно растет. У меня есть около 30шт таких аккумуляторов, ток КЗ полностью заряженного аккумулятора не превышает .. 0.5 - 1А .. нормально в районе 10А. Если это так - выбросить и не вспоминать. Только не в мусорку .. сдайте куда положено.

4. Li-ion 18650 2200мач .. 3400мач, как правило хватает всему роботу и надолго. Но, они тяжелые .. около 50-54гр/шт. Токи отдачи тоже на уровне, и главное они .. не усыхают как Ni-MH.. Правда требует защиты от КЗ, а то говорят могут рвануть (сам не видел ни разу). На рынке очень много "подделок", брать только у проверенного поставщика.

1. На китайский PCA9685 доташит к сожалению не нашёл, но судя по описанию на некоторых сайтах, максимальный выходной ток составляет 25mA. Как мне кажется  это слишком мало.. 

2. Эти сервы шли в комплекте с манипулятором, под sg90 нужен другой комплект креплений и т д. Буду уж работать с тем что есть.. банки ломать буду)))

3. После проверки Аккума на ток КЗ пишут что может сдохнуть Аккум.. жаль его убивать если он рабочий.

4. По факту используется NIMH 7.2v.

Раз схема и скетч вопросов не вызывает значит проблема походу в Аккуме.. буду заказывать более мощный и тестировать. 

 

 

Гриша
Offline
Зарегистрирован: 27.04.2014

al072 пишет:

Раз схема и скетч вопросов не вызывает значит проблема походу в Аккуме.. буду заказывать более мощный и тестировать.

честно, скетч даже не смотрел. хватило строчки про блок питания. Для проверки нужен осциллограф, полагаю даже звуковой карты должно хватить, чтобы увидеть просадку. Но карту нужно подготовить, прежде чем цеплять к схеме.