Калибровка шагового двигателя

Калибровка шагового двигателяВ прошлой моей статье я говорил о точности станка с ЧПУ в зависимости от выбора типа передачи для механизма линейного перемещения, а также от выбора режимов работы шагового двигателя. Теперь, как и обещал, на страницах своего ТехноБлога Dimanjy я расскажу о калибровке шагового двигателя с помощью разрабатываемого мной Step/Dir-контроллера, позволяющего без дополнительных затрат на механику и без какого либо снижения скоростных характеристик самодельного станка с ЧПУ повысить его точность в 6 раз!

Здесь говоря о точности станка с ЧПУ я подразумеваю его разрешающую способность. Благодаря использованию контроллера Dimanjy с поддержкой калибровки шагового двигателя удалось на обычном зубчатом ремне с шагом 5.08 мм добиться разрешения ~0.025 мм против обычных 0.16 мм. Если же мой контроллер применить на винтовой передаче, то в значения разрешающей способности будет просто трудно поверить:  0.8 микрона!  Но теперь подробнее о процессе калибровки.

Как я уже упоминал на страницах своего ТехноБлога Dimanjy в статье про точность станка с ЧПУ, калибровку шагового двигателя я решил осуществлять оптическим методом с помощью обычной лазерной указки. Если вы читаете эту статью на каком-то другом сайте, то знайте, что ее украл местный нищеброд, и полноту информации в ней я не гарантирую. Кроме того, вы не сможете связаться со мной, чтобы я смог ответить на ваши вопросы, поэтому воспользуйтесь Гуглем и поищите в нем мой ТехноБлог Dimanjy, в котором я отвечу на все ваши вопросы по поводу калибровки шагового двигателя. Теперь мне из-за этих жалких воришек приходится через слово упоминать свой блог в тексте статьи, уж простите меня за это :)

Для калибровки шагового двигателя при помощи лазерной указки и моего контроллера Dimanjy потребуется наличие помещения с длиной не менее 3-х метров. Я использовал оптическую ось длиной 6 метров, разместив калибровочную мишень на балконе и светя туда лазером из комнаты. Чем длиннее оптическая ось, тем качественнее и точнее вы сможете осуществить калибровку. Возможно, придется воспользоваться фотоаппаратом с zoom-ом, потому что мне уже на 6 метрах трудновата различить деления калибровочной мишени.

Калибровочная мишеньЧто же из себя представляет калибровочная мишень? Это обычный лист бумаги с нанесенными на него черным маркером делениями. Два крайних деления калибровочной шкалы получаются, когда одна обмотка полна тока, а вторая сперва в нуле, а затем также на максимуме, как и первая. После получения двух крайних положений ротора шагового двигателя, мы при помощи линейки и метода половинного деления разбиваем полученный отрезок на 16 равных частей. Тем самым мы наносим на шкалу желаемые промежуточные положения ротора шагового двигателя в микрошаговом режиме 1/16.

Калибровка шагового двигателя

Далее переходим непосредственно к процессу калибровки шагового двигателя. Если вы не дружите с паяльником или не умеете программировать, то я могу изготовить для вас такой контроллер. Свяжитесь со мной через мой ТехноБлог Dimanjy. Те же, кто разбирается в микроконтроллерах, знают, что управление током в обмотках осуществляется при помощи ШИМ (широтно-импульсной модуляции), значения которой на выходе микроконтроллера меняются в диапазоне от 0 до 255 (где 255 соответствует 100% ШИМ). Поместив луч лазера в крайнее положение калибровочной мишени, соответствующее нулевому току обмотки, мы начинаем плавно по единичке увеличивать ширину импульса ШИМ. Таким образом мы потихоньку подводим наводим луч последовательно на каждое деление из наших 16-ти микрошагов и запоминаем эти положения в памяти микроконтроллера, формируя тем самым калибровочную таблицу. Когда же мы доберемся до последнего деления — процесс калибровки считается завершенным. Ура!

После получения калибровочной таблицы, контроллер будет формировать токи в обмотках таким образом, чтобы перемещение ротора осуществлялось точно с интервалами в 1/16 полушага (настолько точно, насколько вы сможете откалибровать). Не беда, если при калибровке луч лазера не совсем точно попадает на деления калибровочной мишени. Не забывайте, что мы делим на 16 частей угол, составляющий всего 0.9°! Т.е. каждый микрошаг провернет ротор на ~0.06°! Собирая станок ЧПУ своими руками для хоббийных целей вряд ли вы будете огорчены, если вместо 0.06° получите 0.07° или даже 0.08°.

Также хочу предупредить, что при начале движения от нуля (когда нет тока в обмотке) двигатель достаточно долго вообще стоит на месте и не движется. На моем двигателе ротор не проворачивался вплоть до значения 180-200 для ШИМ. Это как раз и обусловлено нелинейностью шагового двигателя, о которой я говорил в своем ТехноБлоге Dimanjy в статье про точность станка с ЧПУ. С ростом значений ротор начинает двигаться все заметнее и уже с 240 каждый +1 заметно вращает ротор в сторону максимального деления. Отсюда возможно снижение точности калибровки при приближении к максимуму тока — становится трудно выставить луч лазера точно на деление. В этой связи я начинаю подумывать о снижении количества дроблений с 1/16 до 1/8. Может быть разрешение в 0,05 мм будет предпочтительнее, чем 0,025 мм, если при этом снизится ошибка позиционирования. В общем, следите за продолжением темы на моем ТехноБлоге Dimanjy! Я уже начал создавать свой станок с ЧПУ своими руками, и у меня появились некоторые результаты.

  • Макс

    Дружище мне интересно что вышло с контроллером, реально помогает он.
    А как оно учитывает растяжение ремней при точности?

    • http://tech.dimanjy.com/ Dimanjy

      Разработку контроллера пока пришлось отложить в связи с катастрофической нехваткой времени. Все детали лежат в коробочках — пылятся и ждут своего часа.

      Пока собрал станок на китайском 4-ех осевом контроллере. Но мощности его и, главное — точности, действительно не хватает. Как мне видится — именно из-за того, что ни один китайский контроллер не учитывает нелинейную характеристику двигателя.

      Когда начну собирать второй станок, то продолжу работу над своим контроллером, потому как он действительно необходим.

  • Вадим

    Добрый день.
    Может уже не актуально, год прошел. Но спрошу.
    А почему Вы не думаете использовать инкодер на валу двигателя?
    По-моему, это проще лазерной указки и нарисованной от руки мишени. А к тому же и точнее.

    Не сочтите за рекламу, вот, например:
    http://www.purelogic.ru/shop/elektromehanicheskie_komplektuyuwie/datchiki/enkodery_dlya_asu_tp_i_chpu/

    Есть энкодеры на 500 и на 1000 импульсов на оборот.

    • http://tech.dimanjy.com/ Dimanjy

      Энкодер предполагает обратную связь, а для калиброванного шаговика обратная связь не нужна. К тому же энкодеры обычно на сервы ставят, а не на шаговики. Да и вообще — по вашей ссылке он стоит, как целый шаговый двигатель! А их вообще-то еще и 3 штуки надо! В общем, для хоббийного станка получается сложно и дорого.

      • Вадим

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

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

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

        К тому же калибровка «на коленке» не будет точной по определению. По идее, луч на длине 6м должен прилично отклоняться при любом малом воздействии на двигатель.

        И второй момент. Как Вы планируете заносить данные в память контроллера? Судя по статье, при установке вала в нужную позицию надо человеку, как минимум, нажать какую-то кнопку. Т.к. контролирующим инструментом в вашей системе является именно человек. А иначе как контроллер поймет, что надо записать в память некое значение? С применением энкодера этот процесс можно сделать полностью автоматическим, а функцию калибровки запихать прямо в микроконтроллер, и вызывать ее отдельной командой.

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

        Третье. Ваш драйвер по определению жестко привязывается к конкретному двигателю. Поэтому, если говорить о некоем коммерческом применении, то Вы в любом случае будете вынуждены калибровать двигатели до продажи, а продавать именно комплекты двигатель/контроллер. Что кстати, негативно скажется на продажах, т.к. при выходе из строя либо двигателя либо контроллера невозможно будет купить что-то одно, а придется покупать сразу новый комплект целиком. Представляете, сколько «добрых» слов скажут в Ваш адрес? При наличии компактного устройства пользователь на месте самостоятельно сможет провести операцию калибровки, а потому покупать комплектующие по отдельности.

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

        • http://tech.dimanjy.com/ Dimanjy

          А, ну тогда вы немного заблждаетесь :) Во-первых, никто на коленке не калибрует оптическим методом. Это нужно делать на жесткой поверхности, причем желательно все хорошо закрепить :)

          Ну а если серьезно — с чего это вы взяли, что мишень энкодера будет более точная? Энкодеры по ссылке дают всего 2 с половиной импульса внутри шага! Это по вашему точность? Кроме того, они же цифровые, ведь так? Т.е. ротор вращается, а энкодер при этом молчит, пока мимо окошечка не проедет… Куда это годится? Лазер покажет вам любое самое мизерное перемещение вала. И чем дальше расстояние до мишени, тем точнее. 8-ми битный контроллер может дать разрешение 1/256 шага (если бы шаговик физически мог такое отработать), а не 1/2, как у предлагаемого вами энкодера.

          • Вадим

            Да, соглашусь. Я упустил, что шагов 16. Хоть там есть энкодер с 1000 импульсов на оборот, но он, все равно, даст только 5 импульсов на шаг для двигателя на 200 шагов. А нам надо минимум 16.
            Собственно, конкретно эти энкодеры я привел для примера. Возможно, есть устройства более высокого разрешения. Но подозреваю, что цена там действительно будет запредельная.

            Да и надо ли? Дочитал вторую часть Вашей статьи про точность станка. Вы там, вроде, решили микрошаг вообще отключить.

          • http://tech.dimanjy.com/ Dimanjy

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

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