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

arisov77

Все ответы есть в теме, хоть прочитал бы её для приличия, прежде чем здесь “пакастить”. Я так понял bolt - это от слова boltун.

bolt

Перечитал еще раз.
В первом посте сообщается

Для улучшения характеристик применил более скоростной микроконтроллер АТmega8…Для удобства настройки и снятия характеристик была разработана программа под Windows, работа с контроллером по RS-232.

post#10

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

(с) Художник
post#41

Хочу продолжить тему усовершенствования сервопривода Чена.
Надо ли мне устанавливать на транзисторы IRF 740 (до 10А) устанавливать радиаторы?
На сайте Чена написано, что более поздняя версия smc3a.asm оптимизирована для замены шаговых двигателей
Поэтому, вопрос для тех кто разобрался в алгоритмах Чена и Художника – какая для из них, на Ваш взгляд лучше (в плане «ходовых» качеств)?

и тут же

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

  • это и далее сообщения от Arisov77

Драйвер я просто «слепо» скопировал у UHU

Ещё пока продолжаю совершенствовать, кое что поменял в схеме, переделываю прошивку под smc3 от Чена,

так прошло больше года экспериментов по замене комплектующих, правки авторских кодов и пр. настольных усовершенствований привода

Со стола движок не убежит, если надо привяжу. Как поведёт себя привод на реальном станке точно, мне кажется никто не знает.

А месяц назад появилось сообщение

изготовленные мною 2 сервоконтроллера успешно работают более месяца

К сожалению, фотографий самого станка с сервоприводом, как и результатов его работы мне обнаружить не удалось. 😦

arisov77
bolt:

К сожалению, фотографий самого станка с сервоприводом, как и результатов его работы мне обнаружить не удалось. 😦

Читать надо внимательнее. Вы здесь кроме “склоки”, впрочем и в других местах тоже, ничего не “принесли”. “Ни грамма” полезной информации - одна голословная boltовня. Отвечать на неё, честно говоря никакого желания, но не хочется, чтобы начинающие “станкостроители” в неё поверели.
Отобранные Вами цитаты, хорошо показывают Вашу эрудицию и направленны не на выяснение чего то практического, а для “разжигания” склоки.
Ваше право верить или не верить в работоспособность, “муть то зачем гнать”?

bolt

Как я понимаю, что ваш привод все еще в стадии усовершенствования и хвастаться пока нечем.
Если уж делать настоящий привод, то начинать нужно с поиска/приобретения/написания программы управления сервоприводом. Желательно под USB и Win. А уже под эту программу/драйвер писать прошивку контроллера. Потом все это желательно проверить в работе, “вылизать”, а лишь тогда “двигать в массы”.
Ченовский привод делался как альтернатива мощному ШД, но для любителя это слишком сложно. Что собственно мы и наблюдаем по вашим сообщениям в данной теме.

Zon
bolt:

Как я понимаю, что ваш привод все еще в стадии усовершенствования и хвастаться пока нечем. .

В отличие от Вас горе теоретиков,есть люди которые пытаются помочь
другим.Работая в отличие от Вас вместо языка руками и головой.

Если уж делать настоящий привод, то начинать нужно с поиска/приобретения/написания программы управления сервоприводом. Желательно под USB и Win. А уже под эту программу/драйвер писать прошивку контроллера. Потом все это желательно проверить в работе, “вылизать”, а лишь тогда “двигать в массы”…

Ну дык и флаг Вам в руки

Ченовский привод делался как альтернатива мощному ШД, но для любителя это слишком сложно. Что собственно мы и наблюдаем по вашим сообщениям в данной теме.

Да для таких любителей как Вы все сложно. Вы хоть знаете какой стороной
держать паяльник?

PS.Да можете не напрягаться и не топтать клавиатуру.
Ни на одно ваше высказывание отвечать не собираюсь.
Да и другим не советую.Пользы будет гоаздо больше.

arisov77

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

valmish

по работе мне постоянно приходится сталкиватся с такими “болтами” что я просто перестал обращать на них внимание. Стал кнстатировать людям факты и получилась огромная экономия нервов и времини. bolt уже показывал на CNC сайте сервопривод на одном усилителе мощности, а суперконтролер так и не дождались достал всех, что его там просто забанили на вечно.

Dj_smart

Народ, лучший способ борьбы с этими “болтами”(а как вам жаргонное:“А болт тебе!”?) так это полный игнор. Как модератор форума, о котором упоминал valmish, подтверждаю, доболтился парень. Забанили. Как осенняя муха - ну спасу прям нет…

КСВ

bolt:“…Управляя от step-dir вы разгоняете и тормозите сервопривод на каждом шаге, т.е. постоянно дергаете конструкцию, как и при использовании ШД…”😂😂😂

Извините, господа, не выдержал.Указанная выше цитата говорит о вопиющем незнании принципа работы следящих сервоприводов, управляемых по step,dir.То, что сервопривод тормозит и разгоняет двигатель на каждом шаге это полнейший бред.
Arisov77,не обращайте внимание на таких людей.Это некомпетентность плюс,возможно, зависть.Лично я восхищён проделанной Вами работой и той информацией, которой Вы поделились с народом, и машину, на которую Вы установили изготовленный Вами сервопривод,хорошо знаю.Это далеко не любительский станок, поэтому и характеристики у привода должны быть не хилые.Удачи Вам!

Zon
arisov77;1211067.

На мой взгляд, в этом проекте схемотехника не отработанна. Развитие этого проекта здесь www.cnczone.com/forums/showthread.php?t=40940 . Но опять же нет опторазвязки и рассчитана на низковольтные двигатели.

Вот его и решил повторить.Dspic30f4012 не нашел.Пришлось переделать
на Dspic30f3010.Вместо оптотранзисторов поставил Hcpl2601.Ncp5106
заменил Ir2101.На первый взгляд вроде работает.Собрал только вчера
так что подробнее если кому интересно немного позже.

arisov77

Спасибо, всем за поддержку. 😃
Тогда в продолжении темы «выкладываю»:

Возможные неисправности и способы их устранения, рекомендации:

  1. Если при позиционировании положение вала всегда неточное, а иногда после старта совсем не останавливается, то неисправность может быть из-за наводок на цепи энкодера.
    Самый простой способ устранения – это соединить корпус двигателя с минусом источника питания (у меня так сделано). Можно также использовать экранированный провод, витую пару (в экране и без него), провода пропущенные несколько раз через ферритовое кольцо, ферритовые бусинки на каждый провод.
    При использовании экранированного провода – экран припаивается к «земле» (общему проводу) только с одной стороны, лучше со стороны сервоконтроллера. При монтаже надо стараться как можно дальше располагать друг от друга провода от двигателя и энкодера.
    Возможные схемы согласования можно посмотреть здесь www.skbis.ru/index.php?p=20 .
    Хорошо должны помочь в борьбе с помехами – дифференциальные пары приемник/передатчик сигналов линий связи www.chipfind.ru/datasheet/ldrv/1.htm .
    www.gaw.ru/html.cgi/txt/interface/lvds/lvds.htm (небольшое описание принципа работы).
    Так, например, сделано в модификации UHU www.c-n-c.cz/download.php?id=1957
    Но в этих случаях желательно использовать энкодер с дифференциальном выходом.
    Все выше описанные рекомендации в основном рассчитаны на «высоковольтные» (110В) двигатели, т.к. помех от ШИМ с ними гораздо больше.

  2. Если в одну сторону позиционирование точное, а в другую – с большой, всегда непостоянной погрешностью и в программе ServoTuning при считывании текущей позиции величина перемещения совпадает с заданной, то неисправность может оказаться в энкодере. У меня такое было с самодельным энкодером, в качестве датчиков в котором я использовал 2 щелевые оптопары оптопары PRI-246 www.rtcs.ru/hwsubtype.asp?id=195 (подобные оптопары можно найти в 3,5” дисководах). Я случайно немного изменил расстояние между оптопарами и произошел сдвиг фаз между каналами.
    Для настройки расстояния между оптопарами я использовал индикатор на 2 светодиодах (с буферным «усилителем» на CD4093 или К561ТЛ1) и при вращении диска энкодера добивался «стандартной» комбинации: 00 <-> 01 <-> 11 <-> 10 и так «по кругу» (0 – не «горит», 1 – «горит»).

  3. Если при позиционировании в одну сторону точно, в другую переход (или недоход – уже точно не помню куда) на 1 шаг при управлении по Step/Dir, а при задании через ServoTuning всё нормально, то неисправность может оказаться в импульсном блоке питания. У меня такое произошло в одной плате после увеличения площади сердечника (два кольца М2500НМС1 К16х8х6). В другой плате после такой же переделки всё работало нормально. При подключении обычного внешнего БП точность позиционирования восстанавливалась. Отмотал 2 витка от вторички импульсного транса и тоже всё стало O’k. В чём была причина, так и не понял, напряжение на выходе ИИП было 16В, от внешнего БП подавал 17В и всё работало. Возможно «глюк» был из-за большего уровня ЭМИ.

  4. При использовании «мощного» двигателя силовые дорожки на печатной, по которым протекает ток двигателя желательно «усилить» - с помощью припаивания по всей длине дорожки медного одножильного провода.

  5. Для уменьшения вероятности выхода «из строя» СОМ-порта во время наладки, надо общий провод сервоконтроллера соединить с корпусом компьютера.
    Подключать сначала провод к корпусу, а затем разъём к сервоконтроллеру. Соответственно отключать сначала разъём от платы сервоконтроллера и потом провод от корпуса.
    И не забывать отключать питание от сервоконтроллера и разряжать входной конденсатор через низкоомный резистор (при высоковольтном питании) во время всех коммутаций.

  6. После окончательной настройки, желательно «крупные» детали, например электролитические конденсаторы зафиксировать с помощью термоклея и покрыть плату лаком. Т.к. сервоконтроллер обычно расположен рядом с двигателем и в этом месте повышенная вибрация и возможно попадание мелкой металлической пыли, например в фрезерном или плазменной резки станках. При покрытие лаком надо постараться «не залить» разъёмы и клемники.

Надеюсь, приведённые советы помогут от лишней «нервотрёпки» которую я испытывал, когда иногда по нескольку дней выискивал эти неисправности.
Если, что ещё вспомню – напишу.

Zon, ждём результатов. Я тоже хочу попробовать как нибудь при возможности на dsPIC30F2010.

А вот здесь dsPIC Servo пример ременной передачи, про которую «говорил» boldive.
Я думаю можно применить ремешок и шестерёнки от стиральных машинок, в какой-то видел похожее. Можно такие поспрашивать у ремонтников стиралок.

Zon
arisov77:

Zon, ждём результатов. Я тоже хочу попробовать как нибудь при возможности на dsPIC30F2010.

В dsPIC30F2010 точно не влезет.Слишком мало памяти.
В dsPIC30F3010 осталось свободно байт 20 и то только
после сокращения всех подсказок которые выводятся на экран.
Ну и еще следующий проект который +/- 10в. Вот тут уже можно
поставить любой двигатель нацепив на него енкодер

arisov77

Честно говоря на объём не смотрел. Я хотел, что-то своё написать (но это далёкие планы, которые возможно и некогда не осуществляться), без лишних наворотов, к тому же тот проект на Си написан, а ним как известно, памяти МК немного больше затрачивается.

arisov77
arisov77:

Посмотрим, какую скорость Масh «выдать» …
зависимость не прямо пропорциональная (например, для 300имп/мм макс.скорость уже будет = 9000мм/мин), я формулы расчета не знаю, поэтому лучше всего проверять в самом Mach. При этом скорость не зависит от количества подключенных осей и скорости ядра (Kernel Speed в закладке Config / Port Setup and Axis Selection).

Тут я оказался не прав, скорость зависит от Kernel Speed (скорость ядра), надо после смены частоты «перезагружать» сам Mach, что я при проверке не сделал. (Т.к. я проверял с версией Mach3_1.83.027 и там нет (в подписи) такого указания. В новых версиях Machа уже «подписали».)
И зависимость скорости и дискретности прямопропорциональная (или Mach «глючил» или я, что скорее всего 😃 – время было позднее).

Формула для расчёта максимальной скорости имеет следующий вид:
Velocity = (1 500 000 / steps per) х (N / 25),
где [Velocity] = мм/мин, [steps per] = шаг/мм, N = значению Kernel Speed в кГц

Если установить 100кГц, то максимальная скорость при «steps per» = 400 может составить 15 000мм/мин.

Максимальная частота одной оси = указанной частоте в Kernel Speed (25, 35, 45 – в «старых» версиях Mach и в новых дополнительно можно установить 60, 65, 75, 100кГц), поэтому если предполагается, что сервоконтроллер будет работать с Mach и учесть, то что в «любительских» станках энкодеры выше 2000имп/об и двигатели выше 3000об/мин очень редко применяются (судя по моему анализу cnczone.com), то «гнаться» за быстродействием выше 100-150кГц думаю не имеет смысла.

Кстати, может кто-то на этом форуме знает как измеряется максимальная входная частота сервоконтроллера? Я здесь electronix.ru/forum/index.php?showtopic=59827 задавал этот вопрос, но ответа не получил.

STEPMOTOR

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

mura

Я для подобных измерений собрал простую схему, на входы 2-х прерываний завел энкодер, прога орабатывает прерывания, одно с плюсом другое с минусом, результат на порт со светодиодами (использовал AVREASY), движок раскручивал до появления ошибок - результат очень наглядный.

arisov77

Всем спасибо.
Совет STEPMOTOR мне понятен, только у меня нет пока энкодера с высоким разрешением (возможно, скоро появиться с 2 400имп/об), но тогда и двигатель надо чтобы мог до 5000 об/мин «разгоняться», которого тоже нет (хочется чтобы было не хуже чем UHU и Gecko320, 340, выше, как уже писал - не надо + небольшой запас). Кстати, энкодер, я думаю не обязательно независимый, можно «брать» с основного и сравнивать со Step.
Совет mura, мне немного не понятен, наверное Вы неточно написали. Прерывания «идут» по А и В энкодера? Если одно прерывание по энкодеру, а другое по Step, то тогда всё «становится на свои места». Опять же надо механическую систему, которая может ограничить результат.
Как нибудь “электронным” способом нельзя?

mura
arisov77:

Совет mura, мне немного не понятен, наверное Вы неточно написали. Прерывания «идут» по А и В энкодера? Если одно прерывание по энкодеру, а другое по Step, то тогда всё «становится на свои места». Опять же надо механическую систему, которая может ограничить результат.

A на INT0 и одновременно на INT1, B по вкусу.
прерывание по INT0 обрабатывает энкодер и результат накапливает в перевенной
прерывание по INT1 обрабатывает энкодер и результат накапливает в той же перевенной, но с вычитанием . На каждый импульс от энкодера 0-прерывание даст +1, а 1-е даст -1, и мы получим 0 в итоге, на малых скоростях так и выходит, а вот при увеличении скорости начинает накапливатся ошибка.