Технический форум по робототехнике.
demon112 » 12 фев 2013, 14:05
Ребят, подскажите новичку. В момент подачи питания ардуино переводит серваки в нулевое положение при том еще и рывками. подскажите как с этим бороться и почему это происходит. P.S. ардуино мега.
=DeaD= » 12 фев 2013, 14:50
Ответ на ваш вопрос содержится в вашем вопросе:
1. Серво переводится в 0 положение вероятно потому что вы сами говорите перевести их в нулевое положение
2. Как с этим бороться - не говорить переводить в нулевое положение
А если серьезно - вы в момент включения знаете в каком положении серва или нет?
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()
{
}
=DeaD= » 12 фев 2013, 15:18
И? Что вы хотите то? Как хотите чтобы ваша конструкция себя вела?
demon112 » 12 фев 2013, 15:28
Хм, нашел, при подключении ЮСБ к ноутбуку прроисходит эта проблема, когда же подключил к зарядке от телефона - все нормально работало. мб это из за недостатка питания?
Madf » 12 фев 2013, 16:01
Скорее из-за архитектуры аурдины. )
=DeaD= » 12 фев 2013, 16:09
demon112, так как вы хотите чтобы ваша конструкция себя вела?
Сервы не передают наружу информацию о своем текущем положении + дергаются некоторые при подаче питания независимо от того, как ими управляют - арудиной, чем-то еще или вообще никак.
demon112 » 12 фев 2013, 16:18
Ну в коде который я написал выше - я хотел чтоб сервы просто стояли на месте, вместо этого (при подключении через юсб к пк) они себя вели довольно странно - переводили свое состояние в положение «ноль». Когда писал в loop() некий код типо s1.write(90); delay(500): s1.write(180); и т.п. то при подключении питания от пк они сначало думали потом переводились в состояние 0 и потом только начинался выполняются цыкл loop. Щас вот подключил к зарядке - таких проблем не стало...
Myp » 12 фев 2013, 16:55
1. перед выключением всего, запоминаем положение сервы.
2. включаем ардуину и выдаем команду на запомненное положение сервы
3. включаем питание на серву.
Добавлено спустя 1 минуту 33 секунды:demon112 писал(а):Ну в коде который я написал выше - я хотел чтоб сервы просто стояли на месте, вместо этого (при подключении через юсб к пк) они себя вели довольно странно
ну естественно.
им тупо нехватает анпряжения и у тебя всё глучит и перезапускается при пуске.
USB выдаёт мизерный ток
Andrei_SPb » 13 фев 2013, 00:53
Сталкивался с похожей проблемой: при подаче напряжения серва, подключенная к ардуине начинала дёргаться в течении нескольких секунд, стремясь выйти за пределы рабочей зоны, так, что трещали шестерни. В программе, при этом, была жёстко прописана команда выйти в середину. Думаю, это происходило из-за работы загрузчика. Питание на серву подаётся сразу, а программа начинает работать только после отработки загрузчика. В течении времени работы загрузчика серва не получает управляющего сигнала и ведёт себя неадекватно. В таком случае, решением может быть включение питания серве после запуска программы с другого выхода ардуины через транзистор или реле, например.
CyberLab » 13 фев 2013, 01:26
Скорее всего это происходит по тому, что пин контроллера во время работы загрузчика находится в Z состоянии
Попробуйте подтянуть управляющий пин сервы резистором 1к к GND
Kitam1n » 13 фев 2013, 01:29
Andrei_SPb писал(а):...серва не получает управляющего сигнала и ведёт себя неадекватно.
Прочел и напомнилось... при наличии питания в движение серву может привезти любая помеха и наводка, достаточно дотронуться рукой до сигнального провода или подцепить к нему проводок-удленитель, даже "висение" сигнального провода в воздухе может вызывать конвульсии. Так вот может полный бред предложу, а что если притянуть сигнальный провод к земле через 100к?
Andrei_SPb » 13 фев 2013, 21:31
CyberLab писал(а):Скорее всего это происходит по тому, что пин контроллера во время работы загрузчика находится в Z состоянии
Попробуйте подтянуть управляющий пин сервы резистором 1к к GND
Kitam1n писал(а): а что если притянуть сигнальный провод к земле через 100к?
Хорошая идея, нужно будет попробовать...