Сервоуправление с помощью Arduino через MATLAB
Используйте MATLAB для написания программы для управления сервомотором, подключенным к Arduino.
Пакеты поддержки MATLAB для Arduino позволяют использовать MATLAB для написания программ для Arduino. Пакеты поддержки доступны для 32-разрядных и 64-разрядных Windows, 64-разрядных Mac OS и 64-разрядных Linux.
Установка пакетов
Чтобы установить пакеты пакетов поддержки MATLAB Arduino, запустите MATLAB и нажмите Add-Ons> Get Hardware Support Packages. Выберите пакет, который вы хотите установить, и следуйте инструкциям по установке в окне установщика.

После установки пакетов подключите Arduino к ПК с помощью USB-кабеля и выполните следующую команду:
> a = arduino ()
На данный момент MATLAB попытается связаться с Arduino. Если он будет успешным, на дисплее появится следующее:

Этот дисплей показывает, что мой Arduino Uno подключен к COM3. Если MATLAB не смог подключиться к Arduino, отобразится сообщение об ошибке.
Принципиальная электрическая схема
Схема для этого эксперимента представляет собой просто сервомотор с питанием, заземлением и управляющими входами, подключенными к Arduino, как показано на рисунке ниже:


функции
Функции MATLAB, которые мы собираемся использовать:
writePosition (motorObject, angle)
readPosition (motorObject)
Как следует из названия, команда writePosition () используется для поворота вала серводвигателя на определенный угол, а команда readPosition () используется для считывания текущего положения вала.
Мы создадим объект серводвигателя командой:
servo_motor = servo (arduinoObject, pinAtWhichServoIsAttached)
Код
% port at which your arduino is connected port = 'COM3'; % model of your arduino board board = 'Uno'; % creating arduino object with servo library arduino_board = arduino(port, board, 'Libraries', 'Servo'); % creating servo motor object servo_motor = servo(arduino_board, 'D8'); % loop to rotate servo motor from 0 to 180 for angle = 0:0.2:1 writePosition(servo_motor, angle); current_position = readPosition(servo_motor); current_position = current_position * 180; % print current position of servo motor fprintf('Current position is %d\n', current_position); % small delay is required so that servo can be positioned at the % angle told to it. pause(2); end % bring back motor to 0 angle position writePosition(servo_motor, 0);
Скачать код
Убедитесь, что в MATLAB нет предыдущего объекта Arduino, иначе MATLAB отобразит сообщение об ошибке. Либо очистите объекты серво и ардуины в файле сценария, либо запустите все в окне команд перед запуском эскиза.
меры
- Запустите MATLAB и установите пакеты поддержки оборудования, если вы впервые используете arduino с MATLAB.
- Подключите цепь, как показано на схеме.
- Подключите штырек сервопривода к контакту 5V на вашем ардуине.
- Подключите штифт заземления сервопривода к контакту GND на вашем ардуине.
- Подключите штырь сервопривода к цифровому выводу 8 на плате arduino.
- Напишите свой m-файл и запустите его, MATLAB сгорит этот m-файл на вашей плате arduino.
- Ваш мотор начнет вращаться от 0 до 180, а затем вернется к 0 градусам.
Попробуйте этот проект сами! Получить спецификацию.