roboforum.ru

Технический форум по робототехнике.

Как отключить поворот servo при инициализации в Ардуино

Как отключить поворот servo при инициализации в Ардуино

demon112 » 12 фев 2013, 14:05

Ребят, подскажите новичку. В момент подачи питания ардуино переводит серваки в нулевое положение при том еще и рывками. подскажите как с этим бороться и почему это происходит. P.S. ардуино мега.

Re: Как отключить поворот servo при инициализации в Ардуино

=DeaD= » 12 фев 2013, 14:50

Ответ на ваш вопрос содержится в вашем вопросе:
1. Серво переводится в 0 положение вероятно потому что вы сами говорите перевести их в нулевое положение :)
2. Как с этим бороться - не говорить переводить в нулевое положение :)

А если серьезно - вы в момент включения знаете в каком положении серва или нет?

Re: Как отключить поворот servo при инициализации в Ардуино

demon112 » 12 фев 2013, 15:12

"Серво переводится в 0 положение вероятно потому что вы сами говорите перевести их в нулевое положение "

даже пробовал загружать пример из ардуино с морганием диода. при подключении питания моторчик на несколько градусов смещается (подключал в любые цыфровые пины). Когда подключал 6 сервоприводов, они в начальное положение переходили. в коде писал примерно так

#include <Servo.h>

Servo servo1l, servo2l, servo3l, servo1r, servo2r, servo3r;

void setup()
{
servo1l.attach(52);
servo2l.attach(53);
servo3l.attach(23);

servo1r.attach(25);
servo2r.attach(24);
servo3r.attach(51);
}

void loop()
{
}

Re: Как отключить поворот servo при инициализации в Ардуино

=DeaD= » 12 фев 2013, 15:18

И? Что вы хотите то? Как хотите чтобы ваша конструкция себя вела?

Re: Как отключить поворот servo при инициализации в Ардуино

demon112 » 12 фев 2013, 15:28

Хм, нашел, при подключении ЮСБ к ноутбуку прроисходит эта проблема, когда же подключил к зарядке от телефона - все нормально работало. мб это из за недостатка питания?

Re: Как отключить поворот servo при инициализации в Ардуино

Madf » 12 фев 2013, 16:01

Скорее из-за архитектуры аурдины. )

Re: Как отключить поворот servo при инициализации в Ардуино

=DeaD= » 12 фев 2013, 16:09

demon112, так как вы хотите чтобы ваша конструкция себя вела?

Сервы не передают наружу информацию о своем текущем положении + дергаются некоторые при подаче питания независимо от того, как ими управляют - арудиной, чем-то еще или вообще никак.

Re: Как отключить поворот servo при инициализации в Ардуино

demon112 » 12 фев 2013, 16:18

Ну в коде который я написал выше - я хотел чтоб сервы просто стояли на месте, вместо этого (при подключении через юсб к пк) они себя вели довольно странно - переводили свое состояние в положение «ноль». Когда писал в loop() некий код типо s1.write(90); delay(500): s1.write(180); и т.п. то при подключении питания от пк они сначало думали потом переводились в состояние 0 и потом только начинался выполняются цыкл loop. Щас вот подключил к зарядке - таких проблем не стало...

Re: Как отключить поворот servo при инициализации в Ардуино

Myp » 12 фев 2013, 16:55

1. перед выключением всего, запоминаем положение сервы.
2. включаем ардуину и выдаем команду на запомненное положение сервы
3. включаем питание на серву.

Добавлено спустя 1 минуту 33 секунды:
demon112 писал(а):Ну в коде который я написал выше - я хотел чтоб сервы просто стояли на месте, вместо этого (при подключении через юсб к пк) они себя вели довольно странно

:ROFL: :ROFL:
ну естественно.
им тупо нехватает анпряжения и у тебя всё глучит и перезапускается при пуске.
USB выдаёт мизерный ток

Re: Как отключить поворот servo при инициализации в Ардуино

Andrei_SPb » 13 фев 2013, 00:53

Сталкивался с похожей проблемой: при подаче напряжения серва, подключенная к ардуине начинала дёргаться в течении нескольких секунд, стремясь выйти за пределы рабочей зоны, так, что трещали шестерни. В программе, при этом, была жёстко прописана команда выйти в середину. Думаю, это происходило из-за работы загрузчика. Питание на серву подаётся сразу, а программа начинает работать только после отработки загрузчика. В течении времени работы загрузчика серва не получает управляющего сигнала и ведёт себя неадекватно. В таком случае, решением может быть включение питания серве после запуска программы с другого выхода ардуины через транзистор или реле, например.

Re: Как отключить поворот servo при инициализации в Ардуино

CyberLab » 13 фев 2013, 01:26

Скорее всего это происходит по тому, что пин контроллера во время работы загрузчика находится в Z состоянии
Попробуйте подтянуть управляющий пин сервы резистором 1к к GND

Re: Как отключить поворот servo при инициализации в Ардуино

Kitam1n » 13 фев 2013, 01:29

Andrei_SPb писал(а):...серва не получает управляющего сигнала и ведёт себя неадекватно.

Прочел и напомнилось... при наличии питания в движение серву может привезти любая помеха и наводка, достаточно дотронуться рукой до сигнального провода или подцепить к нему проводок-удленитель, даже "висение" сигнального провода в воздухе может вызывать конвульсии. Так вот может полный бред предложу, а что если притянуть сигнальный провод к земле через 100к?
:P

Re: Как отключить поворот servo при инициализации в Ардуино

Andrei_SPb » 13 фев 2013, 21:31

CyberLab писал(а):Скорее всего это происходит по тому, что пин контроллера во время работы загрузчика находится в Z состоянии
Попробуйте подтянуть управляющий пин сервы резистором 1к к GND

Kitam1n писал(а): а что если притянуть сигнальный провод к земле через 100к?
:P

Хорошая идея, нужно будет попробовать...


Rambler\'s Top100 Mail.ru counter