Сервопривод..

Galant1
maxvovk:

Есть какие мысли? Тема интересная, я готов реально реализовывать.

У тебя мало тем для реализации? :=)

ATLab
Художник:


На PIC несущая частота ШИМ слишком низкая, в 8-битном варианте порядка 15 кГц. Чтобы не свистел, надо 20, > т. е. ещё теряем разрядность.

Время обработки сервоцикла приводом на PIC порядка 200 микросекунд. Для серьёзного станка требуется не более 5 микросекунд, высокоскоростные привода работают в сотнях наносекунд. Соответственно цена выше на порядок.

Не все так грустно с PIC - возьмем, к примеру, PIC18F6520 - 5 каналов ШИМ, 10-ти битное разрешение на частоте 39 кГц, т.е. никакого свиста не будет.

А зачем такие малые времена - “сотни наносекунд”? И откуда они взяты? IMHO, двигатель - система очень инерционная, поэтому микросекунды и сотни наносекунд притянуты за уши.
Прикинем на пальцах? Пусть частота вращения 12000 об./мин. = 200 об./сек., что соответствует времени оборота 5 мс - достаточно большое время, на 4 порядка больше упомянутых сотен наносекунд.
Если энкодер выдает 500 импульсов на оборот, то импульсы следуют через 10 мкс.
При тактовой 40 МГц, время выполнения команды в PIC18 будет 100 нс, т.е. на один импульс энкодера можно потратить до 100 команд его обработки. По-моему вполне достаточно.

maxvovk
ATLab:

Не все так грустно с PIC - возьмем, к примеру, PIC18F6520 - 5 каналов ШИМ, 10-ти битное разрешение на частоте 39 кГц, т.е. никакого свиста не будет.

А зачем такие малые времена - “сотни наносекунд”? И откуда они взяты? IMHO, двигатель - система очень инерционная, поэтому микросекунды и сотни наносекунд притянуты за уши.
Прикинем на пальцах? Пусть частота вращения 12000 об./мин. = 200 об./сек., что соответствует времени оборота 5 мс - достаточно большое время, на 4 порядка больше упомянутых сотен наносекунд.
Если энкодер выдает 500 импульсов на оборот, то импульсы следуют через 10 мкс.
При тактовой 40 МГц, время выполнения команды в PIC18 будет 100 нс, т.е. на один импульс энкодера можно потратить до 100 команд его обработки. По-моему вполне достаточно.

Нет, не все так просто. Хоть двигатель и инерционен, но инерция портала в деятки раз выше. А там, на инструменте, частенько возникают различные критические нагрузки. Да и при простом передвижении не все так гладко, как представляется.

Обсчет целой кучи параметров занимает совсем не 100 команд, а разы больше. Кстати, в ПИКе есть аппаратное умножение (я не в курсе) ? Кстати, если вы внимательно прочитаете пост чуть выше, вы можете заметить, что время обработки сервоцикла на ПИК около 200мксек, или всего 5кГц. А “правильный” моторчик может разогнаться до 50об/сек за 50мсек. Вот и считайте, сколько шагов он пробежит, пока софт отреагирует.

Енкодер на 500CPR (циклов на оборот) даёт 2000 мипульсов. И это простой енкодер, обычно ставят поболее, например 2000CPR. И совсем не просто так.

Можно, кстати, отметить, что любой CNC-софт позволяет задавать ускорение, скорость по координате, то есть перемещение по конкретной оси будет относительно плавным. Но переходные процессы, расчет скольжения, тривиальная соринка, из-за которой на 20мксек необходимо срегулировать ШИМ на 500% - вот это требует больших скоростей.

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

Так что не зря таки ставят DSP…

ATLab
maxvovk:

Нет, не все так просто. Хоть двигатель и инерционен, но инерция портала в деятки раз выше. А там, на инструменте, частенько возникают различные критические нагрузки. Да и при простом передвижении не все так гладко, как представляется.

Обсчет целой кучи параметров занимает совсем не 100 команд, а разы больше. Кстати, в ПИКе есть аппаратное умножение (я не в курсе) ? Кстати, если вы внимательно прочитаете пост чуть выше, вы можете заметить, что время обработки сервоцикла на ПИК около 200мксек, или всего 5кГц. А “правильный” моторчик может разогнаться до 50об/сек за 50мсек. Вот и считайте, сколько шагов он пробежит, пока софт отреагирует.

Енкодер на 500CPR (циклов на оборот) даёт 2000 мипульсов. И это простой енкодер, обычно ставят поболее, например 2000CPR. И совсем не просто так.

Можно, кстати, отметить, что любой CNC-софт позволяет задавать ускорение, скорость по координате, то есть перемещение по конкретной оси будет относительно плавным. Но переходные процессы, расчет скольжения, тривиальная соринка, из-за которой на 20мксек необходимо срегулировать ШИМ на 500% - вот это требует больших скоростей.

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

Так что не зря таки ставят DSP…

Я не буду спорить, поскольку нет предмета спора - Художник привел абстрактные числа, я привел прикидку на пальцах, в Вашем рассуждении тоже все оторвано от конкретики.
Например, почему “время обработки сервоцикла на ПИК около 200мксек”? На каком PIC, какая частота, по какому алгоритму, на каком языке написана программа?

Аппаратное умножение появилось еще в PIC17, есть в PIC18, в PIC24 (он 16 битный) есть и умножение и деление, в dsPIC30 есть еще и DSP. Так что дело просто в адекватном выборе контроллера.

Можно, к примеру, вообще отказаться от PIC или AVR и перейти на ARM7 - Филипс делает неплохие микросхемы, по цене сравнимые с PIC, но они уже 32 битные при большей частоте, т.е. точность и скорость вычислений гораздо выше.

Ваш пример с практическими опытами над двигателем говорит только об одном - неправильно заданы параметры регулятора.
На эту тему есть хорошая статья у Microchip: AN964 “Softwre PID control of an inverted pendulum using the PIC16F684” - программный ПИД регулятор для перевернутого маятника.
Суть в том, что к вращающейся вокруг оси тележке с приводом от двигателя постоянного тока прикреплен перевернутый маятник, период свободных колебаний которого можно менять перемещая грузики. Параметры ПИД регулятора задаются переменными резисторами. Микроконтроллер должен поддерживать маятник в вертикальном положении управляя направлением и скоростью вращения двигателя. Т.е. задача близка к тому, что Вы решали, однако все обходится без DSP, при этом частота не запредельная - встроенный генератор, который может дать максимум 8 Мгц, а PIC 8 битный.

Художник
ATLab:

А зачем такие малые времена - “сотни наносекунд”? И откуда они взяты? …Прикинем на пальцах? …При тактовой 40 МГц, время выполнения команды в PIC18 будет …на один импульс энкодера можно потратить до 100 команд его обработки. По-моему вполне достаточно.

Зачем такие малые времена, maxvovk правильно объяснил. Взяты они из практики и характеристик реальных приводов и ЧПУ.

На пальцах Вы прикинули неверно, либо вопросом не владеете, либо ошибаетесь, либо техническая софистика. Софистика в технике не проходит. Опять же maxvovk правильно показал, как примерно надо прикидывать.

PIC контроллеры с тактовой частотой 40 МГц не работают. Один такт процессора одной команде не соответствует.

100 команд для написания PID регулятора недостаточно.

почему “время обработки сервоцикла на ПИК около 200мксек”? На каком PIC, какая частота, по какому алгоритму, на каком языке написана программа?

Посты внимательно читайте. Обсуждался контроллер Чена, прикладывался файл AN532 с прошивкой от Microchip.

Можно, к примеру, вообще отказаться от PIC или AVR и перейти на ARM7 - Филипс делает неплохие микросхемы, по цене сравнимые с PIC, но они уже 32 битные при большей частоте, т.е. точность и скорость вычислений гораздо выше.

Так и Вам про то же. Есть вообще специальные DSP управления движением. Например от Техас инструментс. А есть ещё готовые PMAC от DeltaTau…

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

Было бы всё так просто… Станок ЧПУ это же не перевёрнутый маятник 😃

ATLab
Художник:

На пальцах Вы прикинули неверно, либо вопросом не владеете, либо ошибаетесь, либо техническая софистика. Софистика в технике не проходит. Опять же maxvovk правильно показал, как примерно надо прикидывать.
PIC контроллеры с тактовой частотой 40 МГц не работают. Один такт процессора одной команде не соответствует.

Я не буду с Вами спорить: как говорил Жванецкий, “…спорить о вкусе устриц лучше с тем, кто их ел.”
Отмечу только, что в PIC18 и более поздних контроллерах реализовано внутреннее умножение частоты на 4, поэтому при кварце 10 Мгц внутренний генератор как раз работает на 40 МГц, и команды выполняются за 100 нс.

Художник

ATLab,

Да уж нахавался этих устриц, по самые не хочу.

А то что, при такте 10, на 40 работаете, это Вы вместе со Жванецким, своей бабушке рассказывайте.

buslik

Давайте ближе к теме мужики.

Раз степы идут через LPT давайте плясать от него - сколько степов на одну секунду приходться?

ATLab
Художник:

ATLab,
А то что, при такте 10, на 40 работаете, это Вы вместе со Жванецким, своей бабушке рассказывайте.

Не для Художника, а тем, кто может поверить его некомпетентной болтовне, цитата
из Datasheet на PIC18F6520 DS39609B page 23 (впрочем, аналогичные пункты есть и для других контроллеров):

2.5 HS/PLL
A Phase Locked Loop circuit (PLL} is provided as a programmable option for users that want to multiply the frequency of the incoming crystal oscillator signal by 4. For an input clock frequency of 10 MHz, the internal clock frequency will be multiplied to 40 MHz. This is useful for customers who are concerned with EMI due to high-frequency crystals.
The PLL is one of the modes of the FOSC<2:0> configuration bits. The oscillator mode is specified during device programming.

И прошу прощения за offtop.

buslik

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

Художник

Конкретно по прошивке Чена, я использовал Mega8, тактовая 16 МГц, в определённом диапазоне частот работает с неплохой точностью. Пока тесты не закончил, максимальные частоты и точные значения рассогласования сказать не могу. Но рассогласование уже есть, подрезает деталь при незапредельных частотах. Пока тестирую на машине с редукторами. Тесты на машине с прямым приводом проведу позже.

По поводу тактовой частоты, на сколько я в курсе, на четыре такта одна команда выполняется.

А ещё яблоки вверх не падают, Ньютона снизу по лбу не бьют, и процессоры быстее, чем они могут, не считают. Физика наука, блин, такая… упрямая.

Насчёт компетентности и болтовни, для всяких пургоносов специально скрин шот программы приаттачил. (см. выше)

Художник

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

Поясню конечно. Восемнадцатая серия микрочиповских ПИКов действительно начала работать на один такт – одна команда. То есть, так, как положено 😃 К старым версиям PIC это не относится. У старых микрочипов на четыре такта одна команда. И то, что выше английскими словами написано, сиречь это и означает. Кстати, Микрочип двадцать четвёртую серию замутил, шестнадцатиразрядная будет.

Но к приводу Чена это отношения не имеет. У него вообще на AT 90S2313 собрано.

Раз степы идут через LPT давайте плясать от него - сколько степов на одну секунду приходится?

Вопрос не понятный. Во первых, не обязательно через LPT. Может, со стойки ЧПУ выдали. Во вторых, сколько выдали, столько и приходится…

ATLab
Художник:

Поясню конечно. Восемнадцатая серия микрочиповских ПИКов действительно начала работать на один такт – одна команда. То есть, так, как положено 😃 К старым версиям PIC это не относится. У старых микрочипов на четыре такта одна команда. И то, что выше английскими словами написано, сиречь это и означает.

Опять неправда, в PIC18, как и в предыдущих PIC16, короткая команда выполняется за 4 такта генератора. А прведенная выше цитата означает, что внутри PIC18 есть генератор с фазовой автоподстройкой частоты (PLL), который умножает частоту кварца на 4. Это приводит к тому, что при чатоте кварца 10 МГц внутренне тактирование выполняется на 40 МГц, м, соответственно, короткие команды выполняются за 100 нс (1/(40000000/4)).
Удивляюсь я непробиваемому апломбу в вопросах, с которыми знаком очень поверхностно.

AZi

Чето помоему маленько не в те дебри полезли, на данном то этапе развития хобийного серво привода…

Ктонибудь может внятно обьяснить принцип его работы - тоесть что реально должен делать проц когда пришел step или в режиме удержания, отвечает ли проц за скорость разгона/остановки или это софтом делают и тд и тп…

buslik

Согласен с AZi

давайте уже ближе к теме.

PIC18Fxx31 создан для привода - PWM - 6 каналов
Encoder Interface - и прочее

Давайте от него отрываться.

Теперь по принципу работы - так как на входе у нас step
то каждый импульс увеличивает ошибку PID регулятора - и он в свою очередь пытается ее исправить меняя PWM.

Кончились импульсы и ошибка стала = 0. приехали.

Таким образом от PC зависит как мы разгонялись, ехали и тормозили.

Задача PIC’а успевать достигнуть отсчета до следующего импульса.

maxvovk
ATLab:

…Я не буду спорить, поскольку нет предмета спора…

Аналогично. Но в тему МК для привода - я переползаю на ARM - AT91SAM7 и при этом не отказываюсь от применения FPGA. Коллекторник - это только первый шаг, следующий - BrushLess моторы. Благо есть с чем экспериментировать - по случаю урвал три Симменса с 2048 енкодерами.

Если вы хотите ваять привод на Пике - это ваше решение, но я бы этого делать не стал. Я делал на Меге, разогнанной с 20 до 24мГц, она почти в 3 раза быстрее Пика. И скорости мне не хватает, при написании кода на ассемблере и неплохой его оптимизации.

Вообще, спор немного бессистемный. Я подтверждаю, чно хоть на Пике, хоть на Меге, хоть на 8080 можно сделать сервопривод. У каждого будет (при прочих равных) своя _МАКСИМАЛЬНАЯ СКОРОСТЬ РАБОТЫ С НЕОБХОДИМОЙ ПОГРЕШНОСТЬЮ. То есть например с это 600, 1200 и 200 об/мин с вышеуказанными процами. И хоть вы разбейтесь, при более высоких скоростях у вас начнет гулять траектория. (Цифры придумано, но возможно и правильные).

И не надо говорить

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

За пол-года я прочитал кучу литературы, так что софт написан грамотно. С параметрами все просто. Я вообще хотел (и хочу) сделать полное автоопределение параметров подключенного движка. Частично это уже реализовано. Также частично реализованы режимы подборки необходимых параметров. Что не реализовано, испытывалось вручную.

Также я гоняю небезызвестную УХУ, думаю, я был первым в России, кто ее купил и сразу стал вживую испытывать. Прекрасный привод. В разы быстрее и точнее (да 😃 )шаговика. Но тоже до определенной границы, которая упирается все в ту же скорость проца.

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

Давайте лучше обсудим, что запихнуть в FPGA. И вообще можно было бы сделать некий совместный проект по разработке собственной сервы. Моя задача-минимум - почти универсальная серва для коллекторника и бесколлекторника, с гарантированный скоростью 3000об/мин и енкодером на 2000cpr. Почти универсальная потому, что вычислитель работает на одинаковых алгоритмах, с дополнениями в случае 3х фаз. То есть это слаботочная и силовая части на стойках.

ATLab
maxvovk:

За пол-года я прочитал кучу литературы, так что софт написан грамотно. С параметрами все просто. Я вообще хотел (и хочу) сделать полное автоопределение параметров подключенного движка. Частично это уже реализовано. Также частично реализованы режимы подборки необходимых параметров. Что не реализовано, испытывалось вручную.

Позволю себе обратить Ваше внимание на один нюанс: автоопределение параметров движка, в отрыве от нагрузки, вещь конечно неплохая, однако имеет смысл только если его мощности (момента) гарантировано с избытком достаточно для выбранной нагрузки. В противном случае, это не имеет особенного практического смысла. Вы же сами пишете:“Начав свою разработку сервы для коллекторника, буквально за пару дней были получены потрясающие результаты на отдельно лежащем на столе двигателе. После установки его на ось все круто изменилось - появились пробежки до 50 лишних шагов, бешеный джиттер, неконтролируемое плавание тока…” Налицо все признаки перерегулирования и неустойчивости системы.

Давайте лучше обсудим, что запихнуть в FPGA. И вообще можно было бы сделать некий совместный проект по разработке собственной сервы. Моя задача-минимум - почти универсальная серва для коллекторника и бесколлекторника, с гарантированный скоростью 3000об/мин и енкодером на 2000cpr. Почти универсальная потому, что вычислитель работает на одинаковых алгоритмах, с дополнениями в случае 3х фаз. То есть это слаботочная и силовая части на стойках.

Мне нравится Ваш энтузиазм, однако пока непонятно, как можно сделать универсальную сервосистему для двигателя на 15 Вт и 1,5 кВт - у них все разное, и опять же как можно не учитывать нагрузку? У меня сын сейчас курсовой делает как раз по автоматическому регулированию с двигателем, так он

  1. определяет параметры устойчивого регулирования, а уже по ним определяет вид регулятора (П,ПИ,ПИД) и его параметры
  2. двигатель выбирает под нагрузку, а не подает на него 200 В вместо штатных 50 (к примеру), чтобы уменьшить время переходного процесса.

Я уже давно не разрабатываю ничего без ТЗ, даже для себя, пусть оно и не на бумаге, а в голове.
Мне кажется, нужно определиться с предметом разработки, требованиями к параметрам, их приоритетам и требуемой точности. Вполне возможно, что проще и дешевле будет использовать не чисто цифровую систему на контроллере, а цифроаналоговую. Как можно абстрактно решать, что “запихнуть в FPGA”, может самой FPGA не нужно.

P.S. Прочтите все же упомянутую статью с перевернутым маятником. Там ведь тоже алгоритм один, но для разной собственной частоты маятника параметры регулятора нужно устанавливать разные. А если изменять еще массу тележки, мощность двигателя…
Т.е. все там описанное имеет непосредственное отношение к обсуждаемому предмету.
P.P.S.

…Но переходные процессы, расчет скольжения, тривиальная соринка, из-за которой на 20мксек необходимо срегулировать ШИМ на 500% - вот это требует больших скоростей.

Собака (или даже корова) на железнодорожных путях не способны заметно затормозить груженый товарняк, поэтому не нужно суетится, тем более что ШИМ более 100% не бывает.

Художник

У меня сын сейчас курсовой делает как раз по автоматическому регулированию с двигателем, так он

  1. определяет параметры устойчивого регулирования, а уже по ним определяет вид регулятора (П,ПИ,ПИД) и его параметры
  2. двигатель выбирает под нагрузку, а не подает на него 200 В вместо штатных 50 (к примеру), чтобы уменьшить время переходного процесса.

ATLab,

Вы наверное теоретик. Мы же не курсовые работы пишем. Какое “Пэ” регулирование? Интегрально-диференциальный бы справился. Какие собаки на рельсах? Речь о сервопривоприводе станка ЧПУ. Выбор двигателя под нагрузку…

Станок это не лифт. Нагрузка резкопеременная.

А если изменять еще массу тележки, мощность двигателя…

Так и Вам про то же. Задача то не простая. Станок ЧПУ это не маятник. Алгоритмы на лету не меняются, да и не нужно это. Оперируешь коэффициентами регулятора.

Насчёт святых коров. Если в метафорах лучше понимаете, то при попадании коровы под поезд, машинист обязан остановить поезд. В случае ЧПУ это означает аварийную остановку в следствии рассогласования по положению со стороны управления, или аварийную остановку по току или скорости со стороны привода.

Насчёт ТЗ. Есть ГОСТ 27803-91, параметры электроприводов станков ЧПУ, там всё написано.

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

Вариант программы от Микрочип (АN889) для трёхфазника (см в приложении)

00889b.rar

maxvovk
ATLab:

Позволю себе обратить Ваше внимание на один нюанс: автоопределение параметров движка, в отрыве от нагрузки, вещь конечно неплохая, однако имеет смысл только если его мощности (момента) гарантировано с избытком достаточно для выбранной нагрузки. В противном случае, это не имеет особенного практического смысла. Вы же сами пишете:“Начав свою разработку сервы для коллекторника, буквально за пару дней были получены потрясающие результаты на отдельно лежащем на столе двигателе. После установки его на ось все круто изменилось - появились пробежки до 50 лишних шагов, бешеный джиттер, неконтролируемое плавание тока…” Налицо все признаки перерегулирования и неустойчивости системы.

Не надо утрировать. Есть параметры движка, есть параметры станины. Сначала мы определяем первое, потом второе.

Мне нравится Ваш энтузиазм, однако пока непонятно, как можно сделать универсальную сервосистему для двигателя на 15 Вт и 1,5 кВт - у них все разное, и опять же как можно не учитывать нагрузку? У меня сын сейчас курсовой делает как раз по автоматическому регулированию с двигателем, так он

  1. определяет параметры устойчивого регулирования, а уже по ним определяет вид регулятора (П,ПИ,ПИД) и его параметры
  2. двигатель выбирает под нагрузку, а не подает на него 200 В вместо штатных 50 (к примеру), чтобы уменьшить время переходного процесса.

Двигатели (пусть мы говорим конкретно о коллекторнике) все одинаковые - пара проводов, торчащая из железяки. Слаботочка одинаковая, силовая для указанных вами мощностей различается только типом транзисторов и наличием на последнем варианте радиатора.

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

Я уже давно не разрабатываю ничего без ТЗ, даже для себя, пусть оно и не на бумаге, а в голове.
Мне кажется, нужно определиться с предметом разработки, требованиями к параметрам, их приоритетам и требуемой точности. Вполне возможно, что проще и дешевле будет использовать не чисто цифровую систему на контроллере, а цифроаналоговую. Как можно абстрактно решать, что “запихнуть в FPGA”, может самой FPGA не нужно.

Что в данном случае подразумевается под “цифроаналоговой”? Вы вот все замечаете, что многие посты без конкретики. Вы тоже заниматесь изложением “вольных мыслей” 😃.

Собака (или даже корова) на железнодорожных путях не способны заметно затормозить груженый товарняк, поэтому не нужно суетится, тем более что ШИМ более 100% не бывает.

Да, поезд штука тяжелая. Но сравнивать поезд с сорталом вообще некорректно. В станке попадание кусочка стружки может привести к очень “интересным” результатам. Вообще, обработка критических ситуаций это отдельная серьёзная часть того же ТЗ.

Не придирайтесь к словам, вроде бы понятно было, что имелось ввиду.

ATLab
Художник:

ATLab,
Вы наверное теоретик. Мы же не курсовые работы пишем. Какое “Пэ” регулирование? Интегрально-диференциальный бы справился. Какие собаки на рельсах? Речь о сервопривоприводе станка ЧПУ. Выбор двигателя под нагрузку…

Станок это не лифт. Нагрузка резкопеременная.

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

Да, я убежден, что нужно двигатель выбирать под нагрузку - движок от мопеда не потянет КАМАЗ, даже если его форсировать, жигу не разогнать до 100 км/час за 5 секунд с родным движком и т.п.
Я думал, это очевидно. Если Вы с maxvovk думаете иначе - дело Ваше, но я тогда не вижу смысла в обсуждении.

Что в данном случае подразумевается под “цифроаналоговой”?

Простой пример на пальцах:

  1. вы формируете ШИМ встроенными в микроконтроллер аппаратными средствами или программно, разрядность 10 бит, этой разрешающей способности достаточно для обеспечения заданной точности регулирования. Пусть напряжение питания двигателя было 51,2 В, тогда дискрет регулирования составлял 50 мВ (немножко округлю для “ровности”).
  2. желая укоротить переходные процессы, вы увеличили питание до 204,8 В, при этом разрядность ШИМ не изменилась - контроллер тот же, программа та же. Дискрет регулирования при этом составит уже 200 мВ, а такой дискрет уже вполне может не обеспечить требуемую точность регулирования - у вас постоянно будет то перебор, то недобор, в результате будет джиттер.
    Вывод: нужно увеличить с 10 до 12 бит разрядность ШИМ при повышении напряжения питания, чтобы сохранить разрешающую способность и точность регулирования (а это может быть невозможно в рамках имеющегося контроллера) или использовать аналоговую, аналоговоцифровую (те же генераторы управляемые напряженем/кодом, ФАПЧ, формирователи импульсов регулируемой длительности) схемотехнику, которая по сути имеет дело с непрерывными величинами.
AZi

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

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

Короче я пришел к выводу что нужен либо особый интерфейс(где будет передаваться целая куча параметров, а не просто степ/дир), либо командный буфер и фиксированная задержка относительно софта(но это увеличивает погрешность, если контроллер не рулит сразу всеми движками в станке), либо мы получим тотже самый шаговик с небольшими приимуществами…

buslik

Совершенно согласен.

Давайте уже наконец отделим мух от котлет.

Как я уже писал и никто это не опроверг каждый шаг увеличивает позицию - соответственно и ошибку текушей позиции - вот это и увеличивает ШИМ. Для шага назад - та же цепочка.

Что произойдет при достижении позиции зависит от коэффициентов - их можно установить так что мы и не доедем даже 😃 (читайте здеся ww1.microchip.com/downloads/en/…/00964A.pdf)

Вопрос это какие защиты надо делать и на какие максимальные частоты импульсов из LPT расчитывать (мне кажется 100к максимум) ?

Как удобнее всего сделать установку параметров? как отобразить процессы? Дабы человек без осциллографа имел возможность понять что происходит в системе.

ATLab
buslik:

Совершенно согласен.

Давайте уже наконец отделим мух от котлет.

Как я уже писал и никто это не опроверг каждый шаг увеличивает позицию - соответственно и ошибку текушей позиции - вот это и увеличивает ШИМ. Для шага назад - та же цепочка.

Что произойдет при достижении позиции зависит от коэффициентов - их можно установить так что мы и не доедем даже 😃 (читайте здеся ww1.microchip.com/downloads/en/…/00964A.pdf)

Вопрос это какие защиты надо делать и на какие максимальные частоты импульсов из LPT расчитывать (мне кажется 100к максимум) ?

Как удобнее всего сделать установку параметров? как отобразить процессы? Дабы человек без осциллографа имел возможность понять что происходит в системе.

Была ветка про серводвигатели rcopen.com/forum/f110/topic36760
там STEPMOTOR давал статью rcopen.com/files/000000000000000000000000
см. page 20.

Художник

AZi,

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

Когда на контроллер пришла команда сделать шаг, он должен сделать шаг 😃
И дальше тоже его забота.

мы получим тот же самый шаговик с небольшими приимуществами…

Ну конечно 😃

buslik,

Как удобнее всего сделать установку параметров? как отобразить процессы? Дабы человек без осциллографа имел возможность понять что происходит в системе.

Я зря что ли скрин шот своей программы прикладывал.

AZi

>>Когда на контроллер пришла команда сделать шаг, он должен сделать шаг
Как именно?

Если на ужержании шим 50/50, то при команде шагнуть какое питалово должен контроллер к движку приложить - постоянку?
и держать ее до достижения нужной отметки на енкодере?
или плавно увеличивать ширину импульсов с заранее откудато взятой скоростью увеличения ширины?

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