Re: Управление сервоприводом.
Господа.
Может быть поможете с возникшей проблемкой? Делаю моторезированный дисплей. По осям стоят 2 серво, один стоит нормально, другой перевернут вращается в другую сторону (!!!)
Пишу отдельно скетч для каждого серво все нормально работает. Как только пишу для обеих ничего не получается.
Пробовал писать по методике как в этой темке, то они начинаю дергаться и нет никакой плавности. Пробовал с библиотекой "servo.h". Там как только подключаешь второй серво позиционирование сразу же сбивается :(
Опыта явно не хватает. Писал по аналогии с разными примерами. Помогите сделать эту приблуду, 3-й день сижу уже на одном месте.
Re: Управление сервоприводом.
Нужно инвертировать сигнал step_on для второй сервы
Re: Управление сервоприводом.
ну правильно. есть пределы допустим от 600 до 2000 микросекунд для управления от положения закрыто до открыто. Вторая серво у меня управляется с одинаковым шагом в обратную сторону. Только правда другой переменной.
Chip, может я не совсем правильно тебя понял.
Сбой работы с первой серво со встроенной библиотекой наблюдается если вначале просто вписать servo2.attach(3);. Сам ничего не пойму почему так? ведь остальное остается без изменения и касается только servo1, а правильно позиционироваться она уже перестает.
Re: Управление сервоприводом.
Никто еще из запоя не вышел чтоб помочь? а то у меня мыслей не хватает. :(
Отдал другому человек попробовать. у него тоже не получается. Говорит что тоже самое получается. Дергается-тормозит.
З.ы.: По ходу пъессы спалил каким то чудом Мегу328. под рукой была мега8. Залил бутлоадер ардуино. Разница ощутима. Загружаю скетч в контроллер и жду секунд 10 начала выполнения. Раньше раза в 3-4 меньше надо было ждать. Так должно быть?
Re: Управление сервоприводом.
по поводу серв:
Если ардинка не должна ничего делать кроме движения серв, спокойно выдавай вручную импульсы на серву. Длительность импульса на серву от 0.8 мс до 2.4 (по-моему) мс. Между началами импульсов пауза порядка 20 мс. Последнее время может быть заметно больше 20мс, от этого зависит быстродействие сервы.
Посему делаешь ручную генерацию - поставил ногу в 1 - подождал микросекунды, скинул ногу. Поставил вторую - подождал - скинул. Потом тупо пауза 20мс.
2. Скорее всего мега 8 имеет не 16 МГц резонатор. По умолчанию мега8 имеет 1 мегагерц от внутреннего генератора, насколько я помню. Максимум - 8 МГц от внутреннего генератора, но там стоит по умолчанию делитель. Вообще быстродействие этих кристаллов на одной и той же частоте одинаковое. Более того, зачастую мега8 будет работать быстрее и код будет требовать меньше места из-за особенностей расположения регистров.
И еще - учти, что фьюзы надо для разных контроллеров разные задавать. Может дело в этом.
зы. Да, еще... По моему опыту спалить мегу довольно сложно. У нее можно сжечь ноги, мне даже удавалось сжечь часть еепрома (типа каждый нулевой бит в каждом 8 байте), но сжечь в ноль лично мне не удалось ни разу.
Re: Управление сервоприводом.
Цитата:
Сообщение от
SBorovkov
по поводу серв:
Если ардинка не должна ничего делать кроме движения серв, спокойно выдавай вручную импульсы на серву. Длительность импульса на серву от 0.8 мс до 2.4 (по-моему) мс. Между началами импульсов пауза порядка 20 мс. Последнее время может быть заметно больше 20мс, от этого зависит быстродействие сервы.
Серво вот такая HS-125MG. Питаю от 6В. Время реакции должна быть нормальная.
Когда отлаживал углы, управлял по одной серво отдельно. Для плавности хода изменял угол на 1 градус и делал задержку в 50мс. Все выглядело замечательно. Был уверен что когда их будет две, задержку уменьшу ну пусть даже до 10-20мс. Но не тут то было. Ставил задержку больше, чтоб посмотреть как они себя ведут в паре. И такое ощущение что они тянут в разные стороны (крышка дергается) Думал так и есть и просто не свел углы поворота. Убрал команду записи во вторую серво и первая (одна) поворачивается дерганьем. Такое ощущение что задержка между импульсами не 20мс а 200. Вот и хочу что кто нить предложил свой вариант.
Цитата:
Посему делаешь ручную генерацию - поставил ногу в 1 - подождал микросекунды, скинул ногу. Поставил вторую - подождал - скинул. Потом тупо пауза 20мс.
Так и делаю
Цитата:
2. Скорее всего мега 8 имеет не 16 МГц резонатор. По умолчанию мега8 имеет 1 мегагерц от внутреннего генератора, насколько я помню. Максимум - 8 МГц от внутреннего генератора, но там стоит по умолчанию делитель. Вообще быстродействие этих кристаллов на одной и той же частоте одинаковое. Более того, зачастую мега8 будет работать быстрее и код будет требовать меньше места из-за особенностей расположения регистров.
Дык фюзы я прописал для работы с внешним резонатором, а на ардуино он 16Мгц. Разницы в скорости работы контроллера я не ощутил. Все идентично. Но вот перед стартом большаааая пауза.
Цитата:
И еще - учти, что фьюзы надо для разных контроллеров разные задавать. Может дело в этом.
Фюзы прописал согласно инструкции c сайта http://arduino.cc/en/Hacking/Bootloader
Цитата:
зы. Да, еще... По моему опыту спалить мегу довольно сложно. У нее можно сжечь ноги, мне даже удавалось сжечь часть еепрома (типа каждый нулевой бит в каждом 8 байте), но сжечь в ноль лично мне не удалось ни разу.
Сам не знаю как получилось. Ничего не коротил. Вечером убрал на полку, на следующий день достал и уже не работает. Начал греться как кипятильник.
Re: Управление сервоприводом.
Ты пока сними сервы, добейся, чтобы они не зацепленные друг за друга физически начали работать как надо. Я так понял, что сейчас они у тебя в готовом устройстве стоят.
Хотя, если честно, я бы не рекомендовал такую работу серв. Это не мотор-редукторы, а умные механизмы. Представь, что у тебя по какой-либо причине возникло рассогласование между сервами. Пусть небольшое, порядка 2-3 градусов в какой-либо зоне. Для этого достаточно плохо работающего переменника в серве. Дальше сервы начнут борьбу друг с другом.
давай код, мож разберемся. Лучше - код всего проекта, упрощенного до упора.
Еще: 6 вольт для AVR - это перебор, у него 6 вольт - абсолютный максимум напряжения, выше которого он может банально сгореть. Серва на управляющий вывод не дает напряжение, но всякое бывает. Выводы рядом... Если есть возможность, лучше питай сервы от 5 вольт, усилие уменьшится и скорость тоже, но насколько я понимаю, в данном случае это не очень принципиально.
Почитай про паразитное питание, полезно http://easyelectronics.ru/parazitnoe-pitanie.html
Еще - учти, что когда ты монитор доводишь до крайнего положения, импульсы на сервы надо либо прекращать (тем самым выключая серву), либо включать на некоторое время, а затем делать большую паузу. Дело в том, что включенная серва (на которую идут импульсы) при малейшем отклонении начинает пытаться возвращать качалку в правильное положение. При этом переменный резистор внутри сервы находится почти в одном и том же положении и относительно быстро стирает покрытие. В результате серва через некоторое время начинает "дрожжать", контакт пропадает и серва пытается найти нужное положение. Этим она стирает остатки покрытия.
Re: Управление сервоприводом.
Цитата:
Сообщение от
SBorovkov
Ты пока сними сервы, добейся, чтобы они не зацепленные друг за друга физически начали работать как надо. Я так понял, что сейчас они у тебя в готовом устройстве стоят.
Мощности серво хватает тянуть рамку без монитора и отключенную серво. Но когда ставишь монитор вес существенно увеличивается. Для запаса мощности я и воткнул вторую (в холодное время одной тем более хватать не будет).
Нормальной работы каждой серво я добился в собранном девайсе без монитора подключая их по одной и даже померил углы.
Цитата:
Хотя, если честно, я бы не рекомендовал такую работу серв. Это не мотор-редукторы, а умные механизмы. Представь, что у тебя по какой-либо причине возникло рассогласование между сервами. Пусть небольшое, порядка 2-3 градусов в какой-либо зоне. Для этого достаточно плохо работающего переменника в серве. Дальше сервы начнут борьбу друг с другом.
это самое страшное. но они часто так работать не будут, думаю что должно хватить на долго.
Цитата:
давай код, мож разберемся. Лучше - код всего проекта, упрощенного до упора.
Еще: 6 вольт для AVR - это перебор, у него 6 вольт - абсолютный максимум напряжения, выше которого он может банально сгореть. Серва на управляющий вывод не дает напряжение, но всякое бывает. Выводы рядом... Если есть возможность, лучше питай сервы от 5 вольт, усилие уменьшится и скорость тоже, но насколько я понимаю, в данном случае это не очень принципиально.
AVR питаю строго от 5В. а сервы от 6В для максимального усилия!!!
Цитата:
Почитай про паразитное питание, полезно
http://easyelectronics.ru/parazitnoe-pitanie.html
Еще - учти, что когда ты монитор доводишь до крайнего положения, импульсы на сервы надо либо прекращать (тем самым выключая серву), либо включать на некоторое время, а затем делать большую паузу. Дело в том, что включенная серва (на которую идут импульсы) при малейшем отклонении начинает пытаться возвращать качалку в правильное положение. При этом переменный резистор внутри сервы находится почти в одном и том же положении и относительно быстро стирает покрытие. В результате серва через некоторое время начинает "дрожжать", контакт пропадает и серва пытается найти нужное положение. Этим она стирает остатки покрытия.
Держать на серво моник постоянно это не реально конечно. Они используются для открытия моника (время работы секунды 2-3). Дальше включается 3-я серво которая подставляет палец под упор. (это где то еще 1 секунда). Все дальше все серво отключаются.
Для того чтоб моник убрать все происходит в обратном порядке.
Re: Управление сервоприводом.
Попробую все таки вытащить серво из механизма чтоб исключить механическую нагрузку.
Re: Управление сервоприводом.
круто ты к вопросу подошел, уважаю.
Я помню отлаживал библиотеку серв на с++, без среды ардуины. Замучался - мини серва работает, а полнормазмерную серву колбасит, потребление у них огромное, КРЕН в перегрев через 2-3 секунды уходил. На те же контакты подключаю мелкую - все в шоколаде, крутится туда-сюда. Осциллографа, естественно, нет. Сидел в дебаггере, часа три убил на это дело. А оказалось все просто - два канала серв на одну ногу слали сигналы. Импульсы шли то короткие, то длинные (сервы должны были быть в разных положениях). И минисерва это дело фильтровала как-то, а полноразмерная - нет. Вот и на каждом импульсе (под 100 раз в секунду) она то в одну сторону мотор двинет на полную, то в другую.
А время 3-5 секунд (с запасом) на каждое открытие монитора - это вечная конструкция получится. Серв (если они нормальные, а у тебя хорошие сервы) хватает как минимум на год постоянных полетов. А в полете импульсы на каждую серву идут постоянно.