Усовершенствованный сервопривод Чена

arisov77

Вот видео работы данного сервоконтроллера с двумя разными движками и энкодерами под управлением Mach и ServoTuning depositfiles.com/files/…/tseutbpe8 (48.82 Mb). Пока только на столе. На станке, возможно попозже сниму. На станке пока отладил одну ось (весом около 100кг), вторую ось (наверное, 500-1000 кг) пока не настроил (из-за механики - много люфтов и большая неравномерность движения, с 75г. мне кажется, смазку в редукторах даже не меняли). На мой взгляд люфты играют гораздо меньшую роль (их можно программно в Mach немного компенсировать), чем разного рода «затирания». Контроллер не успевает этого обрабатывать и появляются «рывки». Поэтому и важно быстродействие. Об этом где то давно писал maxvovk. Для плазмо(газо)резки возможно это не так «страшно», как например для фрезера. На «отлаженной» оси вместе с небольшими «затираниями» при скорости 4000мм/мин (даже секундомером замерял) с энкодером 240имп/об. на расстоянии 2 м. при «гонянии» «туда-сюда» портал всегда возвращался на место. Но в одну сторону всегда был «недоход» около 0,1мм, это уже видимо из-за люфтов (в Mache ещё не компенсировал).
Вместе с второй осью на небольшой скорости (300мм/мин) круг получается ровный и точный (чертилкой на листе металла).

pluto96

Доброго времени суток!
А у Вас нет нет видео о работе серво в режиме Step/Dir?
И какой прогой управляете?

arisov77

А Вы выше пост читали? Написано под управлением Mach и ServoTuning. А если подробнее, то на видео 1 движок под управлением Масh в режиме Step/Dir с изменённым Screen (есть ошибка - в окне “Скорость” не мм/мин, а об/мин). Движок на 220В, поэтому выше 2500 об/мин от 110В не выдаёт. Второй движок СЛ-369 (“старенький” серводвигатель с параллельным возбуждением, 110В) на видео - под управлением ServoTuning.

pluto96
arisov77:

А Вы выше пост читали? Написано под управлением Mach и ServoTuning. А если подробнее, то на видео 1 движок под управлением Масh в режиме Step/Dir с изменённым Screen (есть ошибка - в окне “Скорость” не мм/мин, а об/мин). Движок на 220В, поэтому выше 2500 об/мин от 110В не выдаёт. Второй движок СЛ-369 (“старенький” серводвигатель с параллельным возбуждением, 110В) на видео - под управлением ServoTuning.

Пардон, старость не в радость😁

1 month later
1 month later
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.
Наконец то хоть кто-то повторил. А то я думал, что мне это только одному надо.
Выкладываю оттуда схему с платой.

Jozefp_Scheme+PCB.zipServo_AtMega88_CompInt_Modif.zip

STEPMOTOR

Классно ! А есть вариант платы в формате .lay или .pcb чтобы можно было ее отфрезеровать 😃 ?

arisov77

Пока в таком формате нет. Переведите – будет.
А прикольно придумано чешским товарищем наклеить рисунок с расположением деталей на плату. Никакой шелкографии не надо.
P.S.: Самая первая моя конструкция на печатной плате (в школьные годы) была из книги «Конструкции советских и чехословацких радиолюбителей». 😃

Виктор_Петрович

Живет товарищ в Словакии,недалеко от Украинской границы,если внимательно читать,можно понять что он пишет.А что нужно конкретно перевести?
P.S.Увлекается электроникой и рыбалкой,даже на плате напоминание оставил.

arisov77

Ну, тогда извиняюсь – словацкий товарищ.
Кстати, если в Google выбрать словацкий вместо чешского язык, то переводит гораздо лучше. А этот форум чешский или словацкий? Просто окончание .cz - я почему то подумал, что чешский.
Виктор Петрович – в формате .lay или .pcb люди пока не разговаривают:). Это надо из pdf формата перевести в выше указанные.

Виктор_Петрович

Об этих форматах спрашивал STEPMOTOR,CZ-чешский сайт,автор pajac(паяющий) живет в Словакии,могу Вас познакомить,люди приветливые.Я не понял вопроса,думал надо перевести какой либо текст(пять лет жил там).Layot5 пользуюсь.

17 days later
STEPMOTOR
Alexsаndr:

Перевел платку с c-n-c.cz в лаут …

о супер ! спасибо ! будем пробовать 😃

arisov77
Alexsаndr:

Перевел платку с c-n-c.cz в лаут …

Зазоры между дорожками местами малые, при ЛУТ возможно “слипание”. Насчёт фрезеровки - я сомневаюсь, что получиться.
И шаблон надо отключить, а то при загрузке выскакивает напоминание. Но всё равно - спасибо!

STEPMOTOR

кому нужны экодеры для данного проекта, можно взять тут на распродаже 😃
prst.ru/news/list.php?fn_mode=fullnews&fn_id=23 любые по 500 руб.

я взял пару инкрементальных на 1024 имп на оборот на 1000 и на 500 небыло. там есть но напряжение питания не 5в.

Alexsаndr

arisov77, возможно ли ,собрать прошивку для ATmega48, хотелось бы опробовать именно на ней …

arisov77
Alexsаndr:

arisov77, возможно ли ,собрать прошивку для ATmega48, хотелось бы опробовать именно на ней …

Вот попробуйте, должна работать.

valmish:

возможно ли энкодеры заменить на цыфровые (магнитные) линейки как на http://WWW.yadro.de

Насчёт линеек моё мнение такое - если будет даже небольшой люфт между линейкой и валом двигателя, то настроить сервопривод будет очень трудно, движок будет «дрожать», скорее всего с «любительской» механикой – невозможно.

Сейчас работаю над новым вариантов сервоконтроллера с кварцевым резонатором (в предыдущих версиях у меня стоял керамический резонатор) и FUSE биты для AtMega88 лучше установить немного по другому.

Mega48_v3.2.zip

valmish

Ведь рулевые машинки работают и с люфтами

arisov77
valmish:

Ведь рулевые машинки работают и с люфтами

Как устроены рулевые машинки, я не знаю, но где-то видел описание одной из них и насколько я помню, там в качестве датчика положения используется переменный резистор.

arisov77

Pájač с чешского форума любезно предоставил G-код файла для MACH3 для фрезеровки этой платы. Возможно в некоторых случаях понадобиться небольшая корректировка.
Спасибо, Pájač!

GCode.rar