Контроллер шагового двигателя схема | kavmaster
За какое-то время у меня скопилось много шаговых двигателей, но все не было времени ими заняться, а ведь шаговый двигатель вещь довольно интересная и полезная. Но у многих радиолюбителей возникают проблемы с запуском таких двигателей, вот я и решил собрать контроллер для проверки наиболее часто распространённых шаговых двигателей.
Блок управления шаговым двигателем
Шаговые двигатели достаточно распространены в устройствах, в которых необходимо добиться точного перемещения механизмов. Существует очень много типов шаговых двигателей, но самыми простыми в плане управления являются 2-х фазные униполярные двигатели. Этот тип двигателей имеет две независимые обмотки с выводами от середины (см. Рис.1). Их устанавливают в такие аппараты, как принтер, копир, дисковод и т.д.
Схема управления шаговым двигателем.
Сперва хотел разработать схему на жесткой логике, но когда определился с функциями, которые она должна выполнять, пришло твердое решение использовать для этих целей микроконтроллер. И так, что можно определить с помощью данного блока управления.
- Можно определить количество шагов.
- Определить один из двух алгоритмов работы двигателя.
- Опробовать работу двигателя в полушаговом режиме.
- Можно опробовать работу в полношаговом режиме.
Еще раз повторюсь, что разновидностей шаговых двигателей много и данный контроллер подойдет не для всех.
Программы управления шаговыми двигателями
Программа управления состоит из пяти подпрограмм, которые переключаются кнопкой BS3 – «Выбор программ». Номер выбранной подпрограммы отображается тремя светодиодами в двоичной системе счисления. При первом включении должен загореться светодиод HL1, индицирующий о том, что включена первая подпрограмма работы шагового двигателя
в полушаговом режиме. Запуск двигателя осуществляется кнопками «Право» и «Лево». Право – двигатель должен крутиться по часовой стрелке, лево – против часовой, но направление вращения зависит еще и от того, как вы скоммутируете обмотки двигателя.Возможно, придется экспериментировать. На скриншоте 1 (передняя панель виртуального осциллографа программы Proteus) можно наблюдать импульсную последовательность и коды полушагов работы двигателя. Некоторые из шаговиков по этому алгоритму у меня не работали.
Полношаговый алгоритм работы шагового двигателя
Подпрограмма №2 – светится второй светодиод. В этой подпрограмме двигатель будет работать по полно шаговому алгоритму, показанному на скрине 2.
Подпрограмма №3 – светятся первый и второй светодиоды. В этой подпрограмме двигатель будет работать по полношаговому алгоритму, показанному на скрине 3.
Количество шагов шагового двигателя
Подпрограмма №4 – светится третий светодиод. Данная подпрограмма обеспечивает один шаг двигателя при каждом нажатии на кнопку «Право». Кнопка «Лево» в данном случае не задействована. Короче говоря, нажимая каждый раз на кнопку, можно сосчитать количество шагов за один оборот проверяемого двигателя. Алгоритм работы двигателя в данной подпрограмме соответствует алгоритму на скрине 2.
Подпрограмма №5 – светятся первый и третий светодиоды. В этой подпрограмме творится тоже самое, только алгоритм работы двигателя в данной подпрограмме соответствует алгоритму на скрине 3.
Общий вид платы — на фото.
Файл прошивки, схему и рисунок печатной платы можно скачать по ссылке ниже.
Купить USB программатор PIC K150 ICSP
Источник: http://www.kondratev-v.ru
Похожее
kavmaster.ru
Драйвер шагового двигателя. Тестируем микросхему L9110 / Habr
Откуда «ножки» растут
В настоящее время стали доступны и приобрели популярность различные станки с программным управлением. Это лазерные и фрезерные резчики и гравёры. А так же 3D принтеры. Все эти станки имеют один общий узел — шаговый двигатель. И этому двигателю нужен драйвер.
Принцип работы двигателя не является предметом этой статьи. Мы рассмотрим только драйвер. Всё, что нам нужно знать в данном контексте — это какие управляющие сигналы нам нужно формировать для управления шаговым двигателем. Оказывается, это самые обычные прямоугольные импульсы.
Существует некоторое количество решений драйверов от различных компаний. В нашей статье мы рассмотрим самое доступное решение драйвера L9110 и его аналог HG7881 Это решение часто используется в Arduino
Теория и практика
Я решил применить микросхему L9110 в своём проекте.
Довольно легко нагуглил datasheet. Прочитал. Всё предельно понятно. Характеристики, распиновка, таблица истинности… По всем параметрам драйвер, вроде бы подходит. Напряжение коммутации — 12 вольт, выходной ток 800 ма. — всего хватает.
А что на деле?
Не откладывая в «долгий ящик» я сделал плату, написал и запустил тестовую программу…
Может у меня микросхема бракованная?
Пришла в голову идея рассмотреть сей девайс поподробнее. И не один, а кучу.
Сказано — сделано.
Хорошо, что у меня была припасена панелька SO-8 и плата для моделирования.
Ну, и контроллер на базе STM32.
Собран стенд и произведены измерения.
Да, кстати, кроме непосредственно, силового узла в микросхеме заложена логика исключающее ИЛИ. В даташите это описано.
Поскольку я изучаю эффект нагрева микросхемы, лучше не ограничиваться логическими единицами и нулями, а снять реальные напряжения.
В результате измерений получилась табличка:
Рассмотрим строчки 2 и 3. Что мы здесь видим?
- Падение напряжения на выходных транзисторах, при наличии нагрузки, около полутора вольт, что при токе 0,33 ампера даёт 0,5 ватт на канал.
- На холостом ходу микросхема потребляет 0,05 А, что при напряжении 12 В даёт 0,6 ватт на канал.
Другими словами, независимо от нагрузки она потребляет около 0,5 Вт на канал. Теперь понятно, почему я об неё обжигал пальцы.
Сильный нагрев — это, конечно недостаток. Но может свою функцию микросхема выполняет хорошо? Тут пригодился недавно подаренный себе 4-х лучевой осциллограф приставка. Не ожидал, что мне так скоро потребуются все 4 луча. Для тестирования написал простенькую программку на stm32, который давно использую в различных проектах. Программа, просто, генерирует 2 прямоугольных сигналы с трёхкратной разницей частот.
Поскольку один раз увидеть лучше чем много раз прочитать — прикладываю развёртку сигналов управления.
Ничего особо сложного. Просто прямоугольные импульсы сдвинутые с разницей частоты в 3 раза.
Верхняя часть экрана — входные сигналы — нижняя — выходные.
Сразу бросается в глаза, что при различающихся значениях сигналов на входах, значения на выходах вполне чёткие Устанавливаются без задержек и с резкими фронтами.
Если же сигналы на входах совпадают — то фронт пологий. похож на разряд конденсатора.
Просмотрев документацию я не увидел ничего такого, что предвещало бы такое поведение.
Может я задал слишком высокую частоту входных сигналов? В даташите лимит не указан.
Уже зная, что у этого драйвера есть почти стопроцентный аналог HG7881 я обратился к его документации.
Она пролила больше света на эту загадочную ситуацию. Оказывается, логика работы драйвера немного шире. Две единицы на входе — это торможение ( то есть на выходе оба сигнала должно быть низкого уровня.) А два нуля на входе — это «висящие» контакты. Разрыв.
Значит два нуля на входе должны «подвешивать» выходы. Тогда, поведение разряжающегося конденсатора вполне предсказуемо. Однако две единицы на входах — должны быть надёжным нулём на выходе. А фактически это не так.
Я мог бы списать этот дефект на «китайского производителя». Однако, я тестировал микросхему по честному выпаянную из ардуиновской платы. При чём — не одну микросхему. Из нескольких плат. То есть, вероятность брака сильно снижена.
Вывод
Область применения микросхем L9110 уже, чем задекларирована, да и КПД низковат.
Рассеяние 0,5-0,6 ватта на одном ключе — это многовато. Не случайно это решение самое дешёвое.(10 центов за микросхему. на алиэкспрессе).
В следующих статьях будут рассмотрены альтернативные драйвера шаговых двигателей.
habr.com
Контроллер маломощного униполярного шагового двигателя
Предыстория
Понадобилось мне прошлой осенью восстановить измерительный стенд. Одна из главных частей стенда — система протяжки лески с закрепленной на ней трубочке сквозь СВЧ-резонатор (это такая медная банка весом 20-30 кг). Причем протяжка должна осуществляться периодически с фиксацией положения (на 1мм подвинул, остановился, подождал секунду, ещё на 1мм подвинул, и так далее). Естественно сразу возникла мысль о шаговом двигателе (ШД). Но как им управлять? Разобрался. Начал искать схемные решения — биполярными двигателями сложно управлять, поэтому выбор пал на униполярный. Был приобретён кЫтайский моторчик под названием
Купленный моторчик оказался без какой-либо документации. В интернете — тоже почти ничего. Позже экспериментально нашёл необходимую последовательность управляющих сигналов.
Пришёл черёд разработки контроллера управления. Разработкой движили несколько целей:
- Покупать «чужой» контроллер за 5 т.р. совесть не позволяла
- Стоимость разработанного контроллера не должна превышать 500-700 р.
- Простота конструкции для а) повторяемости устройства, б) проще отладка, в) неблагоприятная электромагнитная обстановка, г) чтобы те, кто найдут контроллер через 20 лет смогли разобраться как его «завести», т.к. я подобным образом разбирался с СВЧ-резонатором, пролежавшим в шкафу с конца 90х…
- Управление с компьютера. Всяких FT232RL в Москве я не нашёл на тот момент, поэтому без всяких раздумий решил использовать интерфейс RS-232.
- Питание от компьютерного разъёма (который питает харды, приводы и т.д.). Комп всё равно рядом, 2 напряжения: +5 для питания микросхем, +12 для ШД.
Хронология событий
Набросал схему.
Набросал плату в Sprint Layout.
Скачать файл с разводкой
Прошивка для ATmega8L.
Опыта было мало, время поджимало — решил не возиться с ассемблером и написал на каком-то из Basic`ов. Весила она около 25% флеша ATmega8L.
Перешёл на «железо»: нашёл лист шестилетней фотобумаги от уже убитого струйника Epson. Распечатал, заЛУТил (не с первого раза — бумага фигово липнет, старая наверно), спаял.
Для связи с COM-портом изпользуется разъём IDC-10 (изготовлен кабель IDC-10 — DB-9F), для соединения с пятью проводами ШД — штыри PLS-8 (3 штыря из 8 отломаны).
При макетировании из-за того, что ни осциллограф, ни комп не были заземлены, и особенностей БП компьютера, я спалил оба COM-порта. С тех пор использую переходник USB-COM на основе PL2303.
Во время тестирования и отладки понял, что зря я не предусмотрел кнопку сброса МК и разъём внутрисхемного программирования…Пришлось «подвесить» его на проводах =)
Управлялся контроллер с помощью терминальных программ. В качестве передаваемых параметров, была период управляющих сигналов, период следования пакетов сигналов (для реализации паузы), число сигналов в пакете и число пакетов.
Зимой я решил переписать прошивку для МК.
Естественно уже на ассемблере. За неделю осилил, и вот что получилось
StepControl.asm
Краткое описание алгоритма программы:
- 1. Инициализации и конфигурирование регистров, макросы, таблица векторов прерываний
- 2. Оправляем пользователю приглашение «hello», что контроллер готов.
- 3. Ждём, когда же пользователь проснётся и пришлёт МК команду.
- Команда представляет собой 3 байта. Первый и второй байт — число периодов управляющих сигналов, третий байт — направление вращения.
- Формирование пакетов управляющих сигналов возложено на программу на компьютере.
- Передача осуществляется на скорости 38400бит/с.
- 4. Принимаем команду, сохраняем в RAM. Читаем из RAM в РОН.
- 5. Запускаем таймер.
- 6. Переходим к пункту 3.
А тем временем таймер по прерыванию совпадения:
- 1. Уменьшаем счётчик сигналов на единицу. Если не дошли до нуля, то
- 1.1. Определяет направление вращения
- 1.2. Выбирает следующую управляющую комбинацию сигналов из памяти программ
- 1.3. Выводим соответствующую управляющую комбинацию в PORTB.
- 2. Если счётчик сигналов равен нулю — тормозим таймер.
Такой алгоритм позволяет «пополнять» содержимое счётчика сигналов во время работы таймера (естественно не в момент прерывания) и добиться «непрерывной» работы ШД. Но этим уже занимается программа написанная на VisualBasic 6.0 (нравится он мне, как бы его не обижали любители С# и Delphi).
Скачать программку
Во время тестирования программы поднимал и опускал двигателем болт, привязанный на нитке…Вспомнилась детская игрушка башенный кран 🙂
Оценка стоимости всего этого безобразия:
№ п/п Наименование Цена, руб Кол-во Стоимость, руб 1 Вилка штыревая PLS-8 1.6 1 1.6 2 Конденсатор керамич. 0.1мкФ, 50В 3 1 3 3 Конденсатор электролит. 1мкФ, 50В 14 5 70 4 Корпус DP-9C для D-SUB 9pin 13 1 13 5 Микроконтроллер ATmega8L 78 1 78 6 Панель под микросхему 16 контактов 2.6 2 5.2 7 Панель под микросхему 28 контактов 4.6 1 4.6 8 Преобразователь уровней MAX232CPE 16 1 16 9 Разъём DB-9F 23 1 23 10 Разъём IDC-10F на шлейф 16 1 16 11 Разъём IDC-10MR вилка угловая 23 1 23 12 Разъём питания THP-4M 8.8 1 8.8 13 Сборка транзисторов ULN2003AN 15 1 15 14 Шаговый двигатель ST28 320 1 320 Итого: 597.2
Как видно, уложился в 600р. Может конечно что-то и подзабыл, но одна из поставленных задач выполнена.
Выводы
Получился довольно «узконаправленный» контроллер. Но задачи создать универсальное устройство не было. Изготавливается довольно быстро, всё в DIPах и выводным монтажом. Размеры — наверно чуть больше 2х спичечных коробков. Возможность модернизации: Легко задать необходимую управляющую последовательность в коде прошивки, ассемблировать, зашить в МК и пользоваться, код занимает около 3% памяти — места хватит ещё светомузыку приделать 🙂
Возможные применения
- детская игрушка башенный кран =)))
- системы протяга всевозможных нитей, лески, например, занавески открывать по команде с компа
- маломощные приводы (до 6Вт, т.к. ULN2003AN больше 500мА не терпит, если конечно ШД столько сам потянет)
- системы, требующие точного позиционирования (число управляющих импульсов на 1 оборот ШД равно 2048!!!, жаль мощность очень невелика)
P.S. Автор выражает благодарность своему научному руководителю Сергею Марковичу за спонсорство, коллегам по лаборатории Тарасу и Лёшке, подруге Юле за помощь в тестировании и отладке, и конечно же DI HALT`у за предоставленную возможность быть опубликованным на easyelectronics.ru!
DI HALT
Меня не теряте 😉 Я сейчас очень много пишу, но пока не буду уточнять что. Хотя, некоторые уже спалили. Как доделаю хотя бы половину задуманного, естественно, сообщу 🙂 А пока буду выкладывать присланные статьи. Их тут довольно много накопилось.Да, завелась у меня тут вот такая шняжка. Я правда еще не понял зачем она мне (пять блогов на одного человека это слишком =) ), но что-то уж больно много народу по ней прецо. Буду туда всякую херь сбрасывать.
easyelectronics.ru