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

Художник

А можно сразу hex или bin выложить.

Пожалуйста. См. в приложении. V0.2 с прерыванием, но что то мне не нравится. Через недельку, как тесты закончу, выложу вариант с сигналом торможения.

hex_servo.rar

14 days later
Художник

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

Так что думаю, для хобби подходит.

Попробую более жёсткие режимы и нагрузки, сообщу.

P.S. Похоже ни у кого проверенной схемы ключей нет…

1 month later
ZanozM

Уважаемый чем исходники компелить?

STEPMOTOR
ZanozM:

Уважаемый чем исходники компелить?

Ассемблером для Atmel миктроконтроллеров !

ZanozM

Уважаемый чем исходники компелить?

Ассемблером для Atmel миктроконтроллеров ![quote]
Да по ночам мозги отключаются, не в том архиве искал.
С AStudiO я маленько знаком даже на Асме писал для AT90S2313 примитивный девайс для управления LB1847 типа там микростеп. В графической среде писал для ATmega8535 девайс по SPI управляет DAC.
Я это все к тому что с исходниками я могу разобратся в плане где какое прерывание, может даже смогу на ATmega16 перевести, под рукой ATMEGA8 нет.
Только как всегда хочется большего, интересует как эта адская машина работает.
Книги читал читал ну нех-ра непонял, вопрос зачем нам переводить дискрету в аналог, чтобы потом аналогово управлять сервой, которая построена на дискретном принципе.
Может проще можно сделать, типа стойка выдает по паралельной шине в серву значение этого самого DACA.
MACH2 и тому подобное, выдают шаг направление, а что там серва делает его мало беспокоит как я понял у сервы есть какой то предел ошибки положения, после чего он выдает стоп машина.
Я сделал вывод что принцип построения сервы понятен далеко не всем.
Давайте общатся на эту тему, и многое станет ясным.
Разберемся что к чему.
Завтра намерен выложить основательно свои мысли. тем более пришла отладочная плата ARM7 с простеньким Филипком,короче реализация ждет своего проджекта.

ZanozM

Нашел в нете диссертацию на тему КВАЗИРЕЗОНАНСНЫЕ ИМПУЛЬСНЫЕ ПРЕОБРАЗОВАТЕЛИ ДЛЯ СИСТЕМ ТОЧНОГО ЭЛЕКТРОПРИВОДА автор Ревко Анатолий Сергеевич.
Задача оптимизации точного привода(быстродействие, возможность за минимальное время и с минимальной ошибкой отработать заданную команду или скомпенсировать возмущающее воздействие) решается по принципу максимума Понтрягина.
В эти расчеты закладывается очень много параметров инертность якоря, магнитный поток, ток якоря, индуктивность цепи, угол поворота, если это не начало движения то угловую скорость , и так далее.
При задании повернуть якорь на определенный угол, выдается примерно такое воздействие на двигатель 1) в нулевой момент времени подать +24вольта 2) во время t1 подать -24 вольта 3) в момент времени t2 снять напряжение с якоря.
Также можно рассчитать воздействия на якорь для ускорения до определенной скорости, на мой взгляд можно много еще чего сделать.
Да только алгоритм математически громоздкий и разобраться в нем, тем более реализовать в железо у меня точно не выйдет.
Это была так сказать реплика по поводу, чего только нет на свете, мысли же мои гораздо скромнее.
Хочу на пальцах прикинуть как работает сервопривод, у которого есть только два входа Степ и Дир.
Для начала хочу вспомнить как работает классическая серва , в моем понимании у классики рулит задание значения скорости в аналоговой величине, приходит такая величина с ЧПУ на серву , и привод обнаруживает что на одной ножке есть напряжение а на другой с тахогенератора его нету. Разность напряжения и есть величина рассогласования которое, привод спешит компенсировать подав на классический ШИМ напряжение.
Сигнал рассогласования приходит на ПИД регулятор, а из него выходит сигнал управления ключами, еще есть обратные связи по скорости, здесь мне кое что понятно.
Но как работает импульсная серва , что в ней является сигналом рассогласования ?
Осмелюсь предположить, что по приходу импульса управления на контроллер он подает напряжение на якорь, якорь поворачивается на заданный угол, а время между приходом импульса с ЧПУ и выдачей энкодером импульса о благополучной отработке, и есть рассогласование которое контроллер должен стремится компенсировать.
По логике, для того чтобы быстро скомпенсировать рассогласование, привод должен знать последует за первым импульсом второй, а следом третий или первый импульс будет одиночный. Ведь контроллер должен знать оставлять ему угловую скорость, или тормозить до нуля в случае одиночного импульса, а может надо по заложенной динамике разгона все больше и больше выдавать управляющее воздействие на якорь, для компенсации растущего рассогласования.
Короче надо плавно разгонятся потом маленько зафиксировать скорость а далее так же медленно тормозить, иначе можно вылететь на больший угол якоря , потом компенсировать это противодействием, по моему это называется перерегулированием?
Скорей я просто много не знаю, может быть контроллер замеряет длину импульса, к примеру первый импульс очень короткий в смысле конкретно по времени, и контроллер понимает что он одиночный, другой первый импульс имеет из расчета максимальной частоты максимальную длину и серва понимает что сейчас будет крутой разгон, и так далее. Сам думаю что это не так.
Потому как видел руководстве к MACH2 как обычную серву приспособить, дак там стоит обычный кондер в который сливаются импульсы и на нем поддерживается уровень напряжения естественно там и сопротивление стоит, это говорит о том что длинна импульса прямо пропорциональна скважности.
Как устроен аналоговый ШИМ я представляю, как он работает в цифровых приводах понятия не имею, то что я находил в литературе написано заумно.
Объясните мне пожалуйста как можно проще , на примерах как он работает.
Вот к примеру Модуль Захвата в Microchip PIC16F684 написано с помощью его можно измерить период между положительными фронтами двух импульсов, в чем он измеряется,
Для начала наверное в количестве импульсов тактового генератора микроконтроллера, произошедших за период между двумя импульсами.
Если первый импульс будет от ЧПУ а второй с датчика положения тогда это будет величина рассогласования, к чему это количество отсчитанных импульсов надо привести, в смысле надо посчитать период в секундах, или что еще?
В аналоговых приводах значение рассогласования есть напряжение, а здесь может так и оставить в количестве импульсов? А как с ними дальше работать и самое главное что прейдет на ШИМ ?
А самое главное надо еще контур скорости сделать который всю эту систему стабилизирует, потому как если оставить одно рассогласование по положению, то ерунда получится .
Может надо длительность импульса ЧПУ замерять, и от этой величины для начала через прямо пропорциональный контур подавать на ШИМ, естественно ввести обратную связь , измерять длительность импульса с энкодера. А дальше к этому значению добавлять значение рассогласования положения в аналоговой технике это делает сумматор.
Да кстати, значение рассогласования нужно пропускать через ПИД регулятор.
Короче одни вопросы.
Всем кто прочитал эту бредятину, за любой ответ спасибо.

AZi

Все прочитал… когда дочитал до конца - забыл че в начале было… 😊

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

Сервопривод чуть по навороченнее(но все еще любительский) :
Стоит два цапа - на входе(выдает напряжение пропорциональное координате относительно ближайшей нульметки) и на энкодере(выдает напряжение пропорциональное координате относительно ближайшей нульметки у энкодера) потом стоит компаратор который сравнивает эти напряжения и крутит движок в нужную сторону…

Еще более навороченный вариант:
Смысл тот же, только надо добавить буфер обмена чтобы контроллер знал будет ли это одиночный импульс или нет…

По поводу вычисления нужного тока - в случае одиночного импульса - тот компаратор (описанный выше) должен выдавать не только направление куда крутиться, но и величину рассогласования - напряжение пропорциональное нужному току которое при подходе к нужной координате соответственно будет уменьшаться и обеспечет тем самым плавный подход к нужной точке…

ZanozM

Хорошо я понял, то что вы говорите, о системе ЧПУ с обратной связью которое следит за сервой и корректирует её .
Я же говорю о системе типа МЯЧ2 у которой выход импульсный DIR направление STEP шаг.
С такой системой серва сама должна о всем думать.
И потом как вы себе представляете буфер обмена может есть какой то стандарт.
Насчет ЦАП какой он из себя, если он выдает аналог на выходе а потом это все идет на класический ШИМ, то на кой он нужен, если есть дискретный ШИМ на который подаешь комбинацию нулей и единиц а на выходе получаешь Широтно Импульсный Модулированный сигнал, мне бы разжевал как он работает.
Кстати в серве Художника Цапа нет, дак как он работает?
Нужно составить Блок Схему Алгоритма тогда жить станет проще!
Да вот еще что, ответа от автора на этом форуме нам точно недождаться, я это знаю.

AZi

По поводу аналогового шима - а как цифорвой шим будет ограничивать ток в обмотках?
В случае аналогового - получается - нагрузка возрасла ток добавился - движок координату держит, а в цифровом - нагрузка возросла(на чуть-чуть) ток надо поднять на 0.1младшего бита ц.шима и че он будет делать - а ничего - он просто сдвинется от нагрузки и будет уже там висеть или начнет болтаться между указанной точкой и следующей…

Подобные мысли навеянны прочтением инструкций на СM600 где применяются линейные движки и индуктосины - тоесть разрядность обратной связи (в пределах ПИ-регулятора) практически бесконечна…

Под буфером я имею ввиду програмно реализованную задержку в контроллере - он накапливает допустим десять команд, а потом начинает их выполнять - уже зная что будет впереди…

кстати, такой вопрос - зависит ли ток обмотки линейного синхр. двигателя(что вроде почти тоже самое что шаговик в микрошаге) от нагрузки при фиксированном ШИМе?

я имею ввиду не для удержания координаты а просто если питание подать и затормозить его…

ZanozM

кстати, такой вопрос - зависит ли ток обмотки линейного синхр. двигателя(что вроде почти тоже самое что шаговик в микрошаге) от нагрузки при фиксированном ШИМе?

Как устроен линейник если принцип работы близок к ШД5 то есть реактивный без магнитов, то по анологии к пускателю если включить катушку дать железу примагнитится а потом маленько приподнять его то ток увеличится, а если просто тянуть железо то как у постоянного магнита нечего не изменится.
А вот с ШИМом надо подумать, при нарушении магнитного потока произойдет изменение индуктивности в меньшую сторону, только шиму по барабану он ведь за ним и следит, но изменится время наростания тока в меньшую сторону и если у вас малая частота ШИМ то по моему может произойти обратный эффект, ведь кофициент заполнения упадет, хотя черт его знает так с шару не ответишь.
Подскажите почему у меня ссылки на книги из ветки Линейный индуктосин
Не грузятся!!!

AZi

Там все лишнее из ссылки убери - зайдеш просто в библиотеку и поиском найди ее - там почемуто сразу по ссылке не грузится…

По поводу шима - я имею ввиду цифровой (фиксированный) шим который не видит изменения тока а просто выдает импульсы фиксированной длинны…

ZanozM

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

По поводу аналогового шима - а как цифорвой шим будет ограничивать ток в обмотках?
В случае аналогового - получается - нагрузка возрасла ток добавился - движок координату держит, а в цифровом - нагрузка возросла(на чуть-чуть) ток надо поднять на 0.1младшего бита ц.шима и че он будет делать - а ничего - он просто сдвинется от нагрузки и будет уже там висеть или начнет болтаться между указанной точкой и следующей…

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

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

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