- Режимы работы в шаговом двигателе
- Создание графического интерфейса пользователя MATLAB для управления шаговым двигателем
- Код MATLAB для управления шаговым двигателем с помощью Arduino
- Необходимый материал
- Принципиальная электрическая схема
- Управление шаговым двигателем с помощью MATLAB
Шаговые двигатели - это бесщеточные двигатели постоянного тока, которые вращаются дискретными шагами и являются лучшим выбором для многих приложений точного управления движением. Кроме того, шаговые двигатели хороши для позиционирования, управления скоростью и приложений, в которых требуется высокий крутящий момент при низкой скорости.
В предыдущих руководствах по MATLAB мы объяснили, как использовать MATLAB для управления двигателем постоянного тока, серводвигателем и бытовой техникой. Сегодня мы узнаем, как управлять шаговым двигателем с помощью MATALB и Arduino. Если вы новичок в MATLAB, рекомендуется начать работу с простой программой мигания светодиодами с MATLAB.
Режимы работы в шаговом двигателе
Перед тем, как вы начнете кодировать шаговый двигатель, вы должны понять концепцию работы или вращения шагового двигателя. Поскольку статор шагового режима состоит из разных пар катушек, каждую пару катушек можно возбуждать разными способами, что позволяет управлять режимами во многих различных режимах. Ниже приведены общие классификации
Полный пошаговый режим
В режиме полного шага возбуждения мы можем добиться полного вращения на 360 ° с минимальным количеством оборотов (шагов). Но это приводит к меньшей инерции, а также вращение не будет плавным. Есть еще две классификации в режиме полного шага возбуждения: однофазное пошаговое возбуждение и два режима включения фазы.
1. Пошаговое включение одной фазы или пошаговое выполнение волны: в этом режиме только одна клемма (фаза) двигателя будет запитана в любой момент времени. Это имеет меньшее количество шагов и, следовательно, может обеспечить полное вращение на 360 °. Поскольку количество шагов меньше, ток, потребляемый этим методом, также очень низок. В следующей таблице показана последовательность шагов для 4-фазного шагового двигателя.
Шаг | Фаза 1 (синий) | Фаза 2 (розовый) | Фаза 3 (желтый) | Фаза 4 (оранжевый) |
1 | 1 | 0 | 0 | 0 |
2 | 0 | 1 | 0 | 0 |
3 | 0 | 0 | 1 | 0 |
4 | 0 | 0 | 0 | 1 |
2. Двухэтапное включение: как следует из названия в этом методе, две фазы будут одной. Он имеет то же количество шагов, что и волновой, но поскольку одновременно возбуждаются две катушки, он может обеспечить лучший крутящий момент и скорость по сравнению с предыдущим методом. Хотя с одной стороны, этот метод потребляет больше энергии.
Шаг |
Фаза 1 (синий) |
Фаза 2 (розовый) |
Фаза 3 (желтый) |
Фаза 4 (оранжевый) |
1 |
1 |
1 |
0 |
0 |
2 |
0 |
1 |
1 |
0 |
3 |
0 |
0 |
1 |
1 |
4 |
1 |
0 |
0 |
1 |
Полушаговый режим
Полушаговый режим представляет собой комбинацию однофазного и двухфазного режимов. Эта комбинация поможет нам преодолеть упомянутый выше недостаток обоих режимов.
Как вы, возможно, догадались, поскольку мы комбинируем оба метода, нам придется выполнить 8 шагов в этом методе, чтобы получить полное вращение. Последовательность переключения для 4-фазного шагового двигателя показана ниже.
Шаг |
Фаза 1 (синий) |
Фаза 2 (розовый) |
Фаза 3 (желтый) |
Фаза 4 (оранжевый) |
1 |
1 |
0 |
0 |
0 |
2 |
1 |
1 |
0 |
0 |
3 |
0 |
1 |
0 |
0 |
4 |
0 |
1 |
1 |
0 |
5 |
0 |
0 |
1 |
1 |
6 |
0 |
0 |
0 |
1 |
7 |
1 |
0 |
0 |
1 |
8 |
1 |
0 |
0 |
0 |
Следовательно, вы можете запрограммировать свой шаговый двигатель в любом режиме, но я предпочитаю двухфазный пошаговый полношаговый режим. Поскольку этот метод обеспечивает более высокую скорость, чем однофазный метод, и по сравнению с половинным режимом часть кодирования меньше из-за меньшего количества шагов в двухфазном методе.
Узнайте больше о шаговых двигателях и их режимах здесь
Создание графического интерфейса пользователя MATLAB для управления шаговым двигателем
Затем нам нужно создать GUI (графический интерфейс пользователя) для управления шаговым двигателем. Чтобы запустить графический интерфейс, введите следующую команду в командном окне
руководство
Откроется всплывающее окно, затем выберите новый пустой графический интерфейс, как показано на изображении ниже,
Теперь выберите две кнопки переключения для вращения шагового двигателя по часовой стрелке и против часовой стрелки, как показано ниже.
Чтобы изменить размер или форму кнопки, просто нажмите на нее, и вы сможете перетаскивать углы кнопки. Дважды щелкнув кнопку переключения, вы можете изменить цвет, строку и тег этой конкретной кнопки. Мы настроили две кнопки, как показано на рисунке ниже.
Вы можете настроить кнопки по своему усмотрению. Теперь, когда вы сохраняете это, код создается в окне редактора MATLAB. Чтобы закодировать ваш Arduino для выполнения любой задачи, связанной с вашим проектом, вам всегда нужно редактировать этот сгенерированный код. Итак, ниже мы отредактировали код MATLAB. Вы можете узнать больше о командном окне, окне редактора и т. Д. В руководстве Начало работы с MATLAB.
Код MATLAB для управления шаговым двигателем с помощью Arduino
Полный код MATLAB для управления шаговым двигателем приведен в конце этого проекта. Кроме того, мы включаем сюда файл графического интерфейса (.fig) и файл кода (.m) для загрузки (щелкните правой кнопкой мыши ссылку и выберите «Сохранить ссылку как…»)), с помощью которых вы можете настроить кнопки в соответствии с вашими требованиями.. Ниже приведены некоторые настройки, которые мы сделали для вращения шагового двигателя по и против часовой стрелки с помощью двух кнопок-переключателей.
Скопируйте и вставьте приведенный ниже код в строку № 74, чтобы убедиться, что Arduino общается с MATLAB каждый раз, когда вы запускаете m-файл.
очистить все; глобальный a; а = ардуино ();
Когда вы прокрутите вниз, вы увидите, что для обеих кнопок в графическом интерфейсе созданы две функции. Теперь напишите код в обеих функциях в соответствии с задачей, которую вы хотите выполнить при нажатии.
В функции кнопки « По часовой стрелке » скопируйте и вставьте приведенный ниже код непосредственно перед концом функции, чтобы вращать двигатель по часовой стрелке. Для непрерывного вращения шагового двигателя по часовой стрелке мы используем цикл while, чтобы повторить два шага полного режима с включением фазы для направления по часовой стрелке.
а get (hObject, 'Value') global a; writeDigitalPin (а, 'D8', 1); writeDigitalPin (a, 'D9', 0); writeDigitalPin (a, 'D10', 0); writeDigitalPin (a, 'D11', 1); пауза (0,0002); writeDigitalPin (a, 'D8', 0); writeDigitalPin (a, 'D9', 0); writeDigitalPin (a, 'D10', 1); writeDigitalPin (a, 'D11', 1); пауза (0,0002); writeDigitalPin (a, 'D8', 0); writeDigitalPin (a, 'D9', 1); writeDigitalPin (a, 'D10', 1); writeDigitalPin (a, 'D11', 0); пауза (0,0002); writeDigitalPin (а, 'D8', 1); writeDigitalPin (a, 'D9', 1); writeDigitalPin (a, 'D10', 0); writeDigitalPin (a, 'D11', 0); пауза (0,0002); конец
Теперь в функции кнопки « Против часовой стрелки » вставьте приведенный ниже код в функцию, чтобы вращать двигатель против часовой стрелки. Для непрерывного вращения шагового двигателя в направлении против часовой стрелки мы используем цикл while, чтобы повторить два шага полного режима с включением фазы для направления против часовой стрелки.
а get (hObject, 'Value') global a; writeDigitalPin (а, 'D8', 1); writeDigitalPin (a, 'D9', 1); writeDigitalPin (a, 'D10', 0); writeDigitalPin (a, 'D11', 0); пауза (0,0002); writeDigitalPin (a, 'D8', 0); writeDigitalPin (a, 'D9', 1); writeDigitalPin (a, 'D10', 1); writeDigitalPin (a, 'D11', 0); пауза (0,0002); writeDigitalPin (a, 'D8', 0); writeDigitalPin (a, 'D9', 0); writeDigitalPin (a, 'D10', 1); writeDigitalPin (a, 'D11', 1); пауза (0,0002); writeDigitalPin (а, 'D8', 1); writeDigitalPin (a, 'D9', 0); writeDigitalPin (a, 'D10', 0); writeDigitalPin (a, 'D11', 1); пауза (0,0002); конец
Необходимый материал
- MATLAB установил ноутбук (предпочтение: версии R2016a или выше)
- Arduino UNO
- Шаговый двигатель (28BYJ-48, 5 В постоянного тока)
- ULN2003 - Драйвер шагового двигателя
Принципиальная электрическая схема
Управление шаговым двигателем с помощью MATLAB
После настройки оборудования в соответствии со схемой, просто нажмите кнопку запуска, чтобы запустить отредактированный код в файле.m.
MATLAB может занять несколько секунд, чтобы ответить, не нажимайте никакие кнопки графического интерфейса, пока MATLAB не покажет сообщение о занятости в нижней части левого угла, как показано ниже,
Когда все будет готово, нажмите кнопку по часовой стрелке или против часовой стрелки, чтобы вращать мотор. Поскольку мы используем кнопку переключения, шаговый двигатель будет непрерывно двигаться по часовой стрелке, пока мы не нажмем кнопку снова. Точно так же при нажатии кнопки переключения против часовой стрелки двигатель начинает вращаться против часовой стрелки, пока мы не нажмем кнопку снова.