roboforum.ru

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

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

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

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

Сообщение demon112 » 12 фев 2013, 14:05

Ребят, подскажите новичку. В момент подачи питания ардуино переводит серваки в нулевое положение при том еще и рывками. подскажите как с этим бороться и почему это происходит. P.S. ардуино мега.
demon112
 
Сообщения: 8
Зарегистрирован: 12 фев 2013, 13:47

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

Сообщение =DeaD= » 12 фев 2013, 14:50

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

А если серьезно - вы в момент включения знаете в каком положении серва или нет?
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

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()
{
}
demon112
 
Сообщения: 8
Зарегистрирован: 12 фев 2013, 13:47

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

Сообщение =DeaD= » 12 фев 2013, 15:18

И? Что вы хотите то? Как хотите чтобы ваша конструкция себя вела?
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

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

Сообщение demon112 » 12 фев 2013, 15:28

Хм, нашел, при подключении ЮСБ к ноутбуку прроисходит эта проблема, когда же подключил к зарядке от телефона - все нормально работало. мб это из за недостатка питания?
demon112
 
Сообщения: 8
Зарегистрирован: 12 фев 2013, 13:47

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

Сообщение Madf » 12 фев 2013, 16:01

Скорее из-за архитектуры аурдины. )
Madf
 
Сообщения: 3298
Зарегистрирован: 03 янв 2012, 12:55
Откуда: Москва
прог. языки: VB6, BASCOM, ASM...

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

Сообщение =DeaD= » 12 фев 2013, 16:09

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

Сервы не передают наружу информацию о своем текущем положении + дергаются некоторые при подаче питания независимо от того, как ими управляют - арудиной, чем-то еще или вообще никак.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

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

Сообщение demon112 » 12 фев 2013, 16:18

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

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

Сообщение Myp » 12 фев 2013, 16:55

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

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

:ROFL: :ROFL:
ну естественно.
им тупо нехватает анпряжения и у тебя всё глучит и перезапускается при пуске.
USB выдаёт мизерный ток
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

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

Сообщение Andrei_SPb » 13 фев 2013, 00:53

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

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

Сообщение CyberLab » 13 фев 2013, 01:26

Скорее всего это происходит по тому, что пин контроллера во время работы загрузчика находится в Z состоянии
Попробуйте подтянуть управляющий пин сервы резистором 1к к GND
Аватара пользователя
CyberLab
 
Сообщения: 319
Зарегистрирован: 02 фев 2013, 12:50
Откуда: Москва

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

Сообщение Kitam1n » 13 фев 2013, 01:29

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

Прочел и напомнилось... при наличии питания в движение серву может привезти любая помеха и наводка, достаточно дотронуться рукой до сигнального провода или подцепить к нему проводок-удленитель, даже "висение" сигнального провода в воздухе может вызывать конвульсии. Так вот может полный бред предложу, а что если притянуть сигнальный провод к земле через 100к?
:P
Лучше переесть, чем недоспать.
Аватара пользователя
Kitam1n
 
Сообщения: 343
Зарегистрирован: 30 мар 2012, 16:39
Откуда: Москва
прог. языки: C#, Си, php
ФИО: Влад

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

Сообщение Andrei_SPb » 13 фев 2013, 21:31

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

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

Хорошая идея, нужно будет попробовать...
Аватара пользователя
Andrei_SPb
 
Сообщения: 45
Зарегистрирован: 27 дек 2010, 02:50
Откуда: Санкт-Петербург


Вернуться в Новичкам или основы основ роботостроения.

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 23