сервопрвод от Jina
Здравствуйте. Можете разъяснить несколько вопросов? Как я понял вы управляете двигателем импульсами степ, скольким шагам энкодера соответствует один шаг? Какова зона нечувствительности в импульсах энкодера? Или двигатель устанавливается точно импульс в импульс по энкодеру, тогда как боретесь с дрожанием?
И еще поясните, если управляете сигналами степ то получается что нужно чтобы сначала набралось ощутимое рассогласование для того чтобы двигатель начал двигаться.
спасибо что проявляете интерес. отвечу на ваши вопросы, каждому импульсу степа соответствует импульс с энкодера,т е если энкодер с 50 дырок это 200 импульсов(на оборот движения конечно) это соответствует 200 импульсам степ. а насчет накопления импульсов степа вы не правы, даже если подать один импульс степа или после отработки останется один недоделаный то произойдёт накопление ошибки позиционирования во времени, на выходе увеличится скважность шима, возрастет напряжение и ток на двигателе и у оного станет достаточно момента для того чтобы провернуться и исправить позицию, соб-сно это и есть работа пид регулятора
к вопросу дрожания, пид регулятор есть ни что иное как операционный усилитель с положительной и отрицательной обратной связью, так вот, при установлении параметров пид (как в случае с приводом Чена) надо выбрать такое значение усиления чтобы двигатель мог оперативно обрабатывать ошибку позиционирования, если сделать усиление маленькое то пока там накопиться ошибка пройдёт некоторое время, нам это видно так как будто двигатель вялый, а если усиление большое то двигатель очень резво пытается устранить ошибку и перелетает заданную точку , потом также назад, нам это видно как двигатель колбасит. как тут сделано у меня? я двигатели рассматриваю с точки зрения массы. если двигатель лёгкий то усиление маленькое, а если ротор тяжёлый то усиление большое. у меня на станке стоят двигатели принтерные, где то 0.05н, на станке что собираю 0.3н параметры усиления пропорционально и завышены
спасибо за ответ. поясните подробнее: т е если энкодер с 50 дырок это 200 импульсов(на оборот движения конечно).
вот как раз хотел еще уточнить про накопление ошибки во времени, какое время вы даете двигателю на отработку ошибки, тоесть если придет один импульс степ, то за какое время двигатель должен отработать это рассогласование?
у меня это выглядит так, если степ не отработан то , наступает время (приблизительно ск\64 это делитель таймера-счетчика) и в шим добавляется еденица, таким образом скважность шима увеличивается, чем дольше ошибка не исправляется тем больше на двигателе напряжение и ток, а значит и момент, вот и наступает момент когда у движка сил хватает. добавлять можно и 2 еденицы больше , это и есть усиление на пид. у меня момент страгивания с места равен 10 из 255 возможных. что касательно измерений в реальном времени, то ответить не могу, скажу лишь что это измеряется милисекундами. у меня позиционируеся двигатель достаточно бодро
Еще раз спасибо, меня какраз интересовал порядок цифр. Пока в симуляторе играюсь там мотор-энкодер не адекватен.
Еще раз спасибо, меня какраз интересовал порядок цифр. Пока в симуляторе играюсь там мотор-энкодер не адекватен.
а что за симулятор? если algorithm builder то там надо ручками на пины галки переставлять, долго конечно и нудно
в протеусе играюсь. там проблема в том что не удается от модели мотор-энкодера добиться нужной скорости вращения и колличества импульсов на оборот.
в протеусе играюсь. там проблема в том что не удается от модели мотор-энкодера добиться нужной скорости вращения и колличества импульсов на оборот.
я протеус как программу не воспринимаю, глючный он очень, проще и быстрее макет на столе собери, в качестве н-моста можно L298 взять, а мотор например из принтера, у меня например с кенона, хотя сейчас все принтеры с энкодерами, по скорости у меня получалось почти 40килостепов
для повышения быстродействия привода пид надо выносить за пределы контроллера, а для ещё большего быстродействия и математику тоже, контроллеру оставить только надзорные функции, примером служит привод А-300,соб-сно все идеи мои с него вышли
ну l298 уже успешно работает и даже моторчик крутится туда сюда от меги8. Пока с энкодером запара, нет времени диск попробовать сделать. Меня смущает то что двигатель в модели очень долго качается около нулевой точки после останова, а если вводить мертвую зону в несколько импульсов энкодера то соответственно увеличивается отставание от степ на эту величину, хотя качание пропадает. Кстати хотел спросить у вас в алгоритме учитывается, что в данный момент происходит отставание или уже перебег и нужно тормозить или все на чистой математике пид работает? Я пробовал делать пид в железе но он следил за скоростью вращения, и тоже была проблема с плаванием скорости около точки равновесия.
в пиде у меня чистая математика, а разгон и торможение не уместны, этим должна программа управления чпу заниматься
если вал двигателя у тебя трясётся то попробуй вал нагрузить, например помазав эпоксидной смолой без отвердителя, тогда вал точно в позицию останавливаеся, в любом случае уменьшай установки пид или замедляй скорость срабатывания пид, если используешь мою прошивку просто поменяй время на таймер-счётчике
разгон и торможение я имел в виду при отработке рассогласования.
я так понимаю что интерфейса настройка пид нет?
А оно надо, усложнять то? На крайний случай параметры хранить во флеш, и их там менять. В первом посте вроде написано. что пока настройка идет перезаписью прошивки.
я так понимаю что интерфейса настройка пид нет?
можно конечно прописать, НО, это увеличит обьём занимаемой памяти, а следовательно надо контроллеру это обработать, а это в свою очередь потребует время которого в угоду быстродействия нету. можно перейти на более мощный микроконтроллер, например stm32 но не каждый пользователь может его запрограмировать плюс цена подороже чем avr на 8бит и программатор аж 5 проводов, выводы я думаю сделаете сами
если же , например, вынести матеатику и пид за пределы контроллера то это соответственно потянет финансовые вливания, что тоже не есть хорошо, зато плюс- увеличение быстродействия, как пример, просчитайте привод A-300
Кстати, вы обошлись в прошивке без арифметики с плавающей точкой?
Кстати, вы обошлись в прошивке без арифметики с плавающей точкой?
да, без плавающей точки, путём сложения либо вычитания, что налагает некоторые ограничения на порядок чисел, зато повышает быстродействие попутно уменьшая обьём кода, к заметному ухудшению работы ,в моём случае, это не привело, подробности смотрите в исходниках, благо там много коментариев
Jina, перезалейте видео, хотелось бы увидеть как работает.
Jina, перезалейте видео, хотелось бы увидеть как работает.
там было два видео , изначально 67 и 47 метров, после усушки и утруски, стало 20 и 18 метров, тут у меня не захотело принимать, куда выложить? ютуб тоже не хочет меня регистрировать, сказал что славянства во мне много 😃
куда выложить?
в какой нибудь Диск, в гугл или яндекс.
в какой нибудь Диск
video.yandex.ua/users/jina-stayn/view/1/
video.yandex.ua/users/jina-stayn/view/2/
посмотрите, показывает или нет?