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

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 в закладке Версия).
Не авторство Художника также косвенно подтвердила моя личная переписка с одним из участников форума, который лично общался с Дмитрием.

BlrUsr

Собирал на maxe232/ самое интерестное ,что в терминале при вкл выводится Servo controller V (вроде так)
Может командами через терминал можно задать значения пид. (такие ли они как у чена)

ServoTuning ver 1.0.0.0.

И еще вопрос :
Какая max скорость будет на моем станке : Шаг винта 1мм, енкодер 1000 им/об, двигатель DYNAMO SLIVEN PIK 8 - 6/2.5 36V 0.30 Nm 1600 min-1, сервопривод Художника.

Датчики тока, действие которых основано на эффекте Холла - подойдут для постоянника?
Такие у меня есть от старых жестких дисков.

arisov77

Попробуйте уменьшить скорость СОМ-порта (в диспетчере устройств) у меня стоит 9600.

Скорее всего датчики Холла от старого винта не подойдут, т.к. они не датчики тока, а датчики положения ротора. Обычно их 3 шт.

BlrUsr

Все нормально , спасибо . не было экрана, а рядом шаговики и импульсные источники “трещат”

Вопрос про обнуление станка. Как мне использовать маркер в линейке для точного обнуления.
Хотя понимаю , что для большинства хобби применений пойдут и концевики.

В линейке “энкодере”
A , неA
B , неB
R , неR

В сервоприводе художника(чена) показан как дополнительный вход на ATMEGу энкодера Z.
Он как-то влияет на систему?

arisov77
BlrUsr:

В сервоприводе художника(чена) показан как дополнительный вход на ATMEGу энкодера Z.
Он как-то влияет на систему?

Что-то я не нашёл по схеме у Художника доп. вход Z, есть вход Reserved. Я его не пробовал использовать, но судя по прошивке servo_mega8_int.asm – это должен быть вход ограничения движения (при лог.0 на этом входе переход на подпрограмму il_fall). В прошивке servo_mega8.asm этот вход не используется.

emilcnc

“для ServoTuning.exe): скорее всего надо обращаться к Alexander A. Karsakbayev”

помогите связатся с ним …

ICQ 110874072

emilvv@gmail.com

arisov77

emilcnc попробуйте связаться с Карелиным Максимом k2soft.narod.ru/contacts.htm , возможно он поможет. Художник (Дмитрий Жабин) указывает на www.k2soft.narod.ru в качестве домашней страницы www.cnczone.ru/forums/index.php?showuser=10. Или напишите Художнику в личку на форумах www.cnczone.ru и www.sapr2k.ru/index.php, так как с этого форума его изгнали. Кстати интересно за что?

27 days later
Anton_M
arisov77:

«слетала» EEPROM.

Чтоб память не слетала нужно правильно установить Фьюзы - смотрите в низу странички - avr123.nm.ru/02.htm

Anton_M
Anton_M:

Чтоб память не слетала нужно правильно установить Фьюзы - смотрите в низу странички - avr123.nm.ru/02.htm

Полевики советую брать для Н-моста на ток в 5 раз больший чем вам нужен для мотора (ток аппаратной защиты на 50% больше) и на напряжение на 50 % выше чем питание моста.

Микроконтроллер разумно выбрать с аппаратным интерфейсом для квадратурного энкодера - dsPIC30 или 33.

http://www.microchip.com/stellent/idcplg?I…;param=en533540

duritskiy

кто бы отладил и наладил производство недорогих сервоконтроллеров…

ATLab
duritskiy:

кто бы отладил и наладил производство недорогих сервоконтроллеров…

А оно нужно? В объемах, окупающих затраты на развертывание производства и приносящих прибыль и при этом недорогих?
При этом нужно учесть, что сервоконтроллер и двигатель суть “близнецы братья” - параметры одного сильно зависят от другого, что грамотно настроить сервопривод намного сложнее, чем просто подключить ШД…
Кто хочет серво - покупает микроконтроллер UHU и делает сам. Или покупает готовое решение - вместе с двигателем.
А вообще, серво - скорее из профессионального использования, а не хобби, и там недорогой контроллер скорее не нужен. Важнее надежность и качество.

arisov77
Anton_M:

Чтоб память не слетала нужно правильно установить Фьюзы…

Не поможет. На надёжность EEPROM в AtMega8 отвечает только 1 фьюз – BODLEVEL. Он у меня =0, т.е. сброс происходит при 4В, а сбой всё равно происходил. Очень хорошо описаны причины и способы устранения «слёта» EEPROM в книге В.Н. Баранова «Применение микроконтроллеров AVR: схемы, алгоритмы, программы», стр. 154-156. (выкладываю здесь – Reset_EEPROM.rar).
Из-за того, что нет гальванической развязки между МК и двигателем при искрении коллектора очень даже возможен сбой. (При питании 110В осциллограф стоящий рядом с проводами к движку «с ума сходит»). Для бесколлекторников, мне кажется это не так актуально.
Пути уменьшения вероятности слёта я вижу следующие: полная гальваноразвязка МК и выполнить рекомендации указанные В.Н. Барановым, т.е. Brown-детектор, изменение адреса EEPROM после записи и считывания, на адрес не содержащий данных, и мажоритирование. И есть на мой взгляд, самый надежный способ – это совсем отказаться от хранения данных в EEPROM, что я сделал. Хотя в этом способе есть недостаток – неудобство настройки, но надежность превыше всего.

Anton_M:

Полевики советую брать для Н-моста на ток в 5 раз больший чем вам нужен для мотора (ток аппаратной защиты на 50% больше) и на напряжение на 50 % выше чем питание моста.

Спасибо за советы. Об этом ещё писал emilcnc. Я сам до этого дошел после нескольких «бахов» во время своих экскрементов. Один (я уже выше на этой ветке писал) из-за своей ошибки, 2-ой раз - из-за перегрева транзисторов (при токе 1А - IRF740 без радиатора проработали около 30 сек.), 3 раз - из-за резкой смены направления. В принципе при правильном настроенном контроллере и Масh (плавный разгон и торможение в закладке Config/Motor Tuning) можно эксплуатировать сервопривод и без аппаратной защиты, но никто не застрахован от глюков Mach, наезда на препятствие и т.п.
Мне всё-таки пришлось поставить аппаратную защиту (на отдельной маленькой платке), установить радиаторы. На IRF740 c небольшим радиатором (очень хорошо подошёл алюминивый профиль от оконного карниза) и током ограничения около 1А привод можно эксплуатировать. На мой взгляд полевики надо брать с 10 кратным запасом (IRF740, 400V, 10A). При хорошем радиаторе можно, наверное, и 5 кратный запас.
Также выяснилось, что при удержании двигателя (при 1А) 2-ух ватный резистор RC-цепочки подключенной параллельно движку начинает сильно греться, пришлось поставить в параллель 2 шт. МЛТ-2 по 3кОм. Сейчас жду IRFP260N, Nкан 200В 49А, ТО247АС как у UHU. Как их получу буду дальше умощнять, о результатах сообщу позднее. Из-за этого у меня весь процесс затормозился.
При экспериментах (при «высоких» напряжениях) выяснилось, что контроллер чувствителен к наводкам по входу энкодера. Как выяснилось, из-за высокого выходного сопротивления датчиков энкодера. Пробовал щелевые оптопары с нагрузочным резистором 1кОм и экранированный провод – стало гораздо лучше, но ложные всплески всё равно оставались (смотрел по осциллографу). Помогло только расположение буферного усилителя с низким выходным сопротивлением непосредственно около оптопар. Экранированный провод я не стал использовать, но он не помешает.
Фото плат (без дополнений, качество платы не очень, бывает и получше, но как уж получилось…), схему с добавленным узлом контроля тока и внешним усилителем энкодера выкладываю в архиве. Также в новой схеме исправлены некоторые ошибки предыдущей (из-за не внимательности), которые я обнаружил: HL1, HL2 – свето, а не фото-диоды, аноды диодов VD16, VD19 должны «идти» к истокам соответствующих транзисторов. При сборке по моему варианту печатки, надо учесть, что VT2 - BC847 (SOT-23) надо перевернуть «вверх ногами».
R11 идущий на РС2 AtMegи на будущее, хочу сделать ограничение по времени срабатывания токовой защиты. Например, при заклинивании двигателя (при перегрузке) более 5 сек. следует отключение его на 15 сек., затем снова включается на 5 сек. И если перегрузка ещё остаётся, то опять выключить на 15 сек. и так несколько раз. Если перегрузка не будет устранена, то движок отключить совсем. Следующее включение только после выкл.-вкл. питания. Возможно это не и надо. Но это обезопасит двигатель и полевики.

Servo_2.rarReset_EEPROM.rar