Усовершенствованный сервопривод Чена
arisov77,куда Вы пропали- ждем с нетерпением , работает станок ?
Начну с того, что изготовленные мною 2 сервоконтроллера успешно работают более месяца (по нескольку часов в рабочие дни).
Но для успешной работы пришлось в процессе монтажа-наладки устранить 2 программных «глюка». Первый проявлялся в виде кратковременного останова движения во время быстрых перемещений (4м/мин) и был быстро устранён – увеличением времени срабатывания WatcgDog таймера до 125ms. («Подсмотрел» у UHU rcopen.com/forum/f110/topic40457/185 rev 2.17, видимо у него это тоже происходило в первых версиях).
Второй «глюк» изрядно мне «потрепал нервишки». Проявлялся в виде перехода в режим “ServoError”, причём это могло как во время движения, так и во время «стоянки», но чаще всего (в 95%) в момент начала первого движения после включения питания. Мог и сразу без движения, после подачи питания. Проявлялось всё это очень редко - 3-5 раз(а) в день (иногда «везло»-было чаще), а иногда вообще ни разу не было. Происходило это в обоих приводах, независимо друг от друга.
Путём написания различных тестовых подпрограмм и считыванием информации в этот момент ServoTuning выяснилось, что происходила ошибка из большого рассогласования заданного и фактического положений (в подпрограмме +/-20000 Step). Исключение этой подпрограммы анализа рассогласования дало бы только то, что привод «ускакал бы семимильными шагами» 😃 к новой позиции. А если учесть что рассогласование в этот момент достигало несколько миллионов шагов, то «поля» может и не хватить.
Также выяснил, что такое количество «ложных» шагов выдавали цепи энкодера. Причём эти шаги всегда имели отрицательное значение. С «таймерной» прошивкой рассогласование было существенно меньше (20 000-30 000шагов), что косвенно подтверждает, что с прошивкой с прерываниями по компаратору сервопривод будет «шустрее».
Установка различных конденсаторов в цепях энкодера не помогла. Пробовал в подпрограмме обработке прерывания от компаратора ANA_COMP ввести программную фильтрацию (трёхкратный опрос и проверка на равенство с предыдущим состоянием) – тоже не помогло. Задержка при включении тоже не помогает.
Что конкретно помогло, я так до конца и не понял, т.к. нормальная работа стала возможной только после «группового» изменения в программе (переустановка в первоначальной инициализации, сброс флага прерывания от компаратора, очистка некоторых регистров, …). Кстати у UHU тоже была перестановка последовательности инициализации (rev 2.16). Интересно как потом Uli их обновлял, тем кому уже продал старые?
Предположительно помогла очистка регистров zl и zh. Выяснять конкретную причину не стал (из–за недостатка времени). Так что просто выкладываю новую, исправленную прошивку под AtMega88 с опросом энкодера по прерываниям от компаратора. В ней также исправлены несколько замеченных мною багов, которые на работу сервоконтроллера никак не влияли. В исходнике есть их описание и настройки под мои приводы.
Если, всё таки найдутся желающие повторить, то для повышения быстродействия в подпрограмме ANA_COMP можно отключить программную фильтрацию (переписать из предыдущей версии прошивки). Она хоть и не помогла в борьбе с «ложным» ServoError, но т.к. у меня энкодер с низким разрешением (240имп/об), то я её оставил («кашу маслом не испортишь»).
Самое главное из-за чего собственно я и начал переделку прошивки – «слёта» EEPROM ни разу не было!
По прошивке вроде всё, если кому надо скомпелирую c этими изменениями под AtMega8 и под AtMega88 с опросом энкодера по таймеру или без “программной фильтрации” по входу энкодера, но без 100% гарантии работоспособности, т.к. проверить не на чем. Если что не так, опишите «симптомы», исправлю и снова Ваше тестирование.
К сожалению, в схеме токового ограничения обнаружил свою ошибку. electronix.ru/forum/index.php?showtopic=58750
В момент когда открыты два нижних транзистора ток самоиндукции от двигателя «замыкается» через эти транзисторы «минуя» токоизмерительный резистор и соответственно контроля тока нет. Это может вывести из строя транзисторы. У меня установлены транзисторы с «запасом», поэтому из-за этого последствий пока нет, надеюсь, что и не будет и переделывать работающий конструктив не буду.
Ещё раз обращаю внимание, что при наличии даже небольшого люфта между валом двигателя и энкодером сервопривод нормально работать не будет. У меня на одной оси люфт есть (который без «сёрьезной» мех. переделке мне не удалось устранить) и в совокупности с изношенной местами передачей шестерня-рейка это вызывает рывки (дёрганья) на медленных скоростях. Эти рывки всегда проявляются в одних и тех же местах относительно рейки. Если в этот момент привод «подпереть» руками, то подача идёт ровно. На другой (многократно тяжелее первой) всё идет плавненько и ровненько. Недавно оператор, который раньше работал на этой газорезательной машине рассказал, что так было и до замены сервопривода. По одной оси рез ровный, по другой – не совсем good. Делаю вывод, что сервоконтроллер не виноват. Пока качество получаемых деталей заказчика устраивает и в случае чего они пообещали сами устранить все люфты.
До снятия видео всё никак «руки не дойдут», это надо опять ехать, снимать кожуха, чтобы показать, что именно эти платы крутят движки…
По поводу глюков с FT232 при работе с сервоконтроллером кое-что написано здесь kazus.ru/forum/topics/14286.html
Кстати, вот появился симпатичный вариант этого сервоконтроллера www.c-n-c.cz/viewtopic.php?t=2395 и www.cnczone.com/forums/showthread.php?t=69640.
Наконец то хоть кто-то повторил. А то я думал, что мне это только одному надо.
Выкладываю оттуда схему с платой.
Классно ! А есть вариант платы в формате .lay или .pcb чтобы можно было ее отфрезеровать 😃 ?
Пока в таком формате нет. Переведите – будет.
А прикольно придумано чешским товарищем наклеить рисунок с расположением деталей на плату. Никакой шелкографии не надо.
P.S.: Самая первая моя конструкция на печатной плате (в школьные годы) была из книги «Конструкции советских и чехословацких радиолюбителей». 😃
Живет товарищ в Словакии,недалеко от Украинской границы,если внимательно читать,можно понять что он пишет.А что нужно конкретно перевести?
P.S.Увлекается электроникой и рыбалкой,даже на плате напоминание оставил.
Ну, тогда извиняюсь – словацкий товарищ.
Кстати, если в Google выбрать словацкий вместо чешского язык, то переводит гораздо лучше. А этот форум чешский или словацкий? Просто окончание .cz - я почему то подумал, что чешский.
Виктор Петрович – в формате .lay или .pcb люди пока не разговаривают:). Это надо из pdf формата перевести в выше указанные.
Об этих форматах спрашивал STEPMOTOR,CZ-чешский сайт,автор pajac(паяющий) живет в Словакии,могу Вас познакомить,люди приветливые.Я не понял вопроса,думал надо перевести какой либо текст(пять лет жил там).Layot5 пользуюсь.
Перевел платку с c-n-c.cz в лаут …
Перевел платку с c-n-c.cz в лаут …
о супер ! спасибо ! будем пробовать 😃
Перевел платку с c-n-c.cz в лаут …
Зазоры между дорожками местами малые, при ЛУТ возможно “слипание”. Насчёт фрезеровки - я сомневаюсь, что получиться.
И шаблон надо отключить, а то при загрузке выскакивает напоминание. Но всё равно - спасибо!
кому нужны экодеры для данного проекта, можно взять тут на распродаже 😃
prst.ru/news/list.php?fn_mode=fullnews&fn_id=23 любые по 500 руб.
я взял пару инкрементальных на 1024 имп на оборот на 1000 и на 500 небыло. там есть но напряжение питания не 5в.
arisov77, возможно ли ,собрать прошивку для ATmega48, хотелось бы опробовать именно на ней …
возможно ли энкодеры заменить на цыфровые (магнитные) линейки как на http://WWW.yadro.de
arisov77, возможно ли ,собрать прошивку для ATmega48, хотелось бы опробовать именно на ней …
Вот попробуйте, должна работать.
возможно ли энкодеры заменить на цыфровые (магнитные) линейки как на http://WWW.yadro.de
Насчёт линеек моё мнение такое - если будет даже небольшой люфт между линейкой и валом двигателя, то настроить сервопривод будет очень трудно, движок будет «дрожать», скорее всего с «любительской» механикой – невозможно.
Сейчас работаю над новым вариантов сервоконтроллера с кварцевым резонатором (в предыдущих версиях у меня стоял керамический резонатор) и FUSE биты для AtMega88 лучше установить немного по другому.
Ведь рулевые машинки работают и с люфтами
Ведь рулевые машинки работают и с люфтами
Как устроены рулевые машинки, я не знаю, но где-то видел описание одной из них и насколько я помню, там в качестве датчика положения используется переменный резистор.
Pájač с чешского форума любезно предоставил G-код файла для MACH3 для фрезеровки этой платы. Возможно в некоторых случаях понадобиться небольшая корректировка.
Спасибо, Pájač!
"настроить сервопривод будет очень трудно, движок будет «дрожать», скорее всего с «любительской» механикой – невозможно."
Дрожание движка возникает когда движок проскакивает точку “стоп” и ему приходется возвращатся назад. У многих сканеров, принтеров и МФУ движок и энкодер разделяет редуктор.А с дребизгом я думаю надо боротся прграмно или апаратно. В прмышленных станках всё чаще появляются магнитные линейки (говорят что от этого точность у станка возрастает)
Дрожание движка возникает когда движок проскакивает точку “стоп” и ему приходется возвращатся назад. У многих сканеров, принтеров и МФУ движок и энкодер разделяет редуктор.А с дребизгом я думаю надо боротся прграмно или апаратно. В прмышленных станках всё чаще появляются магнитные линейки (говорят что от этого точность у станка возрастает)
А у этих перечисленных устройств есть люфты? Вы проверяли? Аппаратная борьба – это устранение люфтов?
Описанный в этой ветке сервоконтроллер не претендует на роль прецизионного и не имеет кучу настраиваемых параметров.
Тщательной настройкой действительно можно уменьшить «дребезг», но в ущерб другим параметрам (проще говоря – «загрублением» реакции). И до конца всё равно без жёсткой связи вала двигателя с энкодером не устраниться.
Попробую это («когда движок проскакивает точку “стоп”) объяснить простыми словами.
Представьте ситуацию, когда положение портала достигло точки останова (сигналы с энкодера – датчика (счётчика) текущего положения сравнялись со счётчиком заданного положения) – двигатель остановился («затормозился») (возможно, что даже плавно из-за ПИД-настроек), но за счёт в люфтов портал по инерции продолжит движение до упора об заторможенный вал двигателя. Энкодер выдаст, что произошло рассогласование позиции на несколько шагов, а с современными с высоким разрешением энкодером может выдать и несколько десятков шагов. Контроллер выдаст команду на реверсирование двигателя. Двигатель начнет вращение в противоположном направлении, скорость движения будет зависеть от величины люфта = количеству «лишних» шагов, т.к. напряжение подаваемое на двигатель разное, чем больше рассогласование – тем больше напряжение. И если люфт большой, то двигатель резко «стартанёт» компенсировать рассогласование. И снова когда положение рассогласования станет = 0, портал продолжит движение из-за люфтов по инерции до упора о вал движка. Снова реверс и так далее.
Как здесь бороться программно, не зная точной величины люфта? Люфт в зависимости от типа передачи, например шестеренно-реечная передача, может в разных местах относительно рейки иметь непостоянную величину. И от времени (износа) может меняться.
Настройками можно только уменьшить время этого дребезжания (из-за того, что скорость портала постепенно будет уменьшаться – как маятник), но полностью устранить как уже писал выше - не удастся.
В станках «куча» механических регулируемых устройств для выборки люфтов, которые периодически надо подстраивать. И все элементы выполнены с прецизионной точностью, которой в «любительских» конструкциях трудно добиться (дорого).
Да и в оргтехники детали выполнены довольно точно и инерция у них малая.
ИМХО для «любительского» сервопривода энкодер на валу двигателя – наилучшее решение.
Таковы мои рассуждения. Если не прав, то поправьте. Всё что касается сервоприводов – мне очень интересно.
arisov77 я свами согласен но что делать если энкодер штука дорогая и достать в наших краях не где? А цыфровых штангилей по 10-15 баксов валом. перед тем как сел за комп разобрал принтер Z-25 в нём головка весом в 100гр. передвигается тоненьким ремишком с большими люфтами, а энкодерная лента даже не натянута и не какого дребезга!
Также согласен с arisov77, что энкодер наиболее подходящее решение для любительской конструкции. Любой люфт - источник неустойчивости и проблем в серво приводе. А в принтере энкодерная лента служит лишь для подстчета импульсов, чтобы на каждый импульс выплюнуть каплю краски и нет задачи точной остановки в заданном положении. Поэтому и будет работать с любым люфтом. Кстати неплохие энкодеры 400 им на оборот можно извлечь из струйных портативных принтеров серии HP DJ 320, 340. Сидят прямо на валу двигателя.