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

alex_ku
boldive:

Что-то цены у них неправильные, интересно, на кого расчитаны?
Вот готовый комплект www.dmm-tech.com/Pricing.html по этому поводу.

250 баксов просто супер цена мне кажется.
не очень понятно почему более слабый комплект дороже.

1 month later
cd-print

Читал с огромным интересом. Я использую DC сервомотор с энкодером 1000 и Геко 320.
Немног о геке. При использовании энкодера он считает фронты с энкодера как нарстающие так и спадающие. То есть реально дает 4000 позиций на оборот. Моя схема управляющая двигателем примерно стакой частотой и дает импульсы для управления двигателем на геку. То есть почти до 200 кГц. (скорость движка до 3000 об/минуту). И в принципе меня почти все устраивает. Но!!!
А вот теперь об этом самом но. Движок поет. То есть когда он стоит он урчит себе. Причем урчит достаточно громко. И это меня добивает. В некоторых системах при останове двигателя на него ничего не подается. В других при остановки на движок подается напряжение то в одну сторону то в другую. Теоретически при этом движок должен стоять, но это не так. На сколько я помню в первой версии чена было раздельное управление шимами для разного направления,и в точке останова движок практически обесточивался. Именно такая система применяется в современных принтерах. То есть движок повернулся и все. Дальше его хоть руками вращай. В этом смысле вариант чена меня устраивал. А вот скорость его работы - категорически нет.
Теперь я так понимаю со скорость все нормально но вот движки опять поют?
А вообще проект пора переносить на ATxmega.

arisov77
cd-print:

… Теперь я так понимаю со скорость все нормально но вот движки опять поют? А вообще проект пора переносить на ATxmega.

Со скоростью пока “непонятки”, пока измерить максимальную “скорострельность” этого сервоконтроллера “руки не доходят”. Скорость у UHU по «паспорту» достигает 250кГц, но это с кварцем на 24МГц, а этот работает на 16МГц, так что скорость будет ниже. Движки не поют. С прошивкой smc2 (которая сейчас используется) действительно раздельное управление ШИМ для каждого направления. При останове, всё равно полного отключения не происходит. Я ставил светодиоды на направление и видно, что при останове практически всегда один из светодиодов (в зависимости от заданного предыдущего направления) светиться. Руками можно «довести» (+/-1шаг) до полного погашения светодиодов, но вал, как Вы написали «хоть руками вращай» - вращать не получится, т.к. «сработает» основная задача сервоконтроллера – компенсация рассогласования. В момент когда двигатель остановлен и светодиод направления светиться на выходе соответствующего ШИМ присутствуют «короткие» иголки (возможно их когда то stano4nek rcopen.com/forum/f110/topic40981/171 принял за паразитные). Я предполагаю, что это связанно с тем, что этого короткого импульса недостаточно по амплитуде для двигателя, чтобы установиться в нулевое положение и поэтому не происходит полного отключения ШИМ и погашения светодиодов.
С прошивкой smc3 (с которой обычно все и повторяют оригинальный Ченовский вариант) ШИМ формируется, также как в Gecko, UHU и во многих других сервоконтроллерах, т.е. по очереди сначала в одном, потом в другом направлении. В режиме «Стоп» ШИМ 50/50, а при вращении это соотношение меняется в зависимости от направления. Я пробовал и с этой прошивкой, но мой движок при останове и с ней не «поёт», но звук от него при движении другой (более низкий, рокочущий, хотя частота ШИМ с кварцем 16МГц – 31,25кГц). Звук мне больше понравился с smc2 😃. С smc3, на мой взгляд - больше помех, выходные полевики сильнее греются, у двигателя визуально максимальные обороты меньше. Но позиционирование, опять же на мой взгляд, происходит немного «жестче», т.е. то что и надо сервоприводу. Видимо поэтому Чен и применил в smc3 такое формирование, несмотря на все достоинства способа с раздельным ШИМ.
Кстати с этой прошивкой светодиоды индикации направления тоже не гаснут при останове. Более того с прошивкой «как есть» двигатель при останове «дёргается», пытаясь компенсировать это небольшое рассогласование и настроить сервоконтроллер мне не удалось (пока не изменил программу). Возможно поэтому, те кто повторил оригинальный Ченовский сервоконтроллер с прошивкой smc3 и получили разочарование в его работе.

Я здесь (rcopen.com/forum/f110/topic40981/223) и на cnczone.com выкладывал прошивку под AtMega48. Она в реальном сервоконтроллере не работает (а AVRStudio-всё o’k) - ошибся с размером памяти при очистке RAM.😦
Выкладываю проверенные «на столе» 2 версии с кварцами на 16МГц и 20МГц:

  • version_v3.4 (for AtMega48 = 16MHz) – в ней ограничил пределы изменения ШИМ до +/-240 усл.ед., для более надёжной работы драйверов с бутстрепными кондесаторами.
  • version_v3.5 (for AtMega48 = 20MHz) – дополнительно к предыдущему изменению уменьшил частоту ШИМ до 19,5кГц, чтобы уменьшить потери на переключение (нагрев) полевиков.
    Fuse-биты для AtMega 48 с кварцевым (не керамическим!) резонатором под CodeVision и PonyProg в архиве.
    По поводу использования ATxmega – сравните цены, доступность, количество ног на неё и на AtMega48. Думаю, для этого варианта сервоконтроллера AtMega48 будет «самое то»!😃

На cnczone.com Миша 😃 (Michael = krazatchu) из Южной Кореи разработал платку под этот вариант сервоконтроллера. Вот фото этой платы, остальное можно скачать c www.cnczone.com/forums/showthread.php?t=69640&page… (у меня на этом форуме уже ограничения по объему закачки). Платка на мой взгляд очень неплохо разведена. Но он переделал немного схему (исключил опторазвязку и защиту от превышения тока) и этот вариант лучше всего подходит для низковольтных «слабеньких» двигателей.
Он планирует эти платы продавать. В переписке с ним я давал ему несколько вариантов прошивки для AtMega8, но все они «пошли» плохо. Так же он заметил, что был «слёт» EEPROM. С AtMega88, как он написал - работает отлично. И у меня с начала этого года в процессе эксплуатации 2 сервоконтроллеров на AtMega88 «слёта» EEPROM ни разу не было.
Получается, что все мои ухищрения направленные на устранение «слёта» EEPROM в AtMega8 были напрасны. 😦. Как писал Художник на одном из форумов и мне в переписке, настоящий автор модернизированного Ченовского сервоконтроллера и программы настройки ServoTunning - Александр Карсакбаев (а не Художник, хотя они и были «связанны») для устранения этой «бяки», с AtMega8, надо установить внешний Brown-out Detection, например MC34064D-5.

Servo_Mg48_16Mhz_v3_4.zipServo_Mg48_20Mhz_v3_5.zipFuse_AtMega48.zip

cd-print

Я ковырял серво управление На струйном принтере Эпсон 4400. Там раздельное шим формирование на серводвигателях. Для себя я сделал вывод что мне тоже нужно раздельное. Так что прийдется ковырять smc2.

xMega - 6$-8$
Мега88 - 2$
Разница 4-6$ на стоимости конечного устройства особой рояли несыграет. (А в моем случае вообще пофиг ±50баксов).
но зато иксмега не только в почти два раза быстрее, но еще можно завести на прерывания не только по Step но и по энкодеру оба канала.

Но это все лирика.

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

Немного о геке. У геки допустимая ошибка ±127 шагов. С точки зрения разработчика есть некоторое предположение что если при управлении двигателем ошибка больше 127 шагов то значит вы неправильно управляете двигателем. То есть пользователь должен правильно настроить характеристики разгона, торможения двигателя и т.д. В чем-то они правы. Мне пришлось немало поработать чтобы настроить свою программу так, что и иметь максимальный разгон/торможение/скорость и при этом ошибка не привышала 127.

А теперь о главном. Откуда взялась эта цифра ±127. Все очень просто. На обычной логике типа нашей 155 серии (ну их соотвественно 74…) сделан вычислитель ошибки с энкодера и сигналов степ/дир. И максимальная частота определяется максимальной частотой этой самой логики. там буквально 3-4 корпуса микросхем. И на выходе имеем ту самую дельту X с которой и проделываем все операции по PID алгоритму. Ну и соотвественно все упирается в то, что эта самая логика 8-ми битная. Хотя ее легко расширить в 16 бит.

То есть. Если мы разгрузим процессор от необходимости общитывать дельта х, и вынесем это на некотурую внешнюю схему, то мы получим за недорого гарантированно высокую скорость обработки сигналов энкодера и сигналов степ. Эту внешнюю схему можно реализовать как на рассыпухи, так и на ПЛИС или отдельном процессоре.
При этом в эту-же схему можно внести возможности по умношению шагов, ну или там передаточного числа. Схемку такого плана я могу сделать за пару дней. Но вот ковырять программу чена я повешусь. То есть идея у меня такова. Выкинуть из программы обсчет энкодера и т.д. и тупо брать значение дельта х из какого-нибудь порта. Напрашивается порт D но там RX/TX мешает. Порт С- слишком мало разрядов. Уже поглядываю на 32 мегу.
arisov77 Если я сделаю внешний счетчик, сможете подправить прошивкой smc2 так, что-бы она использовала внешний счетчик?

boldive:

Что-то цены у них неправильные, интересно, на кого расчитаны?
Вот готовый комплект www.dmm-tech.com/Pricing.html по этому поводу.

Попробую купить на следующей неделе.

cd-print

Сижу и думаю. А какого собственно говоря изобретать велосипед.
Надо просто померить реальную скорость текущей версии контроллера.
для этого надо установить предел по ошибке ну например 32 (или 128/256) то есть не очень большую. С внешнего генератора подать частоту STEP. и через схемку с этого же генератора синхронно генерить эмуляцию сигналя A/B с энкодера. Увеличиваем частоту и в какой-то момент (когда проц уже не сможет успевать обрабатывать сигналы) он встанет по ошибке.
А дальше уже думать чо делать.
Попробую на выходных повозиться.

Вот еще мысль. Почемубы не скрестить ужа с ежом. То есть в одну схемку завести и экодер и Step/dir и процессор дергать только по двум прерываниям Увеличение/уменьшение дельта х.

cd-print

О. Победил Геко. Короче проблема была в том, что стоял высокое (для моего двигателя) значение GAIN/DAMP. Уменьшил примерно до 15-20% (по умолчанию стояло примерно 30%) и движок замолчал.

KoCNC

А на синхронном серводвигателе слабо сделать сервопривод?

arisov77
cd-print:

…Моя схема управляющая двигателем примерно стакой частотой и дает импульсы для управления двигателем на геку. То есть почти до 200 кГц. (скорость движка до 3000 об/минуту)…

А чем управляете? Какие программы могут управлять несколькими осями через LPT-порт с частотой 200кГц на каждую ось?

cd-print:

arisov77 Если я сделаю внешний счетчик, сможете подправить прошивкой smc2 так, что-бы она использовала внешний счетчик?

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

27 days later
cd-print
arisov77:

А чем управляете? Какие программы могут управлять несколькими осями через LPT-порт с частотой 200кГц на каждую ось?

У меня не фрезерный станок, а принтер. Управление от своей схемы на AVR-ках. Для получения нужной скорости стоит несколько процессоров, каждый из которых занимается своей задачей. За движение отвечают две меги88.
Принтерный порт тут не причем.

Собственно не стал приставать со схемой, так как геки уже месяц работают без нареканий, и от добра добра не ищут.

1 month later
KoCNC

С синхронным сервоприводом никто дела вообще не имел что ли? Или это уже из разряда ПРОФИ, а не ХОББИ?

cd-print

А что значит несинхроммый сервопривод?
Я как-то считал что они все синхронные.

KoCNC

Ну типа двигатели постоянного тока - не есть синхронные

arisov77
KoCNC:

А на синхронном серводвигателе слабо сделать сервопривод?

У меня таких двигателей нет в наличии 😦 и следовательно нет цели (мотивации) для их запуска 😃.
Вот здесь www.gaw.ru/html.cgi/txt/app/motor/dc/index_3.htm можно почитать про управление бесколлекторными электродвигателями постоянного тока, думаю про эти двигатели идёт речь.
Вот этот www.cnczone.com/forums/showthread.php?t=74532 проект, насколько я понял, может работать с вентильными ЭД по Step/Dir, но через дополнительный усилитель мощности (ключи).

Vikings

Здравствуйте.
Пользователь GuntisK рекомендовал мне ваш форум как раз по этой теме. Стал потихонько собирать схему приведенную в сообшений 161. Нашлась небольшая ошибка в софте - выхода Direction включаетса неправильно. Быстро исправил подпрограммы Direct_L и Direct_R и сейчас всё в порядке. Выход еще не собирал - это на завтра. 😉

Dj_smart

Прям голова кругом:). На плату что дал чех - можно ставить мегу 8? или только 88? Или любую?
Vikings, а нельзя поделиться доработанным НЕХом? А то я мягко говоря в этом 😦

arisov77
Vikings:

…Стал потихонько собирать схему приведенную в сообшений 161. Нашлась небольшая ошибка в софте - выхода Direction включаетса неправильно. Быстро исправил подпрограммы Direct_L и Direct_R и сейчас всё в порядке. Выход еще не собирал - это на завтра. 😉

arisov77:

… В ней также исправлены несколько замеченных мною багов, которые на работу сервоконтроллера никак не влияли…

(из сообщения №198)
Да такая ошибка была, но для AtMega88 (прошивка в сообщение №198 и для AtMega48 в собщении №305 это было устранено). У меня эти выхода не использовались для основной работы. Я делал их только для индикации направления вращения и в расчёте, что кому-то они пригодиться для своих вариантов выходных драйверов или ещё каких то других целей. В приведённых мною схемах эта ошибка не влияет на работоспособность сервоконтроллера (в плане управления двигателем).

Dj_smart:

Прям голова кругом:). На плату что дал чех - можно ставить мегу 8? или только 88? Или любую?
Vikings, а нельзя поделиться доработанным НЕХом? А то я мягко говоря в этом 😦

Микроконтроллеры AtMega8, 48, 88, 168 одинаковы по «ногам» и с соответствующей прошивкой (для AtMega168 – у меня нет) любой из этих МК может работать в схемах сервоконтроллеров, которые я выкладывал в этой ветке. Лучше всё-таки применять AtMega 48 или 88, т.к. с ними меньше вероятность «слёта» данных (коэффициенты ПИД) в EEPROM, чем с AtMega8.
Кстати, в плате словака (Jozefp - не чех), необходимо установить керамический конденсатор 0,1-0,22мкФ непосредственно на выводы питания (5 и 8) входной оптопары HCPL-2531 (2631). Один мой знакомый, который собирал сервоконтроллер с платой Josefp, писал, что без него происходили «глюки» при управлении двигателем в одну сторону вращения, при напряжении питания около 50В, а при 24В было всё нормально. При установке кондёра всё стало O’k.

Dj_smart

arisov77, большое спасибо за оперативный овет. За чеха извиняюсь, когда пятый раз перечитываешь тему, мозги кипят:).
У меня ещё один вопрос: чем продиктовано применение драйверов 2184? Есть какие-то спецтребования? Просто у меня есть в наличии драйвера 2104 с аналогичной логикой работы. Они по выходному току слабее, и цоколёвкой отличаются. Бескровно явно не получится, вот и хотелось бы их применить:).

arisov77
Dj_smart:

У меня ещё один вопрос: чем продиктовано применение драйверов 2184? Есть какие-то спецтребования? Просто у меня есть в наличии драйвера 2104 с аналогичной логикой работы. Они по выходному току слабее, и цоколёвкой отличаются. Бескровно явно не получится, вот и хотелось бы их применить:).

Я применил IR2184 с запасом, чтобы управлять IRFP260 (200В 49А, Ciss=5200pF). С полевиками IRF540 (100В 28А, Ciss=1700pF) драйвер IR2104, по моим «быстреньким» «прикидкам» должен надёжно работать. Если не ошибаюсь в оригинальном Gecko G320 установлены именно такие драйвера, по крайней мере, судя по моему анализу фотографий печ.плат, цоколёвка совпадает. Только, вот не знаю какие там MOSFET-ы установлены. Может, кто “заодно”, подскажет наименование вых. транзисторов и драйверов в Gecko G320, так для «общего развития».

Dj_smart

Не сочтите за назойливость, управление МАХ током моста ведётся компаратором DA4 методом “зануления” входа драйвера. Почему не использовались входа SD(не знаю как инверсию отобразить:( )? Я понимаю что это возможно потребовало бы изменений в программе управления, и потому вопрос больше “для лучшего понимания” работы устройства.

arisov77

В сообщении №64 rcopen.com/forum/f110/topic40981/64 я писал почему так сделал.
Также про это писал в середине сообщения №198 rcopen.com/forum/f110/topic40981/211 . Есть кое-что здесь electronix.ru/forum/index.php?showtopic=58750 . И вот здесь rcopen.com/forum/f110/topic40981/307 (сообщение №294) можно почитать.
При управление по SD надо будет устанавливать дополнительную RS-«защёлку» (можно посмотреть схему UHU). При практических экспериментах я выяснил, что в этом случае помехоустойчивость сервоконтроллера во время перегрузки (например, во время реверса) ниже и надо тщательнее «прорабатывать» топологию печатной платы и ставить несколько керамических конденсаторов по питанию силовой части двигателя и RC-цепочки на цепи двигателя. Иначе, было такое, что во время перегрузки было значительно больше ЭМ помех и сервоконтроллер (МК) «переходил» в режим ServoError. А при управлении по IN, проще говоря, это «выброс» напряжения «замыкался» через нижние полевики.
В каждом из этих способов есть свои плюсы и минусы.

В предыдущем своём сообщении я писал про установку кондера на выводы питания оптопары. Необходимо учитывать, что оптопары чувствительны к перегреву и их желательно устанавливать в панельки или паять быстро и держать тонким пинцетом запаиваемый вывод так, чтобы тепло «уходило в пинцет».

Vikings

Воскресение прошло разбираясь с контроллером. Во первих - подключая и вращая енкодер на графике Servotuning появились скачки рассогласования. Когда я зашил более новую версию из сообшения 198 но оно не соединилось с компом. Смотря на терминале COM порта видно что начальное сообшение передают но не отвечают на передачу симболов. Не получилось по быстрому и разбиратса с программой. Взял я и прошл Mega8 с прошивкой из сообшения 106 и заработало. Больше разбиратса не стал, собрал выход из IRF640 и IR2113, подобрал параметры. Дальше смотреть буду уже в следующих выходных…