сервопрвод от Jina

Bmax77

И еще поясните, если управляете сигналами степ то получается что нужно чтобы сначала набралось ощутимое рассогласование для того чтобы двигатель начал двигаться.

Jina

спасибо что проявляете интерес. отвечу на ваши вопросы, каждому импульсу степа соответствует импульс с энкодера,т е если энкодер с 50 дырок это 200 импульсов(на оборот движения конечно) это соответствует 200 импульсам степ. а насчет накопления импульсов степа вы не правы, даже если подать один импульс степа или после отработки останется один недоделаный то произойдёт накопление ошибки позиционирования во времени, на выходе увеличится скважность шима, возрастет напряжение и ток на двигателе и у оного станет достаточно момента для того чтобы провернуться и исправить позицию, соб-сно это и есть работа пид регулятора

к вопросу дрожания, пид регулятор есть ни что иное как операционный усилитель с положительной и отрицательной обратной связью, так вот, при установлении параметров пид (как в случае с приводом Чена) надо выбрать такое значение усиления чтобы двигатель мог оперативно обрабатывать ошибку позиционирования, если сделать усиление маленькое то пока там накопиться ошибка пройдёт некоторое время, нам это видно так как будто двигатель вялый, а если усиление большое то двигатель очень резво пытается устранить ошибку и перелетает заданную точку , потом также назад, нам это видно как двигатель колбасит. как тут сделано у меня? я двигатели рассматриваю с точки зрения массы. если двигатель лёгкий то усиление маленькое, а если ротор тяжёлый то усиление большое. у меня на станке стоят двигатели принтерные, где то 0.05н, на станке что собираю 0.3н параметры усиления пропорционально и завышены

Bmax77

спасибо за ответ. поясните подробнее: т е если энкодер с 50 дырок это 200 импульсов(на оборот движения конечно).
вот как раз хотел еще уточнить про накопление ошибки во времени, какое время вы даете двигателю на отработку ошибки, тоесть если придет один импульс степ, то за какое время двигатель должен отработать это рассогласование?

Jina

у меня это выглядит так, если степ не отработан то , наступает время (приблизительно ск\64 это делитель таймера-счетчика) и в шим добавляется еденица, таким образом скважность шима увеличивается, чем дольше ошибка не исправляется тем больше на двигателе напряжение и ток, а значит и момент, вот и наступает момент когда у движка сил хватает. добавлять можно и 2 еденицы больше , это и есть усиление на пид. у меня момент страгивания с места равен 10 из 255 возможных. что касательно измерений в реальном времени, то ответить не могу, скажу лишь что это измеряется милисекундами. у меня позиционируеся двигатель достаточно бодро

Bmax77

Еще раз спасибо, меня какраз интересовал порядок цифр. Пока в симуляторе играюсь там мотор-энкодер не адекватен.

Jina
Bmax77:

Еще раз спасибо, меня какраз интересовал порядок цифр. Пока в симуляторе играюсь там мотор-энкодер не адекватен.

а что за симулятор? если algorithm builder то там надо ручками на пины галки переставлять, долго конечно и нудно

Bmax77

в протеусе играюсь. там проблема в том что не удается от модели мотор-энкодера добиться нужной скорости вращения и колличества импульсов на оборот.

Jina
Bmax77:

в протеусе играюсь. там проблема в том что не удается от модели мотор-энкодера добиться нужной скорости вращения и колличества импульсов на оборот.

я протеус как программу не воспринимаю, глючный он очень, проще и быстрее макет на столе собери, в качестве н-моста можно L298 взять, а мотор например из принтера, у меня например с кенона, хотя сейчас все принтеры с энкодерами, по скорости у меня получалось почти 40килостепов

для повышения быстродействия привода пид надо выносить за пределы контроллера, а для ещё большего быстродействия и математику тоже, контроллеру оставить только надзорные функции, примером служит привод А-300,соб-сно все идеи мои с него вышли

Bmax77

ну l298 уже успешно работает и даже моторчик крутится туда сюда от меги8. Пока с энкодером запара, нет времени диск попробовать сделать. Меня смущает то что двигатель в модели очень долго качается около нулевой точки после останова, а если вводить мертвую зону в несколько импульсов энкодера то соответственно увеличивается отставание от степ на эту величину, хотя качание пропадает. Кстати хотел спросить у вас в алгоритме учитывается, что в данный момент происходит отставание или уже перебег и нужно тормозить или все на чистой математике пид работает? Я пробовал делать пид в железе но он следил за скоростью вращения, и тоже была проблема с плаванием скорости около точки равновесия.

Jina

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

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

Bmax77

разгон и торможение я имел в виду при отработке рассогласования.

8 days later
Stillwell

я так понимаю что интерфейса настройка пид нет?

Bmax77

А оно надо, усложнять то? На крайний случай параметры хранить во флеш, и их там менять. В первом посте вроде написано. что пока настройка идет перезаписью прошивки.

Jina
Stillwell:

я так понимаю что интерфейса настройка пид нет?

можно конечно прописать, НО, это увеличит обьём занимаемой памяти, а следовательно надо контроллеру это обработать, а это в свою очередь потребует время которого в угоду быстродействия нету. можно перейти на более мощный микроконтроллер, например stm32 но не каждый пользователь может его запрограмировать плюс цена подороже чем avr на 8бит и программатор аж 5 проводов, выводы я думаю сделаете сами
если же , например, вынести матеатику и пид за пределы контроллера то это соответственно потянет финансовые вливания, что тоже не есть хорошо, зато плюс- увеличение быстродействия, как пример, просчитайте привод A-300

Bmax77

Кстати, вы обошлись в прошивке без арифметики с плавающей точкой?

Jina
Bmax77:

Кстати, вы обошлись в прошивке без арифметики с плавающей точкой?

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

Bmax77

Jina, перезалейте видео, хотелось бы увидеть как работает.

Jina
Bmax77:

Jina, перезалейте видео, хотелось бы увидеть как работает.

там было два видео , изначально 67 и 47 метров, после усушки и утруски, стало 20 и 18 метров, тут у меня не захотело принимать, куда выложить? ютуб тоже не хочет меня регистрировать, сказал что славянства во мне много 😃

Baha
Jina:

куда выложить?

в какой нибудь Диск, в гугл или яндекс.

Bmax77

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