Рубрики
Схемы на Arduino

Управление электродвигателем постоянного тока с помощью MATLAB и Arduino

В этой статье мы рассмотрим управление электродвигателем постоянного тока (DC Motor) с помощью математической системы MATLAB и платы Arduino. Если вы начинающий в системе MATLAB, то рекомендуем сначала прочитать статью о мигании светодиода с помощью MATLAB. Также можно посмотреть проекты об автоматизации дома с помощью MATLAB и Arduino и управлении сервомотором с помощью MATLAB и Arduino.

Создание графического интерфейса в MATLAB для управления электродвигателем постоянного тока

После установки пакета аппаратной поддержки MATLAB для работы с Arduino (MATLAB Support Package for Arduino Hardware — описан в этой статье) нам необходимо создать графический интерфейс (GUI — Graphical User Interface) для управления двигателем постоянного тока. Чтобы запустить графический интерфейс в MATLAB напечатайте в командной строке:

Откроется всплывающее окно, в нем выберите новый blank GUI как показано на следующем рисунке:

После этого поместите на рабочее поле три кнопки (pushbuttons) для вращения по часовой стрелке (Clockwise rotation), вращения против часовой стрелки (Anti-clockwise rotation) и остановки двигателя (STOP) как показано на следующем рисунке.

Чтобы изменить размер или форму кнопки просто кликните на ней и у вас появится эта возможность. Если вы сделаете двойной клик на кнопке вы можете изменить цвет, подпись и метку кнопки.

Мы кастомизировали эти три кнопки как показано на следующем рисунке.

Вы можете кастомизировать эти кнопки по своему желанию. Когда вы сохраните созданный графический интерфейс в окне редактора MATLAB для него сформируется код. Вы всегда можете изменить этот код по своему желанию. Далее в этот сформированный код мы добавим команды для управления электродвигателем постоянного тока. Готовые файлы графического интерфейса и m-файл вы можете скачать по этой ссылке (клик правой кнопкой мыши и выбирайте «сохранить объект как»).

Объяснение кода MATLAB для управления двигателем постоянного тока с помощью Arduino

Скопируйте следующие строки и вставьте их в программу начиная со строки №74 чтобы убедиться в том что плата Arduino взаимодействует с MATLAB каждый раз когда вы запускаете на выполнение m-файл.

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

В тело функции вращения двигателя по часовой стрелке скопируйте и вставьте следующие приведенные строчки кода – в них на контакт 6 подается напряжение высокого уровня (HIGH), а на контакт 5 – напряжение низкого уровня (LOW) чтобы двигатель вращался по часовой стрелке.

Соответственно, в тело вращения двигателя против часовой стрелки скопируйте и вставьте следующие ниже приведенные строчки кода. В них на контакт 5 подается напряжение высокого уровня (HIGH), а на контакт 6 – напряжение низкого уровня (LOW) чтобы двигатель вращался против часовой стрелки.

И, наконец, в функцию остановки двигателя (STOP) также добавьте следующие ниже приведенные строчки кода. В них на контакты 5 и 6 подается напряжение низкого уровня (LOW) чтобы остановить вращение двигателя.

Необходимые компоненты

  1. Плата Arduino Uno (купить на AliExpress).
  2. Установленная на компьютер математическая система MATLAB (предпочтительно версии R2016a или выше).
  3. Электродвигатель постоянного тока (DC Motor).
  4. Драйвер мотора L293D (купить на AliExpress).

Схема проекта

Схема проекта для управления электродвигателем постоянного тока с помощью MATLAB и Arduino представлена на следующем рисунке.

Внешний вид собранной на макетной плате конструкции проекта показан на следующем рисунке.

Тестирование работы проекта

После того как аппаратная часть проекта будет готова запустите на выполнение .m файл.

Системе MATLAB может потребоваться несколько секунд на запуск этого файла, не нажимайте никакую кнопку на графическом интерфейсе до тех пор пока горит индикация BUSY (система занята) в левом нижнем углу экрана.

Когда все готово, нажмите на кнопку для управления вращением двигателя по часовой или против часовой стрелки. Когда вы будете нажимать на кнопку вращения двигателя по часовой стрелке, то ток будет протекать от контакта 6 к контакту 5 и двигатель будет вращаться по часовой стрелке, а при нажатии кнопки вращения двигателя против часовой стрелки ток будет протекать от контакта 5 к контакту 6 и двигатель будет вращаться против часовой стрелки. При нажатии на кнопку STOP вращение двигателя будет останавливаться. Аналогичный способ управления вы можете применить и для управления сервомотором с помощью MATLAB и Arduino соответствующим образом изменив код функций, вызываемых при нажатии кнопок. Более подробно процесс функционирования рассмотренного проекта вы можете посмотреть на видео, приведенном в конце статьи.

Исходный код программы

Видео, демонстрирующее работу проекта

2 ответа к “Управление электродвигателем постоянного тока с помощью MATLAB и Arduino”

А можно интересный вопрос? Всю голову сломал.Как регулировать обороты (ШИМ) по заданому количеству импульсов с оптического датчика на валу двигателя.Стабилизация частоты вращения.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *