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

chkmatulla

ATLab писал: “При этом нужно учесть, что сервоконтроллер и двигатель суть “близнецы братья” - параметры одного сильно зависят от другого, что грамотно настроить сервопривод намного сложнее, чем просто подключить ШД…”
Я подключаю любые движки к своим контроллерам UHU и никаких проблем не встречал. Разве что, для идеальной характеристики меняю величины PID, в контроллере.
Или мы говорим о разных вещах ?

arisov77

Пока ждал полевики IRFP260 (200В, 49А) переделал прошивки под AtMega88. Я тестировал только на этом МК, но уверен, что после незначительных изменениях в исходниках (см. комментарии) будет работать и с AtMega48. Возможно использование Atmega168 при соответствующем изменение таблицы векторов сброса. Если кому надо могу отдельно сделать исходники под AtMega48/168. Кстати при использовании AtMega88 у меня изменения EEPROM пока ещё не происходило.
В этих прошивках активирован WatchDog (в AtMega8, я забыл про него). Тоже если кому надо, могу выложить исходники с активированным WatchDog под AtMega8.
Также в исходниках есть отключенный «кусок» кода для увеличения Dead-Time, который мне на cnczone.com предложил китайский товарищ cbcb128. Но я его не стал использовать, т.к. в IR2184 есть уже аппаратный Dead-Time (500ns). Этот кусочек лучше использовать если драйвер выполнен, например как у Elm Chan.

Наконец получил IRF260, думал, что уж с ними греться ничего не будет. Ни тут-то было – через 20-30 сек. при удержании двигателя и срабатывании токового ограничения на уровне 1,5А транзисторы нагревались так, что «рука не терпит». Какие я только радиаторы не вешал, хотел уже вентилятор вешать. Однако заметил, что если токовое ограничение увеличить до 2А и при нагрузке движка 1,5А (удерживал двигатель и ServoTuning в режиме ШИМ прибавлял постепенно ток), то ничего не греется. Решил попробовать во время перегрузки отключать транзисторы не по SD в IR2184, как у UHU и у меня в первоначальном варианте, а входу IN. В результате – транзисторы перестали греться! Нагружал 3А (больше, имеющийся у меня двигатель, не потребляет) – транзисторы чуть тёпленькие.
Я думаю, что это произошло по следующей причине: когда ограничение тока происходит по SD-входу, то при лог. 0 на этом входе происходит полное закрытие всех транзисторов и в этот момент ЭДС самоиндукции «потекёт», например от +Motor -> левый верхний внутренний А-К диода полевика -> через низкое внутреннее сопротивление источника питания –> А-К диода нижнего правого полевика -> - Motor (как бы происходит шунтировании ЭДС двигателя на источник питания через внутренние диоды транзисторов). В этом случае на каждом транзисторе (диоде) «падает» около 0,6В.
Если же ограничение тока производиться по входу IN, то при лог.0 на этом входе верхние транзисторы закрываются, а нижние открываются и ЭДС мотора шунтируется через их низкое сопротивление каналов. При этом напряжение на транзисторах выделяется гораздо меньше. Соответственно и нагрев меньше.
Возможно нагрев уменьшился из-за чего-то другого. Было бы интересно это узнать.
Вариант схемы с изменениями и исходники для AtMega88 в архиве.

Servo_Mega88.zip

mura

Скажите плс, какой номинал R8?

arisov77

Все 3 выкладываемые мною схемы пересмотрел – везде чётко написано R8 - 10кОм, но можно поставить любой от 1кОм до 100кОм.
В последнем варианте нашёл, что на схеме отсутствует позиционное обозначение R11.

chkmatulla

А греются все транзисторы ? Или парами ?

Zon
arisov77:

Тоже если кому надо, могу выложить исходники с активированным WatchDog под AtMega8.

Выкладывай.

mura
arisov77:

Все 3 выкладываемые мною схемы пересмотрел – везде чётко написано R8 - 10кОм, но можно поставить любой от 1кОм до 100кОм.
В последнем варианте нашёл, что на схеме отсутствует позиционное обозначение R11.

Вопрос был совсем не от того, что мне нечего поставить. Сопротивление завышено в 10-15 раз (это для 10К, про 100К вааще молчу).

Мач выдает импульс длительностью макс 25мкС, так вот импульс такой длительности через оптрон с нагрузкой в 10К не проходит.
При 1К - с натяжкой а при 330 ом все намана.

Отсюда вопрос, Вы делали привод или это все теория?

ATLab
mura:

Мач выдает импульс длительностью макс 25мкС, так вот импульс такой длительности через оптрон с нагрузкой в 10К не проходит.
При 1К - с натяжкой а при 330 ом все намана.

Отсюда вопрос, Вы делали привод или это все теория?

Да это не единственное “спорное” место: лично у меня вызывает сомнение необходимость такой наверченной цепи в затворе полевика. Зачем, если используется драйвер, в котором уже есть защита от “сквозняков” и время включения больше времени выключения? А стабилитрон - для увеличения входной емкости полевика?
В цепи накачки драйвера выпрямительный диод и электролит большой емкости - первый раз вижу такое решение.
Может я, конечно, чего не понимаю… Тогда требуется пояснение автора.

arisov77
chkmatulla:

А греются все транзисторы ? Или парами ?

У меня они на общем радиаторе, поэтому не знаю. Откручивать не стал, был печальный опыт – сгорели IRF 740 от теплового пробоя. Перегрелись 2 транзистора одного плеча (по диагонали).

mura:

Вопрос был совсем не от того, что мне нечего поставить. Сопротивление завышено в 10-15 раз (это для 10К, про 100К вааще молчу). Мач выдает импульс длительностью макс 25мкС, так вот импульс такой длительности через оптрон с нагрузкой в 10К не проходит. При 1К - с натяжкой а при 330 ом все намана. Отсюда вопрос, Вы делали привод или это все теория?

Привод работает у меня на макете, скоро буду ставить на станок. От Mach я пробовал всё отлично работает (при комнатной температуре) с резистором 10кОм (проверял так – давал линию, например 1000мм. При скорости 4000 мм/мин вал двигателя всегда встаёт на одно и тоже место. Мои настройки Motor Tuning: Steps Per =120 имп/об., Velocity =4000 мм/мин, Step Pulse =0. Не думаю, что в реальном станке из-за задержки в оптроне что-то измениться, если только при колебаниях температуры. К тому же у меня ещё один оптрон стоит в плате согласования. Получается 2 оптрона (PC817 и KP1010) последовательно и всё работает. Попробовал сегодня для чистоты экскримента в Mache проинвертировать сигнал Step (время выключения у оптронов обычно больше), также пропусков не обнаружил. Во многих импульсных блоках питания бытовой техники распространенные оптроны РС817 работают на частоте 100-150кГц.
Но я с Вами согласен, для надёжности лучше поставить 1кОм.

ATLab:

Да это не единственное “спорное” место: лично у меня вызывает сомнение необходимость такой наверченной цепи в затворе полевика. Зачем, если используется драйвер, в котором уже есть защита от “сквозняков” и время включения больше времени выключения? А стабилитрон - для увеличения входной емкости полевика?
В цепи накачки драйвера выпрямительный диод и электролит большой емкости - первый раз вижу такое решение.

Драйвер я просто «слепо» скопировал у UHU – у многих работает, зачем «изобретать велосипед». Во время поиска причин нагрева транзисторов я «накоротко» замыкал «затворные» цепи и также замыкал диод с параллельным конденсатором («шло» через низкоомный резистор =22 Ом) – разницы по нагреву не заметил. Можно только ограничиться низкоомным резистором, но когда проектировал плату – об этом не думал.
Стабилитроны надо ставить обязательно – они не раз «спасали» IR2184. Несколько десятков пикушек, а может меньше (я не нашел емкость BZX55C15) на фоне 5200пФ IRF260 роли не сыграют.
Драйвер скопировал, да видимо «проглядел» емкости 220n. Признаю ошибку, но 220 мкФ работают, как говориться «кашу маслом не испортишь», но т.к. электролиты менее надёжны, то конечно лучше поставить керамику или что-то подобное. Выпрямительные диоды – как у UHU, думаю, что КД522 маловато будет (по току).

Спасибо всем за замечания. Может ещё что найдётся?

mura
arisov77:

Привод работает у меня на макете, скоро буду ставить на станок. От Mach я пробовал всё отлично работает (при комнатной температуре) с резистором 10кОм (проверял так – давал линию, например 1000мм. При скорости 4000 мм/мин вал двигателя всегда встаёт на одно и тоже место. Мои настройки Motor Tuning: Steps Per =120 имп/об., Velocity =4000 мм/мин, Step Pulse =0. Не думаю, что в реальном станке из-за задержки в оптроне что-то измениться, если только при колебаниях температуры.

Речь не о задержке, такой импульс НЕ ПРОЙДЕТ ВООБЩЕ!

ATLab
mura:

Речь не о задержке, такой импульс НЕ ПРОЙДЕТ ВООБЩЕ!

Юрий, ну Вы бы картинку добавили и стало бы сразу понятно о чем речь.
Вот из pdf на Cosmo K1010: при 10 кОм фронты сигнала получаются такие длинные, что за 25 мкс просто импульс не успеет сформироваться.
Или в макете не эти оптроны.

arisov77

Я понимаю очень идёт речь и без дополнительных объяснений.
На одной плате (с AtMega8) у меня стоят KP1010 (в Платане они так называются, а на сайте Cosmo -K1010), на другой плате(c AtMega88) PC817. Обе платы работают.
Не поленился – «подцепил» осциллограф. На выходе LPT – чёткие «иголочки» приблизительно (осциллограф старенький) длительность «иглы» 20мкс (при частоте 7,8485кГц(128мкс)). После первого оптрона в плате согласования (на входе (светодиоде) второго оптрона в сервоконтроллере) эти иголки уже не такие «остренькие» - нарастание довольно быстрое, а вот спад немного затянутый (при коллекторном токе оптрона в плате согласования = 10мА). На коллекторе фототранзистора оптопары сервоконтроллера уже получается сильно затянутое нарастание и резкий спад (т.к. импульс «проинвертирован»), но ВСЕ ИМПУЛЬСЫ «ПРОХОДЯТ» (частота по частотомеру та же и на осциллографе всё чётко). При нагрузочном сопротивлении 1кОм импульсы гораздо «круче», так что ещё раз пишу, согласен – лучше 1 кОм. Это на практике (проверял с PC817, думаю, что с её аналогом КР1010 будет тоже самое).

Пока это всё испытывал, заметил что при скорости 4000мм/мин и энкодере 120имп/об. и на больших расстояниях, например 10 000мм, выключение движка происходило с опозданием (около 5-8 сек.) (Mach уже импульсы переставал выдавать, а движок всё вращался, но при останове позиционировался точно. При расстоянии 1000мм, когда проверял стабильность позиционирования, я этого не замечал (или не обращал внимания, т.к. смотрел на положение вала, а не на экран). Это может быть сервоконтроллер или не успевает сам двигатель, на слух вроде на максимальных оборотах крутиться. На недельке, выясню это поточнее (начальство работой «загрузило»).
Приблизительно максимальная скорость 2500 мм/мин без задержек выключения на расстоянии 10 000мм. (100 000 пока не проверял – очень уж долго ждать надо).

arisov77

Спасибо Zon за полезную информацию по сервоконтроллеру А300. Много интересного.
Может обсуждение А300 перенести в отдельную ветку, а здесь всё таки продолжить сервопривод Чена?

Zon
arisov77:

Может обсуждение А300 перенести в отдельную ветку, а здесь всё таки продолжить сервопривод Чена?

Полностью согласен.
Ну а по приводу Чена мое скромное мнение таково.
На AVR надо оставить Pid и Шим а Encoder, Step и Dir перенести в PLD
Пробывал собирать Чена SMS3 и чесно сказать не впечатлился
Правда давно это было когда хотел собрать станок.
Ну а для кого хобби это действительно хобби я и выложил эти файлы.
(Сам не собирал)
Данной теме более 2х лет а результат нулевой.
Да и на остальных форумах по CNC результат аналогичный.
Кстати вы единственный человек который хоть что-то пытается улучшить
и делится этим с другими.

arisov77
Zon:

…На AVR надо оставить Pid и Шим а Encoder, Step и Dir перенести в PLD…

Тогда уж лучше применить АТ90PWM1(2,3) или ATxMega.

Zon
arisov77:

Тогда уж лучше применить АТ90PWM1(2,3) или ATxMega.

Применить можно что угодно.Только при этом надо уметь писать
программу для этих девайсов.Данная тема интересует очень многих
Просмотров почти 15000. Умеют писать программы процентов пять но
им это не надо и в этом вся проблема.
А посему как я и написал выше таким темам 2-3 года с результатом
почти нулевым.(Перетирание чего лучше применить)

maxvovk
Zon:

Применить можно что угодно.Только при этом надо уметь писать
программу для этих девайсов.Данная тема интересует очень многих
Просмотров почти 15000. Умеют писать программы процентов пять но
им это не надо и в этом вся проблема.
А посему как я и написал выше таким темам 2-3 года с результатом
почти нулевым.(Перетирание чего лучше применить)

Тема интересует многих, но большинство скорее всего постольку поскольку.
Программы писать умеют дай Бог 1%, и из них почти некому это не надо.
Все скорее всего ждут либо чуда в виде открытого проекта, либо вариант UHU с МК за пару-тройку евро 😃.

ReGet
Zon:

видео работы двигателя с данным контроллером.

/попускал слюни 😃

ATLab
maxvovk:

Тема интересует многих, но большинство скорее всего постольку поскольку.
Программы писать умеют дай Бог 1%, и из них почти некому это не надо.
Все скорее всего ждут либо чуда в виде открытого проекта, либо вариант UHU с МК за пару-тройку евро 😃.

Imho, это обычное дело и ничего нового в этом нет.
Страсть к халяве свойственна не только нам - это явление интернациональное. Поэтому свободных проектов, аналогичных по качеству коммерческим, не найти (по-крайней мере мне не попадались).
Объяснения элементарны, и обсосаны не один раз.
Взять Вас maxvovk: как все красиво начиналось на чипмакерах, кипение, бурление, все и много … в свисток.
А когда это работа, за которую работодатель платит деньги (ну или свои), которые, в свою очередь, собирается окупить продажами - тогда 100 раз подумаешь, стоит ли начинать, а уж если начал - доведешь дело до логического завершения.
Успешного или нет.

arisov77
arisov77:

……… заметил что при скорости 4000мм/мин и энкодере 120имп/об. и на больших расстояниях, например 10 000мм, выключение движка происходило с опозданием (около 5-8 сек.) (Mach уже импульсы переставал выдавать, а движок всё вращался, но при останове позиционировался точно. При расстоянии 1000мм, когда проверял стабильность позиционирования, я этого не замечал (или не обращал внимания, т.к. смотрел на положение вала, а не на экран). Это может быть сервоконтроллер или не успевает сам двигатель, на слух вроде на максимальных оборотах крутиться. На недельке, выясню это поточнее ….

Со 100% точностью утверждать не буду, но скорее всего двигатель не успевает. Проверял так: в Mach установил скорость = 4000мм/мин и на одном из каналов энкодера измерял частоту = 1278Гц (2556 об/мин). Затем отключил МК («замкнул» вывод Reset на массу) и подал +5В на один из входов IR2184. Частота стала немного больше – 1298Гц (2596 об/мин). Видимо из-за того, что с МК управляется ШИМ это немного ограничивает напряжение на двигателе. Но мой вывод – двигатель работает на максимальных оборотах и поэтому происходит отставание.

Кстати, в А300 нет такого большого буфера, как в этом сервоконтроллере (24 разрядный). Правда не знаю нужен ли он такой, допустим – инструмент заденет за что-нибудь, потом это препятствие исчезнет (уберёт оператор) и сервопривод «попрёт» пока не достигнет нужной позиции и «попрёт» причем на максимальных оборотах. И в этот момент он управления по Step не слушается. Только питание надо обрубать.