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

AZi

Да выложи схему, печатку и прошивку если не жалко… 😃

celladon

Прошивка та, что в начале форума. Были исходники.

1 month later
technik

Собрал контроллер по схеме от celladon.Только dir не на 4, а на 26 pin.Он вроде работает, но двигатель не вращается.С программой servotuning он
обменивается данными,даже когда вращаешь вал двигателя , на компе показывает рассогласование и mega даже пытается
корректировать позицию.Это видно по графику,т.е. вслед за зелёной линией прыгает и красная.Но в это время на выводах 15 и 16 отсутствует напряжение.
Когда программу переводишь в режим ШИМ , то при перетаскивании ползунка на вывыодах 15 и 16, ШИМ есть и меняется.
Но двигатель в это время всё равно не вращается.Двигатель и энкодер из старого принтера. L298 вроде исправная.
Объясните логику работы ШИМ1 , ШИМ2, HI1, HI2. А зачем ещё FORCE1 и FORCE2?

Anton_M

посмотрите в симуляторах - VMLAB.nm.ru или в PROTEUS123.narod.ru/01.htm

будет ясно что происходит.

technik

Вот накатал проектик в Протеусе.Что-то непонятно оно работает.Может кто разберётся.
После запуска симуляции надо подождать несколько секунд , а то сразу ничего не происходит.
В приложении zip архив.

Servo_M8_L298.zip

technik

Так что, у кого нибудь работает этот контроллер или нет?
А мою схемку в протеусе кто-нибудь проверял, у вас работает?

А курс по протеусу я уже читал — ничего нового.

maxvovk
technik:

Так что, у кого нибудь работает этот контроллер или нет?
А мою схемку в протеусе кто-нибудь проверял, у вас работает?

А разве вот такие конструкции работают?

do_get_hardparam:
ldi zl, low(hardparam)
ldi zh, high(hardparam)
ldi r16, 5 ; всего 4+1 параметров по 1 байту
dghpc: ld uart_r, Z+

Мне всегда казалось, что LD по Z невозможно и реализовано в LPM…

technik

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

celladon

Я использовал прошивку без прерываний. Только я бы не сказал что она хорошо работала. Но покрайне мере двигатель вращался. Что бы нормально заработало приходилось нескольео раз включать выключать. Но даже когда двигатель не включается обмен с компьютером есть. Проверял СОМ монитором. Непонятно что за синяя линия на графике. Раньше была только красная и зеленая. А вчера вот появилась. А как успехи у других? Двигатель вращается? Какие биты устанавливали при прошивке? Я бы задал несколько вопросов к разработчику прошивки и программы. Как сним связаться я не знаю.

technik

А у меня не хочет вращаться ни с той ни с другой прошивкой,хотя обмен по RS232 есть.
2 celladon. А почему у вас на вашей схеме вход dir идёт на 4 вывод , а у Художника на 26?

Саму атмегу прошивал программатором встроенным в CodeVision, пробовал и тем который в BascomAVR.
Тут кто-то писал про включение браунаут, я и с ним и без него пробовал,менял bodlevel,результат один— двигатель не вращается.
Менял местами выходы с энкодера, ничего не помогает.Самое интересное , что в режиме ШИМ при передвигании ползунка, на меге он есть и меняется,
следовательно двигатель должен вращаться или в одну или в другую сторону.Был глюк ,когда плохо прошилась мега,то двигатель вращался,и через каждые 2-3
секунды останавливался.Что-то мне думается, что выводы 25 и 13 меги надо пустить на входы enable L298, а шим на inputsы.

9 months later
BlrUsr
Художник:

Уважаемые хоббисты, хочу поделиться разработкой. Это сервоконтроллер на AVR, с удобной программой настройки. За основу брал прошивку Чена - elm-chan.org Его проект открытый, я тоже публикую свои изыскания. Использовал этот контроллер в одном из гравировальных станков ЧПУ для экспериментов. Силовые ключи штатные.

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

F2 - Предыдущий серво-режим (во время измерений недоступно)
F3 - Следующий серво-режим (во время измерений недоступно)
F8 - СТАРТ (переместиться в заданное относительное положение)
F9 - ИЗМЕРЕНИЕ
F11 - СТОП
F12 - СБРОС (всех координат в 0 + стоп)

Лево - Управление - уменьшить
Право - Управление – увеличить
Вверх – «0» стоп
Ctrl + Лево - Управление крайнее левое положение
Ctrl + Право - Управление крайнее правое положение

При нажатии Ctrl, после отпускания лево/право, выставляется значение, которое было до
удержания Ctrl. Если это значение было из противоположного направления, устанавливается
значение 0, чтобы лишний раз резко не изменять направление на противоположное и не ломать
ключи с приводом.

Клик правой кнопкой мыши на график - выпадающее меню “Сохранить график”, можно сохранять в BMP и векторный WMF.

В банки данных заносятся коэффициенты PID. По умолчанию используется нулевой.
Значения полей “Имп/мм”, “История измерений”, “Период измерений” сохраняются после выхода в INI файл, который будет находиться в той-же папке, откуда была запущена программа.

Это проверенная схема и прошивка. Можно ли на ней работать? Для хобби возможно подойдёт, но скорости без отклонений от координат довольно низкие. При рабочем перемещении на скорости 2 м/мин ловил при плохом разгоне отклонение на диагонали до 0,2 мм. Импульсов энкодера – 200 имп/мм. На свободном перемещении при скорости 2 м/мин идёт очень неплохо, в случае отклонения, вгоняет машину в координату, машина всегда выходит в “ноль“. Пользуйтесь.

В приложенных файлах схема, трассировка, сборочный чертёж, прошивка, программа ServoTuning для настройки контроллера. Трассировка не очень удачная, по быстрому сделана, но всё функционирует. Просто обратите внимание при подключении, чтобы экран провода не задел шину +5V. Прошивку контроллера можно осуществлять непосредственно на плате. Светодиоды для индикации процесса прошивки. Типичный график поведения машины приложен. Старт с нуля, без разгона-торможения.

Если нужно будет фото контроллера в сборе, или коэффициенты настройки для моего станка, размещу. Интересно будет узнать коэффициенты PID регулятора для вашей серво системы.

Буду признателен за рабочие проверенные схемы силовых ключей для сервомоторов, 110 В, 20А.

Скажите о программе для Windows .
Не хочет коннектиться с ATMEGой Правда у меня нет COM и использую преобразователь USB-COM (PL2003) там готовые 5ти
вольтные выходы-входы и подключаю напрямую без MAX232
может что-то не так??

1 month later
ParaNoiG

Помогите с ответами на следующие вопросы:

-Сколько за один оборот генерируется импульсов?

-Что представляет собой драйвер?

-Как при задании нагрузки происходит стабилизация скорости?

-Есть ли описание законов перехода с одного режима в другой?

И есть ли у вас ещё какая-нибудь информация по сервоконтроллеру, кроме той что на сайте Чена?

8 months later
arisov77

Хочу продолжить тему усовершенствования сервопривода Чена.
Для начала сразу уточняю, что всё прекрасно работает на макете. На станок буду ставить, наверное, только осенью.

  1. По схеме, ПП и конструктиву: всё делалось под определенный станок, поэтому имеются некоторые особенности, например, схема опроса энкодера сделана на компараторе, т.к. в станке установлен какой-то старинный энкодер на лампочке и фотодиодах. С нормальным энкодером LM2903 можно исключить. Светодиоды для индикации питания и стабилизации напряжения на фотодиодах энкодера.
    Выходной каскад позаимствован от UHU. Выходы А(PC1) и В(PD7) я не использовал, на них логические сигналы направления вращения.
    БП нормально работает от 16В до 350В (постоянки) – проверенно на нескольких десятков конструкций. Диоды VD7-VD10 для «подстраховки» контроллера от пробоя транзисторов. Правда во время «баха» (по своей невнимательности на вход питания подал переменку) вылетели только транзисторы и стабилитроны, так что диоды можно тоже не устанавливать (кроме одного по питанию.). Транс намотан на ф.кольце М2500НМС1 К16х8х6. У кольца обтачиваются края, разламывается пополам, затем SuperGlue или эпоксидкой склеивается без прокладки. Полученного зазора достаточно для этой мощности. Затем кольцо обматывается, и мотаем первичку ПЭВ-2 диаметром 0,15мм – 70 витков (длина провода 154-155см). Индуктивность должна быть около 2,5 мГн. Если она будет другой, ничего страшного – LNK520 у меня работали от 800 до 5000 мГн. Вторичка содержит 12-13 витков (36см) проводом ПЭВ-2 0,25мм.
    Плата двухсторонняя 92х120мм, в формате SprintLayout5. Рассчитана в основном на SMD элементы. Транзисторы без радиаторов, но немного места под них есть. У меня размер платы был ограничен посадочным местом в станке, поэтому при повторении конструкции (если найдутся желающие 😒 ) желательно место под радиаторы увеличить. Если надо могу выложить фото.
    Для повышения надежности и помехоустойчивости, я думаю, что можно немного модернизировать схему: установить между контроллером и драйверами (IR2184) быстродействующие оптопары (вместо диодов VD9,VD10), драйвера запитать от отдельной обмотки транса, на вход опроса энкодера также установить оптопары. Тем самым мы от всего (кроме RS-232) гальванически развяжем контроллер и как мне кажется, еще не одному микроконтроллеру это не повредило 😵 .

  2. По прошивке: сначала сервопривод у меня не заработал. Жил своей непредсказуемой жизнью. (Как ругал я этого Художника!) Потом подключил к RS-232, запустил ServoTuning. Движок стал крутиться в ШИМ-режиме, после мучений ввел ПИД- коэффициенты от Художника и чудо наступило – в серворежиме, с небольшими «глюками» в программе движок стал крутиться как надо. Так что, тем кто прошивает CodeVision надо обязательно отдельно прошивать и EEPROM. Наверное, судя по форумам, такая ошибка была и других. Без прошивки EEPROM сервопривод не работает, движок сразу бешено крутиться. Правда и после неё он толком не работает, но пару включений, если повезёт, он уже может автономно без ServoTunning по Step&Dir работать. Как здесь уже писали и сам Художник это подтвердил www.cnczone.ru/forums/index.php?showtopic=114&st=2… «слетала» EEPROM. Есть много способов уменьшить вероятность сбоя от этого, но самый лучший (в плане надёжности) – это избавиться от использования хранения коэффициентов в EEPROM. (Если у вас нету тети, её вам не потерять 😁 )
    Для этого я поступил следующим образом: сначала в контроллер записываю прошивку от Художника, я использовал servo_mega8_int.hex (Flash) и servo_mega8_int.eep (EEPROM). Затем в ServoTuning «гоняю» движок, меняю ПИД-коэффициенты, записываю их на бумагу. Потом полученные десятичные значения перевожу в шестнадцатеричные (по 2 байта). Эти hex в AVRStudio c прошивкой ServoFinishArtistInt.asm или ServoFinishArtist.asm ввожу в подпрограмме LoadPIDParamRAM (там есть комментарии), перекомпилирую и уже конечный (финишный) hex-файл в CodeVision «шью» в контроллер.
    Выше указанные .asm – файлики я избавил от всего лишнего – от EEPROM, связи с компом по RS-232. С этими прошивками сервопривод может только работать с по Step&Dir. Что собственно мне и надо. Искрил рядом дросселем… сбоев не было.
    Для тех, кому надо связь по RS-232 сделал ServoUART.hex - её также можно использовать для подбора ПИД-коэффициентов, «гонять» в ServoTuning, только нельзя будет записать ПИД-настрйки в EEPROM. При автономном включении сразу переходит в серворежим от Step&Dir.
    На макете разницы в прошивках я не заметил.
    Небольшое дополнение: при программирование в CodeVision я использовал внешний тактовый генератор. Fuse –биты указаны в .asm файликах.

Пока я не установил серву на станок хотелось бы узнать мнение, советы по следующим вопросам:

  1. на станке у меня 2 привода перемещения порталом: на первом установлен 1 движок СЛ-369 (U=110В, ток трогания –2,5А, ток при максимальной скорости – 0,4А), на втором приводе 4 таких же движка в параллель). Надо ли мне устанавливать на транзисторы IRF 740 (до 10А) устанавливать радиаторы? Для первого привода, как мне кажется не надо, а на второй? Если да, то какой площади? Если я для второго привода буду использовать IGBT-транзисторы IRG4PC50UD, 600В, 55А, то в этом случае радиаторы нужны?
    У меня просто плата будет установлена непосредственно около движков вместо другой платы и радиаторы там будет очень трудно «запихнуть».

  2. По поводу настройки ПИД - коэффициентов: где и что можно почитать про это, что зависит от каждого из них? В комментариях я некоторые расписал, но боюсь, что они не точны. В реальном станке может всё измениться. Хотелось бы быть подготовленным к этому хотя бы теоретически.

  3. Как мне кажется, Художник использовал за основу первые варианты прошивок от Чена. На сайте Чена написано, что более поздняя версия smc3a.asm оптимизирована для замены шаговых двигателей (Optimized for Replacement of Stepping Motors) и исправлены некоторые ошибки (smc3a.txt в папке Chan, также в ней есть корявый перевод Google странички с его сайта). Спрашивать у Художника бесполезно – он ничего не помнит, а возможно и не он её переделывал. Поэтому, вопрос для тех кто разобрался в алгоритмах Чена и Художника – какая для из них, на Ваш взгляд лучше (в плане «ходовых» качеств)?

Схема, плата, прошивка, …. в архиве.

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

Servo_No_EEPROM.rar

ЛомиК
arisov77:

Хочу продолжить тему усовершенствования сервопривода Чена.

Узел из светодиодов HL1,2 и резика R34 негодится, его цель, как я понимаю защита от кз после разъема ХР3 по цепи 5 вольт или питание фотодиодов 3 вольтами, возможно у автора просто был готовый оптодатчик на 3 вольта, да еще диоды VD1.VD2 развернуты не в ту сторону, стоит просто заменить нормальными оптопарами, а вместо одного R34 поставить 2 на каждый ключ, номиналом 470 ом а входы(светодиоды) запаралелить и пустить через резик, если там переменка, то встречно еще поставить защитный диод .
Насчет развязки и модернизации цепей VD9,VD10 и резисторов R13.R14, думаю да, стоит развязаться, на случай пробоя одного или нескольких полевиков, хотя походу эти диоды и недолжны пропустить повышенную напругу, но лучше как лучше, это не дорого.
Входной буфер на транзисторах VT1,VT2 вообще странный, я бы просто поставил логические инверторы, 561лн2 например, но это дело вкуса…

Это что при стороннем взгляде видно.

arisov77
ЛомиК:

Узел из светодиодов HL1,2 и резика R34 негодится, его цель, как я понимаю защита от кз после разъема ХР3 по цепи 5 вольт или питание фотодиодов 3 вольтами, возможно у автора просто был готовый оптодатчик на 3 вольта, да еще диоды VD1.VD2 развернуты не в ту сторону, стоит просто заменить нормальными оптопарами, а вместо одного R34 поставить 2 на каждый ключ, номиналом 470 ом а входы(светодиоды) запаралелить и пустить через резик, если там переменка, то встречно еще поставить защитный диод .
Входной буфер на транзисторах VT1,VT2 вообще странный, я бы просто поставил логические инверторы, 561лн2 например, но это дело вкуса…

Я же писал, что делалось под конкретный станок, поэтому и схема опроса энкодера такая. Про светодиоды тоже писал, что они для индикации и стабилизации напряжения на фотодиодах. Фотодиоды включены правильно, где-нибудь почитайте для общего развития об включениях фотодиодов, тем более они в станке с 75 г. стоят в таком обратном включении. “Старожилы” не помнят, чтобы даже лампочки меняли, не то чтобы фотодиоды. Также рядом с основным энкодером установлен точно такой же резервный. Поэтому мне менять фотодиоды с лампочкой на нормальную оптопару нет никакого смысла, к тому же пришлось бы разобрать пол-станка. Напряжение с фотодиодов меняется от 0,1 до 2,9В, затем через делится на 10 (от 0 до 0,3В – на инверсном входе компаратора) - для уменьшения влияния наводок. Опорное напряжение на прямом входе компаратора 0,15В. Также введён небольшой гистерезис.
Вы предлагаете светодиоды запаралелить – это говорит о вашей некомпетенции в схемотехнике.
Наверное разработчики программатора AVR910 от Atmel www.atmel.com/dyn/resources/…/doc0943.pdf входной буфер на транзисторах VT1,VT2 не посчитали странным, поэтому и использовали. У меня к нему тоже претензий нет.

ЛомиК
arisov77:

Я же писал, что делалось под конкретный станок, поэтому и схема опроса энкодера такая. Про светодиоды тоже писал, что они для индикации и стабилизации напряжения на фотодиодах. Фотодиоды включены правильно, где-нибудь почитайте для общего развития об включениях фотодиодов, тем более они в станке с 75 г. стоят в таком обратном включении. “Старожилы” не помнят, чтобы даже лампочки меняли, не то чтобы фотодиоды. Также рядом с основным энкодером установлен точно такой же резервный. Поэтому мне менять фотодиоды с лампочкой на нормальную оптопару нет никакого смысла, к тому же пришлось бы разобрать пол-станка. Напряжение с фотодиодов меняется от 0,1 до 2,9В, затем через делится на 10 (от 0 до 0,3В – на инверсном входе компаратора) - для уменьшения влияния наводок. Опорное напряжение на прямом входе компаратора 0,15В. Также введён небольшой гистерезис.
Вы предлагаете светодиоды запаралелить – это говорит о вашей некомпетенции в схемотехнике.
Наверное разработчики программатора AVR910 от Atmel www.atmel.com/dyn/resources/…/doc0943.pdf входной буфер на транзисторах VT1,VT2 не посчитали странным, поэтому и использовали. У меня к нему тоже претензий нет.

Насчет включения фотодиодов ошибся, согласен.
Нсчет параллельного включения, да пожалуй лучше включать каждый через свой резистор что бы выровнять токи через них, иначе чем больше будет разница в падениях напряжени на каждом из них, тем больше будет разница в токах и соответственно яркость, но если учесть, что они из одной партии, то разницы большой быть недолжно, а та разница в яркости, что будет, недолжна отразится на работе оптопары в целом, но да, это не лучшее решение…
Разработчики Атмела просто видать экономили элементы, им всеравно сколько ставить компонентов, лиш бы по цене дешевле, а мне проще одну микруху поставить, да еще куча свободных инверторов останется навсяк.
Ладно, это не мое дело.

7 days later
emilcnc

Извините за мой руский …

Я тоже делаю ELM CHAN серво + UHU power stage …😃

Здесь тема очень интересна, но я думаю что надо немножко изменить.

Позмотрите мою схему … в конце

www.bg-cnc.com/phpBB3/viewtopic.php?f=43&t=34&p=86…

Надо димать об current limiting ! и для болших V надо използоват другие power stage.

Скоро я надеюс сделат первъе пробь … надеюс to “keep smoke in” как говорят американць 😃

Будет ли так добр “художник” чтобь дал нам source code для ServoTuning.exe ??

В будищем я постараюс прокоментировать source code ( SMC3A ), взят все что нужно для ServoTuning.exe и если возможно
оптимизировать code ( SMC3A ) до всех нужньх возможностей, которье публиковань здесь и в интернет.

Поздравляю всех !

Емил

www.bg-cnc.com/wordpress/
www.bg-cnc.com/phpBB3/

24 days later
BlrUsr

У меня четыре вопроса

  1. Приведите настройки FUSE для этого привода

  2. Может кто-нить юзал этот двигатель DYNAMO SLIVEN PIK 8 - 6/2.5 36V 0.30 Nm 1600 min-1

  3. Почему программа ServoTurning - соединяется, а дальше при любом действии (timeout)

  4. Открытый проект на dsPIC30f4012h members.shaw.ca/swstuff/dspic-servo.html - будет ли серва быстрее чем на ATMEGе

Сергей_ps

Я на chipboom прошивал у него побитного доступа нет, Я на новом компе и конфиги не сохранил, примерно так- см. личку.
ЕПРОМ прошить не забыл? у меня зпустился без проблем, двжок вроде от эпсона, в соседнем посте упоминался.
А энкодер у тебя какой?

BlrUsr

EEPROM прошил - проверил - все идентично.
В качестве энкодера хочу использовать оптическую линейку (немецкую) . У нее точность 1 микрон. Или энкодер - 1000 на импульсов, как раз
под шаг моего винта получается 1 микрон дискретность.
Еще вопрос : безшунтовой измеритель тока двигателя.

arisov77

Для BlrUsr: А по какой схеме собирали, начём связь по RS-232?
Есть 2 варианта программы ServoTuning. Одна из них вер. 0.1.1.0 у меня больше глючила (вылетала), чем 1.0.0.0.

Для imilcnc (Будет ли так добр “художник” чтобь дал нам source code для ServoTuning.exe): скорее всего надо обращаться к Alexander A. Karsakbayev, а не к Художнику (Дмитрий Жабин), т.к. авторские права на ServoTuning вроде принадлежат ему. (Правой кнопочкой мыши и посмотреть свойства ServoTuning.exe в закладке Версия).
Не авторство Художника также косвенно подтвердила моя личная переписка с одним из участников форума, который лично общался с Дмитрием.