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

AZi

ШИМ представляет из себя вот че:
стоит компаратор на один вход коотрого подается пила, а на другой напряжение обратной связи(по напряжению, по току, еще по чему - не важно) и когда напр обратной связи сравняется а затем станет больше того что на пилообразном сигнале в данный момент - уровень на выходе сменится…

В см600 и прочих девайсах работающих с линейными движками стоит такая схема:
компаратор, на один вход которого подается напряжение пропорциональное току в обмотке, а на другой - обратная связь по току, затем стоит триггер на вход которого идет напряжение с выхода компаратора а на вход сброса/загрузки - тактовый сигнал частотой 2кгц(в СМках) или другая, этой частотой достигается то что схеме не заведется на высших гармониках и не войдет в линейный режим, тоесть задали допустим 1А - ключ открылся, ток растет… бац - привысил 1А, компаратор выдает единичку, а тригер тем временем ждет тактового импульса, как импульс пришел - он переключает ключи в другую сторону и ток идет уже из обмотки обратно в питание, как станет ниже заданного - компаратор опять сменит уровень а триггер дождавшись тактового импульса переключит ключи…
тоесть ток в обмотке будет то возрастать то убывать с чатотой 2кгц, и действующее значение будет равно заданному…

ZanozM

ШИМ представляет из себя вот че:
стоит компаратор на один вход коотрого подается пила, а на другой напряжение обратной связи(по напряжению, по току, еще по чему - не важно) и когда напр обратной связи сравняется а затем станет больше того что на пилообразном сигнале в данный момент - уровень на выходе сменится…

Так а где в этом девайсе задающий сигнал( пропорциональный току в обмотке)?

В см600 и прочих девайсах работающих с линейными движками стоит такая схема:
компаратор, на один вход которого подается напряжение пропорциональное току в обмотке, а на другой - обратная связь по току, затем стоит триггер на вход которого идет напряжение с выхода компаратора а на вход сброса/загрузки - тактовый сигнал частотой 2кгц(в СМках) или другая, этой частотой достигается то что схеме не заведется на высших гармониках и не войдет в линейный режим, тоесть задали допустим 1А - ключ открылся, ток растет… бац - привысил 1А, компаратор выдает единичку, а тригер тем временем ждет тактового импульса, как импульс пришел - он переключает ключи в другую сторону и ток идет уже из обмотки обратно в питание, как станет ниже заданного - компаратор опять сменит уровень а триггер дождавшись тактового импульса переключит ключи…

Да все верно, такой ШИМ используется и в шаговых приводах.
Ведь там нужно контролировать ток обмотки в любой момент времени.
Для сервы я считаю это излишне, можно поставить компаратор следящий за током, как только ток превысит номинал, контроллер поймет что нужно сбросить пыл, вот здесь похоже и нужен контур тока который будет влиять на задающий сигнал.

AZi

ШИМ представляет из себя вот че:
стоит компаратор на один вход коотрого подается пила, а на другой напряжение обратной связи(по напряжению, по току, еще по чему - не важно) и когда напр обратной связи сравняется а затем станет больше того что на пилообразном сигнале в данный момент - уровень на выходе сменится…

Я тут малость не все написал, там еще между обратной связью и компаратором стоит операционник который сравнивает опорное напряжение и напр обратной связи…

глянь вот здесь - там по структурной схеме все впринципе понятно…
focus.ti.com/lit/ds/symlink/tl494.pdf
вообще гдето в инете более удачный даташит был, поищи если интересно…

3 months later
celladon

Собрал контроллер для серводвигателей на Меге8 и L298 для двигателей с током до 4А. Если кого интересует выложу схему и печатку. Но у меня возникла проблема. Послое программирования Меги контроллер работает нормально. Через какое-то время перестает работать. Почему-то меняется содержимое EEPROM. Возможно я не правильно установил биты конфигурации. Подскажите как надо.
Это происходит даже если не настраивать при помощи прогрммы СервоТюнинг. Кстати есть исходники к ней у кого-нибудь?

mura

Через какое-то время перестает работать. Почему-то меняется содержимое EEPROM. Возможно я не правильно установил биты конфигурации. Подскажите как надо.

такое обычно бывает когда используют 0-ю ячейку или не включают браунаут.

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