Простой в изготовлении контроллер шагового двигателя из старых деталей. Собираем станок с чпу из принтера своими руками Контроллер шаговых двигателей из старых принтеров

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

Шаговый двигатель это, как понятно из его названия, двигатель который вращается дискретными перемещениями . Достигается это за счет хитрой формы ротора и двух (реже четырех) обмоток. В результате чего, путем чередования направления напряжения в обмотках можно добиться того, что ротор будет по очереди занимать фиксированные значения.
В среднем, у шагового двигателя на один оборот вала, приходится около ста шагов. Но это сильно зависит от модели двигателя, а также от его конструкции. Кроме того, существуют полушаговый и микрошаговый режим , когда на обмотки двигателя подают ШИМованное напряжение, заставляющее ротор встать между шагами в равновесном состоянии, которое поддерживается разным уровнем напряжения на обмотках. Эти ухищрения резко улучшают точность, скорость и бесшумность работы, но снижается момент и сильно увеличивается сложность управляющей программы — надо ведь расчитывать напряжения для каждого шага.

Один из недостатков шаговиков, по крайней мере для меня, это довольно большой ток. Так как на обмотки напруга подается все время, а такого явления как противоЭДС в нем, в отличии от коллекторных двигателей, не наблюдается, то, по сути дела, мы нагружаемся на активное сопротивление обмоток, а оно невелико. Так что будь готов к тому, что придется городить мощный драйвер на MOSFET транзисторах или затариваться спец микросхемами.

Типы шаговых двигателей
Если не углубляться во внутреннюю конструкцию, число шагов и прочие тонкости, то с пользовательской точки зрения существует три типа:

  • Биполярный — имеет четыре выхода, содержит в себе две обмотки.
  • Униполярный — имеет шесть выходов. Содержит в себе две обмотки, но каждая обмотка имеет отвод из середины.
  • Четырехобмоточный — имеет четыре независимые обмотки. По сути дела представляет собой тот же униполярник, только обмотки его разделены. Вживую не встречал, только в книжках.
Униполярный отличается от биполярного только тем, что ему нужна куда более простая схема управления, а еще у него значительно слабее момент. Так как работает он только половинами обмоток. НО! Если оторвать нафиг средний вывод униполярника, то мы получим обычный биполярный . Определить какой из выводов средний не сложно, достаточно прозвонить сопротивление тестером. От среднего до крайних сопротивление будет равно ровно половине сопротивления между крайних выводов. Так что если тебе достался униполярник, а схема подключения для биполярного, то не парься и отрывай средний провод.

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

Схема управления шаговым двигателем
Я разжился контроллерами шаговиков L297 и мощным сдвоенным мостом L298N.

Лирическое отступление, при желании можно его пропустить


Схема включения L298N+L297 до смешного проста — надо тупо соединить их вместе. Они настолько созданы друг для друга, что в даташите на L298N идет прямой отсыл к L297 , а в доке на L297 на L298N .

Осталось только подключить микроконтроллер.
  • На вход CW/CCW подаем направление вращения — 0 в одну сторону, 1 — в другую.
  • на вход CLOCK — импульсы. Один импульс — один шаг.
  • вход HALF/FULL задает режим работы — полный шаг/полушаг
  • RESET сбрасывает драйвер в дефолтное состояние ABCD=0101.
  • CONTROL определяет каким образом задается ШИМ, если он в нуле, то ШИМ образуется посредством выходов разрешения INH1 и INH2 , а если 1 то через выходы на драйвер ABCD. Это может пригодится, если вместо L298 у которой есть куда подключать входы разрешения INH1/INH2 будет либо самодельный мост на транзисторах, либо какая-либо другая микросхема.
  • На вход Vref надо подать напряжение с потенциометра, которое будет определять максимальную перегрузочную способность. Подашь 5 вольт — будер работать на пределе, а в случае перегрузки сгорит L298 , подашь меньше — при предельном токе просто заглохнет. Я вначале тупо загнал туда питание, но потом передумал и поставил подстроечный резистор — защита все же полезная вещь, плохо будет если драйвер L298 сгорит.
    Если же на защиту пофигу, то можешь заодно и резисторы, висящие на выходе sense выкинуть нафиг. Это токовые шунты, с них L297 узнает какой ток течет через драйвер L298 и решает сдохнет он и пора отрубать или еще протянет. Там нужны резисторы помощней, учитывая что ток через драйвер может достигать 4А, то при рекомендуемом сопротивлении в 0.5 Ом, будет падение напряжения порядка 2 вольт, а значит выделяемая моща будет около 4*2=8 Вт — для резистора огого! Я поставил двухваттные, но у меня и шаговик был мелкий, не способный схавать 4 ампера.

Правда на будущее, когда я буду делать роботу шаговый привод, я возьму не связку L297+L293 , а микруху L6208 которая может и чуть слабей по току, но зато два в одном! Сразу подключай двигатель и работай. Если же их покупать, то на L6208 получается даже чуть дешевле.

Простой контроллер Шагового Двигателя из компьютерного барахла стоимостью ~150 рублей.

Началось мое станкостроение со случайной ссылки на немецкий станок за 2000DM, который на мой взгляд выглядел по детски, однако мог выполнять довольно много занятных функций. В тот момент, меня заинтересовала возможность рисовать платы (это было еще до появления в моей жизни ЛУТ).

В результате протяженных поисков в сети было найдено несколько сайтов посвященных этой проблеме, однако русскоязычных среди них не было ни одного (это было примерно 3 года назад). В общем, в конце концов, я нашел два принтера CM6337 (кстати их выпускал Орловский завод УВМ), откуда и выдрал униполярные шаговые двигатели (Dynasyn 4SHG-023F 39S, аналог ДШИ200-1-1). Параллельно с доставанием принтеров заказал и микросхемы ULN2803A(с буквой А – DIP корпус). Все собрал, запустил. Что получил, а получил дико греющиеся микросхемы ключей, и с трудом вращающийся двигатель. Так как по схеме из Голландии для увеличения тока ключи соединены попарно, то максимальный отдаваемый ток не превышал 1А, в то время как двигателю надо было 2А (кто ж знал что я найду такие прожорливые, как мне тогда показалось, двигатели J). Кроме того, данные ключи построены по биполярной технологии, для тех кто не в курсе, падение напряжения может быть до 2В (если питание от 5, то фактически половина падает на сопротивлении перехода).

В принципе, для опытов с двигателями от 5” дисководов очень неплохой вариант, можно сделать например плоттер, однако что то более тяжелое чем карандаш (например дремель) ими вряд ли можно тягать.

Решил собрать свою собственную схему из дискретных элементов, благо в одном из принтеров оказалась нетронутой электроника, и я взял оттуда транзисторы КТ829 (Ток до 8А, напряжение до 100В)… Была собрана такая схема…

Рис.1 – Схема драйвера для 4х фазного униполярного двигателя.

Сейчас объясню принцип. При подаче логической “1” на один из выводов (на остальных “0”), например на D0, транзистор открывается и ток течет через одну из катушек двигателя, при этом двигатель отрабатывает один шаг. Далее единица подается на следующий вывод D1, а на D0 единица сбрасывается в ноль. Двигатель отрабатывает сладующий шаг. Если подавать ток сразу в две соседние катушки то реализуется режим полушагов (для моих двигателей с углом поворота 1,8’ получается 400 шагов на оборот).

К общему выводу подсоединяются отводы от середины катушек двигателя (их два если проводов шесть). Очень хорошо теория шаговых двигателей описана тут — Шаговые двигатели. Управление шаговым двигателем., тут же приведена схема контроллера ШД на микроконтроллере AVR фирмы Atmel. Честно говоря, мне показалось похоже на забивание гвоздей часами, однако в ней реализована очень хорошая функция как ШИМ регулирование тока обмоток.

Поняв принцип, несложно написать программу управляющую двигателем через LPT порт. Зачем в этой схеме диоды, а за тем, что нагрузка у нас индуктивная, при возникновении ЭДС самоиндукции она разряжается через диод, при этом исключается пробой транзистора, а следовательно и вывод его из строя. Еще одна деталь схемы – регистр RG (я использовал 555ИР33), используется как шинный формирователь, поскольку ток отдаваемый, например LPT портом мал – можно его элементарно спалить, а следовательно, есть возможность спалить весь компьютер.

Схема примитивна, и собрать такое можно минут за 15-20, если есть все детали. Однако у такого принципа управления есть недостаток – так как формирование задержек при задании скорости вращения задается программой относительно внутренних часов компьютера то работать в многозадачной системе (Win) это все не будет! Будут просто теряться шаги (может быть в Windows и есть таймер, но я не в курсе). Второй недостаток – это нестабилизированный ток обмоток, максимальную мощность из двигателя не выжать. Однако по простоте и надежности этот способ меня устраивает, тем более что для того, что бы не рисковать своим Атлоном 2ГГц, я собрал из барахла 486 тарантас, и кроме ДОСа там, в принципе мало, что можно поставить нормальное.

Описанная выше схема работала и в принципе неплоха, но я решил, что можно несколько переделать схему. Применить MOSFETJ). транзисторы (полевые), выигрыш в том, что можно коммутировать огромные токи (до 75 – 100А), при солидных для шаговых двигателей напряжениях (до 30В), и при этом детали схемы практически не греются, ну если не считать предельных значений (хотел бы я видеть тот который съест ток 100А

Как всегда в России возник вопрос, где взять детали. У меня возникла идея – извлечь транзисторы из горелых материнских плат, благо, например Атлоны кушают порядочно и транзисторы там стоят огого. Дал объявление в ФИДО, и получил предложение забрать 3 мат. платы за 100 рублей. Прикинув что в магазине за эти деньги можно от силы купить 3 транзистора, забрал, расковырял и о чудо, хотя они все и были дохлыми, ни один транзистор в цепи питания процессора не пострадал. Так я получил пару десятков полевых транзисторов за сто рублей. Схема, которая получилась в результате, представлена ниже.

Рис. 2 – Тоже на полевых транзисторах

Отличий в этой схеме немного, в частности была применена микросхема нормального буфера 75LS245 (выпаяна над газовой плитой из 286 материнской платы J). Диоды можно поставить любые, главное, что бы их максимальное напряжение не было меньше максимального напряжения питания, а предельный ток не меньше тока питания одной фазы. Я поставил диоды КД213A, это 10А и 200В. Возможно это излишне для моих 2х амперных двигателей, однако покупать детали не было смысла, да и запас по току думается лишним не будет. Резисторы служат для ограничения тока перезарядки емкости затворов.

Ниже приводится печатная плата контроллера построенного по такой схеме.

Рис. 3 – Печатная плата.

Печатная плата разведена для поверхностного монтажа на одностороннем текстолите (лень мне что то дырочки сверлить сталоJ). Микросхемы в DIP корпусах паяются с подогнутыми ножками, резисторы SMD с тех же материнок. Файл с разводкой в Sprint-Layout 4.0 прилагается. Можно было бы запаять на плату и разъемы, но лень как говорится — двигатель прогресса, да и при отладке железа удобнее было запаять провода подлиннее.

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

Рис. 4 – Схема концевиков.

Вот так это выглядело у меня в процессе наладки системы:

В результате на представленный контроллер я потратил не более 150 рублей: 100 рублей за материнские платы (при желании можно вообще бесплатно достать) + кусок текстолита, припой и банка хлорного железа в сумме тянут на ~50 рублей, причем хлорного железа останется потом еще много. Думаю считать провода и разъемы смысла не имеет. (Кстати разъем питания отпилен от старого винчестера.)

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

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

P.S. Хочу высказать свое мнение по поводу негативного отношения автора сайта к советским и Российским двигателям. Советские двигатели ДШИ, вполне себе даже ничего, даже маломощный ДШИ200-1-1. Так что если вам удалось откопать за “пиво” такое добро не спешите выкидывать их, они еще поработают… проверено… Но если же покупать, и разность в стоимости не велика, лучше все таки брать иностранные, поскольку точность у них конечно будет выше.

P.P.S. Е: Если что то я написал не правильно пишите, исправим, но … РАБОТАЕТ…

Большинство на начальном этапе останавливается на выборе покупного (чаще всего — китайского) контроллера для шаговых двигателей, потому как это экономит время. Но уже после того, как станок готов и запущен, начинает закрадываться ощущение, что что-то не то… Чего-то не хватает или что-то сделано не правильно, или не доделано… Появляется некоторое недовольство, вопросы, связанные с точностью станка с ЧПУ. Люди начинают долго и мучительно читать форумы в поисках волшебного рецепта исцеления своего родного станочка от постоянного непопадания «в десятку» (имеются в виду десятые доли миллиметра, которые должен стабильно отрабатывать даже самый пластилиновый станок с ЧПУ, сделанный своими руками).

Моя бабушка всегда говорит: «Где узко, там и рвется». И так действительно происходит! Это же справедливо и для основы основ станка с ЧПУ — механизма линейного перемещения и электроники управления, а именно — контроллера шагового двигателя. О какой точности можно говорить, если человек поставил дешевый китайский контроллер, включил на нем микрошаг 1/8 или даже 1/16 и пытается выдавить из станка микронные перемещения?

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

Первое, что я хочу получить от своего контроллера шагового двигателя — это калиброванный микрошаг, который бы настраивался под конкретный экземпляр шагового двигателя. О нелинейности характеристик шаговых двигателей я уже писал в своей статье про и . Если вам лень перейти по ссылке, то вкратце скажу, что в режиме микрошага вы посылаете двигателю команду повернуться на 1/8 шага (к примеру), а он поворачивается вообще не известно на сколько или вообще не поворачивается! Все это как раз из-за нелинейности характеристики шагового двигателя. Вот почему нельзя использовать микрошаговый режим в обычных китайских контроллерах для повышения точности (разрешающей способности) перемещений своего станка с ЧПУ!

Кто-то, возможно, задастся вопросом — откуда берется эта нелинейность? А все дело в том, что на самом деле шаговый двигатель вообще не предназначен для работы в режиме микрошага ! Шаговый двигатель предназначен только для того, чтобы шагать — ать, два! Это мы — ЧПУшники от своей голытьбы решили привнести в мир цифрового двигателя (двигателя с конечными состояниями) немного аналоговости и придумали «микрошаг», в котором шаговый двигатель «зависает» в некотором промежуточном состоянии между двумя шагами. А производители контроллеров радостно подхватили эту фишку и преподносят микрошаг, как некий стандарт де-факто! И впаривают свои контроллеры невдумчивым потребителям.

Если вы — «счастливый» обладатель контроллера с микрошагом, то сказанное мной выше вы сможете сами очень легко проверить по методу лазерной калибровки, описанному мной выше в статье про калибровку шагового двигателя. Достаточно снять со станка шаговик, приделать к нему лазерную указку, включить в контроллере режим микрошага (хотя он, конечно же, у вас включен!) и подавать ему на вход импульсы STEP. Можно прямо из Mach3 или LinuxCNC, выбрав самую минимальную подачу в ручном режиме или задавая микро-перемещения через G-коды. После каждого микрошага делайте отметки на листе бумаги, закрепленному на стене скотчем, в том месте, куда светит луч лазера. Уже после нескольких микрошагов, вы заметите, что между насечками получилось ну просто неприлично разное расстояние!

Закончим на этом ругать производителей. Они на самом деле ничего плохого не делают. Люди хотели микрошаг — люди его получили! Сосредоточимся лучше на том, чего на самом деле хотели получить конечные пользователи от своего контроллера шагового двигателя? А хотели они получить не деление управляющего шаговыми двигателями сигнала на 8, на 16 и т.д., а деление угла поворота шагового двигателя на указанные делители! Но какое же для этого нужно подавать управляющее напряжение? Отвечу однозначно — хрен его знает! Поясню… Дело в том, что разные производители делают разные двигатели, применяют разные технологии с разным качеством и разной погрешностью. И получается так, что все шаговые двигатели разные! Даже в пределах одного типа и одной партии. Легла где-то в обмотке шагового двигателя проволочка слегка не на ту сторону — характеристика поменялась! У одного двигателя X витков, у другого двигателя X+Y витков в обмотке — опять характеристики разные. Ну и так далее — до фанатизма

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

Схема контроллера шаговых двигателей

Схема моего контроллера будет очень проста. Силовыми элементами, непосредственно управляющими обмотками двигателя, будут являться ключевые MOSFET-транзисторы, подключенные в виде Н-моста. Ключами будет управлять микроконтроллер. Никаких дорогостоящих микросхем-драйверов в моей схеме не будет. Вместо них будет парочка ферритовых колечек из сгоревших энергосберегающих ламп, которые отлично подходят для управления затворами MOSFET-транзисторов. В общем, я стараюсь сделать контроллер шагового двигателя доступным для повторения в домашних условиях. Также одним из его достоинств будет являться высокая ремонтопригодность (например, если сгорит какой-либо MOSFET-транзистор в силовой части, то стоимость замены составит ~20-30 рублей).

Слева представлена схема управления затвором силового MOSFET-ключа моего контроллера шаговых двигателей. Как видно, управление затвором осуществляется через повышающий импульсный трансформатор на ферритовом кольце. Повышающий трансформатор нужен, чтобы силовой ключ полностью открывался от 5-тивольтового сигнала управления, поступающего с выхода микроконтроллера. Для полного гарантированного открытия силовым MOSFET-ам обычно требуется от 10 вольт (более детально характеристику MOSFET-а можно посмотреть на графиках в его datasheet). Особенность такого включения заключается в том, что емкость затвора MOSFET используется в режиме памяти, т.е. при прохождении открывающего импульса через диод D1, транзистор будет открыт сколь угодно долго до тех пор, пока его не закроет открывшийся транзистор Q2, разрядив емкость затвора на «землю». Благодаря такой схеме при управлении ШИМ-сигналом (PWM) удается получить до 100% глубины модуляции (в англоязычных источниках — duty circle или «цикл загрузки»). В стандартной же схеме включения трансформатора затвора (GDT — gate drive transformer), когда положительный импульс открывает MOSFET, а следующий за ним отрицательный импульс восстановления разряжает емкость затвора, удается получить лишь менее 50% периода ШИМ-сигнала.

Программа управления шаговым двигателем

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

Written By: . Tagged: , .

Post navigation

  • У меня много различной оргтехники, которая вышла из строя. Выбрасывать я её не решаюсь, а вдруг пригодится. Из её частей возможно сделать что-нибудь полезное.
    К примеру: шаговый двигатель, который так распространен, обычно используется самодельщиками как мини генератор для фонарика или ещё чего. Но я практически никогда не видел, чтобы его использовали именно как двигатель для преобразования электрической энергии в механическую. Оно и понятно: для управления шаговым двигателем нужна электроника. Его просто так к напряжению не подключишь.
    И как оказалось - я ошибался. Шаговый двигатель от принтера или ещё от какого устройства, довольно просто запустить от переменного тока.
    Я взял вот такой двигатель.


    Обычно у них четыре вывода, две обмотки. В большинстве случаем, но есть и другие конечно. Я рассмотрю самый ходовой.

    Схема шагового двигателя

    Его схема обмоток выглядит примерно так:


    Очень похоже на схему обычного асинхронного двигателя.
    Для запуска понадобится:
    • Конденсатор емкостью 470-3300 мкФ.
    • Источник переменного тока 12 В.
    Замыкаем обмотки последовательно.


    Середину проводов скручиваем и запаиваем.


    Подключаем конденсатор одним выводом к середине обмоток, а вторым выводом в источнику питания на любой выход. Фактически конденсатор будет параллелен одной из обмоток.



    Подаем питание и двигатель начинает крутиться.


    Если перекинуть вывод конденсатора с одного выхода питания на другой, то вал двигателя начнет вращаться в другую сторону.


    Все предельно просто. А принцип работы этого всего очень прост: конденсатор формирует сдвиг фаз на одной из обмоток, в результате обмотки работают почти попеременно и шаговый двигатель крутится.
    Очень жалко то, что обороты двигателя невозможно регулировать. Увеличение или уменьшение питающего напряжения ни к чему не приведет, так как обороты задаются частотой сети.
    Хотелось бы добавить, что в данном примере используется конденсатор постоянного тока, что является не совсем правильным вариантом. И если вы решитесь использовать такую схему включения, берите конденсатор переменного тока. Его так же можно сделать самому, включив два конденсатора постоянного тока встречно-последовательно.

    Сморите видео