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

arisov77

Спасибо, за инфу, этой у меня ещё не было.
Я с " Мезоматик" дело не имел. Ремонтировал только «КЕМТОР», «КЕМРОС» и ЭТШР и ещё какие-то «мелкие» тиристорные регуляторы.
На стр. 203, того описания которое Вы дали, написано - ….Это особенно характерно для привода «Мезоматик», имеющего худшие динамические характеристики по сравнению с другими приводами (Кемрон, ЭТУ3601, ЭТ6С).

КСВ

Это я к тому, что одноконтурные привода тоже имеют право на жизнь и применяются в серьёзных промышленных станках.Динамика особенно необходима там, где нужно чётко согласовывать два движения и очень точно выдерживать скорость подачи, например, при нарезании резьбы на токарном станке с ЧПУ. Там надо чётко попадать в нитку резьбы и очень точно выдерживать шаг, т.е. скорость . " Мезоматики" стоят ещё и на фрезерных станках типа ГФ. Arisov77, вот ВАМ ещё немного информации, может будет интересно. Качество не очень, но разобраться можно. Здесь есть и промышленный транзисторный привод ЭШИР с ШИМ.
depositfiles.com/files/vlibq3f97

8 days later
boldive

Кто понимает по английски, послушайте как работает новый магнитный энкодер от компании CUI. Продается в digikey.com за 30$. Судя по цене доступное и дешевое решение для энкодера двигателя.

dkc1.digikey.com/ca/en/tod/…/AMTEncoders.html

pomid

2Виктор Петрович
ссылка boldive живая и со звуком (просто показана сокращенно), ваша - скопипастенная неправильно (наведите мышку без нажатия на обе - увидите разницу)

boldive
vadik:

А как вам такой сервоконтроллер www.quantumservo.com/English.htm
Правда от Чена здесь ничего нет.

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

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 и сейчас всё в порядке. Выход еще не собирал - это на завтра. 😉