Проблемы с сервомашинкой.

MAFia
Offline
Зарегистрирован: 26.10.2011

Доброго всем времени суток! Пытался подключит к arduino mega вот такую серву: Hobbiking HK15178. Данная серва имеет ограничение угла в 180 градусов. При включении ее (Черный-Gnd, Желтый-D0(D9),Красный- +6в внешнего питания, Gnd - -6в внешнего питания) и при подаче ЛЮБОГО угла (хоть 0, хоть 90, хоть 180, хоть 30), она поворачивается до упора на 180 градусов. В чем может быть причина? 
 

Prol
Offline
Зарегистрирован: 19.10.2011

одноразовая что ли?:)

Adessit
Adessit аватар
Offline
Зарегистрирован: 12.04.2011

Черный-Gnd, Желтый-D0(D9),Красный- +6в 

в D0 - нельзя включать это пины Serial. В ставьте в пин с PWM например. Дальше попробуйте примеры из ардуино IDE с сервами. 

MAFia
Offline
Зарегистрирован: 26.10.2011

Спасибо. Но у Mega ШИМ возможны на выходах с 0 до 13. И еще я подключал к 9-му... Вообщем проблема не решена... 

leshak
Offline
Зарегистрирован: 29.09.2011

>В чем может быть причина?

Да в чем угодно. От неисправной машинки, до банального "забыл delay вставить". Схема и скетч. Может кто-то что-то и "заподозрит", не пребегая к телепатии.

Я, например, абсолютно не понял что у вас творится с землей и -6V. Вот подали вы на D0 зашимованный 5v, но это пять вольт между чем и чем будет? 

Да и вообще, откуда тут "-6V" появились? Можете даташит дать на серву? Из тех описаний что я видел она 6-ти вольтовая. Значит если вы вогнали в нее 12 вольт (разница между +6 и -6) то шутка Prol об одноразовости сервы уже может и не быть шуткой. И возможно вы пытаетесь добится вменяемости от полутрупа.

MAFia
Offline
Зарегистрирован: 26.10.2011

 

Код: #include <Servo.h>
Servo myservo;
void setup(){
myservo.attach (9);

delay (3000);
myservo.write(90);
}
void loop(){
}

Извиняюс за качество, под рукой кроме Paint ничего не было...

 

step962
Offline
Зарегистрирован: 23.05.2011

MAFia пишет:

Код: #include <Servo.h>

 

Servo myservo;
void setup(){
myservo.attach (9);

delay (3000);
myservo.write(90);
}
void loop(){
}

Извиняюс за качество, под рукой кроме Paint ничего не было...

Ну все правильно - в setup сервомашинка устанавливается на 90 градусов и дальше ничего не делает.

Хотите, чтобы вжикало - поставьте в loop что-нибудь вроде

for(i=5;i<=180;i+=5) {

  servo.write(i);

  delay(20);

}

Может быть и получите желаемый результат...

leshak
Offline
Зарегистрирован: 29.09.2011

 >Извиняюс за качество

Отличное качество. Главное что понятно и однозначно. И что мое предположение про 12v, к счастью, не подтвердилось (по текстовому описанию было похоже).

К сожалению, "все выглядит правильно". Поэтому следующие подозрение, все-таки, "машинка дефектная". 

Ну разве что еще попробовать, в качестве последней надежды, собрать схему "один в один" из туториала. Без "внешнего питания" (от 5v она тоже должна заработать, просто чуть медленее будет "на позицию" выходить).

Было бы неплохо найти на нее даташит. Вдруг у нее какой-то нестандартный управляющий PWM, хотя погуглил чуток, никаких упоминаний про "нестандартность" не нашел.

А если сделать ей только attach, без write. Как она себя ведет? Стоит? При этом небольшая вибрация рукой чувтсвуется?

От "безысходности", можно попрбовать углы больше 180 (или даже 360). Отрицательные. Может у нее резистор обратной связи по положению навернулся-врет и получится его "програмно обхитрить".

 

leshak
Offline
Зарегистрирован: 29.09.2011

 >Ну все правильно - в setup сервомашинка устанавливается на 90 градусов

В первом посте было, что при этом, в реальности,  "" она поворачивается до упора на 180 градусов". Что как-бы "правильно" назвать нельзя. Сказали 90, а получили 180.

MAFia
Offline
Зарегистрирован: 26.10.2011

>"правильно" назвать нельзя". А кто правильно назвал? Но ведь я пытался и в loop() писать код. Что-то вроде этго:

int ang = 0;
//==============
//...
//==============
loop(){
if (ang < 180){
   {ang = ang +10;
    myservo.write(ang);
    delay(300);}
if (ang==180){
    ang=0;
    delay (1000);
    myservo.write(ang);
    delay(1000);}
}

Приведен лишь фрагмент кода.

MAFia
Offline
Зарегистрирован: 26.10.2011

Не правильно! Если допустить, что тот угол, на который она повернулась, это для нее 90, то ПОЧЕМУ ОНА ПОВОРАЧИВАЕТСЯ ТАК ЖЕ при подачи угла ы в 0, 180, 45, 30 итп?

leshak
Offline
Зарегистрирован: 29.09.2011

 2Mafia:

Я же отвечал step92. Который сказал "все правильно", а это не так, судя по тому что вы указали в первом посте.

То есть "все правильно" в написанных вами скетчах, но "серва ведет себя не правильно". Поведение сервы не соотвествует тому что от нее попросили в скетче.

Если есть возможность где-то "отдолжить/нахоботить" другую аналогичную серву - попробуйте. Просто что-бы четче локализировать "где проблема".

Собирать по схеме из туториала (без внешнего питания, питать от 5v ардуины) пробовали?

MAFia
Offline
Зарегистрирован: 26.10.2011

P.S. leshak,  отвечаю на вопросы:

1) Без подачи сигналов она стоит в текущей позиции, только дернется при вкл градусов на 5.

2) При питании от Ардуино, она вообще не двигалась. Странно, может я конечно неправильно воткнул (не хотел спалить, вот по невнимательности и сунул не туда).

Можно еще написать самому через ШИМ, без либы. Я на днях степпер подключал, он с либой не захотел работать( ему надо послед. включать обмотки было, а в библиотеке по 2). Может и сервой какая-то такая фигня.

P.P.S. Серва не моя, друга. Она совсем новая, не использованная. Так что сгоревшей\сломанной быть вроде  не может.

leshak
Offline
Зарегистрирован: 29.09.2011

 >Без подачи сигналов она стоит в текущей позиции

Ну это в, какой-то мере, повышает вероятность ее исправности.

>Так что сгоревшей\сломанной быть вроде не может

Ну вы сами употребили слово "вроде" :) Но что же еще думать? Если скетч выглядит правильным, нарисованая схема - тоже. Остаются варианты:

  1. Дефектная серва
  2. Серва использует не стандартные тайминги
  3. Вы не внимательно подключили, нарисованая вами схема не соотвесвует реальности подключения (учитывая провал со стандартным примером это тоже вероятно).

 

>Странно, может я конечно неправильно воткнул

А вот это действительно странно. Смысл "попробовать как  в туториале", как раз и был в том что-бы исключить вероятность неправильного подключения.

Я крутил сервы (правда неизвестных кровей) "по туториалу", причем саму мегу 1280 питал от USB, даже не внешним блоком - ничего не погорело. Вот две - уже не рискнул.

>Можно еще написать самому через ШИМ

Да вообщем-то либа через него же и работает. Лучше вначале попробуйте поигратся с "максимальным, минимальным" таймингом. Метод аттач может принимать два дополнительных параметра. Так сказать "калибровочных". Дефолтные их значения 544, и 2400

Насколько я понимаю это и есть значения какой PWM либа будет выдавать на 0 градусов, а какой на 180. Все остальное по пропорции между ними.