Как управлять шаговым двигателем без компьютера

Обновлено: 03.07.2024

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

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

Лирическое отступление, при желании можно его пропустить Именно на нем был сделан мой первый силовой блок робота. Кроме него там еще два источника питания на 5 и на 3.3 вольта, а также контроллер двух движков на L293 (такой же как и во второй реализации силового блока). В качестве контроллера тогда был выбран АТ89С2051. Это антикварный контроллер архитектуры MSC-51 в котором из периферии только два таймера, порты да UART, но я его люблю нежно и трепетно, так как первая любовь не проходит никогда =). К сожалению исходники его мега прошивки канули в Лету вместе с убившимся винтом, так что я не могу поделиться теми извращенскими алгоритмами, которые были туда засунуты. А там был и двухканальный ШИМ, и I2C Slave протокол, и контроль за положением шаговика с точным учетом его перемещения. Короче, знатный был проект. Ныне валяется трупом, т.к. все лень запустить Keil uVision и написать новую прошивку. Да и ассемблер С51 я стал уже забывать.

Спасибо. Вы потрясающие! Всего за месяц мы собрали нужную сумму в 500000 на хоккейную коробку для детского дома Аистенок. Из которых 125000+ было от вас, читателей EasyElectronics. Были даже переводы на 25000+ и просто поток платежей на 251 рубль. Это невероятно круто. Сейчас идет заключение договора и подготовка к строительству!

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

201 thoughts on “Управление шаговым двигателем”

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

По продаваемым не в курсе. В нашей деревне их в продаже нету, а что там в Московии я даже не знаю.

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

работал с шаговыми движками на своей фирме.
ещё с нашими совеццкими и руссийскими.

всё хорошо, но нету обратной связи.

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

. в смысле от постоянных замыкани? Как ты умудрялся его коротнуть? Одновременным замыканием ключей верхнего и нижнего плеча? Так там Dead Time надо ставить!

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

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

У меня этих дисководов полтора десятка штук!

кто знаком с драйвером шины ULN2804a b ULN2004a , какая разници между ними.

У меня есть движок от древнего лазерного принтера. Двигатель фирмы CANON PM60-H418Z21B можно ли запустить таку вещь? Торчат из него по 3 провода с каждой обмотки. P.S. С шаговиками я делов не имел пока, но очень интересно.

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

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


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

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

  • Конденсатор емкостью 470-3300 мкФ.
  • Источник переменного тока 12 В.


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


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


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

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


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

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

Лирическое отступление, при желании можно его пропустить Именно на нем был сделан мой первый силовой блок робота. Кроме него там еще два источника питания на 5 и на 3.3 вольта, а также контроллер двух движков на L293 (такой же как и во второй реализации силового блока). В качестве контроллера тогда был выбран АТ89С2051. Это антикварный контроллер архитектуры MSC-51 в котором из периферии только два таймера, порты да UART, но я его люблю нежно и трепетно, так как первая любовь не проходит никогда =). К сожалению исходники его мега прошивки канули в Лету вместе с убившимся винтом, так что я не могу поделиться теми извращенскими алгоритмами, которые были туда засунуты. А там был и двухканальный ШИМ, и I2C Slave протокол, и контроль за положением шаговика с точным учетом его перемещения. Короче, знатный был проект. Ныне валяется трупом, т.к. все лень запустить Keil uVision и написать новую прошивку. Да и ассемблер С51 я стал уже забывать.

Спасибо. Вы потрясающие! Всего за месяц мы собрали нужную сумму в 500000 на хоккейную коробку для детского дома Аистенок. Из которых 125000+ было от вас, читателей EasyElectronics. Были даже переводы на 25000+ и просто поток платежей на 251 рубль. Это невероятно круто. Сейчас идет заключение договора и подготовка к строительству!

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

201 thoughts on “Управление шаговым двигателем”

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

По продаваемым не в курсе. В нашей деревне их в продаже нету, а что там в Московии я даже не знаю.

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

работал с шаговыми движками на своей фирме.
ещё с нашими совеццкими и руссийскими.

всё хорошо, но нету обратной связи.

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

. в смысле от постоянных замыкани? Как ты умудрялся его коротнуть? Одновременным замыканием ключей верхнего и нижнего плеча? Так там Dead Time надо ставить!

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

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

У меня этих дисководов полтора десятка штук!

кто знаком с драйвером шины ULN2804a b ULN2004a , какая разници между ними.

У меня есть движок от древнего лазерного принтера. Двигатель фирмы CANON PM60-H418Z21B можно ли запустить таку вещь? Торчат из него по 3 провода с каждой обмотки. P.S. С шаговиками я делов не имел пока, но очень интересно.

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

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

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

Управление нужно организовать через пульт управления.

1. Движение вперед (в регулировкой скорости вращения)

2. Движение назад (фиксированная скорость)

3. Остановка (экстренная остановка).

4. Режим ожидания (поворачивание до фиксированной точки).

5. Колибровка (установка фиксированной точки)

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

Система управления: Ардуино уно 3

Аrduino Motor Shield lcd 1602

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

При нажатии кнопки right (начинается движение вперед с минимальной скоростью)

При нажатии left (начинается движение назад с минимальной скоростью)

При нажатии UP (происходит увеличение скорости вращения в выбранном направлении)

При нажатии Down (происходит уменьшение скоростьи вращения в выбраном направлени)

При нажатии Rst (экстренная остановка)

При нажатии Select (двигатель переходит в за програмированную точку)

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

Gippopotam аватар

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

за месяц! сколько будет стоить работа?

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

Tomasina аватар

а что это за зверь Аrduino Motor Shield lcd 1602? И он реально прокачает 3А в длительном режиме?

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

вот подобная разработка.

только нужен двигатель мощнее.

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

там дорого шаговики

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

odnopaf аватар

Если ко мне приедете, то за 1000р. свинтим;
если я приеду, то за 2000р.
Там не сложно, на самом деле. Как раз вчера ночью для сына подъёмный кран игрушечный сделал с аналогичными функциями. Сначала сделал только пультом, но у него держать кнопку - палец уставал - пульт туговат; позже добавил управление с рукоятки-потенциометра - задаётся направление и скорость + сглаживание управления + добавил кривую отклика (гипербола).

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

Есть такая проблемка:

Задали в институте курсовую, ну а с макетом соответственно и оценка выше.

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

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

LCD 1602 с клавиатурой

ну вот и все вроде.

по отдельности работает , а соеденить все в кучу (программно) мозгов не хватает ((

так что нужна ваша помощь))

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

odnopaf аватар

Мозгов не хватает - это бывает.
Задачка элементарная.

Если зарулите ко мне в ЮВАО - сделаем прямо на месте. Это самое простое, быстрое и понятное. К тому же у меня тоже есть кучка железок, иногда бывает необходимо что-то на месте перепроверить, а железок не хватает. Или какого-нибудь ссяного провода :)
Если удалённо, то это подольше.
Напишите мне в facebook (тчк ком) odnopaf
или vk (com) odnopaf
или в личку тут.

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

Ну приехать проблемно будет я нахожусь в Ангарске,

ну могу поождать, ничего страшного))

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

p.masyukov аватар

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

odnopaf аватар

Всё правильно понял?
Две кнопки: "Туда" и "Сюда";
Один энкодер;
Ардуинка подключена USB кабелем, на компуке открыт терминал, куда нужно выводить состояние.

Енкодер не может показывать какой-либо угол. Зато с его помощью можно "вводить данные" - давать команды.
1) Полагаю, что если мы крутнём енкодер на какое-нибудь количество щелчков, то мотор должен повернуться на определённое количество градусов. При этом скорость мотора будет какой-то заранее выставленной в программе; да и не сильно понятно, для чего тогда кнопки, если можно енкодером крутить и "туда" и "сюда", управляя направлением.
2) Другой вариант, когда енкодером мы устанавливаем некоторое значение, то при нажатии на одну из кнопок мы заставим мотор провернуться на этот заранее установленный угол. Но скорость будет фиксированная.
3) Или вариант, когда енкодер задаёт не угол, а скорость. Тогда покрутив енкодер, мы ставим скорость, а удерживая одну из кнопок, заставляем мотор крутиться, пока не отпустим.
Для варианта 2 можно сделать не скорость фиксированную, а время движения. Т.е. скорость будет пропорциональна заданному углу. Другими словами, какой бы мы ни задали угол, штуковина повернётся за 5 секунд, например.

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

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

Управление нужно организовать через пульт управления.

1. Движение вперед (в регулировкой скорости вращения)

2. Движение назад (фиксированная скорость)

3. Остановка (экстренная остановка).

4. Режим ожидания (поворачивание до фиксированной точки).

5. Колибровка (установка фиксированной точки)

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

Система управления: Ардуино уно 3

Аrduino Motor Shield lcd 1602

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

При нажатии кнопки right (начинается движение вперед с минимальной скоростью)

При нажатии left (начинается движение назад с минимальной скоростью)

При нажатии UP (происходит увеличение скорости вращения в выбранном направлении)

При нажатии Down (происходит уменьшение скоростьи вращения в выбраном направлени)

При нажатии Rst (экстренная остановка)

При нажатии Select (двигатель переходит в за програмированную точку)

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

Gippopotam аватар

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

за месяц! сколько будет стоить работа?

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

Tomasina аватар

а что это за зверь Аrduino Motor Shield lcd 1602? И он реально прокачает 3А в длительном режиме?

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

вот подобная разработка.

только нужен двигатель мощнее.

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

там дорого шаговики

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

odnopaf аватар

Если ко мне приедете, то за 1000р. свинтим;
если я приеду, то за 2000р.
Там не сложно, на самом деле. Как раз вчера ночью для сына подъёмный кран игрушечный сделал с аналогичными функциями. Сначала сделал только пультом, но у него держать кнопку - палец уставал - пульт туговат; позже добавил управление с рукоятки-потенциометра - задаётся направление и скорость + сглаживание управления + добавил кривую отклика (гипербола).

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

Есть такая проблемка:

Задали в институте курсовую, ну а с макетом соответственно и оценка выше.

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

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

LCD 1602 с клавиатурой

ну вот и все вроде.

по отдельности работает , а соеденить все в кучу (программно) мозгов не хватает ((

так что нужна ваша помощь))

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

odnopaf аватар

Мозгов не хватает - это бывает.
Задачка элементарная.

Если зарулите ко мне в ЮВАО - сделаем прямо на месте. Это самое простое, быстрое и понятное. К тому же у меня тоже есть кучка железок, иногда бывает необходимо что-то на месте перепроверить, а железок не хватает. Или какого-нибудь ссяного провода :)
Если удалённо, то это подольше.
Напишите мне в facebook (тчк ком) odnopaf
или vk (com) odnopaf
или в личку тут.

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

Ну приехать проблемно будет я нахожусь в Ангарске,

ну могу поождать, ничего страшного))

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

p.masyukov аватар

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

odnopaf аватар

Всё правильно понял?
Две кнопки: "Туда" и "Сюда";
Один энкодер;
Ардуинка подключена USB кабелем, на компуке открыт терминал, куда нужно выводить состояние.

Енкодер не может показывать какой-либо угол. Зато с его помощью можно "вводить данные" - давать команды.
1) Полагаю, что если мы крутнём енкодер на какое-нибудь количество щелчков, то мотор должен повернуться на определённое количество градусов. При этом скорость мотора будет какой-то заранее выставленной в программе; да и не сильно понятно, для чего тогда кнопки, если можно енкодером крутить и "туда" и "сюда", управляя направлением.
2) Другой вариант, когда енкодером мы устанавливаем некоторое значение, то при нажатии на одну из кнопок мы заставим мотор провернуться на этот заранее установленный угол. Но скорость будет фиксированная.
3) Или вариант, когда енкодер задаёт не угол, а скорость. Тогда покрутив енкодер, мы ставим скорость, а удерживая одну из кнопок, заставляем мотор крутиться, пока не отпустим.
Для варианта 2 можно сделать не скорость фиксированную, а время движения. Т.е. скорость будет пропорциональна заданному углу. Другими словами, какой бы мы ни задали угол, штуковина повернётся за 5 секунд, например.

Читайте также: